*** src/backend/optimizer/plan/planner.c.orig	Wed Mar  5 13:38:26 2003
--- src/backend/optimizer/plan/planner.c	Thu Mar 13 11:21:16 2003
***************
*** 1498,1510 ****
  		 * are just dummies with no extra execution cost.)
  		 */
  		List	   *sort_tlist = new_unsorted_tlist(subplan->targetlist);
  		int			keyno = 0;
  		List	   *gl;
  
  		foreach(gl, groupClause)
  		{
  			GroupClause *grpcl = (GroupClause *) lfirst(gl);
! 			TargetEntry *te = nth(grpColIdx[keyno] - 1, sort_tlist);
  			Resdom	   *resdom = te->resdom;
  
  			/*
--- 1498,1511 ----
  		 * are just dummies with no extra execution cost.)
  		 */
  		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[grpno] - 1, sort_tlist);
  			Resdom	   *resdom = te->resdom;
  
  			/*
***************
*** 1518,1523 ****
--- 1519,1525 ----
  				resdom->reskey = ++keyno;
  				resdom->reskeyop = grpcl->sortop;
  			}
+ 			grpno++;
  		}
  
  		Assert(keyno > 0);
