36 #define XACT_READ_UNCOMMITTED 0
37 #define XACT_READ_COMMITTED 1
38 #define XACT_REPEATABLE_READ 2
39 #define XACT_SERIALIZABLE 3
51 #define IsolationUsesXactSnapshot() (XactIsoLevel >= XACT_REPEATABLE_READ)
52 #define IsolationIsSerializable() (XactIsoLevel == XACT_SERIALIZABLE)
80 #define SYNCHRONOUS_COMMIT_ON SYNCHRONOUS_COMMIT_REMOTE_FLUSH
102 #define XACT_FLAGS_ACCESSEDTEMPNAMESPACE (1U << 0)
108 #define XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK (1U << 1)
156 #define XLOG_XACT_COMMIT 0x00
157 #define XLOG_XACT_PREPARE 0x10
158 #define XLOG_XACT_ABORT 0x20
159 #define XLOG_XACT_COMMIT_PREPARED 0x30
160 #define XLOG_XACT_ABORT_PREPARED 0x40
161 #define XLOG_XACT_ASSIGNMENT 0x50
162 #define XLOG_XACT_INVALIDATIONS 0x60
166 #define XLOG_XACT_OPMASK 0x70
169 #define XLOG_XACT_HAS_INFO 0x80
175 #define XACT_XINFO_HAS_DBINFO (1U << 0)
176 #define XACT_XINFO_HAS_SUBXACTS (1U << 1)
177 #define XACT_XINFO_HAS_RELFILENODES (1U << 2)
178 #define XACT_XINFO_HAS_INVALS (1U << 3)
179 #define XACT_XINFO_HAS_TWOPHASE (1U << 4)
180 #define XACT_XINFO_HAS_ORIGIN (1U << 5)
181 #define XACT_XINFO_HAS_AE_LOCKS (1U << 6)
182 #define XACT_XINFO_HAS_GID (1U << 7)
183 #define XACT_XINFO_HAS_DROPPED_STATS (1U << 8)
193 #define XACT_COMPLETION_APPLY_FEEDBACK (1U << 29)
194 #define XACT_COMPLETION_UPDATE_RELCACHE_FILE (1U << 30)
195 #define XACT_COMPLETION_FORCE_SYNC_COMMIT (1U << 31)
198 #define XactCompletionApplyFeedback(xinfo) \
199 ((xinfo & XACT_COMPLETION_APPLY_FEEDBACK) != 0)
200 #define XactCompletionRelcacheInitFileInval(xinfo) \
201 ((xinfo & XACT_COMPLETION_UPDATE_RELCACHE_FILE) != 0)
202 #define XactCompletionForceSyncCommit(xinfo) \
203 ((xinfo & XACT_COMPLETION_FORCE_SYNC_COMMIT) != 0)
212 #define MinSizeOfXactAssignment offsetof(xl_xact_assignment, xsub)
253 #define MinSizeOfXactSubxacts offsetof(xl_xact_subxacts, subxacts)
260 #define MinSizeOfXactRelfilenodes offsetof(xl_xact_relfilenodes, xnodes)
281 #define MinSizeOfXactStatsItems offsetof(xl_xact_stats_items, items)
288 #define MinSizeOfXactInvals offsetof(xl_xact_invals, msgs)
315 #define MinSizeOfXactCommit (offsetof(xl_xact_commit, xact_time) + sizeof(TimestampTz))
331 #define MinSizeOfXactAbort sizeof(xl_xact_abort)
493 const char *twophase_gid);
501 const char *twophase_gid);
#define FLEXIBLE_ARRAY_MEMBER
TransactionId xsub[FLEXIBLE_ARRAY_MEMBER]
SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER]
TimestampTz origin_timestamp
xl_xact_stats_item * stats
TransactionId twophase_xid
char twophase_gid[GIDSIZE]
TimestampTz origin_timestamp
xl_xact_stats_item * stats
TransactionId twophase_xid
TimestampTz origin_timestamp
char twophase_gid[GIDSIZE]
xl_xact_stats_item * abortstats
SharedInvalidationMessage * msgs
TimestampTz origin_timestamp
RelFileNode xnodes[FLEXIBLE_ARRAY_MEMBER]
xl_xact_stats_item items[FLEXIBLE_ARRAY_MEMBER]
TransactionId subxacts[FLEXIBLE_ARRAY_MEMBER]
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
bool IsTransactionOrTransactionBlock(void)
void SerializeTransactionState(Size maxsize, char *start_address)
void ExitParallelMode(void)
struct xl_xact_stats_item xl_xact_stats_item
PGDLLIMPORT bool XactReadOnly
PGDLLIMPORT int MyXactFlags
void SaveTransactionCharacteristics(SavedTransactionCharacteristics *s)
void BeginInternalSubTransaction(const char *name)
FullTransactionId GetCurrentFullTransactionId(void)
void RestoreTransactionCharacteristics(const SavedTransactionCharacteristics *s)
void WarnNoTransactionBlock(bool isTopLevel, const char *stmtType)
PGDLLIMPORT int synchronous_commit
SubTransactionId GetCurrentSubTransactionId(void)
void(* SubXactCallback)(SubXactEvent event, SubTransactionId mySubid, SubTransactionId parentSubid, void *arg)
void UserAbortTransactionBlock(bool chain)
PGDLLIMPORT bool xact_is_sampled
struct xl_xact_assignment xl_xact_assignment
bool IsInTransactionBlock(bool isTopLevel)
bool PrepareTransactionBlock(const char *gid)
struct xl_xact_abort xl_xact_abort
int GetCurrentTransactionNestLevel(void)
void xact_redo(XLogReaderState *record)
xl_xact_parsed_commit xl_xact_parsed_prepare
TransactionId GetTopTransactionId(void)
void EnterParallelMode(void)
struct xl_xact_dbinfo xl_xact_dbinfo
TransactionId GetStableLatestTransactionId(void)
void UnregisterSubXactCallback(SubXactCallback callback, void *arg)
PGDLLIMPORT bool DefaultXactReadOnly
void BeginImplicitTransactionBlock(void)
@ SUBXACT_EVENT_PRE_COMMIT_SUB
@ SUBXACT_EVENT_START_SUB
@ SUBXACT_EVENT_ABORT_SUB
@ SUBXACT_EVENT_COMMIT_SUB
void(* XactCallback)(XactEvent event, void *arg)
void RequireTransactionBlock(bool isTopLevel, const char *stmtType)
struct xl_xact_invals xl_xact_invals
void DefineSavepoint(const char *name)
struct xl_xact_origin xl_xact_origin
PGDLLIMPORT bool bsysscan
@ SYNCHRONOUS_COMMIT_LOCAL_FLUSH
@ SYNCHRONOUS_COMMIT_REMOTE_WRITE
@ SYNCHRONOUS_COMMIT_REMOTE_APPLY
@ SYNCHRONOUS_COMMIT_REMOTE_FLUSH
@ XACT_EVENT_PARALLEL_PRE_COMMIT
@ XACT_EVENT_PARALLEL_COMMIT
@ XACT_EVENT_PARALLEL_ABORT
void UnregisterXactCallback(XactCallback callback, void *arg)
bool IsTransactionState(void)
PGDLLIMPORT bool DefaultXactDeferrable
XLogRecPtr XactLogCommitRecord(TimestampTz commit_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileNode *rels, int nstats, xl_xact_stats_item *stats, int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInval, int xactflags, TransactionId twophase_xid, const char *twophase_gid)
void CommandCounterIncrement(void)
void PreventInTransactionBlock(bool isTopLevel, const char *stmtType)
Size EstimateTransactionStateSpace(void)
TransactionId GetTopTransactionIdIfAny(void)
struct xl_xact_commit xl_xact_commit
PGDLLIMPORT bool XactDeferrable
char TransactionBlockStatusCode(void)
void RollbackAndReleaseCurrentSubTransaction(void)
FullTransactionId GetCurrentFullTransactionIdIfAny(void)
void StartTransactionCommand(void)
bool IsAbortedTransactionBlockState(void)
void ReleaseCurrentSubTransaction(void)
void EndImplicitTransactionBlock(void)
void StartParallelWorkerTransaction(char *tstatespace)
void SetParallelStartTimestamps(TimestampTz xact_ts, TimestampTz stmt_ts)
void ReleaseSavepoint(const char *name)
const char * xact_identify(uint8 info)
FullTransactionId GetTopFullTransactionId(void)
void ForceSyncCommit(void)
bool IsSubTransaction(void)
void MarkSubxactTopXidLogged(void)
struct xl_xact_parsed_abort xl_xact_parsed_abort
struct xl_xact_relfilenodes xl_xact_relfilenodes
struct xl_xact_xinfo xl_xact_xinfo
void SetCurrentStatementStartTimestamp(void)
bool TransactionIdIsCurrentTransactionId(TransactionId xid)
struct xl_xact_subxacts xl_xact_subxacts
PGDLLIMPORT TransactionId CheckXidAlive
XLogRecPtr XactLogAbortRecord(TimestampTz abort_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileNode *rels, int nstats, xl_xact_stats_item *stats, int xactflags, TransactionId twophase_xid, const char *twophase_gid)
bool IsTransactionBlock(void)
bool IsInParallelMode(void)
int xactGetCommittedChildren(TransactionId **ptr)
TransactionId GetCurrentTransactionIdIfAny(void)
void BeginTransactionBlock(void)
TimestampTz GetCurrentStatementStartTimestamp(void)
TimestampTz GetCurrentTransactionStartTimestamp(void)
void EndParallelWorkerTransaction(void)
struct SavedTransactionCharacteristics SavedTransactionCharacteristics
void RegisterXactCallback(XactCallback callback, void *arg)
void CommitTransactionCommand(void)
PGDLLIMPORT int XactIsoLevel
void RollbackToSavepoint(const char *name)
struct xl_xact_twophase xl_xact_twophase
bool SubTransactionIsActive(SubTransactionId subxid)
void RegisterSubXactCallback(SubXactCallback callback, void *arg)
FullTransactionId GetTopFullTransactionIdIfAny(void)
TransactionId GetCurrentTransactionId(void)
struct xl_xact_prepare xl_xact_prepare
struct xl_xact_stats_items xl_xact_stats_items
struct xl_xact_parsed_commit xl_xact_parsed_commit
void ParseCommitRecord(uint8 info, xl_xact_commit *xlrec, xl_xact_parsed_commit *parsed)
void ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_abort *parsed)
void xact_desc(StringInfo buf, XLogReaderState *record)
bool EndTransactionBlock(bool chain)
bool IsSubxactTopXidLogPending(void)
void ParsePrepareRecord(uint8 info, xl_xact_prepare *xlrec, xl_xact_parsed_prepare *parsed)
void AbortOutOfAnyTransaction(void)
void AbortCurrentTransaction(void)
TimestampTz GetCurrentTransactionStopTimestamp(void)
void MarkCurrentTransactionIdLoggedIfAny(void)
PGDLLIMPORT int DefaultXactIsoLevel
CommandId GetCurrentCommandId(bool used)