postgres.git / summary / log / commit / refs
commit ad46a2aa79f9ee79aecd889d0ace9ecc08dae984
Author: Andres Freund <andres@anarazel.de>
Date: Sat Mar 25 22:32:01 2017 +0000
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
src/backend/executor/execExpr.c | 20 ++++++--------------
1 file 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)
[parent: 8acf08c68dd8]