From 2b99c5954eaa99bad8efebc1eb0289b42469eee2 Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Fri, 18 Jul 2025 16:30:04 -0400 Subject: [PATCH v5 13/20] Rename GlobalVisTestIsRemovableXid() to GlobalVisXidVisibleToAll() Currently, we only use GlobalVisTestIsRemovableXid() to check if a tuple's xmax is visible to all, meaning we can remove it. But future commits will use GlobalVisTestIsRemovableXid() to test if a tuple's xmin is visible to all for the purposes of determining if setting the page all-visible in the VM. In that case, it makes more sense to call the function GlobalVisXidVisibleToAll(). --- src/backend/access/heap/heapam_visibility.c | 6 +++--- src/backend/access/heap/pruneheap.c | 14 +++++++------- src/backend/access/spgist/spgvacuum.c | 2 +- src/backend/storage/ipc/procarray.c | 13 ++++++------- src/include/utils/snapmgr.h | 4 ++-- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/backend/access/heap/heapam_visibility.c b/src/backend/access/heap/heapam_visibility.c index 05f6946fe60..4ebc8abdbeb 100644 --- a/src/backend/access/heap/heapam_visibility.c +++ b/src/backend/access/heap/heapam_visibility.c @@ -1447,7 +1447,7 @@ HeapTupleSatisfiesNonVacuumable(HeapTuple htup, Snapshot snapshot, { Assert(TransactionIdIsValid(dead_after)); - if (GlobalVisTestIsRemovableXid(snapshot->vistest, dead_after)) + if (GlobalVisXidVisibleToAll(snapshot->vistest, dead_after)) res = HEAPTUPLE_DEAD; } else @@ -1512,8 +1512,8 @@ HeapTupleIsSurelyDead(HeapTuple htup, GlobalVisState *vistest) return false; /* Deleter committed, so tuple is dead if the XID is old enough. */ - return GlobalVisTestIsRemovableXid(vistest, - HeapTupleHeaderGetRawXmax(tuple)); + return GlobalVisXidVisibleToAll(vistest, + HeapTupleHeaderGetRawXmax(tuple)); } /* diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c index ffc12314b41..715dfc16ba7 100644 --- a/src/backend/access/heap/pruneheap.c +++ b/src/backend/access/heap/pruneheap.c @@ -231,7 +231,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer) */ vistest = GlobalVisTestFor(relation); - if (!GlobalVisTestIsRemovableXid(vistest, prune_xid)) + if (!GlobalVisXidVisibleToAll(vistest, prune_xid)) return; /* @@ -574,9 +574,9 @@ heap_page_prune_and_freeze(Relation relation, Buffer buffer, * Determining HTSV only once for each tuple is required for correctness, * to deal with cases where running HTSV twice could result in different * results. For example, RECENTLY_DEAD can turn to DEAD if another - * checked item causes GlobalVisTestIsRemovableFullXid() to update the - * horizon, or INSERT_IN_PROGRESS can change to DEAD if the inserting - * transaction aborts. + * checked item causes GlobalVisXidVisibleToAll() to update the horizon, + * or INSERT_IN_PROGRESS can change to DEAD if the inserting transaction + * aborts. * * It's also good for performance. Most commonly tuples within a page are * stored at decreasing offsets (while the items are stored at increasing @@ -1172,11 +1172,11 @@ heap_prune_satisfies_vacuum(PruneState *prstate, HeapTuple tup, Buffer buffer) * Determine whether or not the tuple is considered dead when compared * with the provided GlobalVisState. On-access pruning does not provide * VacuumCutoffs. And for vacuum, even if the tuple's xmax is not older - * than OldestXmin, GlobalVisTestIsRemovableXid() could find the row dead - * if the GlobalVisState has been updated since the beginning of vacuuming + * than OldestXmin, GlobalVisXidVisibleToAll() could find the row dead if + * the GlobalVisState has been updated since the beginning of vacuuming * the relation. */ - if (GlobalVisTestIsRemovableXid(prstate->vistest, dead_after)) + if (GlobalVisXidVisibleToAll(prstate->vistest, dead_after)) return HEAPTUPLE_DEAD; return res; diff --git a/src/backend/access/spgist/spgvacuum.c b/src/backend/access/spgist/spgvacuum.c index 2678f7ab782..4b8e5747239 100644 --- a/src/backend/access/spgist/spgvacuum.c +++ b/src/backend/access/spgist/spgvacuum.c @@ -536,7 +536,7 @@ vacuumRedirectAndPlaceholder(Relation index, Relation heaprel, Buffer buffer) */ if (dt->tupstate == SPGIST_REDIRECT && (!TransactionIdIsValid(dt->xid) || - GlobalVisTestIsRemovableXid(vistest, dt->xid))) + GlobalVisXidVisibleToAll(vistest, dt->xid))) { dt->tupstate = SPGIST_PLACEHOLDER; Assert(opaque->nRedirection > 0); diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index bf987aed8d3..508bb379f87 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -4181,8 +4181,7 @@ GlobalVisUpdate(void) * See comment for GlobalVisState for details. */ bool -GlobalVisTestIsRemovableFullXid(GlobalVisState *state, - FullTransactionId fxid) +GlobalVisFullXidVisible(GlobalVisState *state, FullTransactionId fxid) { /* * If fxid is older than maybe_needed bound, it definitely is visible to @@ -4223,7 +4222,7 @@ GlobalVisTestIsRemovableFullXid(GlobalVisState *state, * relfrozenxid). */ bool -GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid) +GlobalVisXidVisibleToAll(GlobalVisState *state, TransactionId xid) { FullTransactionId fxid; @@ -4237,7 +4236,7 @@ GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid) */ fxid = FullXidRelativeTo(state->definitely_needed, xid); - return GlobalVisTestIsRemovableFullXid(state, fxid); + return GlobalVisFullXidVisible(state, fxid); } /* @@ -4251,12 +4250,12 @@ GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid) state = GlobalVisTestFor(rel); - return GlobalVisTestIsRemovableFullXid(state, fxid); + return GlobalVisFullXidVisible(state, fxid); } /* * Convenience wrapper around GlobalVisTestFor() and - * GlobalVisTestIsRemovableXid(), see their comments. + * GlobalVisTestIsVisibleXid(), see their comments. */ bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid) @@ -4265,7 +4264,7 @@ GlobalVisCheckRemovableXid(Relation rel, TransactionId xid) state = GlobalVisTestFor(rel); - return GlobalVisTestIsRemovableXid(state, xid); + return GlobalVisXidVisibleToAll(state, xid); } /* diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h index d346be71642..aec0692b5db 100644 --- a/src/include/utils/snapmgr.h +++ b/src/include/utils/snapmgr.h @@ -97,8 +97,8 @@ extern char *ExportSnapshot(Snapshot snapshot); */ typedef struct GlobalVisState GlobalVisState; extern GlobalVisState *GlobalVisTestFor(Relation rel); -extern bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid); -extern bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid); +extern bool GlobalVisXidVisibleToAll(GlobalVisState *state, TransactionId xid); +extern bool GlobalVisFullXidVisible(GlobalVisState *state, FullTransactionId fxid); extern bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid); extern bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid); -- 2.43.0