pgsql: Fix no-longer-valid shortcuts in expression_returns_set().

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix no-longer-valid shortcuts in expression_returns_set().
Date: 2017-06-14 15:10:13
Message-ID: E1dL9vx-0008C8-DL@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix no-longer-valid shortcuts in expression_returns_set().

expression_returns_set() used to short-circuit its recursion upon
seeing certain node types, such as DistinctExpr, that it knew the
executor did not support set-valued arguments for. That was never
inherent, though, just a reflection of laziness in execQual.c.
With the new implementation of SRFs there is no reason to think
that any scalar-valued expression node could not have a set-valued
subexpression, except for AggRefs and WindowFuncs where we know there
is a parser check rejecting it. And indeed, the shortcut causes
unexpected failures for cases such as a SRF underneath DistinctExpr,
because the planner stops looking for SRFs too soon.

Discussion: https://postgr.es/m/5259.1497044025@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/8e72239e9d961c27f02b242e33fa832c364c7a4b

Modified Files
--------------
src/backend/nodes/nodeFuncs.c | 30 +-----------------------------
src/test/regress/expected/tsrf.out | 8 ++++++++
src/test/regress/sql/tsrf.sql | 1 +
3 files changed, 10 insertions(+), 29 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2017-06-14 15:12:37 pgsql: Put documentation of options and commands in more alphabetical o
Previous Message Bruce Momjian 2017-06-14 15:05:51 Re: pgindent (was Re: [COMMITTERS] pgsql: Preventive maintenance in advance of pgindent run.)