* postgres transaction access method support code
*
*
- * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: transam.h,v 1.39 2001/08/25 18:52:42 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/access/transam.h,v 1.50 2004/08/29 04:13:03 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef TRANSAM_H
#define TRANSAM_H
-#include "storage/spin.h"
-
/* ----------------
* Special transaction ID values
#define BootstrapTransactionId ((TransactionId) 1)
#define FrozenTransactionId ((TransactionId) 2)
#define FirstNormalTransactionId ((TransactionId) 3)
+#define MaxTransactionId ((TransactionId) 0xFFFFFFFF)
/* ----------------
* transaction ID manipulation macros
*/
#define TransactionIdIsValid(xid) ((xid) != InvalidTransactionId)
#define TransactionIdIsNormal(xid) ((xid) >= FirstNormalTransactionId)
-#define TransactionIdEquals(id1, id2) ((id1) == (id2))
-#define TransactionIdPrecedes(id1, id2) ((id1) < (id2))
-#define TransactionIdPrecedesOrEquals(id1, id2) ((id1) <= (id2))
-#define TransactionIdFollows(id1, id2) ((id1) > (id2))
-#define TransactionIdFollowsOrEquals(id1, id2) ((id1) >= (id2))
+#define TransactionIdEquals(id1, id2) ((id1) == (id2))
#define TransactionIdStore(xid, dest) (*(dest) = (xid))
-#define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId)
+#define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId)
/* advance a transaction ID variable, handling wraparound correctly */
#define TransactionIdAdvance(dest) \
do { \
* OIDS 10000-16383 are reserved for assignment by genbki.sh.
*
* OIDs beginning at 16384 are assigned at runtime from the OID
- * generator. (The first few of these will be assigned during initdb,
+ * generator. (The first few of these will be assigned during initdb,
* to objects created after the initial BKI script processing.)
*
* The choices of 10000 and 16384 are completely arbitrary, and can be moved
* ----------------
*/
+/* in transam/transam.c */
+extern bool AMI_OVERRIDE;
+
+/* in transam/varsup.c */
+extern VariableCache ShmemVariableCache;
+
+
/*
* prototypes for functions in transam/transam.c
*/
extern bool TransactionIdDidAbort(TransactionId transactionId);
extern void TransactionIdCommit(TransactionId transactionId);
extern void TransactionIdAbort(TransactionId transactionId);
+extern void TransactionIdSubCommit(TransactionId transactionId);
+extern void TransactionIdCommitTree(int nxids, TransactionId *xids);
+extern void TransactionIdAbortTree(int nxids, TransactionId *xids);
+extern bool TransactionIdPrecedes(TransactionId id1, TransactionId id2);
+extern bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2);
+extern bool TransactionIdFollows(TransactionId id1, TransactionId id2);
+extern bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2);
/* in transam/varsup.c */
-extern TransactionId GetNewTransactionId(void);
+extern TransactionId GetNewTransactionId(bool isSubXact);
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 SPINLOCK OidGenLockId;
-extern SPINLOCK XidGenLockId;
-extern VariableCache ShmemVariableCache;
-
-#endif /* TRAMSAM_H */
+#endif /* TRAMSAM_H */