Index: src/backend/executor/nodeAgg.c
===================================================================
RCS file: /home/neilc/postgres/cvs_root/pgsql/src/backend/executor/nodeAgg.c,v
retrieving revision 1.152
diff -p -c -r1.152 nodeAgg.c
*** src/backend/executor/nodeAgg.c	2 Apr 2007 03:49:38 -0000	1.152
--- src/backend/executor/nodeAgg.c	6 Aug 2007 19:29:11 -0000
*************** ExecReScanAgg(AggState *node, ExprContex
*** 1646,1653 ****
  	MemSet(econtext->ecxt_aggvalues, 0, sizeof(Datum) * node->numaggs);
  	MemSet(econtext->ecxt_aggnulls, 0, sizeof(bool) * node->numaggs);
  
! 	/* Release all temp storage */
! 	MemoryContextReset(node->aggcontext);
  
  	if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED)
  	{
--- 1646,1657 ----
  	MemSet(econtext->ecxt_aggvalues, 0, sizeof(Datum) * node->numaggs);
  	MemSet(econtext->ecxt_aggnulls, 0, sizeof(bool) * node->numaggs);
  
! 	/*
! 	 * Release all temp storage. Note that in the AGG_HASHED case the agg
! 	 * hash table is allocated in a sub-context, so we need to use
! 	 * MemoryContextResetAndDeleteChildren() to reclaim that storage.
! 	 */
! 	MemoryContextResetAndDeleteChildren(node->aggcontext);
  
  	if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED)
  	{
