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, ReplOriginId 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)
ReplOriginXactState replorigin_xact_state
void replorigin_advance(ReplOriginId node, XLogRecPtr remote_commit, XLogRecPtr local_commit, bool go_backward, bool wal_log)
void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr local_commit)
#define InvalidReplOriginId
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)
TimestampTz origin_timestamp
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 PrepareRedoAdd(FullTransactionId fxid, char *buf, XLogRecPtr start_lsn, XLogRecPtr end_lsn, ReplOriginId origin_id)
void AtAbort_Twophase(void)
void PrepareRedoRemove(TransactionId xid, bool giveWarning)
void EndPrepare(GlobalTransaction gxact)
void StartPrepare(GlobalTransaction gxact)
void PostPrepare_Twophase(void)
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]
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)
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)
static void xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid, XLogRecPtr lsn, ReplOriginId origin_id)
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)
static void xact_redo_commit(xl_xact_parsed_commit *parsed, TransactionId xid, XLogRecPtr lsn, ReplOriginId origin_id)
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)