diff options
author | Andres Freund <andres@anarazel.de> | 2017-03-25 15:32:01 -0700 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2017-03-25 15:35:59 -0700 |
commit | ad46a2aa79f9ee79aecd889d0ace9ecc08dae984 (patch) | |
tree | f7b9d6eaa6e656f679dcadb2762d6d1604d1a029 /src/backend/executor | |
parent | 8acf08c68dd8b9fa1793f6ccf9e216cdec63fb49 (diff) | |
download | postgresql-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.c | 20 |
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) |