diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c index 4bcc55bb92c7e4ed1cad72a3d87b386036700b54..fd23de1d98463810ef4614ff08696cbeef0e8ced 100644 --- a/src/backend/access/transam/varsup.c +++ b/src/backend/access/transam/varsup.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.20 1999/05/25 16:07:48 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.21 1999/06/03 04:41:40 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -19,6 +19,7 @@ #include <access/xact.h> #include <access/heapam.h> #include <catalog/catname.h> +#include <storage/proc.h> static void GetNewObjectIdBlock(Oid *oid_return, int oid_block_size); static void VariableRelationGetNextOid(Oid *oid_return); @@ -308,6 +309,9 @@ GetNewTransactionId(TransactionId *xid) TransactionIdAdd(&(ShmemVariableCache->nextXid), 1); (ShmemVariableCache->xid_count)--; + if (MyProc != (PROC *) NULL) + MyProc->xid = *xid; + SpinRelease(OidGenLockId); } diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 8453d8688c2c4036b77966457450554bf017fa8d..6884e635904fce8e6d174c7797d476763e321b72 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.37 1999/05/31 22:53:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.38 1999/06/03 04:41:41 vadim Exp $ * * NOTES * Transaction aborts can now occur two ways: @@ -646,6 +646,18 @@ RecordTransactionCommit() FlushBufferPool(!TransactionFlushEnabled()); if (leak) ResetBufferPool(); + + /* + * Let others know about no transaction in progress. + * Note that this must be done _before_ releasing locks + * we hold or bad (too high) XmaxRecent value might be + * used by vacuum. + */ + if (MyProc != (PROC *) NULL) + { + MyProc->xid = InvalidTransactionId; + MyProc->xmin = InvalidTransactionId; + } } @@ -884,13 +896,6 @@ StartTransaction() */ s->state = TRANS_INPROGRESS; - /* - * Let others to know about current transaction is in progress - vadim - * 11/26/96 - */ - if (MyProc != (PROC *) NULL) - MyProc->xid = s->transactionIdData; - } /* --------------- @@ -958,15 +963,6 @@ CommitTransaction() */ s->state = TRANS_DEFAULT; - /* - * Let others to know about no transaction in progress - vadim - * 11/26/96 - */ - if (MyProc != (PROC *) NULL) - { - MyProc->xid = InvalidTransactionId; - MyProc->xmin = InvalidTransactionId; - } } /* --------------------------------