*** analyze.c.orig	Wed Oct 28 14:50:47 1998
--- analyze.c	Wed Oct 28 14:59:12 1998
***************
*** 42,48 ****
  static Query *transformCursorStmt(ParseState *pstate, SelectStmt *stmt);
  static Query *transformCreateStmt(ParseState *pstate, CreateStmt *stmt);
  
! List	   *extras = NIL;
  
  /*
   * parse_analyze -
--- 42,49 ----
  static Query *transformCursorStmt(ParseState *pstate, SelectStmt *stmt);
  static Query *transformCreateStmt(ParseState *pstate, CreateStmt *stmt);
  
! List	   *extras_before = NIL;
! List	   *extras_after = NIL;
  
  /*
   * parse_analyze -
***************
*** 57,62 ****
--- 58,64 ----
  {
  	QueryTreeList *result;
  	ParseState *pstate;
+ 	Query *parsetree;
  	int			i = 0;
  
  	result = malloc(sizeof(QueryTreeList));
***************
*** 66,88 ****
  	while (pl != NIL)
  	{
  		pstate = make_parsestate(parentParseState);
! 		result->qtrees[i++] = transformStmt(pstate, lfirst(pl));
  		if (pstate->p_target_relation != NULL)
  			heap_close(pstate->p_target_relation);
  
! 		if (extras != NIL)
  		{
! 			result->len += length(extras);
  			result->qtrees = (Query **) realloc(result->qtrees, result->len * sizeof(Query *));
! 			while (extras != NIL)
  			{
! 				result->qtrees[i++] = transformStmt(pstate, lfirst(extras));
  				if (pstate->p_target_relation != NULL)
  					heap_close(pstate->p_target_relation);
! 				extras = lnext(extras);
  			}
  		}
! 		extras = NIL;
  		pl = lnext(pl);
  		pfree(pstate);
  	}
--- 68,107 ----
  	while (pl != NIL)
  	{
  		pstate = make_parsestate(parentParseState);
! 		parsetree = transformStmt(pstate, lfirst(pl));
  		if (pstate->p_target_relation != NULL)
  			heap_close(pstate->p_target_relation);
  
! 		if (extras_before != NIL)
  		{
! 			result->len += length(extras_before);
  			result->qtrees = (Query **) realloc(result->qtrees, result->len * sizeof(Query *));
! 			while (extras_before != NIL)
  			{
! 				result->qtrees[i++] = transformStmt(pstate, lfirst(extras_before));
  				if (pstate->p_target_relation != NULL)
  					heap_close(pstate->p_target_relation);
! 				extras_before = lnext(extras_before);
  			}
  		}
! 		extras_before = NIL;
! 
! 		result->qtrees[i++] = parsetree;
! 
! 		if (extras_after != NIL)
! 		{
! 			result->len += length(extras_after);
! 			result->qtrees = (Query **) realloc(result->qtrees, result->len * sizeof(Query *));
! 			while (extras_after != NIL)
! 			{
! 				result->qtrees[i++] = transformStmt(pstate, lfirst(extras_after));
! 				if (pstate->p_target_relation != NULL)
! 					heap_close(pstate->p_target_relation);
! 				extras_after = lnext(extras_after);
! 			}
! 		}
! 		extras_after = NIL;
! 
  		pl = lnext(pl);
  		pfree(pstate);
  	}
***************
*** 487,492 ****
--- 506,512 ----
  	Constraint *constraint;
  	List	   *keys;
  	Ident	   *key;
+ 	List	   *blist = NIL;
  	List	   *ilist = NIL;
  	IndexStmt  *index;
  	IndexElem  *iparam;
***************
*** 553,559 ****
  					elog(NOTICE, "CREATE TABLE will create implicit sequence %s for SERIAL column %s.%s",
  					  sequence->seqname, stmt->relname, column->colname);
  
! 					ilist = lcons(sequence, NIL);
  				}
  
  				if (column->constraints != NIL)
--- 573,579 ----
  					elog(NOTICE, "CREATE TABLE will create implicit sequence %s for SERIAL column %s.%s",
  					  sequence->seqname, stmt->relname, column->colname);
  
! 					blist = lcons(sequence, NIL);
  				}
  
  				if (column->constraints != NIL)
***************
*** 745,751 ****
  	}
  
  	q->utilityStmt = (Node *) stmt;
! 	extras = ilist;
  
  	return q;
  }
--- 765,772 ----
  	}
  
  	q->utilityStmt = (Node *) stmt;
! 	extras_before = blist;
! 	extras_after = ilist;
  
  	return q;
  }
