Remove unreachable code in expression evaluation.
authorAndres Freund <andres@anarazel.de>
Sat, 25 Mar 2017 22:32:01 +0000 (15:32 -0700)
committerAndres Freund <andres@anarazel.de>
Sat, 25 Mar 2017 22:35:59 +0000 (15:35 -0700)
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

index 766dbbb074083678c5c18f1311a3ee2638e34f97..5a84742d1492090f6ff4eb641793471dbe47c804 100644 (file)
@@ -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)