diff options
Diffstat (limited to 'src/backend/access/transam')
-rw-r--r-- | src/backend/access/transam/transam.c | 29 | ||||
-rw-r--r-- | src/backend/access/transam/varsup.c | 9 | ||||
-rw-r--r-- | src/backend/access/transam/xact.c | 20 |
3 files changed, 32 insertions, 26 deletions
diff --git a/src/backend/access/transam/transam.c b/src/backend/access/transam/transam.c index 5c26227748c..34a13d3ae67 100644 --- a/src/backend/access/transam/transam.c +++ b/src/backend/access/transam/transam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.50 2001/11/05 17:46:24 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.51 2002/05/25 20:00:11 tgl Exp $ * * NOTES * This file contains the high level access-method interface to the @@ -23,6 +23,18 @@ #include "access/transam.h" +/* ---------------- + * Flag indicating that we are bootstrapping. + * + * Transaction ID generation is disabled during bootstrap; we just use + * BootstrapTransactionId. Also, the transaction ID status-check routines + * are short-circuited; they claim that BootstrapTransactionId has already + * committed, allowing tuples already inserted to be seen immediately. + * ---------------- + */ +bool AMI_OVERRIDE = false; + + static bool TransactionLogTest(TransactionId transactionId, XidStatus status); static void TransactionLogUpdate(TransactionId transactionId, XidStatus status); @@ -160,7 +172,10 @@ bool /* true if given transaction committed */ TransactionIdDidCommit(TransactionId transactionId) { if (AMI_OVERRIDE) + { + Assert(transactionId == BootstrapTransactionId); return true; + } return TransactionLogTest(transactionId, TRANSACTION_STATUS_COMMITTED); } @@ -176,7 +191,10 @@ bool /* true if given transaction aborted */ TransactionIdDidAbort(TransactionId transactionId) { if (AMI_OVERRIDE) + { + Assert(transactionId == BootstrapTransactionId); return false; + } return TransactionLogTest(transactionId, TRANSACTION_STATUS_ABORTED); } @@ -193,7 +211,10 @@ bool TransactionIdIsInProgress(TransactionId transactionId) { if (AMI_OVERRIDE) + { + Assert(transactionId == BootstrapTransactionId); return false; + } return TransactionLogTest(transactionId, TRANSACTION_STATUS_IN_PROGRESS); } @@ -215,9 +236,6 @@ TransactionIdIsInProgress(TransactionId transactionId) void TransactionIdCommit(TransactionId transactionId) { - if (AMI_OVERRIDE) - return; - TransactionLogUpdate(transactionId, TRANSACTION_STATUS_COMMITTED); } @@ -231,9 +249,6 @@ TransactionIdCommit(TransactionId transactionId) void TransactionIdAbort(TransactionId transactionId) { - if (AMI_OVERRIDE) - return; - TransactionLogUpdate(transactionId, TRANSACTION_STATUS_ABORTED); } diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c index cd58ed7ad84..80618e3de12 100644 --- a/src/backend/access/transam/varsup.c +++ b/src/backend/access/transam/varsup.c @@ -6,7 +6,7 @@ * Copyright (c) 2000, PostgreSQL Global Development Group * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.48 2001/10/28 06:25:42 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.49 2002/05/25 20:00:11 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -93,13 +93,6 @@ ReadNewTransactionId(void) { TransactionId xid; - /* - * During bootstrap initialization, we return the special bootstrap - * transaction id. - */ - if (AMI_OVERRIDE) - return BootstrapTransactionId; - LWLockAcquire(XidGenLock, LW_SHARED); xid = ShmemVariableCache->nextXid; LWLockRelease(XidGenLock); diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index b874b4790ad..f2a3caeabd9 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.124 2002/05/22 21:40:55 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.125 2002/05/25 20:00:12 tgl Exp $ * * NOTES * Transaction aborts can now occur two ways: @@ -229,13 +229,6 @@ int CommitSiblings = 5; /* number of concurrent xacts needed to static void (*_RollbackFunc) (void *) = NULL; static void *_RollbackData = NULL; -/* ---------------- - * catalog creation transaction bootstrapping flag. - * This should be eliminated and added to the transaction - * state stuff. -cim 3/19/90 - * ---------------- - */ -bool AMI_OVERRIDE = false; /* ---------------------------------------------------------------- * transaction state accessors @@ -380,6 +373,11 @@ GetCurrentTransactionStartTimeUsec(int *msec) /* -------------------------------- * TransactionIdIsCurrentTransactionId + * + * During bootstrap, we cheat and say "it's not my transaction ID" even though + * it is. Along with transam.c's cheat to say that the bootstrap XID is + * already committed, this causes the tqual.c routines to see previously + * inserted tuples as committed, which is what we need during bootstrap. * -------------------------------- */ bool @@ -388,7 +386,10 @@ TransactionIdIsCurrentTransactionId(TransactionId xid) TransactionState s = CurrentTransactionState; if (AMI_OVERRIDE) + { + Assert(xid == BootstrapTransactionId); return false; + } return TransactionIdEquals(xid, s->transactionIdData); } @@ -403,9 +404,6 @@ CommandIdIsCurrentCommandId(CommandId cid) { TransactionState s = CurrentTransactionState; - if (AMI_OVERRIDE) - return false; - return (cid == s->commandId) ? true : false; } |