aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-09-25 12:21:15 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-09-25 12:21:15 +0000
commitc42f7f14609cf9ecf62f5011b02cf12d7f3c52cb (patch)
tree5ad896b07c09ff394813e5daa4a1595467c177db /src
parentbb0cc20e64d29b05eb32fd9f970f9697d473000a (diff)
downloadpostgresql-c42f7f14609cf9ecf62f5011b02cf12d7f3c52cb.tar.gz
postgresql-c42f7f14609cf9ecf62f5011b02cf12d7f3c52cb.zip
Fix GROUP BY when order of entries is different from order in target list.
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/plan/planmain.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c
index 55cd710f420..fe499341010 100644
--- a/src/backend/optimizer/plan/planmain.c
+++ b/src/backend/optimizer/plan/planmain.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.7 1997/09/08 21:45:24 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.8 1997/09/25 12:21:15 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -394,7 +394,6 @@ make_groupPlan(List **tlist,
Group *grpplan;
int numCols;
AttrNumber *grpColIdx;
- int keyno = 1;
int last_resno = 1;
numCols = length(groupClause);
@@ -412,13 +411,15 @@ make_groupPlan(List **tlist,
*/
foreach(sl, sort_tlist)
{
- Resdom *resdom = NULL;
- TargetEntry *te = (TargetEntry *) lfirst(sl);
+ Resdom *resdom = NULL;
+ TargetEntry *te = (TargetEntry *) lfirst(sl);
+ int keyno = 0;
- foreach(gl, glc)
+ foreach(gl, groupClause)
{
GroupClause *grpcl = (GroupClause *) lfirst(gl);
+ keyno++;
if (grpcl->entry->resdom->resno == te->resdom->resno)
{
@@ -427,7 +428,6 @@ make_groupPlan(List **tlist,
resdom->reskeyop = get_opcode(grpcl->grpOpoid);
resdom->resno = last_resno; /* re-set */
grpColIdx[keyno - 1] = last_resno++;
- keyno++;
glc = lremove(lfirst(gl), glc); /* TLE found for it */
break;
}