aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/transam.c29
-rw-r--r--src/backend/access/transam/varsup.c9
-rw-r--r--src/backend/access/transam/xact.c20
-rw-r--r--src/backend/utils/time/tqual.c14
-rw-r--r--src/include/access/transam.h20
5 files changed, 41 insertions, 51 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;
}
diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c
index 9f51304e68b..31a2894b0ad 100644
--- a/src/backend/utils/time/tqual.c
+++ b/src/backend/utils/time/tqual.c
@@ -16,7 +16,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.53 2002/05/24 18:57:56 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.54 2002/05/25 20:00:12 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -202,9 +202,6 @@ HeapTupleSatisfiesItself(HeapTupleHeader tuple)
bool
HeapTupleSatisfiesNow(HeapTupleHeader tuple)
{
- if (AMI_OVERRIDE)
- return true;
-
if (!(tuple->t_infomask & HEAP_XMIN_COMMITTED))
{
if (tuple->t_infomask & HEAP_XMIN_INVALID)
@@ -375,9 +372,6 @@ HeapTupleSatisfiesUpdate(HeapTuple htuple, CommandId curcid)
{
HeapTupleHeader tuple = htuple->t_data;
- if (AMI_OVERRIDE)
- return HeapTupleMayBeUpdated;
-
if (!(tuple->t_infomask & HEAP_XMIN_COMMITTED))
{
if (tuple->t_infomask & HEAP_XMIN_INVALID)
@@ -509,9 +503,6 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple)
SnapshotDirty->xmin = SnapshotDirty->xmax = InvalidTransactionId;
ItemPointerSetInvalid(&(SnapshotDirty->tid));
- if (AMI_OVERRIDE)
- return true;
-
if (!(tuple->t_infomask & HEAP_XMIN_COMMITTED))
{
if (tuple->t_infomask & HEAP_XMIN_INVALID)
@@ -639,9 +630,6 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple)
bool
HeapTupleSatisfiesSnapshot(HeapTupleHeader tuple, Snapshot snapshot)
{
- if (AMI_OVERRIDE)
- return true;
-
/* XXX this is horribly ugly: */
if (ReferentialIntegritySnapshotOverride)
return HeapTupleSatisfiesNow(tuple);
diff --git a/src/include/access/transam.h b/src/include/access/transam.h
index 6df60abb2dd..d13e5608bad 100644
--- a/src/include/access/transam.h
+++ b/src/include/access/transam.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: transam.h,v 1.44 2001/11/05 17:46:31 momjian Exp $
+ * $Id: transam.h,v 1.45 2002/05/25 20:00:12 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -92,6 +92,13 @@ typedef VariableCacheData *VariableCache;
* ----------------
*/
+/* in transam/transam.c */
+extern bool AMI_OVERRIDE;
+
+/* in transam/varsup.c */
+extern VariableCache ShmemVariableCache;
+
+
/*
* prototypes for functions in transam/transam.c
*/
@@ -111,15 +118,4 @@ extern TransactionId ReadNewTransactionId(void);
extern Oid GetNewObjectId(void);
extern void CheckMaxObjectId(Oid assigned_oid);
-/* ----------------
- * global variable extern declarations
- * ----------------
- */
-
-/* in xact.c */
-extern bool AMI_OVERRIDE;
-
-/* in varsup.c */
-extern VariableCache ShmemVariableCache;
-
#endif /* TRAMSAM_H */