Skip to content

Commit 96cb604

Browse files
mcadariuCommitfest Bot
authored and
Commitfest Bot
committed
Preliminary work to capture and expose separate record (leaf page) and metadata (non-leaf page) index access statistics in the system views, with partial coverage of B-Trees.
1 parent 7ea8cd1 commit 96cb604

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+557
-201
lines changed

contrib/amcheck/verify_heapam.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ verify_heapam(PG_FUNCTION_ARGS)
439439

440440
/* Read and lock the next page. */
441441
ctx.buffer = ReadBufferExtended(ctx.rel, MAIN_FORKNUM, ctx.blkno,
442-
RBM_NORMAL, ctx.bstrategy);
442+
RBM_NORMAL, ctx.bstrategy, NULL);
443443
LockBuffer(ctx.buffer, BUFFER_LOCK_SHARE);
444444
ctx.page = BufferGetPage(ctx.buffer);
445445

contrib/amcheck/verify_nbtree.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -1249,7 +1249,7 @@ bt_recheck_sibling_links(BtreeCheckState *state,
12491249

12501250
/* Couple locks in the usual order for nbtree: Left to right */
12511251
lbuf = ReadBufferExtended(state->rel, MAIN_FORKNUM, leftcurrent,
1252-
RBM_NORMAL, state->checkstrategy);
1252+
RBM_NORMAL, state->checkstrategy, NULL);
12531253
LockBuffer(lbuf, BT_READ);
12541254
_bt_checkpage(state->rel, lbuf);
12551255
page = BufferGetPage(lbuf);
@@ -1273,7 +1273,7 @@ bt_recheck_sibling_links(BtreeCheckState *state,
12731273
{
12741274
newtargetbuf = ReadBufferExtended(state->rel, MAIN_FORKNUM,
12751275
newtargetblock, RBM_NORMAL,
1276-
state->checkstrategy);
1276+
state->checkstrategy, NULL);
12771277
LockBuffer(newtargetbuf, BT_READ);
12781278
_bt_checkpage(state->rel, newtargetbuf);
12791279
page = BufferGetPage(newtargetbuf);
@@ -3439,7 +3439,7 @@ palloc_btree_page(BtreeCheckState *state, BlockNumber blocknum)
34393439
* longer than we must.
34403440
*/
34413441
buffer = ReadBufferExtended(state->rel, MAIN_FORKNUM, blocknum, RBM_NORMAL,
3442-
state->checkstrategy);
3442+
state->checkstrategy, NULL);
34433443
LockBuffer(buffer, BT_READ);
34443444

34453445
/*

contrib/bloom/blinsert.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ blinsert(Relation index, Datum *values, bool *isnull,
201201
* At first, try to insert new tuple to the first page in notFullPage
202202
* array. If successful, we don't need to modify the meta page.
203203
*/
204-
metaBuffer = ReadBuffer(index, BLOOM_METAPAGE_BLKNO);
204+
metaBuffer = ReadBuffer(index, BLOOM_METAPAGE_BLKNO, NULL);
205205
LockBuffer(metaBuffer, BUFFER_LOCK_SHARE);
206206
metaData = BloomPageGetMeta(BufferGetPage(metaBuffer));
207207

@@ -213,7 +213,7 @@ blinsert(Relation index, Datum *values, bool *isnull,
213213
/* Don't hold metabuffer lock while doing insert */
214214
LockBuffer(metaBuffer, BUFFER_LOCK_UNLOCK);
215215

216-
buffer = ReadBuffer(index, blkno);
216+
buffer = ReadBuffer(index, blkno, NULL);
217217
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
218218

219219
state = GenericXLogStart(index);
@@ -280,7 +280,7 @@ blinsert(Relation index, Datum *values, bool *isnull,
280280
blkno = metaData->notFullPage[nStart];
281281
Assert(blkno != InvalidBlockNumber);
282282

283-
buffer = ReadBuffer(index, blkno);
283+
buffer = ReadBuffer(index, blkno, NULL);
284284
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
285285
page = GenericXLogRegisterBuffer(state, buffer, 0);
286286

contrib/bloom/blscan.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ blgetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
125125
Page page;
126126

127127
buffer = ReadBufferExtended(scan->indexRelation, MAIN_FORKNUM,
128-
blkno, RBM_NORMAL, bas);
128+
blkno, RBM_NORMAL, bas, NULL);
129129

130130
LockBuffer(buffer, BUFFER_LOCK_SHARE);
131131
page = BufferGetPage(buffer);

contrib/bloom/blutils.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ initBloomState(BloomState *state, Relation index)
188188

189189
opts = MemoryContextAlloc(index->rd_indexcxt, sizeof(BloomOptions));
190190

191-
buffer = ReadBuffer(index, BLOOM_METAPAGE_BLKNO);
191+
buffer = ReadBuffer(index, BLOOM_METAPAGE_BLKNO, NULL);
192192
LockBuffer(buffer, BUFFER_LOCK_SHARE);
193193

194194
page = BufferGetPage(buffer);
@@ -367,7 +367,7 @@ BloomNewBuffer(Relation index)
367367
if (blkno == InvalidBlockNumber)
368368
break;
369369

370-
buffer = ReadBuffer(index, blkno);
370+
buffer = ReadBuffer(index, blkno, NULL);
371371

372372
/*
373373
* We have to guard against the possibility that someone else already
@@ -459,7 +459,7 @@ BloomInitMetapage(Relation index, ForkNumber forknum)
459459
* block number 0 (BLOOM_METAPAGE_BLKNO). No need to hold the extension
460460
* lock because there cannot be concurrent inserters yet.
461461
*/
462-
metaBuffer = ReadBufferExtended(index, forknum, P_NEW, RBM_NORMAL, NULL);
462+
metaBuffer = ReadBufferExtended(index, forknum, P_NEW, RBM_NORMAL, NULL, NULL);
463463
LockBuffer(metaBuffer, BUFFER_LOCK_EXCLUSIVE);
464464
Assert(BufferGetBlockNumber(metaBuffer) == BLOOM_METAPAGE_BLKNO);
465465

contrib/bloom/blvacuum.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ blbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,
6060
vacuum_delay_point(false);
6161

6262
buffer = ReadBufferExtended(index, MAIN_FORKNUM, blkno,
63-
RBM_NORMAL, info->strategy);
63+
RBM_NORMAL, info->strategy, NULL);
6464

6565
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
6666
gxlogState = GenericXLogStart(index);
@@ -139,7 +139,7 @@ blbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,
139139
* info could already be out of date at this point, but blinsert() will
140140
* cope if so.
141141
*/
142-
buffer = ReadBuffer(index, BLOOM_METAPAGE_BLKNO);
142+
buffer = ReadBuffer(index, BLOOM_METAPAGE_BLKNO, NULL);
143143
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
144144

145145
gxlogState = GenericXLogStart(index);
@@ -190,7 +190,7 @@ blvacuumcleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats)
190190
vacuum_delay_point(false);
191191

192192
buffer = ReadBufferExtended(index, MAIN_FORKNUM, blkno,
193-
RBM_NORMAL, info->strategy);
193+
RBM_NORMAL, info->strategy, NULL);
194194
LockBuffer(buffer, BUFFER_LOCK_SHARE);
195195
page = (Page) BufferGetPage(buffer);
196196

contrib/pageinspect/btreefuncs.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ bt_page_stats_internal(PG_FUNCTION_ARGS, enum pageinspect_version ext_version)
282282

283283
bt_index_block_validate(rel, blkno);
284284

285-
buffer = ReadBuffer(rel, blkno);
285+
buffer = ReadBuffer(rel, blkno, NULL);
286286
LockBuffer(buffer, BUFFER_LOCK_SHARE);
287287

288288
/* keep compiler quiet */
@@ -422,7 +422,7 @@ bt_multi_page_stats(PG_FUNCTION_ARGS)
422422
BTPageStat stat;
423423
TupleDesc tupleDesc;
424424

425-
buffer = ReadBuffer(rel, uargs->blkno);
425+
buffer = ReadBuffer(rel, uargs->blkno, NULL);
426426
LockBuffer(buffer, BUFFER_LOCK_SHARE);
427427

428428
/* keep compiler quiet */
@@ -651,7 +651,7 @@ bt_page_items_internal(PG_FUNCTION_ARGS, enum pageinspect_version ext_version)
651651

652652
bt_index_block_validate(rel, blkno);
653653

654-
buffer = ReadBuffer(rel, blkno);
654+
buffer = ReadBuffer(rel, blkno, NULL);
655655
LockBuffer(buffer, BUFFER_LOCK_SHARE);
656656

657657
/*
@@ -875,7 +875,7 @@ bt_metap(PG_FUNCTION_ARGS)
875875
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
876876
errmsg("cannot access temporary tables of other sessions")));
877877

878-
buffer = ReadBuffer(rel, 0);
878+
buffer = ReadBuffer(rel, 0, NULL);
879879
LockBuffer(buffer, BUFFER_LOCK_SHARE);
880880

881881
page = BufferGetPage(buffer);

contrib/pageinspect/rawpage.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ get_raw_page_internal(text *relname, ForkNumber forknum, BlockNumber blkno)
185185

186186
/* Take a verbatim copy of the page */
187187

188-
buf = ReadBufferExtended(rel, forknum, blkno, RBM_NORMAL, NULL);
188+
buf = ReadBufferExtended(rel, forknum, blkno, RBM_NORMAL, NULL, NULL);
189189
LockBuffer(buf, BUFFER_LOCK_SHARE);
190190

191191
memcpy(raw_page_data, BufferGetPage(buf), BLCKSZ);

contrib/pg_prewarm/autoprewarm.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ autoprewarm_database_main(Datum main_arg)
533533

534534
/* Prewarm buffer. */
535535
buf = ReadBufferExtended(rel, blk->forknum, blk->blocknum, RBM_NORMAL,
536-
NULL);
536+
NULL, NULL);
537537
if (BufferIsValid(buf))
538538
{
539539
apw_state->prewarmed_blocks++;

contrib/pg_surgery/heap_surgery.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ heap_force_common(FunctionCallInfo fcinfo, HeapTupleForceOption heap_force_opt)
172172
continue;
173173
}
174174

175-
buf = ReadBuffer(rel, blkno);
175+
buf = ReadBuffer(rel, blkno, NULL);
176176
LockBufferForCleanup(buf);
177177

178178
page = BufferGetPage(buf);

contrib/pg_visibility/pg_visibility.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ pg_visibility(PG_FUNCTION_ARGS)
151151
/* Here we have to explicitly check rel size ... */
152152
if (blkno < RelationGetNumberOfBlocks(rel))
153153
{
154-
buffer = ReadBuffer(rel, blkno);
154+
buffer = ReadBuffer(rel, blkno, NULL);
155155
LockBuffer(buffer, BUFFER_LOCK_SHARE);
156156

157157
page = BufferGetPage(buffer);

contrib/pgstattuple/pgstatapprox.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ statapprox_heap(Relation rel, output_type *stat)
9494
}
9595

9696
buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno,
97-
RBM_NORMAL, bstrategy);
97+
RBM_NORMAL, bstrategy, NULL);
9898

9999
LockBuffer(buf, BUFFER_LOCK_SHARE);
100100

contrib/pgstattuple/pgstatindex.c

+6-4
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,8 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
250250
* Read metapage
251251
*/
252252
{
253-
Buffer buffer = ReadBufferExtended(rel, MAIN_FORKNUM, 0, RBM_NORMAL, bstrategy);
253+
Buffer buffer = ReadBufferExtended(rel, MAIN_FORKNUM, 0, RBM_NORMAL,
254+
bstrategy, NULL);
254255
Page page = BufferGetPage(buffer);
255256
BTMetaPageData *metad = BTPageGetMeta(page);
256257

@@ -286,7 +287,8 @@ pgstatindex_impl(Relation rel, FunctionCallInfo fcinfo)
286287
CHECK_FOR_INTERRUPTS();
287288

288289
/* Read and lock buffer */
289-
buffer = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, bstrategy);
290+
buffer = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL,
291+
bstrategy, NULL);
290292
LockBuffer(buffer, BUFFER_LOCK_SHARE);
291293

292294
page = BufferGetPage(buffer);
@@ -542,7 +544,7 @@ pgstatginindex_internal(Oid relid, FunctionCallInfo fcinfo)
542544
/*
543545
* Read metapage
544546
*/
545-
buffer = ReadBuffer(rel, GIN_METAPAGE_BLKNO);
547+
buffer = ReadBuffer(rel, GIN_METAPAGE_BLKNO, NULL);
546548
LockBuffer(buffer, GIN_SHARE);
547549
page = BufferGetPage(buffer);
548550
metadata = GinPageGetMeta(page);
@@ -645,7 +647,7 @@ pgstathashindex(PG_FUNCTION_ARGS)
645647
CHECK_FOR_INTERRUPTS();
646648

647649
buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL,
648-
bstrategy);
650+
bstrategy, NULL);
649651
LockBuffer(buf, BUFFER_LOCK_SHARE);
650652
page = (Page) BufferGetPage(buf);
651653

contrib/pgstattuple/pgstattuple.c

+6-4
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
373373
CHECK_FOR_INTERRUPTS();
374374

375375
buffer = ReadBufferExtended(rel, MAIN_FORKNUM, block,
376-
RBM_NORMAL, hscan->rs_strategy);
376+
RBM_NORMAL, hscan->rs_strategy, NULL);
377377
LockBuffer(buffer, BUFFER_LOCK_SHARE);
378378
stat.free_space += PageGetExactFreeSpace((Page) BufferGetPage(buffer));
379379
UnlockReleaseBuffer(buffer);
@@ -386,7 +386,7 @@ pgstat_heap(Relation rel, FunctionCallInfo fcinfo)
386386
CHECK_FOR_INTERRUPTS();
387387

388388
buffer = ReadBufferExtended(rel, MAIN_FORKNUM, block,
389-
RBM_NORMAL, hscan->rs_strategy);
389+
RBM_NORMAL, hscan->rs_strategy, NULL);
390390
LockBuffer(buffer, BUFFER_LOCK_SHARE);
391391
stat.free_space += PageGetExactFreeSpace((Page) BufferGetPage(buffer));
392392
UnlockReleaseBuffer(buffer);
@@ -411,7 +411,8 @@ pgstat_btree_page(pgstattuple_type *stat, Relation rel, BlockNumber blkno,
411411
Buffer buf;
412412
Page page;
413413

414-
buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, bstrategy);
414+
buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, bstrategy,
415+
NULL);
415416
LockBuffer(buf, BT_READ);
416417
page = BufferGetPage(buf);
417418

@@ -497,7 +498,8 @@ pgstat_gist_page(pgstattuple_type *stat, Relation rel, BlockNumber blkno,
497498
Buffer buf;
498499
Page page;
499500

500-
buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, bstrategy);
501+
buf = ReadBufferExtended(rel, MAIN_FORKNUM, blkno, RBM_NORMAL, bstrategy,
502+
NULL);
501503
LockBuffer(buf, GIST_SHARE);
502504
gistcheckpage(rel, buf);
503505
page = BufferGetPage(buf);

0 commit comments

Comments
 (0)