Re: pgsql: Remove unreachable code in expression evaluation.

From: Andres Freund <andres(at)anarazel(dot)de>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: Remove unreachable code in expression evaluation.
Date: 2017-03-26 04:25:27
Message-ID: 20170326042527.mdxsoht5a4actlzz@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

On 2017-03-26 00:14:30 -0400, Tom Lane wrote:
> Andres Freund <andres(at)anarazel(dot)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

In response to

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2017-03-26 04:52:39 Re: Re: [COMMITTERS] pgsql: Faster expression evaluation and targetlist projection.
Previous Message Tom Lane 2017-03-26 04:14:30 Re: pgsql: Remove unreachable code in expression evaluation.