31 #define OLD_SNAPSHOT_PADDING_ENTRIES 10
32 #define OLD_SNAPSHOT_TIME_MAP_ENTRIES (old_snapshot_threshold + OLD_SNAPSHOT_PADDING_ENTRIES)
38 #define RelationAllowsEarlyPruning(rel) \
40 RelationIsPermanent(rel) && !IsCatalogRelation(rel) \
41 && !RelationIsAccessibleInLogicalDecoding(rel) \
44 #define EarlyPruningEnabled(rel) (old_snapshot_threshold >= 0 && RelationAllowsEarlyPruning(rel))
66 #define SnapshotSelf (&SnapshotSelfData)
67 #define SnapshotAny (&SnapshotAnyData)
74 #define InitDirtySnapshot(snapshotdata) \
75 ((snapshotdata).snapshot_type = SNAPSHOT_DIRTY)
82 #define InitNonVacuumableSnapshot(snapshotdata, vistestp) \
83 ((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \
84 (snapshotdata).vistest = (vistestp))
90 #define InitToastSnapshot(snapshotdata, l, w) \
91 ((snapshotdata).snapshot_type = SNAPSHOT_TOAST, \
92 (snapshotdata).lsn = (l), \
93 (snapshotdata).whenTaken = (w))
96 #define IsMVCCSnapshot(snapshot) \
97 ((snapshot)->snapshot_type == SNAPSHOT_MVCC || \
98 (snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC)
void SnapshotTooOldMagicForTest(void)
void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken, TransactionId xmin)
bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid)
void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner)
bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid)
bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid)
TimestampTz GetSnapshotCurrentTimestamp(void)
struct HTAB * HistoricSnapshotGetTupleCids(void)
void AtSubAbort_Snapshot(int level)
void SerializeSnapshot(Snapshot snapshot, char *start_address)
void AtEOXact_Snapshot(bool isCommit, bool resetXmin)
bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
static bool OldSnapshotThresholdActive(void)
Snapshot GetTransactionSnapshot(void)
Snapshot GetLatestSnapshot(void)
void TeardownHistoricSnapshot(bool is_error)
Snapshot GetCatalogSnapshot(Oid relid)
void UnregisterSnapshot(Snapshot snapshot)
void PushActiveSnapshot(Snapshot snapshot)
Snapshot RestoreSnapshot(char *start_address)
void AtSubCommit_Snapshot(int level)
void UpdateActiveSnapshotCommandId(void)
PGDLLIMPORT int old_snapshot_threshold
PGDLLIMPORT TransactionId TransactionXmin
TransactionId GlobalVisTestNonRemovableHorizon(GlobalVisState *state)
char * ExportSnapshot(Snapshot snapshot)
bool HistoricSnapshotActive(void)
void ImportSnapshot(const char *idstr)
bool ActiveSnapshotSet(void)
PGDLLIMPORT SnapshotData SnapshotAnyData
Snapshot RegisterSnapshot(Snapshot snapshot)
bool XactHasExportedSnapshots(void)
GlobalVisState * GlobalVisTestFor(Relation rel)
void DeleteAllExportedSnapshotFiles(void)
PGDLLIMPORT SnapshotData CatalogSnapshotData
bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid)
bool HaveRegisteredOrActiveSnapshot(void)
void InvalidateCatalogSnapshotConditionally(void)
bool ThereAreNoPriorRegisteredSnapshots(void)
void RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc)
bool TransactionIdLimitedForOldSnapshots(TransactionId recentXmin, Relation relation, TransactionId *limit_xid, TimestampTz *limit_ts)
void SnapshotSetCommandId(CommandId curcid)
void PopActiveSnapshot(void)
void PushCopiedSnapshot(Snapshot snapshot)
PGDLLIMPORT SnapshotData SnapshotSelfData
Size EstimateSnapshotSpace(Snapshot snapshot)
void WaitForOlderSnapshots(TransactionId limitXmin, bool progress)
TimestampTz GetOldSnapshotThresholdTimestamp(void)
void SetupHistoricSnapshot(Snapshot historic_snapshot, struct HTAB *tuplecids)
PGDLLIMPORT bool FirstSnapshotSet
Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner)
void InvalidateCatalogSnapshot(void)
void PushActiveSnapshotWithLevel(Snapshot snapshot, int snap_level)
Snapshot GetNonHistoricCatalogSnapshot(Oid relid)
FullTransactionId GlobalVisTestNonRemovableFullHorizon(GlobalVisState *state)
PGDLLIMPORT TransactionId RecentXmin
Size SnapMgrShmemSize(void)
Snapshot GetOldestSnapshot(void)
void SetOldSnapshotThresholdTimestamp(TimestampTz ts, TransactionId xlimit)
Snapshot GetActiveSnapshot(void)