diff options
Diffstat (limited to 'src/backend/optimizer/plan/planner.c')
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 032818423f6..ea107c70cb8 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -3395,12 +3395,17 @@ standard_qp_callback(PlannerInfo *root, void *extra) */ bool sortable; + /* + * Convert group clauses into pathkeys. Set the ec_sortref field of + * EquivalenceClass'es if it's not set yet. + */ root->group_pathkeys = make_pathkeys_for_sortclauses_extended(root, &root->processed_groupClause, tlist, true, - &sortable); + &sortable, + true); if (!sortable) { /* Can't sort; no point in considering aggregate ordering either */ @@ -3450,7 +3455,8 @@ standard_qp_callback(PlannerInfo *root, void *extra) &root->processed_distinctClause, tlist, true, - &sortable); + &sortable, + false); if (!sortable) root->distinct_pathkeys = NIL; } @@ -3476,7 +3482,8 @@ standard_qp_callback(PlannerInfo *root, void *extra) &groupClauses, tlist, false, - &sortable); + &sortable, + false); if (!sortable) root->setop_pathkeys = NIL; } @@ -6061,7 +6068,8 @@ make_pathkeys_for_window(PlannerInfo *root, WindowClause *wc, &wc->partitionClause, tlist, true, - &sortable); + &sortable, + false); Assert(sortable); } |