On 2017-03-26 00:14:30 -0400, Tom Lane wrote: > Andres Freund <and...@anarazel.de> writes: > > 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. > > BTW, now that I think about it, I wonder if a better answer wouldn't > be to leave the execExpr code as it stood, and remove the code in > transformCaseExpr that pre-creates a default expression. You'd end > up with identical code at runtime, and eliminate some parse/rewrite/plan > overhead for dealing with that subexpression. > > It's possible there's some code somewhere else that expects defresult > to always be non-null, but I can't think what, or why that would be > a good thing to assume.
There's some relationship with the type inferrence code in transformCaseExpr(). I don't think it'd be hard to change, however - just move resultexprs = lcons(newc->defresult, resultexprs); into the else branch of if defresult == NULL. - Andres -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers