📄 transam.h
字号:
/*------------------------------------------------------------------------- * * transam.h * postgres transaction access method support code * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/access/transam.h,v 1.56 2005/10/15 02:49:42 momjian Exp $ * *------------------------------------------------------------------------- */#ifndef TRANSAM_H#define TRANSAM_H/* ---------------- * Special transaction ID values * * BootstrapTransactionId is the XID for "bootstrap" operations, and * FrozenTransactionId is used for very old tuples. Both should * always be considered valid. * * FirstNormalTransactionId is the first "normal" transaction id. * ---------------- */#define InvalidTransactionId ((TransactionId) 0)#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 TransactionIdStore(xid, dest) (*(dest) = (xid))#define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId)/* advance a transaction ID variable, handling wraparound correctly */#define TransactionIdAdvance(dest) \ do { \ (dest)++; \ if ((dest) < FirstNormalTransactionId) \ (dest) = FirstNormalTransactionId; \ } while(0)/* ---------- * Object ID (OID) zero is InvalidOid. * * OIDs 1-9999 are reserved for manual assignment (see the files * in src/include/catalog/). * * OIDS 10000-16383 are reserved for assignment during initdb * using the OID generator. (We start the generator at 10000.) * * OIDs beginning at 16384 are assigned from the OID generator * during normal multiuser operation. (We force the generator up to * 16384 as soon as we are in normal operation.) * * The choices of 10000 and 16384 are completely arbitrary, and can be moved * if we run low on OIDs in either category. Changing the macros below * should be sufficient to do this. * * NOTE: if the OID generator wraps around, we skip over OIDs 0-16383 * and resume with 16384. This minimizes the odds of OID conflict, by not * reassigning OIDs that might have been assigned during initdb. * ---------- */#define FirstBootstrapObjectId 10000#define FirstNormalObjectId 16384/* * VariableCache is placed in shmem and used by * backends to get next available OID & XID. * * Note: xidWrapLimit and limit_datname are not "active" values, but are * used just to generate useful messages when xidWarnLimit or xidStopLimit * are exceeded. */typedef struct VariableCacheData{ Oid nextOid; /* next OID to assign */ uint32 oidCount; /* OIDs available before must do XLOG work */ TransactionId nextXid; /* next XID to assign */ TransactionId xidWarnLimit; /* start complaining here */ TransactionId xidStopLimit; /* refuse to advance nextXid beyond here */ TransactionId xidWrapLimit; /* where the world ends */ NameData limit_datname; /* database that needs vacuumed first */} VariableCacheData;typedef VariableCacheData *VariableCache;/* ---------------- * extern declarations * ---------------- *//* in transam/varsup.c */extern VariableCache ShmemVariableCache;/* * prototypes for functions in transam/transam.c */extern bool TransactionIdDidCommit(TransactionId transactionId);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(bool isSubXact);extern TransactionId ReadNewTransactionId(void);extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Name oldest_datname);extern Oid GetNewObjectId(void);#endif /* TRAMSAM_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -