[PATCH v1 10/12] prune_xid-hist: collect data from vacuum

Renan Alves Fonseca <renanfonseca@gmail.com>

From: "Renan A. Fonseca" <renanfonseca@gmail.com>
To:
Date: 2025-05-30T11:34:49Z
Lists: pgsql-hackers
---
 src/backend/access/heap/vacuumlazy.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
index 8565f6dd215..afd57e31f5b 100644
--- a/src/backend/access/heap/vacuumlazy.c
+++ b/src/backend/access/heap/vacuumlazy.c
@@ -1955,6 +1955,8 @@ lazy_scan_prune(LVRelState *vacrel,
 	Relation	rel = vacrel->rel;
 	PruneFreezeResult presult;
 	int			prune_options = 0;
+	TransactionId old_xid;
+	TransactionId new_xid;
 
 	Assert(BufferGetBlockNumber(buf) == blkno);
 
@@ -1977,10 +1979,12 @@ lazy_scan_prune(LVRelState *vacrel,
 	if (vacrel->nindexes == 0)
 		prune_options |= HEAP_PAGE_PRUNE_MARK_UNUSED_NOW;
 
+	old_xid = ((PageHeader) page)->pd_prune_xid;
 	heap_page_prune_and_freeze(rel, buf, vacrel->vistest, prune_options,
 							   &vacrel->cutoffs, &presult, PRUNE_VACUUM_SCAN,
 							   &vacrel->offnum,
 							   &vacrel->NewRelfrozenXid, &vacrel->NewRelminMxid);
+	new_xid = ((PageHeader) page)->pd_prune_xid;
 
 	Assert(MultiXactIdIsValid(vacrel->NewRelminMxid));
 	Assert(TransactionIdIsValid(vacrel->NewRelfrozenXid));
@@ -2049,6 +2053,8 @@ lazy_scan_prune(LVRelState *vacrel,
 	vacrel->live_tuples += presult.live_tuples;
 	vacrel->recently_dead_tuples += presult.recently_dead_tuples;
 
+	pgstat_update_transient_prune_xid_histogram(&vacrel->prune_xid_hist, old_xid, new_xid);
+
 	/* Can't truncate this page */
 	if (presult.hastup)
 		vacrel->nonempty_pages = blkno + 1;
-- 
2.47.0


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=v1-0011-prune_xid-hist-transfer-data-to-shared-histogram.patch