|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.229 2008/03/28 02:00:11 tgl Exp $ |
| 11 | + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.230 2008/03/2900:15:28 tgl Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -835,21 +835,6 @@ grouping_planner(PlannerInfo *root, double tuple_fraction)
|
835 | 835 |
|
836 | 836 | MemSet(&agg_counts,0,sizeof(AggClauseCounts));
|
837 | 837 |
|
838 |
| -/* |
839 |
| - * If the query involves ungrouped aggregation, then it can produce |
840 |
| - * at most one row, so we can ignore any ORDER BY or DISTINCT |
841 |
| - * request. This isn't all that exciting as an optimization, but it |
842 |
| - * prevents a corner case when optimize_minmax_aggregates succeeds: |
843 |
| - * if ORDER BY or DISTINCT were present we'd try, and fail, to match |
844 |
| - * the EquivalenceClasses we're about to build with the modified |
845 |
| - * targetlist entries it will create. |
846 |
| - */ |
847 |
| -if (parse->hasAggs&&parse->groupClause==NIL) |
848 |
| -{ |
849 |
| -parse->sortClause=NIL; |
850 |
| -parse->distinctClause=NIL; |
851 |
| -} |
852 |
| - |
853 | 838 | /* Preprocess targetlist */
|
854 | 839 | tlist=preprocess_targetlist(root,tlist);
|
855 | 840 |
|
|