mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Fix EquivalenceClass processing for nested append relations.
The original coding of EquivalenceClasses didn't foresee that appendrel child relations might themselves be appendrels; but this is possible for example when a UNION ALL subquery scans a table with inheritance children. The oversight led to failure to optimize ordering-related issues very well for the grandchild tables. After some false starts involving explicitly flattening the appendrel representation, we found that this could be fixed easily by removing a few implicit assumptions about appendrel parent rels not being children themselves. Kyotaro Horiguchi and Tom Lane, reviewed by Noah Misch
This commit is contained in:
@@ -751,7 +751,7 @@ create_merge_append_plan(PlannerInfo *root, MergeAppendPath *best_path)
|
||||
|
||||
/* Compute sort column info, and adjust MergeAppend's tlist as needed */
|
||||
(void) prepare_sort_from_pathkeys(root, plan, pathkeys,
|
||||
NULL,
|
||||
best_path->path.parent->relids,
|
||||
NULL,
|
||||
true,
|
||||
&node->numCols,
|
||||
|
||||
Reference in New Issue
Block a user