Skip to content

Commit af7d270

Browse files
committed
Fix hypothetical problem passing the wrong GROUP BY pathkeys
1349d27 changed things to make the planner request that the query_pathkeys contain pathkeys for any ORDER BY / DISTINCT aggregates. Some code added prior to that commit in db0d67d made it so the order that the pathkeys appear in the group_pathkeys could be changed so that the GROUP BY could be executed in a more optimal order which minimized sort comparisons. 1349d27 had to make sure that the pathkeys for any ORDER BY / DISTINCT aggregates remained at the end of the groupby_pathkeys and wasn't reordered, so some code was added to add_paths_to_grouping_rel() to first strip off any pathkeys belonging to ORDER BY / DISTINCT aggregates before passing to the function to optimize the order of the group_pathkeys. It seems I dropped the ball in 1349d27 and mistakenly used the untouched PlannerInfo.group_pathkeys to pass to get_useful_group_keys_orderings() instead of the version that had the aggregate pathkeys removed. It was only the code path that was handling creating paths for partially_grouped_rel which made this mistake. In practice, we'll never have any extra pathkeys to strip off when processing partially_grouped_rel as that's only used when considering partial paths, which we never do when there are ORDER BY / DISTINCT aggregates. So this is just a hypothetical bug, not a live bug. We already have the correct pathkeys determined, so it's of no extra cost to pass the correct variable. Reported-by: Justin Pryzby Discussion: https://postgr.es/m/[email protected]
1 parent a340359 commit af7d270

File tree

1 file changed

+0
-3
lines changed

1 file changed

+0
-3
lines changed

src/backend/optimizer/plan/planner.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6637,10 +6637,7 @@ add_paths_to_grouping_rel(PlannerInfo *root, RelOptInfo *input_rel,
66376637
ListCell *lc2;
66386638
Path *path = (Path *) lfirst(lc);
66396639
Path *path_original = path;
6640-
66416640
List *pathkey_orderings = NIL;
6642-
6643-
List *group_pathkeys = root->group_pathkeys;
66446641
List *group_clauses = parse->groupClause;
66456642

66466643
/* generate alternative group orderings that might be useful */

0 commit comments

Comments
 (0)