From: Andres Freund Date: Fri, 10 Dec 2021 20:40:28 -0800 Subject: [PATCH v4 3/6] heap pruning: Only call BufferGetBlockNumber() once. BufferGetBlockNumber() is not that cheap and obviously cannot change during one heap_prune_page(), so only call it once. We might be able to do better and pass the block number from the caller, but that'd be a larger change... --- src/backend/access/heap/pruneheap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c index 6557d710262..0fdc50e0599 100644 --- a/src/backend/access/heap/pruneheap.c +++ b/src/backend/access/heap/pruneheap.c @@ -270,6 +270,7 @@ heap_page_prune(Relation relation, Buffer buffer, { int ndeleted = 0; Page page = BufferGetPage(buffer); + BlockNumber blockno = BufferGetBlockNumber(buffer); OffsetNumber offnum, maxoff; PruneState prstate; @@ -337,7 +338,7 @@ heap_page_prune(Relation relation, Buffer buffer, htup = (HeapTupleHeader) PageGetItem(page, itemid); tup.t_data = htup; tup.t_len = ItemIdGetLength(itemid); - ItemPointerSet(&(tup.t_self), BufferGetBlockNumber(buffer), offnum); + ItemPointerSet(&(tup.t_self), blockno, offnum); /* * Set the offset number so that we can display it along with any -- 2.34.0 --ychkzf6m3ad4yr7p Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v4-0004-wip-vacuum-Perform-horizon-determination-just-bef.patch"