From c42f7f14609cf9ecf62f5011b02cf12d7f3c52cb Mon Sep 17 00:00:00 2001
From: "Vadim B. Mikheev" <vadim4o@yahoo.com>
Date: Thu, 25 Sep 1997 12:21:15 +0000
Subject: [PATCH] Fix GROUP BY when order of entries is different from order in
 target list.

---
 src/backend/optimizer/plan/planmain.c | 12 ++++++------
 1 file 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;
 			}
-- 
GitLab