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]