patch.03

text/plain

Filename: patch.03
Type: text/plain
Part: 0
Message: Changes to sequence.c
*** src/backend/commands/sequence.c.orig	Sun Mar  1 23:35:30 1998
--- src/backend/commands/sequence.c	Mon Mar  2 00:45:30 1998
***************
*** 304,309 ****
--- 304,312 ----
  {
  	char	   *seqname = textout(seqin);
  	SeqTable	elm;
+ 	Buffer		buf;
+ 	SequenceTupleForm seq;
+ 	ItemPointerData iptr;
  	int4		result;
  
  	/* open and WIntentLock sequence */
***************
*** 312,321 ****
  
  	if (elm->increment == 0)	/* nextval/read_info were not called */
  	{
! 		elog(ERROR, "%s.currval is not yet defined in this session", elm->name);
  	}
! 
! 	result = elm->last;
  
  	return (result);
  
--- 315,327 ----
  
  	if (elm->increment == 0)	/* nextval/read_info were not called */
  	{
! 		/* Prime the pump (so to speak) by reading the sequence tuple */
! 		result = (read_info("currval", elm, &buf))->last_value;
! 		ItemPointerSet(&iptr, 0, FirstOffsetNumber);
! 		RelationUnsetSingleWLockPage(elm->rel, &iptr);
  	}
! 	else
! 		result = elm->last;
  
  	return (result);