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)