88 *
99 *
1010 * IDENTIFICATION
11- * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.50 2001/11/05 17:46:24 momjian Exp $
11+ * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.51 2002/05/25 20:00:11 tgl Exp $
1212 *
1313 * NOTES
1414 * This file contains the high level access-method interface to the
2323#include "access/transam.h"
2424
2525
26+ /* ----------------
27+ *Flag indicating that we are bootstrapping.
28+ *
29+ * Transaction ID generation is disabled during bootstrap; we just use
30+ * BootstrapTransactionId. Also, the transaction ID status-check routines
31+ * are short-circuited; they claim that BootstrapTransactionId has already
32+ * committed, allowing tuples already inserted to be seen immediately.
33+ * ----------------
34+ */
35+ bool AMI_OVERRIDE = false;
36+
37+
2638static bool TransactionLogTest (TransactionId transactionId ,XidStatus status );
2739static void TransactionLogUpdate (TransactionId transactionId ,
2840XidStatus status );
@@ -160,7 +172,10 @@ bool/* true if given transaction committed */
160172TransactionIdDidCommit (TransactionId transactionId )
161173{
162174if (AMI_OVERRIDE )
175+ {
176+ Assert (transactionId == BootstrapTransactionId );
163177return true;
178+ }
164179
165180return TransactionLogTest (transactionId ,TRANSACTION_STATUS_COMMITTED );
166181}
@@ -176,7 +191,10 @@ bool/* true if given transaction aborted */
176191TransactionIdDidAbort (TransactionId transactionId )
177192{
178193if (AMI_OVERRIDE )
194+ {
195+ Assert (transactionId == BootstrapTransactionId );
179196return false;
197+ }
180198
181199return TransactionLogTest (transactionId ,TRANSACTION_STATUS_ABORTED );
182200}
@@ -193,7 +211,10 @@ bool
193211TransactionIdIsInProgress (TransactionId transactionId )
194212{
195213if (AMI_OVERRIDE )
214+ {
215+ Assert (transactionId == BootstrapTransactionId );
196216return false;
217+ }
197218
198219return TransactionLogTest (transactionId ,TRANSACTION_STATUS_IN_PROGRESS );
199220}
@@ -215,9 +236,6 @@ TransactionIdIsInProgress(TransactionId transactionId)
215236void
216237TransactionIdCommit (TransactionId transactionId )
217238{
218- if (AMI_OVERRIDE )
219- return ;
220-
221239TransactionLogUpdate (transactionId ,TRANSACTION_STATUS_COMMITTED );
222240}
223241
@@ -231,9 +249,6 @@ TransactionIdCommit(TransactionId transactionId)
231249void
232250TransactionIdAbort (TransactionId transactionId )
233251{
234- if (AMI_OVERRIDE )
235- return ;
236-
237252TransactionLogUpdate (transactionId ,TRANSACTION_STATUS_ABORTED );
238253}
239254