31 #define InvalidTransactionId ((TransactionId) 0) 32 #define BootstrapTransactionId ((TransactionId) 1) 33 #define FrozenTransactionId ((TransactionId) 2) 34 #define FirstNormalTransactionId ((TransactionId) 3) 35 #define MaxTransactionId ((TransactionId) 0xFFFFFFFF) 41 #define TransactionIdIsValid(xid) ((xid) != InvalidTransactionId) 42 #define TransactionIdIsNormal(xid) ((xid) >= FirstNormalTransactionId) 43 #define TransactionIdEquals(id1, id2) ((id1) == (id2)) 44 #define TransactionIdStore(xid, dest) (*(dest) = (xid)) 45 #define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId) 47 #define EpochFromFullTransactionId(x) ((uint32) ((x).value >> 32)) 48 #define XidFromFullTransactionId(x) ((uint32) (x).value) 49 #define U64FromFullTransactionId(x) ((x).value) 50 #define FullTransactionIdEquals(a, b) ((a).value == (b).value) 51 #define FullTransactionIdPrecedes(a, b) ((a).value < (b).value) 52 #define FullTransactionIdPrecedesOrEquals(a, b) ((a).value <= (b).value) 53 #define FullTransactionIdFollows(a, b) ((a).value > (b).value) 54 #define FullTransactionIdFollowsOrEquals(a, b) ((a).value >= (b).value) 55 #define FullTransactionIdIsValid(x) TransactionIdIsValid(XidFromFullTransactionId(x)) 56 #define InvalidFullTransactionId FullTransactionIdFromEpochAndXid(0, InvalidTransactionId) 57 #define FirstNormalFullTransactionId FullTransactionIdFromEpochAndXid(0, FirstNormalTransactionId) 58 #define FullTransactionIdIsNormal(x) FullTransactionIdFollowsOrEquals(x, FirstNormalFullTransactionId) 75 result.
value = ((uint64) epoch) << 32 | xid;
91 #define TransactionIdAdvance(dest) \ 94 if ((dest) < FirstNormalTransactionId) \ 95 (dest) = FirstNormalTransactionId; \ 141 #define TransactionIdRetreat(dest) \ 144 } while ((dest) < FirstNormalTransactionId) 147 #define NormalTransactionIdPrecedes(id1, id2) \ 148 (AssertMacro(TransactionIdIsNormal(id1) && TransactionIdIsNormal(id2)), \ 149 (int32) ((id1) - (id2)) < 0) 152 #define NormalTransactionIdFollows(id1, id2) \ 153 (AssertMacro(TransactionIdIsNormal(id1) && TransactionIdIsNormal(id2)), \ 154 (int32) ((id1) - (id2)) > 0) 188 #define FirstGenbkiObjectId 10000 189 #define FirstBootstrapObjectId 12000 190 #define FirstNormalObjectId 16384 291 #ifdef USE_ASSERT_CHECKING 294 #define AssertTransactionIdInAllowableRange(xid) ((void)true) void AdvanceNextFullTransactionIdPastXid(TransactionId xid)
VariableCacheData * VariableCache
TransactionId TransactionIdLatest(TransactionId mainxid, int nxids, const TransactionId *xids)
void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid)
void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids)
FullTransactionId GetNewTransactionId(bool isSubXact)
#define FullTransactionIdIsValid(x)
PGDLLIMPORT VariableCache ShmemVariableCache
static void FullTransactionIdRetreat(FullTransactionId *dest)
uint64 xactCompletionCount
bool TransactionIdFollows(TransactionId id1, TransactionId id2)
bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2)
bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2)
FullTransactionId latestCompletedXid
struct VariableCacheData VariableCacheData
static FullTransactionId FullTransactionIdFromU64(uint64 value)
FullTransactionId nextXid
TransactionId xidVacLimit
#define XidFromFullTransactionId(x)
bool ForceTransactionIdLimitUpdate(void)
#define AssertTransactionIdInAllowableRange(xid)
FullTransactionId ReadNextFullTransactionId(void)
#define FirstNormalTransactionId
void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid)
bool TransactionIdDidAbort(TransactionId transactionId)
bool TransactionIdIsKnownCompleted(TransactionId transactionId)
#define FullTransactionIdFollows(a, b)
struct FullTransactionId FullTransactionId
#define FirstNormalFullTransactionId
TransactionId xidStopLimit
TransactionId oldestClogXid
TransactionId oldestCommitTsXid
bool TransactionIdDidCommit(TransactionId transactionId)
void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn)
static TransactionId NormalTransactionIdOlder(TransactionId a, TransactionId b)
static TransactionId TransactionIdOlder(TransactionId a, TransactionId b)
#define Assert(condition)
TransactionId newestCommitTsXid
void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids)
bool TransactionStartedDuringRecovery(void)
static FullTransactionId FullTransactionIdFromEpochAndXid(uint32 epoch, TransactionId xid)
static TransactionId TransactionIdRetreatedBy(TransactionId xid, uint32 amount)
#define NormalTransactionIdPrecedes(id1, id2)
bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
static TransactionId ReadNewTransactionId(void)
static FullTransactionId FullTransactionIdNewer(FullTransactionId a, FullTransactionId b)
TransactionId xidWarnLimit
XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid)
static const unsigned __int64 epoch
TransactionId xidWrapLimit
#define FullTransactionIdPrecedes(a, b)
#define TransactionIdIsValid(xid)
#define TransactionIdIsNormal(xid)
static void FullTransactionIdAdvance(FullTransactionId *dest)