diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 2f469bd924e..6d6978dcf5b 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.227 2008/03/18 22:04:14 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.228 2008/03/27 19:06:14 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -950,6 +950,17 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) * right tlist, and it has no sort order. */ current_pathkeys = NIL; + /* + * In fact, since we don't optimize grouped aggregates, it + * needs no sort order --- there must be exactly one output row, + * and so any ORDER BY or DISTINCT attached to the query is + * useless and can be dropped. Aside from saving useless cycles, + * this protects us against problems with matching the hacked-up + * tlist entries to sort clauses. + */ + Assert(!parse->groupClause); + parse->sortClause = NULL; + parse->distinctClause = NULL; } else { |