diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-03-13 16:58:35 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-03-13 16:58:35 +0000 |
commit | 6c4996fa6b635db71e2348025a7ba77d71da69f3 (patch) | |
tree | b3853d820df938746e76a7cf2f48a238c512044e /src | |
parent | 706a32cdf6329e8961a30c7f1125df97e3ea3236 (diff) | |
download | postgresql-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.c | 6 |
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); |