pgsql: Fix create_scan_plan's handling of sortgrouprefs for physical tl

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix create_scan_plan's handling of sortgrouprefs for physical tl
Date: 2018-07-11 19:25:46
Message-ID: E1fdKkE-0007La-Fm@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix create_scan_plan's handling of sortgrouprefs for physical tlists.

We should only run apply_pathtarget_labeling_to_tlist if CP_LABEL_TLIST
was specified, because only in that case has use_physical_tlist checked
that the labeling will succeed; otherwise we may get an "ORDER/GROUP BY
expression not found in targetlist" error. (This subsumes the previous
test about gating_clauses, because we reset "flags" to zero earlier
if there are gating clauses to apply.)

The only known case in which a failure can occur is with a ProjectSet
path directly atop a table scan path, although it seems likely that there
are other cases or will be such in future. This means that the failure
is currently only visible in the v10 branch: 9.6 didn't have ProjectSet,
while in v11 and HEAD, apply_scanjoin_target_to_paths for some weird
reason is using create_projection_path not apply_projection_to_path,
masking the problem because there's a ProjectionPath in between.

Nonetheless this code is clearly wrong on its own terms, so back-patch
to 9.6 where this logic was introduced.

Per report from Regina Obe.

Discussion: https://postgr.es/m/001501d40f88$75186950$5f493bf0$@pcorp.us

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/c3503202708c467f609163672ca09f2db082f3b5

Modified Files
--------------
src/backend/optimizer/plan/createplan.c | 8 ++++----
src/test/regress/expected/tsrf.out | 22 ++++++++++++++++++++++
src/test/regress/sql/tsrf.sql | 5 +++++
3 files changed, 31 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2018-07-11 22:47:40 pgsql: Mark built-in btree comparison functions as leakproof where it's
Previous Message Tom Lane 2018-07-11 16:07:33 pgsql: Fix bugs with degenerate window ORDER BY clauses in GROUPS/RANGE