240#define SerializedTransactionStateHeaderSize \
241 offsetof(SerializedTransactionState, parallelCurrentXids)
251 .topXidLogged =
false,
348 const char *stmtType);
653 errmsg(
"cannot assign transaction IDs during a parallel operation")));
665 size_t parentOffset = 0;
670 parents[parentOffset++] = p;
678 while (parentOffset != 0)
844 errmsg(
"cannot modify data in a parallel worker")));
983 middle = low + (high - low) / 2;
987 else if (
probe < xid)
1021 middle = low + (high - low) / 2;
1119 errmsg(
"cannot start commands during a parallel operation")));
1127 errmsg(
"cannot have more than 2^32-2 commands in a transaction")));
1196 "TransactionAbortContext",
1209 "TopTransactionContext",
1272 "CurTransactionContext",
1329 bool RelcacheInitFileInval =
false;
1348 &RelcacheInitFileInval);
1366 elog(
ERROR,
"cannot commit a transaction that deleted files but has no xid");
1395 RelcacheInitFileInval);
1459 RelcacheInitFileInval,
1708 errmsg(
"maximum number of committed subtransactions (%d) exceeded",
1806 elog(
PANIC,
"cannot abort transaction %u, it was already committed",
2259 elog(
WARNING,
"CommitTransaction while in %s state",
2307 elog(
WARNING,
"parallelModeLevel is %d not 1 at end of parallel worker transaction",
2313 elog(
WARNING,
"parallelModeLevel is %d not 0 at end of transaction",
2544 elog(
WARNING,
"PrepareTransaction while in %s state",
2630 errmsg(
"cannot PREPARE a transaction that has operated on temporary objects")));
2640 errmsg(
"cannot PREPARE a transaction that has exported snapshots")));
2896 elog(
WARNING,
"AbortTransaction while in %s state",
3038 elog(
FATAL,
"CleanupTransaction: unexpected state %s",
3134 elog(
ERROR,
"StartTransactionCommand: unexpected state %s",
3214 elog(
FATAL,
"CommitTransactionCommand: unexpected state %s",
3380 elog(
ERROR,
"CommitTransactionCommand: unexpected state %s",
3678 errmsg(
"%s cannot run inside a transaction block",
3688 errmsg(
"%s cannot run inside a subtransaction",
3698 errmsg(
"%s cannot be executed from a function or procedure",
3704 elog(
FATAL,
"cannot prevent transaction chain");
3770 errmsg(
"%s can only be used in transaction blocks",
3978 errmsg(
"there is already a transaction in progress")));
3995 elog(
FATAL,
"BeginTransactionBlock: unexpected state %s",
4069 bool result =
false;
4092 errmsg(
"%s can only be used in transaction blocks",
4093 "COMMIT AND CHAIN")));
4097 errmsg(
"there is no transaction in progress")));
4120 elog(
FATAL,
"EndTransactionBlock: unexpected state %s",
4127 elog(
FATAL,
"EndTransactionBlock: unexpected state %s",
4145 elog(
FATAL,
"EndTransactionBlock: unexpected state %s",
4154 elog(
FATAL,
"EndTransactionBlock: unexpected state %s",
4171 errmsg(
"%s can only be used in transaction blocks",
4172 "COMMIT AND CHAIN")));
4176 errmsg(
"there is no transaction in progress")));
4187 errmsg(
"cannot commit during a parallel operation")));
4204 elog(
FATAL,
"EndTransactionBlock: unexpected state %s",
4264 elog(
FATAL,
"UserAbortTransactionBlock: unexpected state %s",
4273 elog(
FATAL,
"UserAbortTransactionBlock: unexpected state %s",
4294 errmsg(
"%s can only be used in transaction blocks",
4295 "ROLLBACK AND CHAIN")));
4299 errmsg(
"there is no transaction in progress")));
4310 errmsg(
"cannot abort during a parallel operation")));
4327 elog(
FATAL,
"UserAbortTransactionBlock: unexpected state %s",
4409 errmsg(
"cannot define savepoints during a parallel operation")));
4445 errmsg(
"%s can only be used in transaction blocks",
4467 elog(
FATAL,
"DefineSavepoint: unexpected state %s",
4496 errmsg(
"cannot release savepoints during a parallel operation")));
4506 errmsg(
"savepoint \"%s\" does not exist",
name)));
4514 errmsg(
"%s can only be used in transaction blocks",
4515 "RELEASE SAVEPOINT")));
4543 elog(
FATAL,
"ReleaseSavepoint: unexpected state %s",
4548 for (target = s; target; target = target->
parent)
4557 errmsg(
"savepoint \"%s\" does not exist",
name)));
4563 errmsg(
"savepoint \"%s\" does not exist within current savepoint level",
name)));
4605 errmsg(
"cannot rollback to savepoints during a parallel operation")));
4617 errmsg(
"savepoint \"%s\" does not exist",
name)));
4625 errmsg(
"%s can only be used in transaction blocks",
4626 "ROLLBACK TO SAVEPOINT")));
4652 elog(
FATAL,
"RollbackToSavepoint: unexpected state %s",
4657 for (target = s; target; target = target->
parent)
4666 errmsg(
"savepoint \"%s\" does not exist",
name)));
4672 errmsg(
"savepoint \"%s\" does not exist within current savepoint level",
name)));
4689 elog(
FATAL,
"RollbackToSavepoint: unexpected state %s",
4701 elog(
FATAL,
"RollbackToSavepoint: unexpected state %s",
4771 elog(
FATAL,
"BeginInternalSubTransaction: unexpected state %s",
4801 elog(
ERROR,
"ReleaseCurrentSubTransaction: unexpected state %s",
4854 elog(
FATAL,
"RollbackAndReleaseCurrentSubTransaction: unexpected state %s",
5057 elog(
FATAL,
"invalid transaction block state: %s",
5094 elog(
WARNING,
"StartSubTransaction while in %s state",
5133 elog(
WARNING,
"CommitSubTransaction while in %s state",
5148 elog(
WARNING,
"parallelModeLevel is %d not 0 at end of subtransaction",
5304 elog(
WARNING,
"AbortSubTransaction while in %s state",
5412 elog(
WARNING,
"CleanupSubTransaction while in %s state",
5460 errmsg(
"cannot have more than 2^32-1 subtransactions in a transaction")));
5509 elog(
FATAL,
"PopTransaction with no parent");
5645 tstate->currentFullTransactionId;
5711 (
errmsg_internal(
"%s(%d) name: %s; blockState: %s; state: %s, xid/subid/cid: %u/%u/%u%s%s",
5740 return "INPROGRESS";
5742 return "IMPLICIT_INPROGRESS";
5744 return "PARALLEL_INPROGRESS";
5752 return "ABORT_PENDING";
5758 return "SUBINPROGRESS";
5760 return "SUBRELEASE";
5766 return "SUBABORT_END";
5768 return "SUBABORT_PENDING";
5770 return "SUBRESTART";
5772 return "SUBABORT_RESTART";
5774 return "UNRECOGNIZED";
5791 return "INPROGRESS";
5799 return "UNRECOGNIZED";
5843 const char *twophase_gid)
5868 xlrec.xact_time = commit_time;
6013 const char *twophase_gid)
6039 xlrec.xact_time = abort_time;
6171 commit_time =
parsed->origin_timestamp;
6173 commit_time =
parsed->xact_time;
6177 commit_time, origin_id);
6468 elog(
PANIC,
"xact_redo: unknown op code %u", info);
void pgaio_error_cleanup(void)
void AtEOXact_Aio(bool is_commit)
void AtCommit_Notify(void)
void AtAbort_Notify(void)
void PreCommit_Notify(void)
void AtSubAbort_Notify(void)
void AtPrepare_Notify(void)
void AtSubCommit_Notify(void)
#define pg_write_barrier()
void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end)
bool ParallelContextActive(void)
void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId)
void AtEOXact_Parallel(bool isCommit)
void AtEOXact_LogicalRepWorkers(bool isCommit)
TimestampTz GetCurrentTimestamp(void)
void pgstat_progress_end_command(void)
void pgstat_report_xact_timestamp(TimestampTz tstamp)
void AtEOXact_LargeObject(bool isCommit)
void AtEOSubXact_LargeObject(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
static void cleanup(void)
void AtEOXact_Buffers(bool isCommit)
#define TopSubTransactionId
#define PG_USED_FOR_ASSERTS_ONLY
#define InvalidSubTransactionId
#define Assert(condition)
#define FLEXIBLE_ARRAY_MEMBER
uint32 LocalTransactionId
void AtEOXact_ComboCid(void)
void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz timestamp, RepOriginId nodeid)
bool ConditionVariableCancelSleep(void)
void AtEOXact_HashTables(bool isCommit)
void AtEOSubXact_HashTables(bool isCommit, int nestDepth)
int errmsg_internal(const char *fmt,...)
bool message_level_is_interesting(int elevel)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
void AtEOXact_Files(bool isCommit)
void AtEOSubXact_Files(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
#define palloc_array(type, count)
volatile uint32 CritSectionCount
int NewGUCNestLevel(void)
void AtEOXact_GUC(bool isCommit, int nestLevel)
double log_xact_sample_rate
#define IsParallelWorker()
void ResetReindexState(int nestLevel)
void PostPrepare_Inval(void)
void LogLogicalInvalidations(void)
void AcceptInvalidationMessages(void)
int xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, bool *RelcacheInitFileInval)
void AtEOXact_Inval(bool isCommit)
void AtEOSubXact_Inval(bool isCommit)
void CommandEndInvalidationMessages(void)
void ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs, int nmsgs, bool RelcacheInitFileInval, Oid dbid, Oid tsid)
void AtEOXact_ApplyLauncher(bool isCommit)
void XactLockTableDelete(TransactionId xid)
void XactLockTableInsert(TransactionId xid)
void PostPrepare_Locks(FullTransactionId fxid)
void VirtualXactLockTableInsert(VirtualTransactionId vxid)
void AtPrepare_Locks(void)
#define InvalidLocalTransactionId
void ResetLogicalStreamingState(void)
void AtEOXact_LogicalCtl(void)
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
void LWLockRelease(LWLock *lock)
void LWLockReleaseAll(void)
char * MemoryContextStrdup(MemoryContext context, const char *string)
void * MemoryContextAlloc(MemoryContext context, Size size)
bool MemoryContextIsEmpty(MemoryContext context)
void MemoryContextReset(MemoryContext context)
void * MemoryContextAllocZero(MemoryContext context, Size size)
MemoryContext TopTransactionContext
void * repalloc(void *pointer, Size size)
void pfree(void *pointer)
MemoryContext TopMemoryContext
MemoryContext CurTransactionContext
MemoryContext CurrentMemoryContext
void MemoryContextDelete(MemoryContext context)
void DropRelationFiles(RelFileLocator *delrels, int ndelrels, bool isRedo)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
#define RESUME_INTERRUPTS()
#define START_CRIT_SECTION()
#define HOLD_INTERRUPTS()
#define END_CRIT_SECTION()
void GetUserIdAndSecContext(Oid *userid, int *sec_context)
void SetUserIdAndSecContext(Oid userid, int sec_context)
void PostPrepare_MultiXact(FullTransactionId fxid)
void AtPrepare_MultiXact(void)
void AtEOXact_MultiXact(void)
void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
void AtEOXact_Namespace(bool isCommit, bool parallel)
TimestampTz replorigin_session_origin_timestamp
void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr local_commit)
RepOriginId replorigin_session_origin
void replorigin_advance(RepOriginId node, XLogRecPtr remote_commit, XLogRecPtr local_commit, bool go_backward, bool wal_log)
XLogRecPtr replorigin_session_origin_lsn
#define InvalidRepOriginId
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
double pg_prng_double(pg_prng_state *state)
pg_prng_state pg_global_prng_state
static char buf[DEFAULT_XLOG_SEG_SIZE]
void AtPrepare_PgStat(void)
void pgstat_execute_transactional_drops(int ndrops, struct xl_xact_stats_item *items, bool is_redo)
void AtEOXact_PgStat(bool isCommit, bool parallel)
void PostPrepare_PgStat(void)
int pgstat_get_transactional_drops(bool isCommit, xl_xact_stats_item **items)
void AtEOSubXact_PgStat(bool isCommit, int nestDepth)
#define qsort(a, b, c, d)
void AtAbort_Portals(void)
void AtSubAbort_Portals(SubTransactionId mySubid, SubTransactionId parentSubid, ResourceOwner myXactOwner, ResourceOwner parentXactOwner)
bool PreCommit_Portals(bool isPrepare)
void AtSubCommit_Portals(SubTransactionId mySubid, SubTransactionId parentSubid, int parentLevel, ResourceOwner parentXactOwner)
void AtCleanup_Portals(void)
void AtSubCleanup_Portals(SubTransactionId mySubid)
void PreCommit_CheckForSerializationFailure(void)
void PostPrepare_PredicateLocks(FullTransactionId fxid)
void AtPrepare_PredicateLocks(void)
void RegisterPredicateLockingXid(TransactionId xid)
#define DELAY_CHKPT_IN_COMMIT
#define PGPROC_MAX_CACHED_SUBXIDS
void XidCacheRemoveRunningXids(TransactionId xid, int nxids, const TransactionId *xids, TransactionId latestXid)
void ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid)
void RecordKnownAssignedTransactionIds(TransactionId xid)
void ProcArrayClearTransaction(PGPROC *proc)
void ProcArrayApplyXidAssignment(TransactionId topxid, int nsubxids, TransactionId *subxids)
void ExpireTreeKnownAssignedTransactionIds(TransactionId xid, int nsubxids, TransactionId *subxids, TransactionId max_xid)
void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
void AtEOXact_RelationCache(bool isCommit)
void AtPrepare_RelationMap(void)
void AtEOXact_RelationMap(bool isCommit, bool isParallelWorker)
void AtCCI_RelationMap(void)
ResourceOwner TopTransactionResourceOwner
ResourceOwner ResourceOwnerCreate(ResourceOwner parent, const char *name)
ResourceOwner CurrentResourceOwner
void ResourceOwnerRelease(ResourceOwner owner, ResourceReleasePhase phase, bool isCommit, bool isTopLevel)
void ResourceOwnerDelete(ResourceOwner owner)
ResourceOwner CurTransactionResourceOwner
@ RESOURCE_RELEASE_BEFORE_LOCKS
@ RESOURCE_RELEASE_AFTER_LOCKS
Size add_size(Size s1, Size s2)
Size mul_size(Size s1, Size s2)
LocalTransactionId GetNextLocalTransactionId(void)
void SnapBuildResetExportedSnapshotState(void)
void AtSubAbort_Snapshot(int level)
void AtEOXact_Snapshot(bool isCommit, bool resetXmin)
void AtSubCommit_Snapshot(int level)
bool XactHasExportedSnapshots(void)
void SnapshotSetCommandId(CommandId curcid)
void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid)
bool SPI_inside_nonatomic_context(void)
void AtEOXact_SPI(bool isCommit)
void LockErrorCleanup(void)
bool stack_is_too_deep(void)
void StandbyReleaseLockTree(TransactionId xid, int nsubxids, TransactionId *subxids)
void LogStandbyInvalidations(int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInitFileInval)
void AtSubCommit_smgr(void)
void AtSubAbort_smgr(void)
int smgrGetPendingDeletes(bool forCommit, RelFileLocator **ptr)
void PostPrepare_smgr(void)
void smgrDoPendingSyncs(bool isCommit, bool isParallelWorker)
void smgrDoPendingDeletes(bool isCommit)
void appendStringInfo(StringInfo str, const char *fmt,...)
void initStringInfo(StringInfo str)
FullTransactionId currentFullTransactionId
FullTransactionId topFullTransactionId
CommandId currentCommandId
TransactionId parallelCurrentXids[FLEXIBLE_ARRAY_MEMBER]
struct SubXactCallbackItem * next
SubTransactionId subTransactionId
FullTransactionId fullTransactionId
struct TransactionStateData * parent
MemoryContext priorContext
MemoryContext curTransactionContext
TransactionId * childXids
ResourceOwner curTransactionOwner
LocalTransactionId localTransactionId
struct XactCallbackItem * next
void SubTransSetParent(TransactionId xid, TransactionId parent)
void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit)
void AtEOSubXact_on_commit_actions(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
void PreCommit_on_commit_actions(void)
void AtEOXact_on_commit_actions(bool isCommit)
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
void enable_timeout_after(TimeoutId id, int delay_ms)
void reschedule_timeouts(void)
void disable_timeout(TimeoutId id, bool keep_indicator)
void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn)
TransactionId TransactionIdLatest(TransactionId mainxid, int nxids, const TransactionId *xids)
bool TransactionIdDidCommit(TransactionId transactionId)
void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids)
void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids)
static TransactionId ReadNextTransactionId(void)
#define InvalidTransactionId
#define TransactionIdEquals(id1, id2)
#define XidFromFullTransactionId(x)
#define TransactionIdIsValid(xid)
#define TransactionIdIsNormal(xid)
#define InvalidFullTransactionId
#define FullTransactionIdIsValid(x)
static bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
void AfterTriggerBeginXact(void)
void AfterTriggerEndSubXact(bool isCommit)
void AfterTriggerFireDeferred(void)
void AfterTriggerEndXact(bool isCommit)
void AfterTriggerBeginSubXact(void)
GlobalTransaction MarkAsPreparing(FullTransactionId fxid, const char *gid, TimestampTz prepared_at, Oid owner, Oid databaseid)
void AtAbort_Twophase(void)
void PrepareRedoRemove(TransactionId xid, bool giveWarning)
void EndPrepare(GlobalTransaction gxact)
void StartPrepare(GlobalTransaction gxact)
void PostPrepare_Twophase(void)
void PrepareRedoAdd(FullTransactionId fxid, char *buf, XLogRecPtr start_lsn, XLogRecPtr end_lsn, RepOriginId origin_id)
void AtEOXact_TypeCache(void)
void AtEOSubXact_TypeCache(void)
void AdvanceNextFullTransactionIdPastXid(TransactionId xid)
FullTransactionId GetNewTransactionId(bool isSubXact)
static void pgstat_report_wait_end(void)
static bool CommitTransactionCommandInternal(void)
bool IsTransactionOrTransactionBlock(void)
void SerializeTransactionState(Size maxsize, char *start_address)
void ExitParallelMode(void)
static TimestampTz xactStartTimestamp
static bool currentCommandIdUsed
static void AtSubCommit_Memory(void)
void SaveTransactionCharacteristics(SavedTransactionCharacteristics *s)
static void CleanupSubTransaction(void)
void BeginInternalSubTransaction(const char *name)
static void AtStart_Memory(void)
FullTransactionId GetCurrentFullTransactionId(void)
void RestoreTransactionCharacteristics(const SavedTransactionCharacteristics *s)
static XactCallbackItem * Xact_callbacks
void WarnNoTransactionBlock(bool isTopLevel, const char *stmtType)
static TimestampTz stmtStartTimestamp
SubTransactionId GetCurrentSubTransactionId(void)
void UserAbortTransactionBlock(bool chain)
bool IsInTransactionBlock(bool isTopLevel)
bool PrepareTransactionBlock(const char *gid)
static void AtSubCleanup_Memory(void)
static void StartTransaction(void)
int GetCurrentTransactionNestLevel(void)
void xact_redo(XLogReaderState *record)
TransactionId GetTopTransactionId(void)
static void AtSubCommit_childXids(void)
static void CallSubXactCallbacks(SubXactEvent event, SubTransactionId mySubid, SubTransactionId parentSubid)
void EnterParallelMode(void)
static void AtAbort_ResourceOwner(void)
TransactionId GetStableLatestTransactionId(void)
static void CheckTransactionBlock(bool isTopLevel, bool throwError, const char *stmtType)
void UnregisterSubXactCallback(SubXactCallback callback, void *arg)
static bool forceSyncCommit
void BeginImplicitTransactionBlock(void)
static void CallXactCallbacks(XactEvent event)
static TransactionId unreportedXids[PGPROC_MAX_CACHED_SUBXIDS]
static void xact_redo_commit(xl_xact_parsed_commit *parsed, TransactionId xid, XLogRecPtr lsn, RepOriginId origin_id)
void RequireTransactionBlock(bool isTopLevel, const char *stmtType)
static void AtSubAbort_Memory(void)
static SubXactCallbackItem * SubXact_callbacks
void DefineSavepoint(const char *name)
bool DefaultXactDeferrable
static void CleanupTransaction(void)
static int nUnreportedXids
static const char * TransStateAsString(TransState state)
static TimestampTz xactStopTimestamp
bool TransactionStartedDuringRecovery(void)
static void CommitSubTransaction(void)
static void PushTransaction(void)
TransactionId CheckXidAlive
static TransactionId RecordTransactionCommit(void)
void UnregisterXactCallback(XactCallback callback, void *arg)
bool IsTransactionState(void)
static MemoryContext TransactionAbortContext
void CommandCounterIncrement(void)
void PreventInTransactionBlock(bool isTopLevel, const char *stmtType)
static void AtCleanup_Memory(void)
Size EstimateTransactionStateSpace(void)
TransactionStateData * TransactionState
static void AtSubAbort_childXids(void)
TransactionId GetTopTransactionIdIfAny(void)
static bool AbortCurrentTransactionInternal(void)
static SubTransactionId currentSubTransactionId
static void AssignTransactionId(TransactionState s)
static void xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid, XLogRecPtr lsn, RepOriginId origin_id)
char TransactionBlockStatusCode(void)
void RollbackAndReleaseCurrentSubTransaction(void)
static int nParallelCurrentXids
FullTransactionId GetCurrentFullTransactionIdIfAny(void)
static void CommitTransaction(void)
void StartTransactionCommand(void)
static void PopTransaction(void)
bool IsAbortedTransactionBlockState(void)
void ReleaseCurrentSubTransaction(void)
void EndImplicitTransactionBlock(void)
void StartParallelWorkerTransaction(char *tstatespace)
void SetParallelStartTimestamps(TimestampTz xact_ts, TimestampTz stmt_ts)
static void AtSubAbort_ResourceOwner(void)
void ReleaseSavepoint(const char *name)
static TransactionStateData TopTransactionStateData
static FullTransactionId XactTopFullTransactionId
static void ShowTransactionState(const char *str)
static void PrepareTransaction(void)
FullTransactionId GetTopFullTransactionId(void)
static CommandId currentCommandId
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)
static TransactionId RecordTransactionAbort(bool isSubXact)
static void AtCommit_Memory(void)
static void AbortSubTransaction(void)
bool IsSubTransaction(void)
void MarkSubxactTopXidLogged(void)
void SetCurrentStatementStartTimestamp(void)
bool TransactionIdIsCurrentTransactionId(TransactionId xid)
bool IsTransactionBlock(void)
bool IsInParallelMode(void)
int xactGetCommittedChildren(TransactionId **ptr)
TransactionId GetCurrentTransactionIdIfAny(void)
void BeginTransactionBlock(void)
static void AtStart_ResourceOwner(void)
TimestampTz GetCurrentStatementStartTimestamp(void)
TimestampTz GetCurrentTransactionStartTimestamp(void)
static const char * BlockStateAsString(TBlockState blockState)
void EndParallelWorkerTransaction(void)
static void AtAbort_Memory(void)
void RegisterXactCallback(XactCallback callback, void *arg)
void CommitTransactionCommand(void)
void RollbackToSavepoint(const char *name)
bool SubTransactionIsActive(SubTransactionId subxid)
@ TBLOCK_IMPLICIT_INPROGRESS
@ TBLOCK_PARALLEL_INPROGRESS
@ TBLOCK_SUBABORT_RESTART
@ TBLOCK_SUBABORT_PENDING
void RegisterSubXactCallback(SubXactCallback callback, void *arg)
FullTransactionId GetTopFullTransactionIdIfAny(void)
TransactionId GetCurrentTransactionId(void)
static void AbortTransaction(void)
static void AtStart_Cache(void)
static void AtSubStart_ResourceOwner(void)
static void AtSubStart_Memory(void)
bool EndTransactionBlock(bool chain)
bool IsSubxactTopXidLogPending(void)
#define SerializedTransactionStateHeaderSize
void AbortOutOfAnyTransaction(void)
static void ShowTransactionStateRec(const char *str, TransactionState s)
static TransactionState CurrentTransactionState
void AbortCurrentTransaction(void)
static void StartSubTransaction(void)
static TransactionId * ParallelCurrentXids
TimestampTz GetCurrentTransactionStopTimestamp(void)
static void AtCCI_LocalCache(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)
CommandId GetCurrentCommandId(bool used)
#define XactCompletionForceSyncCommit(xinfo)
#define MinSizeOfXactInvals
void(* SubXactCallback)(SubXactEvent event, SubTransactionId mySubid, SubTransactionId parentSubid, void *arg)
#define MinSizeOfXactSubxacts
#define XLOG_XACT_COMMIT_PREPARED
#define XLOG_XACT_INVALIDATIONS
#define XACT_COMPLETION_UPDATE_RELCACHE_FILE
@ SUBXACT_EVENT_PRE_COMMIT_SUB
@ SUBXACT_EVENT_START_SUB
@ SUBXACT_EVENT_ABORT_SUB
@ SUBXACT_EVENT_COMMIT_SUB
void(* XactCallback)(XactEvent event, void *arg)
#define XACT_XINFO_HAS_GID
#define XACT_COMPLETION_FORCE_SYNC_COMMIT
#define XACT_XINFO_HAS_ORIGIN
@ SYNCHRONOUS_COMMIT_REMOTE_APPLY
#define XLOG_XACT_PREPARE
@ XACT_EVENT_PARALLEL_PRE_COMMIT
@ XACT_EVENT_PARALLEL_COMMIT
@ XACT_EVENT_PARALLEL_ABORT
#define SYNCHRONOUS_COMMIT_ON
#define XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK
#define XACT_XINFO_HAS_TWOPHASE
#define MinSizeOfXactRelfileLocators
#define MinSizeOfXactStatsItems
#define XACT_XINFO_HAS_RELFILELOCATORS
#define MinSizeOfXactAbort
#define XACT_COMPLETION_APPLY_FEEDBACK
#define MinSizeOfXactAssignment
#define XACT_XINFO_HAS_DBINFO
#define XACT_FLAGS_NEEDIMMEDIATECOMMIT
#define XactCompletionApplyFeedback(xinfo)
#define XLOG_XACT_ASSIGNMENT
#define XACT_XINFO_HAS_INVALS
#define XLOG_XACT_ABORT_PREPARED
#define XACT_XINFO_HAS_AE_LOCKS
#define XLOG_XACT_HAS_INFO
#define XACT_FLAGS_ACCESSEDTEMPNAMESPACE
#define XactCompletionRelcacheInitFileInval(xinfo)
#define XACT_READ_COMMITTED
#define XACT_XINFO_HAS_SUBXACTS
#define XACT_XINFO_HAS_DROPPED_STATS
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)
int xidComparator(const void *arg1, const void *arg2)
bool RecoveryInProgress(void)
XLogRecPtr XactLastRecEnd
XLogRecPtr XactLastCommitEnd
void XLogFlush(XLogRecPtr record)
void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN)
#define XLogLogicalInfoActive()
#define XLOG_INCLUDE_ORIGIN
#define XLogStandbyInfoActive()
XLogRecPtr XLogInsert(RmgrId rmid, uint8 info)
void XLogRegisterData(const void *data, uint32 len)
void XLogSetRecordFlags(uint8 flags)
void XLogResetInsertion(void)
void XLogBeginInsert(void)
#define XLogRecGetOrigin(decoder)
#define XLogRecGetInfo(decoder)
#define XLogRecGetData(decoder)
#define XLogRecGetXid(decoder)
#define XLogRecHasAnyBlockRefs(decoder)
#define XLR_SPECIAL_REL_UPDATE
void XLogRequestWalReceiverReply(void)
HotStandbyState standbyState
void WaitLSNCleanup(void)