postgresql/src/include/optimizer
David Rowley d5d2205c8d Fix assert failure when planning setop subqueries with CTEs
66c0185a3 adjusted the UNION planner to request that union child queries
produce Paths correctly ordered to implement the UNION by way of
MergeAppend followed by Unique.  The code there made a bad assumption
that if the root->parent_root->parse had setOperations set that the
query must be the child subquery of a set operation.  That's not true
when it comes to planning a non-inlined CTE which is parented by a set
operation.  This causes issues as the CTE's targetlist has no
requirement to match up to the SetOperationStmt's groupClauses

Fix this by adding a new parameter to both subquery_planner() and
grouping_planner() to explicitly pass the SetOperationStmt only when
planning set operation child subqueries.

Thank you to Tom Lane for helping to rationalize the decision on the
best function signature for subquery_planner().

Reported-by: Alexander Lakhin
Discussion: https://postgr.es/m/242fc7c6-a8aa-2daf-ac4c-0a231e2619c1@gmail.com
2024-04-02 12:15:45 +13:00
..
appendinfo.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
clauses.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
cost.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_copy.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_gene.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_misc.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_mutation.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_pool.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_random.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_recombination.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
geqo_selection.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
inherit.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
joininfo.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
optimizer.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
orclauses.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
paramassign.h Add RETURNING support to MERGE. 2024-03-17 13:58:59 +00:00
pathnode.h Add support for MERGE ... WHEN NOT MATCHED BY SOURCE. 2024-03-30 10:00:26 +00:00
paths.h Do not translate dummy SpecialJoinInfos for child joins 2024-03-25 18:06:47 +09:00
placeholder.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
plancat.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
planmain.h Add better handling of redundant IS [NOT] NULL quals 2024-01-23 18:09:18 +13:00
planner.h Fix assert failure when planning setop subqueries with CTEs 2024-04-02 12:15:45 +13:00
prep.h Allow planner to use Merge Append to efficiently implement UNION 2024-03-25 14:31:14 +13:00
restrictinfo.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
subselect.h Update copyright for 2024 2024-01-03 20:49:05 -05:00
tlist.h Update copyright for 2024 2024-01-03 20:49:05 -05:00