postgres.git / summary / log / commit / refs
commit c702d656a28386cf5f642206b495c66775afc4ea
Author: Andres Freund <andres@anarazel.de>
Date: Mon Jan 17 23:31:28 2022 +0000
First released in: 15.0
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...
Discussion: https://postgr.es/m/20211211045710.ljtuu4gfloh754rs@alap3.anarazel.de
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 3201fcc52b0..b3e2eec52fa 100644
--- a/src/backend/access/heap/pruneheap.c
+++ b/src/backend/access/heap/pruneheap.c
@@ -269,6 +269,7 @@ heap_page_prune(Relation relation, Buffer buffer,
{
int ndeleted = 0;
Page page = BufferGetPage(buffer);
+ BlockNumber blockno = BufferGetBlockNumber(buffer);
OffsetNumber offnum,
maxoff;
PruneState prstate;
@@ -335,7 +336,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
[parent: 35b2803cf29a]