]> granicus.if.org Git - postgresql/commitdiff
Fix GROUP BY when order of entries is different from order in target list.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 25 Sep 1997 12:21:15 +0000 (12:21 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 25 Sep 1997 12:21:15 +0000 (12:21 +0000)
src/backend/optimizer/plan/planmain.c

index 55cd710f420ac7390f727b56eb59b8e11034accd..fe499341010ddcb49e96414eedb2391bacd1f725 100644 (file)
@@ -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;
                        }