diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/utils/snapshot.h | 4 | ||||
| -rw-r--r-- | src/include/utils/tqual.h | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/include/utils/snapshot.h b/src/include/utils/snapshot.h index 074cc818649..bf519778df4 100644 --- a/src/include/utils/snapshot.h +++ b/src/include/utils/snapshot.h @@ -41,6 +41,7 @@ typedef bool (*SnapshotSatisfiesFunc) (HeapTuple htup, * * MVCC snapshots taken during recovery (in Hot-Standby mode) * * Historic MVCC snapshots used during logical decoding * * snapshots passed to HeapTupleSatisfiesDirty() + * * snapshots passed to HeapTupleSatisfiesNonVacuumable() * * snapshots used for SatisfiesAny, Toast, Self where no members are * accessed. * @@ -56,7 +57,8 @@ typedef struct SnapshotData /* * The remaining fields are used only for MVCC snapshots, and are normally * just zeroes in special snapshots. (But xmin and xmax are used - * specially by HeapTupleSatisfiesDirty.) + * specially by HeapTupleSatisfiesDirty, and xmin is used specially by + * HeapTupleSatisfiesNonVacuumable.) * * An MVCC snapshot can never see the effects of XIDs >= xmax. It can see * the effects of all older XIDs except those listed in the snapshot. xmin diff --git a/src/include/utils/tqual.h b/src/include/utils/tqual.h index 036d9898d69..9a3b56e5f03 100644 --- a/src/include/utils/tqual.h +++ b/src/include/utils/tqual.h @@ -66,6 +66,8 @@ extern bool HeapTupleSatisfiesToast(HeapTuple htup, Snapshot snapshot, Buffer buffer); extern bool HeapTupleSatisfiesDirty(HeapTuple htup, Snapshot snapshot, Buffer buffer); +extern bool HeapTupleSatisfiesNonVacuumable(HeapTuple htup, + Snapshot snapshot, Buffer buffer); extern bool HeapTupleSatisfiesHistoricMVCC(HeapTuple htup, Snapshot snapshot, Buffer buffer); @@ -101,6 +103,14 @@ extern bool ResolveCminCmaxDuringDecoding(struct HTAB *tuplecid_data, ((snapshotdata).satisfies = HeapTupleSatisfiesDirty) /* + * Similarly, some initialization is required for a NonVacuumable snapshot. + * The caller must supply the xmin horizon to use (e.g., RecentGlobalXmin). + */ +#define InitNonVacuumableSnapshot(snapshotdata, xmin_horizon) \ + ((snapshotdata).satisfies = HeapTupleSatisfiesNonVacuumable, \ + (snapshotdata).xmin = (xmin_horizon)) + +/* * Similarly, some initialization is required for SnapshotToast. We need * to set lsn and whenTaken correctly to support snapshot_too_old. */ |
