aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2017-03-25 15:32:01 -0700
committerAndres Freund <andres@anarazel.de>2017-03-25 15:35:59 -0700
commitad46a2aa79f9ee79aecd889d0ace9ecc08dae984 (patch)
treef7b9d6eaa6e656f679dcadb2762d6d1604d1a029 /src/backend/executor
parent8acf08c68dd8b9fa1793f6ccf9e216cdec63fb49 (diff)
downloadpostgresql-ad46a2aa79f9ee79aecd889d0ace9ecc08dae984.tar.gz
postgresql-ad46a2aa79f9ee79aecd889d0ace9ecc08dae984.zip
Remove unreachable code in expression evaluation.
The previous code still contained expression evaluation time support for CaseExprs without a defresult. But transformCaseExpr() creates a default expression if necessary. Author: Andres Freund Discussion: https://postgr.es/m/4834.1490480275@sss.pgh.pa.us
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/execExpr.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/backend/executor/execExpr.c b/src/backend/executor/execExpr.c
index 766dbbb0740..5a84742d149 100644
--- a/src/backend/executor/execExpr.c
+++ b/src/backend/executor/execExpr.c
@@ -1385,20 +1385,12 @@ ExecInitExprRec(Expr *node, PlanState *parent, ExprState *state,
state->steps[whenstep].d.jump.jumpdone = state->steps_len;
}
- if (caseExpr->defresult)
- {
- /* evaluate ELSE expr into CASE's result variables */
- ExecInitExprRec(caseExpr->defresult, parent, state,
- resv, resnull);
- }
- else
- {
- /* default ELSE is to return NULL */
- scratch.opcode = EEOP_CONST;
- scratch.d.constval.value = (Datum) 0;
- scratch.d.constval.isnull = true;
- ExprEvalPushStep(state, &scratch);
- }
+ /* transformCaseExpr always adds a default */
+ Assert(caseExpr->defresult);
+
+ /* evaluate ELSE expr into CASE's result variables */
+ ExecInitExprRec(caseExpr->defresult, parent, state,
+ resv, resnull);
/* adjust jump targets */
foreach(lc, adjust_jumps)