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)
114#define XACT_FLAGS_NEEDIMMEDIATECOMMIT (1U << 2)
121#define XACT_FLAGS_PIPELINING (1U << 3)
169#define XLOG_XACT_COMMIT 0x00
170#define XLOG_XACT_PREPARE 0x10
171#define XLOG_XACT_ABORT 0x20
172#define XLOG_XACT_COMMIT_PREPARED 0x30
173#define XLOG_XACT_ABORT_PREPARED 0x40
174#define XLOG_XACT_ASSIGNMENT 0x50
175#define XLOG_XACT_INVALIDATIONS 0x60
179#define XLOG_XACT_OPMASK 0x70
182#define XLOG_XACT_HAS_INFO 0x80
188#define XACT_XINFO_HAS_DBINFO (1U << 0)
189#define XACT_XINFO_HAS_SUBXACTS (1U << 1)
190#define XACT_XINFO_HAS_RELFILELOCATORS (1U << 2)
191#define XACT_XINFO_HAS_INVALS (1U << 3)
192#define XACT_XINFO_HAS_TWOPHASE (1U << 4)
193#define XACT_XINFO_HAS_ORIGIN (1U << 5)
194#define XACT_XINFO_HAS_AE_LOCKS (1U << 6)
195#define XACT_XINFO_HAS_GID (1U << 7)
196#define XACT_XINFO_HAS_DROPPED_STATS (1U << 8)
206#define XACT_COMPLETION_APPLY_FEEDBACK (1U << 29)
207#define XACT_COMPLETION_UPDATE_RELCACHE_FILE (1U << 30)
208#define XACT_COMPLETION_FORCE_SYNC_COMMIT (1U << 31)
211#define XactCompletionApplyFeedback(xinfo) \
212 ((xinfo & XACT_COMPLETION_APPLY_FEEDBACK) != 0)
213#define XactCompletionRelcacheInitFileInval(xinfo) \
214 ((xinfo & XACT_COMPLETION_UPDATE_RELCACHE_FILE) != 0)
215#define XactCompletionForceSyncCommit(xinfo) \
216 ((xinfo & XACT_COMPLETION_FORCE_SYNC_COMMIT) != 0)
225#define MinSizeOfXactAssignment offsetof(xl_xact_assignment, xsub)
266#define MinSizeOfXactSubxacts offsetof(xl_xact_subxacts, subxacts)
273#define MinSizeOfXactRelfileLocators offsetof(xl_xact_relfilelocators, xlocators)
300#define MinSizeOfXactStatsItems offsetof(xl_xact_stats_items, items)
307#define MinSizeOfXactInvals offsetof(xl_xact_invals, msgs)
334#define MinSizeOfXactCommit (offsetof(xl_xact_commit, xact_time) + sizeof(TimestampTz))
350#define MinSizeOfXactAbort sizeof(xl_xact_abort)
512 const char *twophase_gid);
520 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
RelFileLocator * xlocators
TransactionId twophase_xid
char twophase_gid[GIDSIZE]
TimestampTz origin_timestamp
xl_xact_stats_item * stats
TransactionId twophase_xid
RelFileLocator * xlocators
RelFileLocator * abortlocators
TimestampTz origin_timestamp
char twophase_gid[GIDSIZE]
xl_xact_stats_item * abortstats
SharedInvalidationMessage * msgs
TimestampTz origin_timestamp
RelFileLocator xlocators[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
const char * xact_identify(uint8 info)
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
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)
FullTransactionId GetTopFullTransactionId(void)
struct xl_xact_relfilelocators xl_xact_relfilelocators
XLogRecPtr XactLogCommitRecord(TimestampTz commit_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileLocator *rels, int ndroppedstats, xl_xact_stats_item *droppedstats, int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInval, int xactflags, TransactionId twophase_xid, const char *twophase_gid)
void ForceSyncCommit(void)
bool IsSubTransaction(void)
void MarkSubxactTopXidLogged(void)
struct xl_xact_parsed_abort xl_xact_parsed_abort
struct xl_xact_xinfo xl_xact_xinfo
void SetCurrentStatementStartTimestamp(void)
bool TransactionIdIsCurrentTransactionId(TransactionId xid)
struct xl_xact_subxacts xl_xact_subxacts
PGDLLIMPORT TransactionId CheckXidAlive
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)
XLogRecPtr XactLogAbortRecord(TimestampTz abort_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileLocator *rels, int ndroppedstats, xl_xact_stats_item *droppedstats, int xactflags, TransactionId twophase_xid, const char *twophase_gid)
void MarkCurrentTransactionIdLoggedIfAny(void)
PGDLLIMPORT int DefaultXactIsoLevel
CommandId GetCurrentCommandId(bool used)