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
This commit is contained in:
Andres Freund 2017-03-25 15:32:01 -07:00
parent 8acf08c68d
commit ad46a2aa79
1 changed files with 6 additions and 14 deletions

View 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)