aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-03-13 16:58:35 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-03-13 16:58:35 +0000
commit6c4996fa6b635db71e2348025a7ba77d71da69f3 (patch)
treeb3853d820df938746e76a7cf2f48a238c512044e /src
parent706a32cdf6329e8961a30c7f1125df97e3ea3236 (diff)
downloadpostgresql-6c4996fa6b635db71e2348025a7ba77d71da69f3.tar.gz
postgresql-6c4996fa6b635db71e2348025a7ba77d71da69f3.zip
GROUP BY got confused if there were multiple equal() GROUP BY items.
This bug has been latent since 7.0 or maybe even further back, but it was only exposed when parse_clause.c stopped suppressing duplicate items (see its rev 1.96 of 18-Aug-02).
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/plan/planner.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 9fa78b8a237..e53a18ac296 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.151 2003/03/10 03:53:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.152 2003/03/13 16:58:35 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1489,13 +1489,14 @@ make_groupsortplan(Query *parse,
Plan *subplan)
{
List *sort_tlist = new_unsorted_tlist(subplan->targetlist);
+ int grpno = 0;
int keyno = 0;
List *gl;
foreach(gl, groupClause)
{
GroupClause *grpcl = (GroupClause *) lfirst(gl);
- TargetEntry *te = nth(grpColIdx[keyno] - 1, sort_tlist);
+ TargetEntry *te = nth(grpColIdx[grpno] - 1, sort_tlist);
Resdom *resdom = te->resdom;
/*
@@ -1509,6 +1510,7 @@ make_groupsortplan(Query *parse,
resdom->reskey = ++keyno;
resdom->reskeyop = grpcl->sortop;
}
+ grpno++;
}
Assert(keyno > 0);