|
PostgreSQL Source Code git master
|
#include "postgres.h"#include <signal.h>#include "access/subtrans.h"#include "access/transam.h"#include "access/twophase.h"#include "access/xact.h"#include "access/xlogutils.h"#include "catalog/catalog.h"#include "catalog/pg_authid.h"#include "miscadmin.h"#include "pgstat.h"#include "postmaster/bgworker.h"#include "port/pg_lfind.h"#include "storage/proc.h"#include "storage/procarray.h"#include "storage/procsignal.h"#include "utils/acl.h"#include "utils/builtins.h"#include "utils/injection_point.h"#include "utils/lsyscache.h"#include "utils/rel.h"#include "utils/snapmgr.h"#include "utils/wait_event.h"
Go to the source code of this file.
Data Structures | |
| struct | ProcArrayStruct |
| struct | GlobalVisState |
| struct | ComputeXidHorizonsResult |
Macros | |
| #define | UINT32_ACCESS_ONCE(var) ((uint32)(*((volatile uint32 *)&(var)))) |
| #define | xc_by_recent_xmin_inc() ((void) 0) |
| #define | xc_by_known_xact_inc() ((void) 0) |
| #define | xc_by_my_xact_inc() ((void) 0) |
| #define | xc_by_latest_xid_inc() ((void) 0) |
| #define | xc_by_main_xid_inc() ((void) 0) |
| #define | xc_by_child_xid_inc() ((void) 0) |
| #define | xc_by_known_assigned_inc() ((void) 0) |
| #define | xc_no_overflow_inc() ((void) 0) |
| #define | xc_slow_answer_inc() ((void) 0) |
| #define | PROCARRAY_MAXPROCS (MaxBackends + max_prepared_xacts) |
| #define | TOTAL_MAX_CACHED_SUBXIDS ((PGPROC_MAX_CACHED_SUBXIDS + 1) * PROCARRAY_MAXPROCS) |
| #define | MAXAUTOVACPIDS 10 /* max autovacs to SIGTERM per iteration */ |
| #define | KAX_COMPRESS_FREQUENCY 128 /* in transactions */ |
| #define | KAX_COMPRESS_IDLE_INTERVAL 1000 /* in ms */ |
Typedefs | |
| typedef struct ProcArrayStruct | ProcArrayStruct |
| typedef struct ComputeXidHorizonsResult | ComputeXidHorizonsResult |
| typedef enum GlobalVisHorizonKind | GlobalVisHorizonKind |
| typedef enum KAXCompressReason | KAXCompressReason |
Enumerations | |
| enum | GlobalVisHorizonKind { VISHORIZON_SHARED , VISHORIZON_CATALOG , VISHORIZON_DATA , VISHORIZON_TEMP } |
| enum | KAXCompressReason { KAX_NO_SPACE , KAX_PRUNE , KAX_TRANSACTION_END , KAX_STARTUP_PROCESS_IDLE } |
Variables | |
| static ProcArrayStruct * | procArray |
| static PGPROC * | allProcs |
| static TransactionId | cachedXidIsNotInProgress = InvalidTransactionId |
| static TransactionId * | KnownAssignedXids |
| static bool * | KnownAssignedXidsValid |
| static TransactionId | latestObservedXid = InvalidTransactionId |
| static TransactionId | standbySnapshotPendingXmin |
| static GlobalVisState | GlobalVisSharedRels |
| static GlobalVisState | GlobalVisCatalogRels |
| static GlobalVisState | GlobalVisDataRels |
| static GlobalVisState | GlobalVisTempRels |
| static TransactionId | ComputeXidHorizonsResultLastXmin |
| #define KAX_COMPRESS_FREQUENCY 128 /* in transactions */ |
| #define KAX_COMPRESS_IDLE_INTERVAL 1000 /* in ms */ |
| #define MAXAUTOVACPIDS 10 /* max autovacs to SIGTERM per iteration */ |
| #define PROCARRAY_MAXPROCS (MaxBackends + max_prepared_xacts) |
| #define TOTAL_MAX_CACHED_SUBXIDS ((PGPROC_MAX_CACHED_SUBXIDS + 1) * PROCARRAY_MAXPROCS) |
Definition at line 72 of file procarray.c.
| #define xc_by_child_xid_inc | ( | ) | ((void) 0) |
Definition at line 344 of file procarray.c.
| #define xc_by_known_assigned_inc | ( | ) | ((void) 0) |
Definition at line 345 of file procarray.c.
| #define xc_by_known_xact_inc | ( | ) | ((void) 0) |
Definition at line 340 of file procarray.c.
| #define xc_by_latest_xid_inc | ( | ) | ((void) 0) |
Definition at line 342 of file procarray.c.
| #define xc_by_main_xid_inc | ( | ) | ((void) 0) |
Definition at line 343 of file procarray.c.
| #define xc_by_my_xact_inc | ( | ) | ((void) 0) |
Definition at line 341 of file procarray.c.
| #define xc_by_recent_xmin_inc | ( | ) | ((void) 0) |
Definition at line 339 of file procarray.c.
| #define xc_no_overflow_inc | ( | ) | ((void) 0) |
Definition at line 346 of file procarray.c.
| #define xc_slow_answer_inc | ( | ) | ((void) 0) |
Definition at line 347 of file procarray.c.
| typedef struct ComputeXidHorizonsResult ComputeXidHorizonsResult |
| typedef enum GlobalVisHorizonKind GlobalVisHorizonKind |
| typedef enum KAXCompressReason KAXCompressReason |
| typedef struct ProcArrayStruct ProcArrayStruct |
| enum GlobalVisHorizonKind |
| Enumerator | |
|---|---|
| VISHORIZON_SHARED | |
| VISHORIZON_CATALOG | |
| VISHORIZON_DATA | |
| VISHORIZON_TEMP | |
Definition at line 253 of file procarray.c.
| enum KAXCompressReason |
| Enumerator | |
|---|---|
| KAX_NO_SPACE | |
| KAX_PRUNE | |
| KAX_TRANSACTION_END | |
| KAX_STARTUP_PROCESS_IDLE | |
Definition at line 264 of file procarray.c.
| PGPROC * BackendPidGetProc | ( | int | pid | ) |
Definition at line 3156 of file procarray.c.
References BackendPidGetProcWithLock(), LW_SHARED, LWLockAcquire(), and LWLockRelease().
Referenced by IsBackendPid(), pg_isolation_test_session_is_blocked(), pg_log_backend_memory_contexts(), pg_signal_backend(), pg_stat_get_activity(), pg_stat_get_backend_wait_event(), pg_stat_get_backend_wait_event_type(), pg_stat_reset_backend_stats(), pgstat_fetch_stat_backend_by_pid(), TerminateBackgroundWorkersForDatabase(), TerminateOtherDBBackends(), and test_shm_mq_main().
| PGPROC * BackendPidGetProcWithLock | ( | int | pid | ) |
Definition at line 3179 of file procarray.c.
References allProcs, ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PGPROC::pid, and procArray.
Referenced by BackendPidGetProc(), and GetBlockerStatusData().
| int BackendXidGetPid | ( | TransactionId | xid | ) |
Definition at line 3216 of file procarray.c.
References allProcs, InvalidTransactionId, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, ProcGlobal, and PROC_HDR::xids.
Referenced by pgrowlocks().
|
static |
Definition at line 1682 of file procarray.c.
References allProcs, Assert, ComputeXidHorizonsResult::catalog_oldest_nonremovable, ComputeXidHorizonsResult::data_oldest_nonremovable, PGPROC::databaseId, GlobalVisUpdateApply(), InvalidOid, InvalidTransactionId, KnownAssignedXidsGetOldestXmin(), ComputeXidHorizonsResult::latest_completed, TransamVariablesData::latestCompletedXid, LW_SHARED, LWLockAcquire(), LWLockRelease(), MyDatabaseId, MyProc, ProcArrayStruct::numProcs, ComputeXidHorizonsResult::oldest_considered_running, ProcArrayStruct::pgprocnos, PROC_AFFECTS_ALL_HORIZONS, PROC_IN_LOGICAL_DECODING, PROC_IN_VACUUM, procArray, ProcGlobal, RecoveryInProgress(), ProcArrayStruct::replication_slot_catalog_xmin, ProcArrayStruct::replication_slot_xmin, ComputeXidHorizonsResult::shared_oldest_nonremovable, ComputeXidHorizonsResult::shared_oldest_nonremovable_raw, ComputeXidHorizonsResult::slot_catalog_xmin, ComputeXidHorizonsResult::slot_xmin, PROC_HDR::statusFlags, ComputeXidHorizonsResult::temp_oldest_nonremovable, TransactionIdAdvance, TransactionIdIsValid, TransactionIdOlder(), TransactionIdPrecedesOrEquals(), TransamVariables, UINT32_ACCESS_ONCE, PGPROC::xid, XidFromFullTransactionId, PROC_HDR::xids, and PGPROC::xmin.
Referenced by GetOldestNonRemovableTransactionId(), GetOldestTransactionIdConsideredRunning(), GetReplicationHorizons(), and GlobalVisUpdate().
| int CountDBBackends | ( | Oid | databaseid | ) |
Definition at line 3629 of file procarray.c.
References allProcs, PGPROC::databaseId, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, OidIsValid, ProcArrayStruct::pgprocnos, PGPROC::pid, and procArray.
Referenced by ResolveRecoveryConflictWithDatabase().
| int CountDBConnections | ( | Oid | databaseid | ) |
Definition at line 3658 of file procarray.c.
References allProcs, B_BACKEND, PGPROC::backendType, PGPROC::databaseId, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, OidIsValid, ProcArrayStruct::pgprocnos, PGPROC::pid, and procArray.
Referenced by CheckMyDatabase().
| bool CountOtherDBBackends | ( | Oid | databaseId, |
| int * | nbackends, | ||
| int * | nprepared | ||
| ) |
Definition at line 3742 of file procarray.c.
References allProcs, CHECK_FOR_INTERRUPTS, PGPROC::databaseId, IS_INJECTION_POINT_ATTACHED, kill, LW_SHARED, LWLockAcquire(), LWLockRelease(), MAXAUTOVACPIDS, MyProc, ProcArrayStruct::numProcs, pg_usleep(), ProcArrayStruct::pgprocnos, PGPROC::pid, PROC_IS_AUTOVACUUM, procArray, ProcGlobal, PROC_HDR::statusFlags, and TerminateBackgroundWorkersForDatabase().
Referenced by createdb(), dropdb(), movedb(), and RenameDatabase().
| int CountUserBackends | ( | Oid | roleid | ) |
Definition at line 3690 of file procarray.c.
References allProcs, B_BACKEND, PGPROC::backendType, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, and PGPROC::roleId.
Referenced by InitializeSessionUserId().
| void ExpireAllKnownAssignedTransactionIds | ( | void | ) |
Definition at line 4505 of file procarray.c.
References Assert, FullTransactionIdIsValid, FullTransactionIdRetreat(), InvalidTransactionId, KnownAssignedXidsRemovePreceding(), ProcArrayStruct::lastOverflowedXid, TransamVariablesData::latestCompletedXid, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), TransamVariablesData::nextXid, procArray, TransamVariables, and TransamVariablesData::xactCompletionCount.
Referenced by ShutdownRecoveryTransactionEnvironment().
| void ExpireOldKnownAssignedTransactionIds | ( | TransactionId | xid | ) |
Definition at line 4539 of file procarray.c.
References InvalidTransactionId, KnownAssignedXidsRemovePreceding(), ProcArrayStruct::lastOverflowedXid, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaintainLatestCompletedXidRecovery(), procArray, TransactionIdPrecedes(), TransactionIdRetreat, TransamVariables, and TransamVariablesData::xactCompletionCount.
Referenced by ProcArrayApplyRecoveryInfo().
| void ExpireTreeKnownAssignedTransactionIds | ( | TransactionId | xid, |
| int | nsubxids, | ||
| TransactionId * | subxids, | ||
| TransactionId | max_xid | ||
| ) |
Definition at line 4479 of file procarray.c.
References Assert, KnownAssignedXidsRemoveTree(), LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaintainLatestCompletedXidRecovery(), STANDBY_INITIALIZED, standbyState, TransamVariables, and TransamVariablesData::xactCompletionCount.
Referenced by xact_redo_abort(), and xact_redo_commit().
|
inlinestatic |
Definition at line 4328 of file procarray.c.
References Assert, AssertTransactionIdInAllowableRange, FullTransactionIdFromU64(), TransactionIdIsValid, U64FromFullTransactionId, and XidFromFullTransactionId.
Referenced by GetSnapshotData(), GlobalVisTestIsRemovableXid(), GlobalVisUpdateApply(), MaintainLatestCompletedXid(), and MaintainLatestCompletedXidRecovery().
| VirtualTransactionId * GetConflictingVirtualXIDs | ( | TransactionId | limitXmin, |
| Oid | dbOid | ||
| ) |
Definition at line 3376 of file procarray.c.
References allProcs, PGPROC::databaseId, ereport, errcode(), errmsg, ERROR, GET_VXID_FROM_PGPROC, INVALID_PROC_NUMBER, InvalidLocalTransactionId, VirtualTransactionId::localTransactionId, LW_SHARED, LWLockAcquire(), LWLockRelease(), malloc, ProcArrayStruct::maxProcs, ProcArrayStruct::numProcs, OidIsValid, ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, VirtualTransactionId::procNumber, TransactionIdFollows(), TransactionIdIsValid, UINT32_ACCESS_ONCE, VirtualTransactionIdIsValid, and PGPROC::xmin.
Referenced by ResolveRecoveryConflictWithSnapshot(), and ResolveRecoveryConflictWithTablespace().
| VirtualTransactionId * GetCurrentVirtualXIDs | ( | TransactionId | limitXmin, |
| bool | excludeXmin0, | ||
| bool | allDbs, | ||
| int | excludeVacuum, | ||
| int * | nvxids | ||
| ) |
Definition at line 3284 of file procarray.c.
References allProcs, PGPROC::databaseId, GET_VXID_FROM_PGPROC, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::maxProcs, MyDatabaseId, MyProc, ProcArrayStruct::numProcs, palloc_array, ProcArrayStruct::pgprocnos, procArray, ProcGlobal, PROC_HDR::statusFlags, TransactionIdIsValid, TransactionIdPrecedesOrEquals(), UINT32_ACCESS_ONCE, VirtualTransactionIdIsValid, and PGPROC::xmin.
Referenced by WaitForOlderSnapshots().
| int GetMaxSnapshotSubxidCount | ( | void | ) |
Definition at line 2027 of file procarray.c.
References TOTAL_MAX_CACHED_SUBXIDS.
Referenced by ExportSnapshot(), GetSnapshotData(), ImportSnapshot(), and SetTransactionSnapshot().
| int GetMaxSnapshotXidCount | ( | void | ) |
Definition at line 2016 of file procarray.c.
References ProcArrayStruct::maxProcs, and procArray.
Referenced by GetSnapshotData(), ImportSnapshot(), SetTransactionSnapshot(), and SnapBuildInitialSnapshot().
| TransactionId GetOldestActiveTransactionId | ( | bool | inCommitOnly, |
| bool | allDbs | ||
| ) |
Definition at line 2832 of file procarray.c.
References allProcs, Assert, PGPROC::databaseId, DELAY_CHKPT_IN_COMMIT, PGPROC::delayChkptFlags, LW_SHARED, LWLockAcquire(), LWLockRelease(), MyDatabaseId, TransamVariablesData::nextXid, ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, procArray, ProcGlobal, RecoveryInProgress(), TransactionIdIsNormal, TransactionIdPrecedes(), TransamVariables, UINT32_ACCESS_ONCE, XidFromFullTransactionId, and PROC_HDR::xids.
Referenced by CreateCheckPoint(), get_candidate_xid(), and ProcessStandbyPSRequestMessage().
| TransactionId GetOldestNonRemovableTransactionId | ( | Relation | rel | ) |
Definition at line 1952 of file procarray.c.
References ComputeXidHorizonsResult::catalog_oldest_nonremovable, ComputeXidHorizons(), ComputeXidHorizonsResult::data_oldest_nonremovable, GlobalVisHorizonKindForRel(), InvalidTransactionId, ComputeXidHorizonsResult::shared_oldest_nonremovable, ComputeXidHorizonsResult::temp_oldest_nonremovable, VISHORIZON_CATALOG, VISHORIZON_DATA, VISHORIZON_SHARED, and VISHORIZON_TEMP.
Referenced by _bt_pendingfsm_finalize(), GetStrictOldestNonRemovableTransactionId(), heapam_index_build_range_scan(), removable_cutoff(), statapprox_heap(), vac_update_datfrozenxid(), and vacuum_get_cutoffs().
| TransactionId GetOldestSafeDecodingTransactionId | ( | bool | catalogOnly | ) |
Definition at line 2906 of file procarray.c.
References Assert, LW_SHARED, LWLockAcquire(), LWLockHeldByMe(), LWLockRelease(), TransamVariablesData::nextXid, ProcArrayStruct::numProcs, procArray, ProcGlobal, RecoveryInProgress(), ProcArrayStruct::replication_slot_catalog_xmin, ProcArrayStruct::replication_slot_xmin, TransactionIdIsNormal, TransactionIdIsValid, TransactionIdPrecedes(), TransamVariables, UINT32_ACCESS_ONCE, XidFromFullTransactionId, and PROC_HDR::xids.
Referenced by CreateInitDecodingContext(), init_conflict_slot_xmin(), SnapBuildInitialSnapshot(), and synchronize_one_slot().
| TransactionId GetOldestTransactionIdConsideredRunning | ( | void | ) |
Definition at line 1981 of file procarray.c.
References ComputeXidHorizons(), and ComputeXidHorizonsResult::oldest_considered_running.
Referenced by CreateCheckPoint(), and CreateRestartPoint().
| void GetReplicationHorizons | ( | TransactionId * | xmin, |
| TransactionId * | catalog_xmin | ||
| ) |
Definition at line 1994 of file procarray.c.
References ComputeXidHorizons(), ComputeXidHorizonsResult::shared_oldest_nonremovable_raw, and ComputeXidHorizonsResult::slot_catalog_xmin.
Referenced by XLogWalRcvSendHSFeedback().
| RunningTransactions GetRunningTransactionData | ( | void | ) |
Definition at line 2636 of file procarray.c.
References allProcs, Assert, XidCacheStatus::count, PGPROC::databaseId, ereport, errcode(), errmsg, ERROR, TransamVariablesData::latestCompletedXid, RunningTransactionsData::latestCompletedXid, LW_SHARED, LWLockAcquire(), malloc, MyDatabaseId, TransamVariablesData::nextXid, RunningTransactionsData::nextXid, ProcArrayStruct::numProcs, RunningTransactionsData::oldestDatabaseRunningXid, RunningTransactionsData::oldestRunningXid, XidCacheStatus::overflowed, pg_read_barrier, ProcArrayStruct::pgprocnos, procArray, ProcGlobal, RecoveryInProgress(), RunningTransactionsData::subxcnt, RunningTransactionsData::subxid_status, PGPROC::subxids, SUBXIDS_IN_ARRAY, SUBXIDS_IN_SUBTRANS, PROC_HDR::subxidStates, TOTAL_MAX_CACHED_SUBXIDS, TransactionIdIsNormal, TransactionIdIsValid, TransactionIdPrecedes(), TransamVariables, UINT32_ACCESS_ONCE, RunningTransactionsData::xcnt, XidFromFullTransactionId, XidCache::xids, PROC_HDR::xids, and RunningTransactionsData::xids.
Referenced by GetStrictOldestNonRemovableTransactionId(), and LogStandbySnapshot().
Definition at line 2122 of file procarray.c.
References SnapshotData::active_count, allProcs, Assert, SnapshotData::copied, XidCacheStatus::count, SnapshotData::curcid, GlobalVisState::definitely_needed, ereport, errcode(), errmsg, ERROR, FullTransactionIdAdvance(), FullTransactionIdNewer(), FullXidRelativeTo(), GetCurrentCommandId(), GetMaxSnapshotSubxidCount(), GetMaxSnapshotXidCount(), GetSnapshotDataReuse(), GlobalVisCatalogRels, GlobalVisDataRels, GlobalVisSharedRels, GlobalVisTempRels, InvalidTransactionId, KnownAssignedXidsGetAndSetXmin(), ProcArrayStruct::lastOverflowedXid, TransamVariablesData::latestCompletedXid, likely, LW_SHARED, LWLockAcquire(), LWLockRelease(), malloc, GlobalVisState::maybe_needed, MyProc, NormalTransactionIdPrecedes, ProcArrayStruct::numProcs, TransamVariablesData::oldestXid, pg_read_barrier, ProcArrayStruct::pgprocnos, PGPROC::pgxactoff, PROC_IN_LOGICAL_DECODING, PROC_IN_VACUUM, procArray, ProcGlobal, RecentXmin, RecoveryInProgress(), SnapshotData::regd_count, ProcArrayStruct::replication_slot_catalog_xmin, ProcArrayStruct::replication_slot_xmin, SnapshotData::snapXactCompletionCount, PROC_HDR::statusFlags, SnapshotData::suboverflowed, SnapshotData::subxcnt, PGPROC::subxids, PROC_HDR::subxidStates, SnapshotData::subxip, SnapshotData::takenDuringRecovery, TransactionIdAdvance, TransactionIdIsNormal, TransactionIdIsValid, TransactionIdOlder(), TransactionIdPrecedesOrEquals(), TransactionXmin, TransamVariables, UINT32_ACCESS_ONCE, TransamVariablesData::xactCompletionCount, SnapshotData::xcnt, PGPROC::xid, XidFromFullTransactionId, XidCache::xids, PROC_HDR::xids, SnapshotData::xip, SnapshotData::xmax, PGPROC::xmin, and SnapshotData::xmin.
Referenced by GetLatestSnapshot(), GetNonHistoricCatalogSnapshot(), GetSerializableTransactionSnapshotInt(), GetTransactionSnapshot(), and SetTransactionSnapshot().
|
static |
Definition at line 2042 of file procarray.c.
References SnapshotData::active_count, Assert, SnapshotData::copied, SnapshotData::curcid, GetCurrentCommandId(), LWLockHeldByMe(), MyProc, RecentXmin, SnapshotData::regd_count, SnapshotData::snapXactCompletionCount, TransactionIdIsValid, TransactionIdPrecedesOrEquals(), TransactionXmin, TransamVariables, unlikely, TransamVariablesData::xactCompletionCount, PGPROC::xmin, and SnapshotData::xmin.
Referenced by GetSnapshotData().
| VirtualTransactionId * GetVirtualXIDsDelayingChkpt | ( | int * | nvxids, |
| int | type | ||
| ) |
Definition at line 3004 of file procarray.c.
References allProcs, Assert, PGPROC::delayChkptFlags, GET_VXID_FROM_PGPROC, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::maxProcs, ProcArrayStruct::numProcs, palloc_array, ProcArrayStruct::pgprocnos, procArray, type, and VirtualTransactionIdIsValid.
Referenced by CreateCheckPoint().
| bool GlobalVisCheckRemovableFullXid | ( | Relation | rel, |
| FullTransactionId | fxid | ||
| ) |
Definition at line 4293 of file procarray.c.
References GlobalVisTestFor(), and GlobalVisTestIsRemovableFullXid().
Referenced by _bt_pendingfsm_finalize(), BTPageIsRecyclable(), and gistPageRecyclable().
| bool GlobalVisCheckRemovableXid | ( | Relation | rel, |
| TransactionId | xid | ||
| ) |
Definition at line 4307 of file procarray.c.
References GlobalVisTestFor(), and GlobalVisTestIsRemovableXid().
Referenced by GinPageIsRecyclable().
|
inlinestatic |
Definition at line 1918 of file procarray.c.
References Assert, IsCatalogRelation(), RelationData::rd_rel, RecoveryInProgress(), RELATION_IS_LOCAL, RelationIsAccessibleInLogicalDecoding, VISHORIZON_CATALOG, VISHORIZON_DATA, VISHORIZON_SHARED, and VISHORIZON_TEMP.
Referenced by GetOldestNonRemovableTransactionId(), and GlobalVisTestFor().
| GlobalVisState * GlobalVisTestFor | ( | Relation | rel | ) |
Definition at line 4114 of file procarray.c.
References Assert, FullTransactionIdIsValid, GlobalVisCatalogRels, GlobalVisDataRels, GlobalVisHorizonKindForRel(), GlobalVisSharedRels, GlobalVisTempRels, RecentXmin, VISHORIZON_CATALOG, VISHORIZON_DATA, VISHORIZON_SHARED, and VISHORIZON_TEMP.
Referenced by get_actual_variable_endpoint(), GlobalVisCheckRemovableFullXid(), GlobalVisCheckRemovableXid(), heap_hot_search_buffer(), heap_index_delete_tuples(), heap_page_prune_opt(), heap_vacuum_rel(), and vacuumRedirectAndPlaceholder().
| bool GlobalVisTestIsRemovableFullXid | ( | GlobalVisState * | state, |
| FullTransactionId | fxid | ||
| ) |
Definition at line 4229 of file procarray.c.
References Assert, FullTransactionIdFollowsOrEquals, FullTransactionIdPrecedes, GlobalVisTestShouldUpdate(), and GlobalVisUpdate().
Referenced by GlobalVisCheckRemovableFullXid(), and GlobalVisTestIsRemovableXid().
| bool GlobalVisTestIsRemovableXid | ( | GlobalVisState * | state, |
| TransactionId | xid | ||
| ) |
Definition at line 4271 of file procarray.c.
References FullXidRelativeTo(), and GlobalVisTestIsRemovableFullXid().
Referenced by GlobalVisCheckRemovableXid(), heap_page_prune_opt(), heap_prune_satisfies_vacuum(), HeapTupleIsSurelyDead(), HeapTupleSatisfiesNonVacuumable(), and vacuumRedirectAndPlaceholder().
|
static |
Definition at line 4154 of file procarray.c.
References ComputeXidHorizonsResultLastXmin, FullTransactionIdFollowsOrEquals, RecentXmin, and TransactionIdIsValid.
Referenced by GlobalVisTestIsRemovableFullXid().
|
static |
Definition at line 4212 of file procarray.c.
References ComputeXidHorizons().
Referenced by GlobalVisTestIsRemovableFullXid().
|
static |
Definition at line 4173 of file procarray.c.
References ComputeXidHorizonsResult::catalog_oldest_nonremovable, ComputeXidHorizonsResultLastXmin, ComputeXidHorizonsResult::data_oldest_nonremovable, GlobalVisState::definitely_needed, FullTransactionIdNewer(), FullXidRelativeTo(), GlobalVisCatalogRels, GlobalVisDataRels, GlobalVisSharedRels, GlobalVisTempRels, ComputeXidHorizonsResult::latest_completed, GlobalVisState::maybe_needed, RecentXmin, ComputeXidHorizonsResult::shared_oldest_nonremovable, and ComputeXidHorizonsResult::temp_oldest_nonremovable.
Referenced by ComputeXidHorizons().
| bool HaveVirtualXIDsDelayingChkpt | ( | VirtualTransactionId * | vxids, |
| int | nvxids, | ||
| int | type | ||
| ) |
Definition at line 3049 of file procarray.c.
References allProcs, Assert, PGPROC::delayChkptFlags, GET_VXID_FROM_PGPROC, i, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, procArray, type, VirtualTransactionIdEquals, and VirtualTransactionIdIsValid.
Referenced by CreateCheckPoint().
| bool IsBackendPid | ( | int | pid | ) |
Definition at line 3251 of file procarray.c.
References BackendPidGetProc().
Referenced by pg_stat_get_subscription().
| void KnownAssignedTransactionIdsIdleMaintenance | ( | void | ) |
Definition at line 4571 of file procarray.c.
References KAX_STARTUP_PROCESS_IDLE, and KnownAssignedXidsCompress().
Referenced by WaitForWALToBecomeAvailable().
|
static |
Definition at line 4981 of file procarray.c.
References Assert, KnownAssignedXidsSearch(), and TransactionIdIsValid.
Referenced by TransactionIdIsInProgress().
|
static |
Definition at line 4789 of file procarray.c.
References Assert, elog, ERROR, ProcArrayStruct::headKnownAssignedXids, i, KAX_NO_SPACE, KnownAssignedXids, KnownAssignedXidsCompress(), KnownAssignedXidsDisplay(), KnownAssignedXidsValid, LOG, ProcArrayStruct::maxKnownAssignedXids, ProcArrayStruct::numKnownAssignedXids, pg_write_barrier, procArray, ProcArrayStruct::tailKnownAssignedXids, TransactionIdAdvance, TransactionIdFollowsOrEquals(), TransactionIdPrecedes(), and TransactionIdPrecedesOrEquals().
Referenced by ProcArrayApplyRecoveryInfo(), and RecordKnownAssignedTransactionIds().
|
static |
Definition at line 4672 of file procarray.c.
References Assert, GetCurrentTimestamp(), ProcArrayStruct::headKnownAssignedXids, i, KAX_COMPRESS_FREQUENCY, KAX_COMPRESS_IDLE_INTERVAL, KAX_NO_SPACE, KAX_STARTUP_PROCESS_IDLE, KAX_TRANSACTION_END, KnownAssignedXids, KnownAssignedXidsValid, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numKnownAssignedXids, procArray, ProcArrayStruct::tailKnownAssignedXids, and TimestampTzPlusMilliseconds.
Referenced by KnownAssignedTransactionIdsIdleMaintenance(), KnownAssignedXidsAdd(), KnownAssignedXidsRemovePreceding(), and KnownAssignedXidsRemoveTree().
|
static |
Definition at line 5225 of file procarray.c.
References appendStringInfo(), buf, elog, ProcArrayStruct::headKnownAssignedXids, i, initStringInfo(), KnownAssignedXids, KnownAssignedXidsValid, ProcArrayStruct::numKnownAssignedXids, pfree(), procArray, and ProcArrayStruct::tailKnownAssignedXids.
Referenced by KnownAssignedXidsAdd(), and ProcArrayApplyRecoveryInfo().
|
static |
Definition at line 5120 of file procarray.c.
References InvalidTransactionId, and KnownAssignedXidsGetAndSetXmin().
Referenced by TransactionIdIsInProgress().
|
static |
Definition at line 5134 of file procarray.c.
References ProcArrayStruct::headKnownAssignedXids, i, KnownAssignedXids, KnownAssignedXidsValid, pg_read_barrier, procArray, ProcArrayStruct::tailKnownAssignedXids, TransactionIdFollowsOrEquals(), TransactionIdIsValid, and TransactionIdPrecedes().
Referenced by GetSnapshotData(), and KnownAssignedXidsGet().
|
static |
Definition at line 5190 of file procarray.c.
References ProcArrayStruct::headKnownAssignedXids, i, InvalidTransactionId, KnownAssignedXids, KnownAssignedXidsValid, pg_read_barrier, procArray, and ProcArrayStruct::tailKnownAssignedXids.
Referenced by ComputeXidHorizons().
|
static |
Definition at line 4994 of file procarray.c.
References Assert, DEBUG4, elog, KnownAssignedXidsSearch(), and TransactionIdIsValid.
Referenced by KnownAssignedXidsRemoveTree().
|
static |
Definition at line 5042 of file procarray.c.
References Assert, DEBUG4, elog, ProcArrayStruct::headKnownAssignedXids, i, KAX_PRUNE, KnownAssignedXids, KnownAssignedXidsCompress(), KnownAssignedXidsValid, ProcArrayStruct::numKnownAssignedXids, procArray, StandbyTransactionIdIsPrepared(), ProcArrayStruct::tailKnownAssignedXids, TransactionIdFollowsOrEquals(), and TransactionIdIsValid.
Referenced by ExpireAllKnownAssignedTransactionIds(), and ExpireOldKnownAssignedTransactionIds().
|
static |
Definition at line 5020 of file procarray.c.
References i, KAX_TRANSACTION_END, KnownAssignedXidsCompress(), KnownAssignedXidsRemove(), and TransactionIdIsValid.
Referenced by ExpireTreeKnownAssignedTransactionIds(), and ProcArrayApplyXidAssignment().
|
static |
Definition at line 5263 of file procarray.c.
References ProcArrayStruct::headKnownAssignedXids, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numKnownAssignedXids, procArray, and ProcArrayStruct::tailKnownAssignedXids.
Referenced by ProcArrayApplyRecoveryInfo().
|
static |
Definition at line 4893 of file procarray.c.
References Assert, ProcArrayStruct::headKnownAssignedXids, KnownAssignedXids, KnownAssignedXidsValid, ProcArrayStruct::numKnownAssignedXids, pg_read_barrier, procArray, ProcArrayStruct::tailKnownAssignedXids, and TransactionIdPrecedes().
Referenced by KnownAssignedXidExists(), and KnownAssignedXidsRemove().
|
static |
Definition at line 966 of file procarray.c.
References Assert, FullTransactionIdIsNormal, FullTransactionIdIsValid, FullXidRelativeTo(), IsBootstrapProcessingMode, TransamVariablesData::latestCompletedXid, LWLockHeldByMe(), RecoveryInProgress(), TransactionIdPrecedes(), TransamVariables, and XidFromFullTransactionId.
Referenced by ProcArrayEndTransactionInternal(), ProcArrayRemove(), and XidCacheRemoveRunningXids().
|
static |
Definition at line 988 of file procarray.c.
References AmStartupProcess, Assert, FullTransactionIdIsNormal, FullTransactionIdIsValid, FullXidRelativeTo(), IsUnderPostmaster, TransamVariablesData::latestCompletedXid, LWLockHeldByMe(), TransamVariablesData::nextXid, TransactionIdPrecedes(), TransamVariables, and XidFromFullTransactionId.
Referenced by ExpireOldKnownAssignedTransactionIds(), ExpireTreeKnownAssignedTransactionIds(), and ProcArrayApplyRecoveryInfo().
| bool MinimumActiveBackends | ( | int | min | ) |
Definition at line 3576 of file procarray.c.
References allProcs, InvalidTransactionId, MyProc, ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, PGPROC::waitLock, and PGPROC::xid.
Referenced by XLogFlush().
| void ProcArrayAdd | ( | PGPROC * | proc | ) |
Definition at line 472 of file procarray.c.
References allProcs, Assert, ereport, errcode(), errmsg, FATAL, GetNumberFromPGProc, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::maxProcs, NUM_AUXILIARY_PROCS, ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PGPROC::pgxactoff, procArray, ProcGlobal, PGPROC::statusFlags, PROC_HDR::statusFlags, PROC_HDR::subxidStates, PGPROC::subxidStatus, PGPROC::xid, and PROC_HDR::xids.
Referenced by InitProcessPhase2(), and MarkAsPrepared().
| void ProcArrayApplyRecoveryInfo | ( | RunningTransactions | running | ) |
Definition at line 1053 of file procarray.c.
References AdvanceNextFullTransactionIdPastXid(), Assert, DEBUG1, DEBUG3, elog, ERROR, ExpireOldKnownAssignedTransactionIds(), ExtendSUBTRANS(), FullTransactionIdIsValid, i, InvalidTransactionId, KnownAssignedXidsAdd(), KnownAssignedXidsDisplay(), KnownAssignedXidsReset(), ProcArrayStruct::lastOverflowedXid, RunningTransactionsData::latestCompletedXid, latestObservedXid, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaintainLatestCompletedXidRecovery(), TransamVariablesData::nextXid, RunningTransactionsData::nextXid, ProcArrayStruct::numKnownAssignedXids, RunningTransactionsData::oldestRunningXid, palloc_array, pfree(), procArray, qsort, STANDBY_INITIALIZED, STANDBY_SNAPSHOT_PENDING, STANDBY_SNAPSHOT_READY, StandbyReleaseOldLocks(), standbySnapshotPendingXmin, standbyState, RunningTransactionsData::subxcnt, RunningTransactionsData::subxid_status, SUBXIDS_IN_ARRAY, SUBXIDS_IN_SUBTRANS, SUBXIDS_MISSING, TransactionIdAdvance, TransactionIdDidAbort(), TransactionIdDidCommit(), TransactionIdEquals, TransactionIdIsNormal, TransactionIdIsValid, TransactionIdPrecedes(), TransactionIdRetreat, TransamVariables, RunningTransactionsData::xcnt, xidLogicalComparator(), and RunningTransactionsData::xids.
Referenced by standby_redo(), StartupXLOG(), and xlog_redo().
| void ProcArrayApplyXidAssignment | ( | TransactionId | topxid, |
| int | nsubxids, | ||
| TransactionId * | subxids | ||
| ) |
Definition at line 1317 of file procarray.c.
References Assert, i, InvalidTransactionId, KnownAssignedXidsRemoveTree(), ProcArrayStruct::lastOverflowedXid, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), procArray, RecordKnownAssignedTransactionIds(), STANDBY_INITIALIZED, standbyState, SubTransSetParent(), TransactionIdLatest(), and TransactionIdPrecedes().
Referenced by xact_redo().
| void ProcArrayClearTransaction | ( | PGPROC * | proc | ) |
Definition at line 907 of file procarray.c.
References Assert, XidCacheStatus::count, PGPROC::delayChkptFlags, InvalidLocalTransactionId, InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), PGPROC::lxid, XidCacheStatus::overflowed, PGPROC::pgxactoff, PROC_VACUUM_STATE_MASK, ProcGlobal, PGPROC::statusFlags, PROC_HDR::subxidStates, PGPROC::subxidStatus, TransamVariables, PGPROC::vxid, TransamVariablesData::xactCompletionCount, PGPROC::xid, PROC_HDR::xids, and PGPROC::xmin.
Referenced by PrepareTransaction().
| void ProcArrayEndTransaction | ( | PGPROC * | proc, |
| TransactionId | latestXid | ||
| ) |
Definition at line 671 of file procarray.c.
References Assert, XidCacheStatus::count, PGPROC::delayChkptFlags, InvalidLocalTransactionId, InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockConditionalAcquire(), LWLockHeldByMe(), LWLockRelease(), PGPROC::lxid, XidCacheStatus::overflowed, PGPROC::pgxactoff, PROC_VACUUM_STATE_MASK, ProcArrayEndTransactionInternal(), ProcArrayGroupClearXid(), ProcGlobal, PGPROC::statusFlags, PROC_HDR::statusFlags, PGPROC::subxidStatus, TransactionIdIsValid, PGPROC::vxid, PGPROC::xid, and PGPROC::xmin.
Referenced by AbortTransaction(), and CommitTransaction().
|
inlinestatic |
Definition at line 733 of file procarray.c.
References Assert, XidCacheStatus::count, PGPROC::delayChkptFlags, InvalidLocalTransactionId, InvalidTransactionId, LW_EXCLUSIVE, LWLockHeldByMeInMode(), PGPROC::lxid, MaintainLatestCompletedXid(), XidCacheStatus::overflowed, PGPROC::pgxactoff, PROC_VACUUM_STATE_MASK, ProcGlobal, PGPROC::statusFlags, PROC_HDR::statusFlags, PROC_HDR::subxidStates, PGPROC::subxidStatus, TransactionIdIsValid, TransamVariables, PGPROC::vxid, TransamVariablesData::xactCompletionCount, PGPROC::xid, PROC_HDR::xids, and PGPROC::xmin.
Referenced by ProcArrayEndTransaction(), and ProcArrayGroupClearXid().
| void ProcArrayGetReplicationSlotXmin | ( | TransactionId * | xmin, |
| TransactionId * | catalog_xmin | ||
| ) |
Definition at line 3975 of file procarray.c.
References LW_SHARED, LWLockAcquire(), LWLockRelease(), procArray, ProcArrayStruct::replication_slot_catalog_xmin, and ProcArrayStruct::replication_slot_xmin.
Referenced by logical_begin_heap_rewrite().
|
static |
Definition at line 792 of file procarray.c.
References allProcs, Assert, GetNumberFromPGProc, INVALID_PROC_NUMBER, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MyProc, pg_atomic_compare_exchange_u32(), pg_atomic_exchange_u32(), pg_atomic_read_u32(), pg_atomic_write_u32(), pg_write_barrier, PGSemaphoreLock(), PGSemaphoreUnlock(), pgstat_report_wait_end(), pgstat_report_wait_start(), ProcArrayEndTransactionInternal(), PROC_HDR::procArrayGroupFirst, PGPROC::procArrayGroupMember, PGPROC::procArrayGroupMemberXid, PGPROC::procArrayGroupNext, ProcGlobal, PGPROC::sem, TransactionIdIsValid, and PGPROC::xid.
Referenced by ProcArrayEndTransaction().
| void ProcArrayInitRecovery | ( | TransactionId | initializedUptoXID | ) |
Definition at line 1022 of file procarray.c.
References Assert, latestObservedXid, STANDBY_INITIALIZED, standbyState, TransactionIdIsNormal, and TransactionIdRetreat.
Referenced by StartupXLOG().
| bool ProcArrayInstallImportedXmin | ( | TransactionId | xmin, |
| VirtualTransactionId * | sourcevxid | ||
| ) |
Definition at line 2479 of file procarray.c.
References allProcs, Assert, PGPROC::databaseId, VirtualTransactionId::localTransactionId, LW_SHARED, LWLockAcquire(), LWLockRelease(), PGPROC::lxid, MyDatabaseId, MyProc, ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PROC_IN_VACUUM, procArray, ProcGlobal, VirtualTransactionId::procNumber, PGPROC::procNumber, PROC_HDR::statusFlags, TransactionIdIsNormal, TransactionIdPrecedesOrEquals(), TransactionXmin, UINT32_ACCESS_ONCE, PGPROC::vxid, and PGPROC::xmin.
Referenced by GetSerializableTransactionSnapshotInt(), and SetTransactionSnapshot().
| bool ProcArrayInstallRestoredXmin | ( | TransactionId | xmin, |
| PGPROC * | proc | ||
| ) |
Definition at line 2563 of file procarray.c.
References Assert, PGPROC::databaseId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MyDatabaseId, MyProc, PGPROC::pgxactoff, PROC_XMIN_FLAGS, ProcGlobal, PGPROC::statusFlags, PROC_HDR::statusFlags, TransactionIdIsNormal, TransactionIdPrecedesOrEquals(), TransactionXmin, UINT32_ACCESS_ONCE, and PGPROC::xmin.
Referenced by SetTransactionSnapshot().
| void ProcArrayRemove | ( | PGPROC * | proc, |
| TransactionId | latestXid | ||
| ) |
Definition at line 569 of file procarray.c.
References allProcs, PROC_HDR::allProcs, Assert, XidCacheStatus::count, InvalidTransactionId, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaintainLatestCompletedXid(), ProcArrayStruct::maxProcs, NUM_AUXILIARY_PROCS, ProcArrayStruct::numProcs, XidCacheStatus::overflowed, ProcArrayStruct::pgprocnos, PGPROC::pgxactoff, PGPROC::pid, procArray, ProcGlobal, PROC_HDR::statusFlags, PROC_HDR::subxidStates, TransactionIdIsValid, TransamVariables, TransamVariablesData::xactCompletionCount, and PROC_HDR::xids.
Referenced by FinishPreparedTransaction(), and RemoveProcFromArray().
| void ProcArraySetReplicationSlotXmin | ( | TransactionId | xmin, |
| TransactionId | catalog_xmin, | ||
| bool | already_locked | ||
| ) |
Definition at line 3950 of file procarray.c.
References Assert, DEBUG1, elog, LW_EXCLUSIVE, LWLockAcquire(), LWLockHeldByMe(), LWLockRelease(), procArray, ProcArrayStruct::replication_slot_catalog_xmin, and ProcArrayStruct::replication_slot_xmin.
Referenced by ReplicationSlotsComputeRequiredXmin().
| void ProcArrayShmemInit | ( | void | ) |
Definition at line 422 of file procarray.c.
References add_size(), allProcs, PROC_HDR::allProcs, EnableHotStandby, ProcArrayStruct::headKnownAssignedXids, InvalidTransactionId, KnownAssignedXids, KnownAssignedXidsValid, ProcArrayStruct::lastOverflowedXid, ProcArrayStruct::maxKnownAssignedXids, ProcArrayStruct::maxProcs, mul_size(), ProcArrayStruct::numKnownAssignedXids, ProcArrayStruct::numProcs, procArray, PROCARRAY_MAXPROCS, ProcGlobal, ProcArrayStruct::replication_slot_catalog_xmin, ProcArrayStruct::replication_slot_xmin, ShmemInitStruct(), ProcArrayStruct::tailKnownAssignedXids, TOTAL_MAX_CACHED_SUBXIDS, TransamVariables, and TransamVariablesData::xactCompletionCount.
Referenced by CreateOrAttachShmemStructs().
| Size ProcArrayShmemSize | ( | void | ) |
Definition at line 380 of file procarray.c.
References add_size(), EnableHotStandby, mul_size(), PROCARRAY_MAXPROCS, and TOTAL_MAX_CACHED_SUBXIDS.
Referenced by CalculateShmemSize().
| PGPROC * ProcNumberGetProc | ( | ProcNumber | procNumber | ) |
Definition at line 3098 of file procarray.c.
References PROC_HDR::allProcCount, GetPGProcByNumber, PGPROC::pid, and ProcGlobal.
Referenced by checkTempNamespaceStatus(), LogRecoveryConflict(), VirtualXactLock(), WaitForLockersMultiple(), and WaitForOlderSnapshots().
| void ProcNumberGetTransactionIds | ( | ProcNumber | procNumber, |
| TransactionId * | xid, | ||
| TransactionId * | xmin, | ||
| int * | nsubxid, | ||
| bool * | overflowed | ||
| ) |
Definition at line 3120 of file procarray.c.
References PROC_HDR::allProcCount, XidCacheStatus::count, GetPGProcByNumber, InvalidTransactionId, LW_SHARED, LWLockAcquire(), LWLockRelease(), XidCacheStatus::overflowed, PGPROC::pid, ProcGlobal, PGPROC::subxidStatus, PGPROC::xid, and PGPROC::xmin.
Referenced by pgstat_read_current_status().
| void RecordKnownAssignedTransactionIds | ( | TransactionId | xid | ) |
Definition at line 4410 of file procarray.c.
References AdvanceNextFullTransactionIdPastXid(), Assert, DEBUG4, elog, ExtendSUBTRANS(), KnownAssignedXidsAdd(), latestObservedXid, STANDBY_INITIALIZED, standbyState, TransactionIdAdvance, TransactionIdFollows(), TransactionIdIsValid, and TransactionIdPrecedes().
Referenced by ApplyWalRecord(), ProcArrayApplyXidAssignment(), xact_redo_abort(), and xact_redo_commit().
| bool SignalRecoveryConflict | ( | PGPROC * | proc, |
| pid_t | pid, | ||
| RecoveryConflictReason | reason | ||
| ) |
Definition at line 3454 of file procarray.c.
References GetNumberFromPGProc, LW_SHARED, LWLockAcquire(), LWLockRelease(), PGPROC::pendingRecoveryConflicts, pg_atomic_fetch_or_u32(), PGPROC::pid, PROCSIG_RECOVERY_CONFLICT, and SendProcSignal().
Referenced by InvalidatePossiblyObsoleteSlot().
| void SignalRecoveryConflictWithDatabase | ( | Oid | databaseid, |
| RecoveryConflictReason | reason | ||
| ) |
Definition at line 3529 of file procarray.c.
References allProcs, PGPROC::databaseId, GET_VXID_FROM_PGPROC, InvalidOid, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, PGPROC::pendingRecoveryConflicts, pg_atomic_fetch_or_u32(), ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, VirtualTransactionId::procNumber, PROCSIG_RECOVERY_CONFLICT, and SendProcSignal().
Referenced by ResolveRecoveryConflictWithDatabase(), and SendRecoveryConflictWithBufferPin().
| bool SignalRecoveryConflictWithVirtualXID | ( | VirtualTransactionId | vxid, |
| RecoveryConflictReason | reason | ||
| ) |
Definition at line 3484 of file procarray.c.
References allProcs, GET_VXID_FROM_PGPROC, VirtualTransactionId::localTransactionId, LW_SHARED, LWLockAcquire(), LWLockRelease(), ProcArrayStruct::numProcs, PGPROC::pendingRecoveryConflicts, pg_atomic_fetch_or_u32(), ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, VirtualTransactionId::procNumber, PROCSIG_RECOVERY_CONFLICT, and SendProcSignal().
Referenced by ResolveRecoveryConflictWithLock(), and ResolveRecoveryConflictWithVirtualXIDs().
| void TerminateOtherDBBackends | ( | Oid | databaseId | ) |
Definition at line 3835 of file procarray.c.
References allProcs, BackendPidGetProc(), PGPROC::databaseId, ereport, errcode(), errdetail(), errdetail_plural(), errmsg, ERROR, get_database_name(), GetUserId(), has_privs_of_role(), i, kill, lappend_int(), lfirst_int, LW_SHARED, LWLockAcquire(), LWLockRelease(), MyProc, NIL, ProcArrayStruct::numProcs, ProcArrayStruct::pgprocnos, PGPROC::pid, procArray, PGPROC::roleId, superuser(), and superuser_arg().
Referenced by dropdb().
| bool TransactionIdIsInProgress | ( | TransactionId | xid | ) |
Definition at line 1401 of file procarray.c.
References allProcs, Assert, cachedXidIsNotInProgress, XidCacheStatus::count, ereport, errcode(), errmsg, ERROR, j, KnownAssignedXidExists(), KnownAssignedXidsGet(), ProcArrayStruct::lastOverflowedXid, TransamVariablesData::latestCompletedXid, LW_SHARED, LWLockAcquire(), LWLockRelease(), malloc, ProcArrayStruct::maxProcs, MyProc, ProcArrayStruct::numProcs, pg_lfind32(), pg_read_barrier, ProcArrayStruct::pgprocnos, PGPROC::pgxactoff, procArray, ProcGlobal, RecentXmin, RecoveryInProgress(), SubTransGetTopmostTransaction(), PGPROC::subxids, PROC_HDR::subxidStates, TOTAL_MAX_CACHED_SUBXIDS, TransactionIdDidAbort(), TransactionIdEquals, TransactionIdIsCurrentTransactionId(), TransactionIdIsValid, TransactionIdPrecedes(), TransactionIdPrecedesOrEquals(), TransamVariables, UINT32_ACCESS_ONCE, xc_by_child_xid_inc, xc_by_known_assigned_inc, xc_by_known_xact_inc, xc_by_latest_xid_inc, xc_by_main_xid_inc, xc_by_my_xact_inc, xc_by_recent_xmin_inc, xc_no_overflow_inc, xc_slow_answer_inc, XidFromFullTransactionId, XidCache::xids, and PROC_HDR::xids.
Referenced by check_safe_enum_use(), compute_new_xmax_infomask(), ConditionalXactLockTableWait(), Do_MultiXactIdWait(), DoesMultiXactIdConflict(), FreezeMultiXactId(), get_xid_status(), HandleConcurrentAbort(), HeapTupleCleanMoved(), HeapTupleHeaderIsOnlyLocked(), HeapTupleSatisfiesDirty(), HeapTupleSatisfiesSelf(), HeapTupleSatisfiesUpdate(), HeapTupleSatisfiesVacuumHorizon(), MultiXactIdExpand(), MultiXactIdIsRunning(), pg_xact_status(), ReorderBufferCheckAndTruncateAbortedTXN(), test_lockmode_for_conflict(), verify_heapam(), and XactLockTableWait().
| void XidCacheRemoveRunningXids | ( | TransactionId | xid, |
| int | nxids, | ||
| const TransactionId * | xids, | ||
| TransactionId | latestXid | ||
| ) |
Definition at line 3998 of file procarray.c.
References Assert, XidCacheStatus::count, elog, i, j, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MaintainLatestCompletedXid(), MyProc, pg_write_barrier, PGPROC::pgxactoff, ProcGlobal, PGPROC::subxids, PROC_HDR::subxidStates, PGPROC::subxidStatus, TransactionIdEquals, TransactionIdIsValid, TransamVariables, WARNING, TransamVariablesData::xactCompletionCount, and XidCache::xids.
Referenced by RecordTransactionAbort().
|
static |
Definition at line 275 of file procarray.c.
Referenced by BackendPidGetProcWithLock(), BackendXidGetPid(), ComputeXidHorizons(), CountDBBackends(), CountDBConnections(), CountOtherDBBackends(), CountUserBackends(), GetConflictingVirtualXIDs(), GetCurrentVirtualXIDs(), GetOldestActiveTransactionId(), GetRunningTransactionData(), GetSnapshotData(), GetVirtualXIDsDelayingChkpt(), HaveVirtualXIDsDelayingChkpt(), MinimumActiveBackends(), ProcArrayAdd(), ProcArrayGroupClearXid(), ProcArrayInstallImportedXmin(), ProcArrayRemove(), ProcArrayShmemInit(), SignalRecoveryConflictWithDatabase(), SignalRecoveryConflictWithVirtualXID(), TerminateOtherDBBackends(), and TransactionIdIsInProgress().
|
static |
Definition at line 280 of file procarray.c.
Referenced by TransactionIdIsInProgress().
|
static |
Definition at line 311 of file procarray.c.
Referenced by GlobalVisTestShouldUpdate(), and GlobalVisUpdateApply().
|
static |
Definition at line 302 of file procarray.c.
Referenced by GetSnapshotData(), GlobalVisTestFor(), and GlobalVisUpdateApply().
|
static |
Definition at line 303 of file procarray.c.
Referenced by GetSnapshotData(), GlobalVisTestFor(), and GlobalVisUpdateApply().
|
static |
Definition at line 301 of file procarray.c.
Referenced by GetSnapshotData(), GlobalVisTestFor(), and GlobalVisUpdateApply().
|
static |
Definition at line 304 of file procarray.c.
Referenced by GetSnapshotData(), GlobalVisTestFor(), and GlobalVisUpdateApply().
|
static |
Definition at line 285 of file procarray.c.
Referenced by KnownAssignedXidsAdd(), KnownAssignedXidsCompress(), KnownAssignedXidsDisplay(), KnownAssignedXidsGetAndSetXmin(), KnownAssignedXidsGetOldestXmin(), KnownAssignedXidsRemovePreceding(), KnownAssignedXidsSearch(), and ProcArrayShmemInit().
|
static |
Definition at line 286 of file procarray.c.
Referenced by KnownAssignedXidsAdd(), KnownAssignedXidsCompress(), KnownAssignedXidsDisplay(), KnownAssignedXidsGetAndSetXmin(), KnownAssignedXidsGetOldestXmin(), KnownAssignedXidsRemovePreceding(), KnownAssignedXidsSearch(), and ProcArrayShmemInit().
|
static |
Definition at line 287 of file procarray.c.
Referenced by ProcArrayApplyRecoveryInfo(), ProcArrayInitRecovery(), and RecordKnownAssignedTransactionIds().
|
static |
Definition at line 273 of file procarray.c.
Referenced by BackendPidGetProcWithLock(), BackendXidGetPid(), ComputeXidHorizons(), CountDBBackends(), CountDBConnections(), CountOtherDBBackends(), CountUserBackends(), ExpireAllKnownAssignedTransactionIds(), ExpireOldKnownAssignedTransactionIds(), GetConflictingVirtualXIDs(), GetCurrentVirtualXIDs(), GetMaxSnapshotXidCount(), GetOldestActiveTransactionId(), GetOldestSafeDecodingTransactionId(), GetRunningTransactionData(), GetSnapshotData(), GetVirtualXIDsDelayingChkpt(), HaveVirtualXIDsDelayingChkpt(), KnownAssignedXidsAdd(), KnownAssignedXidsCompress(), KnownAssignedXidsDisplay(), KnownAssignedXidsGetAndSetXmin(), KnownAssignedXidsGetOldestXmin(), KnownAssignedXidsRemovePreceding(), KnownAssignedXidsReset(), KnownAssignedXidsSearch(), MinimumActiveBackends(), ProcArrayAdd(), ProcArrayApplyRecoveryInfo(), ProcArrayApplyXidAssignment(), ProcArrayGetReplicationSlotXmin(), ProcArrayInstallImportedXmin(), ProcArrayRemove(), ProcArraySetReplicationSlotXmin(), ProcArrayShmemInit(), SignalRecoveryConflictWithDatabase(), SignalRecoveryConflictWithVirtualXID(), TerminateOtherDBBackends(), and TransactionIdIsInProgress().
|
static |
Definition at line 294 of file procarray.c.
Referenced by ProcArrayApplyRecoveryInfo().