mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	Fix GROUP BY when order of entries is different from order in target list.
This commit is contained in:
		| @@ -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; | ||||
| 			} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user