PostgreSQL Source Code
git master
|
#include "postgres.h"
#include <sys/stat.h>
#include <unistd.h>
#include "access/subtrans.h"
#include "access/transam.h"
#include "access/xact.h"
#include "datatype/timestamp.h"
#include "lib/pairingheap.h"
#include "miscadmin.h"
#include "port/pg_lfind.h"
#include "storage/fd.h"
#include "storage/predicate.h"
#include "storage/proc.h"
#include "storage/procarray.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
#include "utils/resowner.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
Go to the source code of this file.
Data Structures | |
struct | ActiveSnapshotElt |
struct | ExportedSnapshot |
struct | SerializedSnapshotData |
Macros | |
#define | SNAPSHOT_EXPORT_DIR "pg_snapshots" |
Typedefs | |
typedef struct ActiveSnapshotElt | ActiveSnapshotElt |
typedef struct ExportedSnapshot | ExportedSnapshot |
typedef struct SerializedSnapshotData | SerializedSnapshotData |
Variables | |
static SnapshotData | CurrentSnapshotData = {SNAPSHOT_MVCC} |
static SnapshotData | SecondarySnapshotData = {SNAPSHOT_MVCC} |
SnapshotData | CatalogSnapshotData = {SNAPSHOT_MVCC} |
SnapshotData | SnapshotSelfData = {SNAPSHOT_SELF} |
SnapshotData | SnapshotAnyData = {SNAPSHOT_ANY} |
static Snapshot | CurrentSnapshot = NULL |
static Snapshot | SecondarySnapshot = NULL |
static Snapshot | CatalogSnapshot = NULL |
static Snapshot | HistoricSnapshot = NULL |
TransactionId | TransactionXmin = FirstNormalTransactionId |
TransactionId | RecentXmin = FirstNormalTransactionId |
static HTAB * | tuplecid_data = NULL |
static ActiveSnapshotElt * | ActiveSnapshot = NULL |
static ActiveSnapshotElt * | OldestActiveSnapshot = NULL |
static pairingheap | RegisteredSnapshots = {&xmin_cmp, NULL, NULL} |
bool | FirstSnapshotSet = false |
static Snapshot | FirstXactSnapshot = NULL |
static List * | exportedSnapshots = NIL |
static const ResourceOwnerDesc | snapshot_resowner_desc |
typedef struct ActiveSnapshotElt ActiveSnapshotElt |
typedef struct ExportedSnapshot ExportedSnapshot |
typedef struct SerializedSnapshotData SerializedSnapshotData |
bool ActiveSnapshotSet | ( | void | ) |
Definition at line 782 of file snapmgr.c.
References ActiveSnapshot.
Referenced by _SPI_execute_plan(), BuildCachedPlan(), EnsurePortalSnapshotExists(), find_inheritance_children_extended(), ForgetPortalSnapshots(), index_concurrently_build(), pg_plan_query(), PortalRunUtility(), postquel_start(), ReindexMultipleInternal(), RelationBuildPartitionDesc(), RelationGetPartitionDesc(), RevalidateCachedQuery(), and vacuum().
void AtEOXact_Snapshot | ( | bool | isCommit, |
bool | resetXmin | ||
) |
Definition at line 995 of file snapmgr.c.
References ActiveSnapshot, ActiveSnapshotElt::as_next, Assert, CurrentSnapshot, elog, exportedSnapshots, FirstSnapshotSet, FirstXactSnapshot, InvalidateCatalogSnapshot(), lfirst, MyProc, NIL, OldestActiveSnapshot, pairingheap_is_empty, pairingheap_remove(), pairingheap_reset, SnapshotData::ph_node, SnapshotData::regd_count, RegisteredSnapshots, SecondarySnapshot, ExportedSnapshot::snapfile, ExportedSnapshot::snapshot, SnapshotResetXmin(), WARNING, and PGPROC::xmin.
Referenced by CleanupTransaction(), CommitTransaction(), and PrepareTransaction().
void AtSubAbort_Snapshot | ( | int | level | ) |
Definition at line 959 of file snapmgr.c.
References SnapshotData::active_count, ActiveSnapshot, ActiveSnapshotElt::as_level, ActiveSnapshotElt::as_next, ActiveSnapshotElt::as_snap, Assert, FreeSnapshot(), next, OldestActiveSnapshot, pfree(), SnapshotData::regd_count, and SnapshotResetXmin().
Referenced by AbortSubTransaction().
void AtSubCommit_Snapshot | ( | int | level | ) |
Definition at line 938 of file snapmgr.c.
References ActiveSnapshot, ActiveSnapshotElt::as_level, and ActiveSnapshotElt::as_next.
Referenced by CommitSubTransaction().
Definition at line 574 of file snapmgr.c.
References SnapshotData::active_count, Assert, SnapshotData::copied, InvalidSnapshot, MemoryContextAlloc(), SnapshotData::regd_count, size, SnapshotData::snapXactCompletionCount, SnapshotData::suboverflowed, SnapshotData::subxcnt, SnapshotData::subxip, SnapshotData::takenDuringRecovery, TopTransactionContext, SnapshotData::xcnt, and SnapshotData::xip.
Referenced by ExportSnapshot(), GetTransactionSnapshot(), PushActiveSnapshotWithLevel(), PushCopiedSnapshot(), RegisterSnapshotOnOwner(), and SetTransactionSnapshot().
void DeleteAllExportedSnapshotFiles | ( | void | ) |
Definition at line 1567 of file snapmgr.c.
References AllocateDir(), buf, dirent::d_name, ereport, errcode_for_file_access(), errmsg(), FreeDir(), LOG, MAXPGPATH, ReadDirExtended(), SNAPSHOT_EXPORT_DIR, and snprintf.
Referenced by StartupXLOG().
Definition at line 1692 of file snapmgr.c.
References add_size(), Assert, InvalidSnapshot, mul_size(), size, SNAPSHOT_MVCC, SnapshotData::snapshot_type, SnapshotData::suboverflowed, SnapshotData::subxcnt, SnapshotData::takenDuringRecovery, and SnapshotData::xcnt.
Referenced by index_parallelscan_estimate(), index_parallelscan_initialize(), InitializeParallelDSM(), and table_parallelscan_estimate().
char* ExportSnapshot | ( | Snapshot | snapshot | ) |
Definition at line 1095 of file snapmgr.c.
References AllocateFile(), appendStringInfo(), appendStringInfoString(), buf, CopySnapshot(), ereport, errcode(), errcode_for_file_access(), errmsg(), ERROR, exportedSnapshots, FreeFile(), GetMaxSnapshotSubxidCount(), GetTopTransactionIdIfAny(), i, initStringInfo(), IsSubTransaction(), lappend(), list_length(), PGPROC::lxid, MAXPGPATH, MemoryContextSwitchTo(), MyDatabaseId, MyProc, MyProcPid, pairingheap_add(), palloc(), PG_BINARY_W, SnapshotData::ph_node, PGPROC::procNumber, pstrdup(), SnapshotData::regd_count, RegisteredSnapshots, ExportedSnapshot::snapfile, ExportedSnapshot::snapshot, SNAPSHOT_EXPORT_DIR, snprintf, SnapshotData::suboverflowed, SnapshotData::subxcnt, SnapshotData::subxip, SnapshotData::takenDuringRecovery, TopTransactionContext, TransactionIdIsValid, TransactionIdPrecedes(), PGPROC::vxid, xactGetCommittedChildren(), XactIsoLevel, XactReadOnly, SnapshotData::xcnt, SnapshotData::xip, SnapshotData::xmax, and SnapshotData::xmin.
Referenced by pg_export_snapshot(), and SnapBuildExportSnapshot().
|
static |
Definition at line 630 of file snapmgr.c.
References SnapshotData::active_count, Assert, SnapshotData::copied, pfree(), and SnapshotData::regd_count.
Referenced by AtSubAbort_Snapshot(), PopActiveSnapshot(), and UnregisterSnapshotNoOwner().
Snapshot GetActiveSnapshot | ( | void | ) |
Definition at line 770 of file snapmgr.c.
References ActiveSnapshot, ActiveSnapshotElt::as_snap, and Assert.
Referenced by _SPI_execute_plan(), ATExecDetachPartitionFinalize(), BeginCopyTo(), DoCopyTo(), EnsurePortalSnapshotExists(), ExecCreateTableAs(), ExecInitParallelPlan(), ExecParallelGetQueryDesc(), execute_sql_string(), ExecuteQuery(), ExplainOnePlan(), find_inheritance_children_extended(), has_lo_priv_byid(), InitializeParallelDSM(), inv_open(), PerformCursorOpen(), pg_current_snapshot(), pg_export_snapshot(), pgrowlocks(), PortalRunUtility(), PortalStart(), postquel_start(), ProcessQuery(), refresh_matview_datafill(), RelationGetPartitionDesc(), spgvacuumscan(), SPI_cursor_open_internal(), standard_ExecutorRun(), and standard_ExecutorStart().
Definition at line 352 of file snapmgr.c.
References GetNonHistoricCatalogSnapshot(), HistoricSnapshot, and HistoricSnapshotActive().
Referenced by process_settings(), systable_beginscan(), systable_beginscan_ordered(), systable_recheck_tuple(), and table_beginscan_catalog().
Snapshot GetLatestSnapshot | ( | void | ) |
Definition at line 291 of file snapmgr.c.
References Assert, elog, ERROR, FirstSnapshotSet, GetSnapshotData(), GetTransactionSnapshot(), HistoricSnapshotActive(), IsInParallelMode(), SecondarySnapshot, and SecondarySnapshotData.
Referenced by asyncQueueReadAllNotifications(), ATRewriteTable(), check_default_partition_contents(), currtid_internal(), FindConflictTuple(), IndexCheckExclusion(), RelationFindReplTupleByIndex(), RelationFindReplTupleSeq(), RI_Initial_Check(), RI_PartitionRemove_Check(), ri_PerformCheck(), ScanSourceDatabasePgClass(), validateDomainCheckConstraint(), validateDomainNotNullConstraint(), and validateForeignKeyConstraint().
Definition at line 374 of file snapmgr.c.
References CatalogSnapshot, CatalogSnapshotData, GetSnapshotData(), InvalidateCatalogSnapshot(), pairingheap_add(), SnapshotData::ph_node, RegisteredSnapshots, RelationHasSysCache(), and RelationInvalidatesSnapshotsOnly().
Referenced by GetCatalogSnapshot(), and ScanPgRelation().
Snapshot GetOldestSnapshot | ( | void | ) |
Definition at line 323 of file snapmgr.c.
References ActiveSnapshotElt::as_snap, InvalidXLogRecPtr, SnapshotData::lsn, OldestActiveSnapshot, pairingheap_container, pairingheap_first(), pairingheap_is_empty, RegisteredSnapshots, and XLogRecPtrIsInvalid.
Referenced by init_toast_snapshot().
Snapshot GetTransactionSnapshot | ( | void | ) |
Definition at line 216 of file snapmgr.c.
References Assert, CopySnapshot(), CurrentSnapshot, CurrentSnapshotData, elog, ERROR, FirstSnapshotSet, FirstXactSnapshot, GetSerializableTransactionSnapshot(), GetSnapshotData(), HistoricSnapshot, HistoricSnapshotActive(), InvalidateCatalogSnapshot(), IsInParallelMode(), IsolationIsSerializable, IsolationUsesXactSnapshot, pairingheap_add(), pairingheap_is_empty, SnapshotData::ph_node, SnapshotData::regd_count, and RegisteredSnapshots.
Referenced by _brin_begin_parallel(), _bt_begin_parallel(), _SPI_execute_plan(), AfterTriggerFireDeferred(), AfterTriggerSetState(), begin_replication_step(), bt_check_every_level(), BuildCachedPlan(), CheckTargetForConflictsIn(), cluster_multiple_rels(), DefineIndex(), EnsurePortalSnapshotExists(), EventTriggerOnLogin(), exec_bind_message(), exec_eval_simple_expr(), exec_parse_message(), exec_simple_query(), execute_sql_string(), ExecuteCallStmt(), fmgr_sql(), get_database_list(), get_subscription_list(), GetLatestSnapshot(), HandleFunctionRequest(), heapam_index_build_range_scan(), index_drop(), initialize_worker_spi(), InitializeParallelDSM(), InitPostgres(), LogicalRepSyncTableStart(), pg_get_constraintdef_worker(), PortalRunMulti(), PortalRunUtility(), PortalStart(), PreCommit_on_commit_actions(), ReindexMultipleInternal(), ReindexRelationConcurrently(), RemoveTempRelationsCallback(), RevalidateCachedQuery(), ri_PerformCheck(), SPI_cursor_open_internal(), vacuum(), vacuum_rel(), verify_heapam(), worker_spi_main(), and XidIsConcurrent().
bool HaveRegisteredOrActiveSnapshot | ( | void | ) |
Definition at line 1624 of file snapmgr.c.
References ActiveSnapshot, CatalogSnapshot, pairingheap_is_empty, pairingheap_is_singular, and RegisteredSnapshots.
Referenced by init_toast_snapshot(), and SnapBuildInitialSnapshot().
bool HistoricSnapshotActive | ( | void | ) |
Definition at line 1672 of file snapmgr.c.
References HistoricSnapshot.
Referenced by GetCatalogSnapshot(), GetLatestSnapshot(), GetTransactionSnapshot(), HistoricSnapshotGetTupleCids(), RelationGetIdentityKeyBitmap(), RelationInitPhysicalAddr(), RelationRebuildRelation(), SetTransactionSnapshot(), and SnapBuildInitialSnapshot().
HTAB* HistoricSnapshotGetTupleCids | ( | void | ) |
Definition at line 1678 of file snapmgr.c.
References Assert, HistoricSnapshotActive(), and tuplecid_data.
Referenced by HeapTupleSatisfiesHistoricMVCC().
void ImportSnapshot | ( | const char * | idstr | ) |
Definition at line 1367 of file snapmgr.c.
References AllocateFile(), elog, ereport, errcode(), errcode_for_file_access(), errmsg(), ERROR, FirstSnapshotSet, FreeFile(), fstat, GetMaxSnapshotSubxidCount(), GetMaxSnapshotXidCount(), GetTopTransactionIdIfAny(), i, InvalidTransactionId, IsolationIsSerializable, IsolationUsesXactSnapshot, IsSubTransaction(), MAXPGPATH, MyDatabaseId, OidIsValid, palloc(), parseIntFromText(), parseVxidFromText(), parseXidFromText(), PG_BINARY_R, SetTransactionSnapshot(), SNAPSHOT_EXPORT_DIR, SNAPSHOT_MVCC, SnapshotData::snapshot_type, snprintf, stat::st_size, SnapshotData::suboverflowed, SnapshotData::subxcnt, SnapshotData::subxip, SnapshotData::takenDuringRecovery, TransactionIdIsNormal, VirtualTransactionIdIsValid, XACT_SERIALIZABLE, XactReadOnly, SnapshotData::xcnt, SnapshotData::xip, SnapshotData::xmax, and SnapshotData::xmin.
Referenced by ExecSetVariableStmt().
void InvalidateCatalogSnapshot | ( | void | ) |
Definition at line 422 of file snapmgr.c.
References CatalogSnapshot, pairingheap_remove(), SnapshotData::ph_node, RegisteredSnapshots, and SnapshotResetXmin().
Referenced by AtEOXact_Snapshot(), CopyFrom(), GetNonHistoricCatalogSnapshot(), GetTransactionSnapshot(), heap_inplace_lock(), InitPostgres(), InvalidateCatalogSnapshotConditionally(), InvalidateSystemCachesExtended(), LocalExecuteInvalidationMessage(), SetTransactionSnapshot(), SnapBuildInitialSnapshot(), and wait_for_relation_state_change().
void InvalidateCatalogSnapshotConditionally | ( | void | ) |
Definition at line 443 of file snapmgr.c.
References ActiveSnapshot, CatalogSnapshot, InvalidateCatalogSnapshot(), pairingheap_is_singular, and RegisteredSnapshots.
Referenced by PostgresMain().
|
static |
|
static |
Definition at line 1337 of file snapmgr.c.
References ereport, errcode(), errmsg(), ERROR, filename, VirtualTransactionId::localTransactionId, and VirtualTransactionId::procNumber.
Referenced by ImportSnapshot().
|
static |
Datum pg_export_snapshot | ( | PG_FUNCTION_ARGS | ) |
Definition at line 1272 of file snapmgr.c.
References cstring_to_text(), ExportSnapshot(), GetActiveSnapshot(), and PG_RETURN_TEXT_P.
void PopActiveSnapshot | ( | void | ) |
Definition at line 743 of file snapmgr.c.
References SnapshotData::active_count, ActiveSnapshot, ActiveSnapshotElt::as_next, ActiveSnapshotElt::as_snap, Assert, FreeSnapshot(), OldestActiveSnapshot, pfree(), SnapshotData::regd_count, and SnapshotResetXmin().
Referenced by _SPI_execute_plan(), AfterTriggerFireDeferred(), AfterTriggerSetState(), ATExecDetachPartition(), BuildCachedPlan(), cluster_multiple_rels(), DefineIndex(), DoPortalRewind(), end_replication_step(), EndCopyTo(), EventTriggerOnLogin(), exec_bind_message(), exec_eval_simple_expr(), exec_parse_message(), exec_simple_query(), ExecCreateTableAs(), execute_sql_string(), ExecuteCallStmt(), ExplainOnePlan(), FindConflictTuple(), fmgr_sql(), ForgetPortalSnapshots(), HandleFunctionRequest(), index_drop(), initialize_worker_spi(), LogicalRepSyncTableStart(), movedb(), ParallelWorkerMain(), PersistHoldablePortal(), PortalRunMulti(), PortalRunSelect(), PortalRunUtility(), PortalStart(), PreCommit_on_commit_actions(), refresh_matview_datafill(), ReindexMultipleInternal(), ReindexRelationConcurrently(), RelationFindReplTupleByIndex(), RelationFindReplTupleSeq(), RemoveTempRelationsCallback(), RevalidateCachedQuery(), ShutdownSQLFunction(), vacuum(), vacuum_rel(), and worker_spi_main().
void PushActiveSnapshot | ( | Snapshot | snapshot | ) |
Definition at line 648 of file snapmgr.c.
References GetCurrentTransactionNestLevel(), and PushActiveSnapshotWithLevel().
Referenced by _SPI_execute_plan(), AfterTriggerFireDeferred(), AfterTriggerSetState(), begin_replication_step(), BuildCachedPlan(), cluster_multiple_rels(), DefineIndex(), DoPortalRewind(), EventTriggerOnLogin(), exec_bind_message(), exec_eval_simple_expr(), exec_parse_message(), exec_simple_query(), execute_sql_string(), ExecuteCallStmt(), FindConflictTuple(), fmgr_sql(), HandleFunctionRequest(), index_drop(), initialize_worker_spi(), LogicalRepSyncTableStart(), ParallelWorkerMain(), PersistHoldablePortal(), PortalRunSelect(), PortalStart(), PreCommit_on_commit_actions(), PushCopiedSnapshot(), ReindexMultipleInternal(), ReindexRelationConcurrently(), RelationFindReplTupleByIndex(), RelationFindReplTupleSeq(), RemoveTempRelationsCallback(), RevalidateCachedQuery(), ShutdownSQLFunction(), vacuum(), vacuum_rel(), and worker_spi_main().
void PushActiveSnapshotWithLevel | ( | Snapshot | snapshot, |
int | snap_level | ||
) |
Definition at line 662 of file snapmgr.c.
References SnapshotData::active_count, ActiveSnapshot, ActiveSnapshotElt::as_level, ActiveSnapshotElt::as_next, ActiveSnapshotElt::as_snap, Assert, SnapshotData::copied, CopySnapshot(), CurrentSnapshot, InvalidSnapshot, MemoryContextAlloc(), OldestActiveSnapshot, SecondarySnapshot, and TopTransactionContext.
Referenced by EnsurePortalSnapshotExists(), PortalRunUtility(), and PushActiveSnapshot().
void PushCopiedSnapshot | ( | Snapshot | snapshot | ) |
Definition at line 700 of file snapmgr.c.
References CopySnapshot(), and PushActiveSnapshot().
Referenced by _SPI_execute_plan(), BeginCopyTo(), ExecCreateTableAs(), ExplainOnePlan(), PortalRunMulti(), and refresh_matview_datafill().
Definition at line 794 of file snapmgr.c.
References CurrentResourceOwner, InvalidSnapshot, and RegisterSnapshotOnOwner().
Referenced by _brin_begin_parallel(), _bt_begin_parallel(), asyncQueueReadAllNotifications(), ATRewriteTable(), bt_check_every_level(), check_default_partition_contents(), CreateQueryDesc(), currtid_internal(), DefineIndex(), heapam_index_build_range_scan(), index_beginscan_parallel(), IndexCheckExclusion(), pg_get_constraintdef_worker(), PortalRunMulti(), PortalRunUtility(), process_settings(), ReindexRelationConcurrently(), standard_ExecutorStart(), systable_beginscan(), systable_beginscan_ordered(), table_beginscan_catalog(), table_beginscan_parallel(), validateDomainCheckConstraint(), validateDomainNotNullConstraint(), and validateForeignKeyConstraint().
Snapshot RegisterSnapshotOnOwner | ( | Snapshot | snapshot, |
ResourceOwner | owner | ||
) |
Definition at line 807 of file snapmgr.c.
References SnapshotData::copied, CopySnapshot(), InvalidSnapshot, pairingheap_add(), SnapshotData::ph_node, SnapshotData::regd_count, RegisteredSnapshots, ResourceOwnerEnlarge(), and ResourceOwnerRememberSnapshot().
Referenced by be_lo_open(), and RegisterSnapshot().
|
inlinestatic |
Definition at line 182 of file snapmgr.c.
References PointerGetDatum(), ResourceOwnerForget(), and snapshot_resowner_desc.
Referenced by UnregisterSnapshotFromOwner().
|
inlinestatic |
Definition at line 177 of file snapmgr.c.
References PointerGetDatum(), ResourceOwnerRemember(), and snapshot_resowner_desc.
Referenced by RegisterSnapshotOnOwner().
|
static |
Definition at line 1955 of file snapmgr.c.
References DatumGetPointer(), res, and UnregisterSnapshotNoOwner().
Snapshot RestoreSnapshot | ( | char * | start_address | ) |
Definition at line 1775 of file snapmgr.c.
References SnapshotData::active_count, SnapshotData::copied, SerializedSnapshotData::curcid, SnapshotData::curcid, SerializedSnapshotData::lsn, SnapshotData::lsn, MemoryContextAlloc(), SnapshotData::regd_count, size, SNAPSHOT_MVCC, SnapshotData::snapshot_type, SnapshotData::snapXactCompletionCount, SerializedSnapshotData::suboverflowed, SnapshotData::suboverflowed, SerializedSnapshotData::subxcnt, SnapshotData::subxcnt, SnapshotData::subxip, SerializedSnapshotData::takenDuringRecovery, SnapshotData::takenDuringRecovery, TopTransactionContext, SerializedSnapshotData::whenTaken, SnapshotData::whenTaken, SerializedSnapshotData::xcnt, SnapshotData::xcnt, SnapshotData::xip, SerializedSnapshotData::xmax, SnapshotData::xmax, SerializedSnapshotData::xmin, and SnapshotData::xmin.
Referenced by index_beginscan_parallel(), ParallelWorkerMain(), and table_beginscan_parallel().
void RestoreTransactionSnapshot | ( | Snapshot | snapshot, |
void * | source_pgproc | ||
) |
Definition at line 1840 of file snapmgr.c.
References InvalidPid, and SetTransactionSnapshot().
Referenced by CreateReplicationSlot(), and ParallelWorkerMain().
void SerializeSnapshot | ( | Snapshot | snapshot, |
char * | start_address | ||
) |
Definition at line 1716 of file snapmgr.c.
References Assert, SerializedSnapshotData::curcid, SnapshotData::curcid, SerializedSnapshotData::lsn, SnapshotData::lsn, SerializedSnapshotData::suboverflowed, SnapshotData::suboverflowed, SerializedSnapshotData::subxcnt, SnapshotData::subxcnt, SnapshotData::subxip, SerializedSnapshotData::takenDuringRecovery, SnapshotData::takenDuringRecovery, SerializedSnapshotData::whenTaken, SnapshotData::whenTaken, SerializedSnapshotData::xcnt, SnapshotData::xcnt, SnapshotData::xip, SerializedSnapshotData::xmax, SnapshotData::xmax, SerializedSnapshotData::xmin, and SnapshotData::xmin.
Referenced by index_parallelscan_initialize(), InitializeParallelDSM(), and table_parallelscan_initialize().
|
static |
Definition at line 477 of file snapmgr.c.
References Assert, CopySnapshot(), CurrentSnapshot, CurrentSnapshotData, ereport, errcode(), errdetail(), errmsg(), ERROR, FirstSnapshotSet, FirstXactSnapshot, GetMaxSnapshotSubxidCount(), GetMaxSnapshotXidCount(), GetSnapshotData(), HistoricSnapshotActive(), InvalidateCatalogSnapshot(), IsolationIsSerializable, IsolationUsesXactSnapshot, pairingheap_add(), pairingheap_is_empty, SnapshotData::ph_node, ProcArrayInstallImportedXmin(), ProcArrayInstallRestoredXmin(), SnapshotData::regd_count, RegisteredSnapshots, SetSerializableTransactionSnapshot(), SnapshotData::snapXactCompletionCount, SnapshotData::suboverflowed, SnapshotData::subxcnt, SnapshotData::subxip, SnapshotData::takenDuringRecovery, SnapshotData::xcnt, SnapshotData::xip, SnapshotData::xmax, and SnapshotData::xmin.
Referenced by ImportSnapshot(), and RestoreTransactionSnapshot().
Definition at line 1649 of file snapmgr.c.
References Assert, HistoricSnapshot, and tuplecid_data.
Referenced by ReorderBufferProcessTXN(), and ReorderBufferQueueMessage().
|
static |
Definition at line 914 of file snapmgr.c.
References ActiveSnapshot, InvalidTransactionId, MyProc, pairingheap_container, pairingheap_first(), pairingheap_is_empty, RegisteredSnapshots, TransactionIdPrecedes(), PGPROC::xmin, and SnapshotData::xmin.
Referenced by AtEOXact_Snapshot(), AtSubAbort_Snapshot(), InvalidateCatalogSnapshot(), PopActiveSnapshot(), and UnregisterSnapshotNoOwner().
void SnapshotSetCommandId | ( | CommandId | curcid | ) |
Definition at line 456 of file snapmgr.c.
References SnapshotData::curcid, CurrentSnapshot, FirstSnapshotSet, and SecondarySnapshot.
Referenced by CommandCounterIncrement().
void TeardownHistoricSnapshot | ( | bool | is_error | ) |
Definition at line 1665 of file snapmgr.c.
References HistoricSnapshot, and tuplecid_data.
Referenced by ReorderBufferProcessTXN(), and ReorderBufferQueueMessage().
bool ThereAreNoPriorRegisteredSnapshots | ( | void | ) |
Definition at line 1606 of file snapmgr.c.
References pairingheap_is_empty, pairingheap_is_singular, and RegisteredSnapshots.
Referenced by CopyFrom().
void UnregisterSnapshot | ( | Snapshot | snapshot | ) |
Definition at line 836 of file snapmgr.c.
References CurrentResourceOwner, and UnregisterSnapshotFromOwner().
Referenced by _brin_begin_parallel(), _brin_end_parallel(), _bt_begin_parallel(), _bt_end_parallel(), asyncQueueReadAllNotifications(), ATRewriteTable(), bt_check_every_level(), check_default_partition_contents(), currtid_internal(), DefineIndex(), FreeQueryDesc(), heap_endscan(), heapam_index_build_range_scan(), index_endscan(), IndexCheckExclusion(), pg_get_constraintdef_worker(), process_settings(), ReindexRelationConcurrently(), standard_ExecutorEnd(), systable_endscan(), systable_endscan_ordered(), validateDomainCheckConstraint(), validateDomainNotNullConstraint(), and validateForeignKeyConstraint().
void UnregisterSnapshotFromOwner | ( | Snapshot | snapshot, |
ResourceOwner | owner | ||
) |
Definition at line 849 of file snapmgr.c.
References ResourceOwnerForgetSnapshot(), and UnregisterSnapshotNoOwner().
Referenced by closeLOfd(), PortalDrop(), PreCommit_Portals(), and UnregisterSnapshot().
|
static |
Definition at line 859 of file snapmgr.c.
References SnapshotData::active_count, Assert, FreeSnapshot(), pairingheap_is_empty, pairingheap_remove(), SnapshotData::ph_node, SnapshotData::regd_count, RegisteredSnapshots, and SnapshotResetXmin().
Referenced by ResOwnerReleaseSnapshot(), and UnregisterSnapshotFromOwner().
void UpdateActiveSnapshotCommandId | ( | void | ) |
Definition at line 712 of file snapmgr.c.
References SnapshotData::active_count, ActiveSnapshot, ActiveSnapshotElt::as_snap, Assert, SnapshotData::curcid, elog, ERROR, GetCurrentCommandId(), IsInParallelMode(), and SnapshotData::regd_count.
Referenced by _SPI_execute_plan(), BeginCopyTo(), ExecCreateTableAs(), ExplainOnePlan(), fmgr_sql(), PortalRunMulti(), and refresh_matview_datafill().
bool XactHasExportedSnapshots | ( | void | ) |
Definition at line 1554 of file snapmgr.c.
References exportedSnapshots, and NIL.
Referenced by PrepareTransaction().
bool XidInMVCCSnapshot | ( | TransactionId | xid, |
Snapshot | snapshot | ||
) |
Definition at line 1856 of file snapmgr.c.
References pg_lfind32(), SnapshotData::suboverflowed, SubTransGetTopmostTransaction(), SnapshotData::subxcnt, SnapshotData::subxip, SnapshotData::takenDuringRecovery, TransactionIdFollowsOrEquals(), TransactionIdPrecedes(), SnapshotData::xcnt, SnapshotData::xip, SnapshotData::xmax, and SnapshotData::xmin.
Referenced by asyncQueueProcessPageEntries(), find_inheritance_children_extended(), HeapTupleSatisfiesMVCC(), and RelationGetPartitionDesc().
|
static |
Definition at line 880 of file snapmgr.c.
References a, b, pairingheap_const_container, TransactionIdFollows(), TransactionIdPrecedes(), and SnapshotData::xmin.
|
static |
Definition at line 120 of file snapmgr.c.
Referenced by ActiveSnapshotSet(), AtEOXact_Snapshot(), AtSubAbort_Snapshot(), AtSubCommit_Snapshot(), GetActiveSnapshot(), HaveRegisteredOrActiveSnapshot(), InvalidateCatalogSnapshotConditionally(), PopActiveSnapshot(), PushActiveSnapshotWithLevel(), SnapshotResetXmin(), and UpdateActiveSnapshotCommandId().
|
static |
Definition at line 90 of file snapmgr.c.
Referenced by GetNonHistoricCatalogSnapshot(), HaveRegisteredOrActiveSnapshot(), InvalidateCatalogSnapshot(), and InvalidateCatalogSnapshotConditionally().
SnapshotData CatalogSnapshotData = {SNAPSHOT_MVCC} |
Definition at line 83 of file snapmgr.c.
Referenced by GetNonHistoricCatalogSnapshot().
|
static |
Definition at line 88 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), GetTransactionSnapshot(), PushActiveSnapshotWithLevel(), SetTransactionSnapshot(), and SnapshotSetCommandId().
|
static |
Definition at line 81 of file snapmgr.c.
Referenced by GetTransactionSnapshot(), and SetTransactionSnapshot().
Definition at line 155 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), ExportSnapshot(), and XactHasExportedSnapshots().
bool FirstSnapshotSet = false |
Definition at line 135 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), check_transaction_deferrable(), check_transaction_isolation(), check_transaction_read_only(), CreateReplicationSlot(), GetLatestSnapshot(), GetTransactionSnapshot(), ImportSnapshot(), SetTransactionSnapshot(), and SnapshotSetCommandId().
|
static |
Definition at line 142 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), GetTransactionSnapshot(), and SetTransactionSnapshot().
|
static |
Definition at line 91 of file snapmgr.c.
Referenced by GetCatalogSnapshot(), GetTransactionSnapshot(), HistoricSnapshotActive(), SetupHistoricSnapshot(), and TeardownHistoricSnapshot().
|
static |
Definition at line 123 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), AtSubAbort_Snapshot(), GetOldestSnapshot(), PopActiveSnapshot(), and PushActiveSnapshotWithLevel().
TransactionId RecentXmin = FirstNormalTransactionId |
Definition at line 99 of file snapmgr.c.
Referenced by ATRewriteTables(), bt_check_every_level(), GetSnapshotData(), GetSnapshotDataReuse(), GlobalVisTestFor(), GlobalVisTestShouldUpdate(), GlobalVisUpdateApply(), heap_hot_search_buffer(), heapam_relation_set_new_filelocator(), index_getnext_tid(), refresh_by_heap_swap(), TransactionIdIsActive(), and TransactionIdIsInProgress().
|
static |
Definition at line 132 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), ExportSnapshot(), GetNonHistoricCatalogSnapshot(), GetOldestSnapshot(), GetTransactionSnapshot(), HaveRegisteredOrActiveSnapshot(), InvalidateCatalogSnapshot(), InvalidateCatalogSnapshotConditionally(), RegisterSnapshotOnOwner(), SetTransactionSnapshot(), SnapshotResetXmin(), ThereAreNoPriorRegisteredSnapshots(), and UnregisterSnapshotNoOwner().
|
static |
Definition at line 89 of file snapmgr.c.
Referenced by AtEOXact_Snapshot(), GetLatestSnapshot(), PushActiveSnapshotWithLevel(), and SnapshotSetCommandId().
|
static |
Definition at line 82 of file snapmgr.c.
Referenced by GetLatestSnapshot().
|
static |
Definition at line 166 of file snapmgr.c.
Referenced by ResourceOwnerForgetSnapshot(), and ResourceOwnerRememberSnapshot().
SnapshotData SnapshotAnyData = {SNAPSHOT_ANY} |
SnapshotData SnapshotSelfData = {SNAPSHOT_SELF} |
TransactionId TransactionXmin = FirstNormalTransactionId |
Definition at line 98 of file snapmgr.c.
Referenced by BuildCachedPlan(), CheckCachedPlan(), get_relation_info(), GetSnapshotData(), GetSnapshotDataReuse(), heap_abort_speculative(), HeapCheckForSerializableConflictOut(), ProcArrayInstallImportedXmin(), ProcArrayInstallRestoredXmin(), SubTransGetParent(), SubTransGetTopmostTransaction(), TransactionIdDidAbort(), and TransactionIdDidCommit().
|
static |
Definition at line 102 of file snapmgr.c.
Referenced by ApplyLogicalMappingFile(), HistoricSnapshotGetTupleCids(), ResolveCminCmaxDuringDecoding(), SetupHistoricSnapshot(), TeardownHistoricSnapshot(), and UpdateLogicalMappings().