8
8
*
9
9
*
10
10
* 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 $
12
12
*
13
13
* NOTES
14
14
* This file contains the high level access-method interface to the
23
23
#include "access/transam.h"
24
24
25
25
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
+
26
38
static bool TransactionLogTest (TransactionId transactionId ,XidStatus status );
27
39
static void TransactionLogUpdate (TransactionId transactionId ,
28
40
XidStatus status );
@@ -160,7 +172,10 @@ bool/* true if given transaction committed */
160
172
TransactionIdDidCommit (TransactionId transactionId )
161
173
{
162
174
if (AMI_OVERRIDE )
175
+ {
176
+ Assert (transactionId == BootstrapTransactionId );
163
177
return true;
178
+ }
164
179
165
180
return TransactionLogTest (transactionId ,TRANSACTION_STATUS_COMMITTED );
166
181
}
@@ -176,7 +191,10 @@ bool/* true if given transaction aborted */
176
191
TransactionIdDidAbort (TransactionId transactionId )
177
192
{
178
193
if (AMI_OVERRIDE )
194
+ {
195
+ Assert (transactionId == BootstrapTransactionId );
179
196
return false;
197
+ }
180
198
181
199
return TransactionLogTest (transactionId ,TRANSACTION_STATUS_ABORTED );
182
200
}
@@ -193,7 +211,10 @@ bool
193
211
TransactionIdIsInProgress (TransactionId transactionId )
194
212
{
195
213
if (AMI_OVERRIDE )
214
+ {
215
+ Assert (transactionId == BootstrapTransactionId );
196
216
return false;
217
+ }
197
218
198
219
return TransactionLogTest (transactionId ,TRANSACTION_STATUS_IN_PROGRESS );
199
220
}
@@ -215,9 +236,6 @@ TransactionIdIsInProgress(TransactionId transactionId)
215
236
void
216
237
TransactionIdCommit (TransactionId transactionId )
217
238
{
218
- if (AMI_OVERRIDE )
219
- return ;
220
-
221
239
TransactionLogUpdate (transactionId ,TRANSACTION_STATUS_COMMITTED );
222
240
}
223
241
@@ -231,9 +249,6 @@ TransactionIdCommit(TransactionId transactionId)
231
249
void
232
250
TransactionIdAbort (TransactionId transactionId )
233
251
{
234
- if (AMI_OVERRIDE )
235
- return ;
236
-
237
252
TransactionLogUpdate (transactionId ,TRANSACTION_STATUS_ABORTED );
238
253
}
239
254