Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 46441e6

Browse files
committed
ptrack_9.6.2_EE_v1.2
1 parent 745dcbe commit 46441e6

Some content is hidden

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

45 files changed

+1258
-18
lines changed

src/backend/access/brin/brin.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "access/reloptions.h"
2323
#include "access/relscan.h"
2424
#include "access/xloginsert.h"
25+
#include "access/ptrack.h"
2526
#include "catalog/index.h"
2627
#include "catalog/pg_am.h"
2728
#include "miscadmin.h"
@@ -685,6 +686,7 @@ brinbuildempty(Relation index)
685686
LockBuffer(metabuf, BUFFER_LOCK_EXCLUSIVE);
686687

687688
/* Initialize and xlog metabuffer. */
689+
ptrack_add_block(index, BufferGetBlockNumber(metabuf));
688690
START_CRIT_SECTION();
689691
brin_metapage_init(BufferGetPage(metabuf), BrinGetPagesPerRange(index),
690692
BRIN_CURRENT_VERSION);

src/backend/access/brin/brin_pageops.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "access/brin_revmap.h"
1616
#include "access/brin_xlog.h"
1717
#include "access/xloginsert.h"
18+
#include "access/ptrack.h"
1819
#include "miscadmin.h"
1920
#include "storage/bufmgr.h"
2021
#include "storage/freespace.h"
@@ -177,6 +178,7 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange,
177178
UnlockReleaseBuffer(newbuf);
178179
}
179180

181+
ptrack_add_block(idxrel, BufferGetBlockNumber(oldbuf));
180182
START_CRIT_SECTION();
181183
PageIndexDeleteNoCompact(oldpage, &oldoff, 1);
182184
if (PageAddItemExtended(oldpage, (Item) newtup, newsz, oldoff,
@@ -237,6 +239,9 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange,
237239

238240
revmapbuf = brinLockRevmapPageForUpdate(revmap, heapBlk);
239241

242+
ptrack_add_block(idxrel, BufferGetBlockNumber(newbuf));
243+
ptrack_add_block(idxrel, BufferGetBlockNumber(oldbuf));
244+
ptrack_add_block(idxrel, BufferGetBlockNumber(revmapbuf));
240245
START_CRIT_SECTION();
241246

242247
/*
@@ -408,6 +413,8 @@ brin_doinsert(Relation idxrel, BlockNumber pagesPerRange,
408413
blk = BufferGetBlockNumber(*buffer);
409414

410415
/* Execute the actual insertion */
416+
ptrack_add_block(idxrel, BufferGetBlockNumber(*buffer));
417+
ptrack_add_block(idxrel, BufferGetBlockNumber(revmapbuf));
411418
START_CRIT_SECTION();
412419
if (extended)
413420
brin_page_init(BufferGetPage(*buffer), BRIN_PAGETYPE_REGULAR);
@@ -862,6 +869,7 @@ brin_initialize_empty_new_buffer(Relation idxrel, Buffer buffer)
862869
"brin_initialize_empty_new_buffer: initializing blank page %u",
863870
BufferGetBlockNumber(buffer)));
864871

872+
ptrack_add_block(idxrel, BufferGetBlockNumber(buffer));
865873
START_CRIT_SECTION();
866874
page = BufferGetPage(buffer);
867875
brin_page_init(page, BRIN_PAGETYPE_REGULAR);

src/backend/access/brin/brin_revmap.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "access/brin_xlog.h"
2828
#include "access/rmgr.h"
2929
#include "access/xloginsert.h"
30+
#include "access/ptrack.h"
3031
#include "miscadmin.h"
3132
#include "storage/bufmgr.h"
3233
#include "storage/lmgr.h"
@@ -475,6 +476,8 @@ revmap_physical_extend(BrinRevmap *revmap)
475476
* Ok, we have now locked the metapage and the target block. Re-initialize
476477
* it as a revmap page.
477478
*/
479+
ptrack_add_block(irel, BufferGetBlockNumber(buf));
480+
ptrack_add_block(irel, BufferGetBlockNumber(revmap->rm_metaBuf));
478481
START_CRIT_SECTION();
479482

480483
/* the rm_tids array is initialized to all invalid by PageInit */

src/backend/access/brin/brin_xlog.c

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "access/brin_pageops.h"
1515
#include "access/brin_xlog.h"
1616
#include "access/xlogutils.h"
17+
#include "access/ptrack.h"
1718

1819

1920
/*
@@ -26,6 +27,11 @@ brin_xlog_createidx(XLogReaderState *record)
2627
xl_brin_createidx *xlrec = (xl_brin_createidx *) XLogRecGetData(record);
2728
Buffer buf;
2829
Page page;
30+
RelFileNode rnode;
31+
BlockNumber blkno;
32+
33+
XLogRecGetBlockTag(record, 0, &rnode, NULL, &blkno);
34+
ptrack_add_block_redo(rnode, blkno);
2935

3036
/* create the index' metapage */
3137
buf = XLogInitBufferForRedo(record, 0);
@@ -50,6 +56,13 @@ brin_xlog_insert_update(XLogReaderState *record,
5056
BlockNumber regpgno;
5157
Page page;
5258
XLogRedoAction action;
59+
RelFileNode rnode;
60+
BlockNumber blkno;
61+
62+
XLogRecGetBlockTag(record, 0, &rnode, NULL, &blkno);
63+
ptrack_add_block_redo(rnode, blkno);
64+
XLogRecGetBlockTag(record, 1, &rnode, NULL, &blkno);
65+
ptrack_add_block_redo(rnode, blkno);
5366

5467
/*
5568
* If we inserted the first and only tuple on the page, re-initialize the
@@ -137,9 +150,15 @@ brin_xlog_update(XLogReaderState *record)
137150
xl_brin_update *xlrec = (xl_brin_update *) XLogRecGetData(record);
138151
Buffer buffer;
139152
XLogRedoAction action;
153+
RelFileNode rnode;
154+
BlockNumber blkno;
155+
156+
XLogRecGetBlockTag(record, 2, &rnode, NULL, &blkno);
157+
ptrack_add_block_redo(rnode, blkno);
140158

141159
/* First remove the old tuple */
142160
action = XLogReadBufferForRedo(record, 2, &buffer);
161+
143162
if (action == BLK_NEEDS_REDO)
144163
{
145164
Page page;
@@ -174,9 +193,15 @@ brin_xlog_samepage_update(XLogReaderState *record)
174193
xl_brin_samepage_update *xlrec;
175194
Buffer buffer;
176195
XLogRedoAction action;
196+
RelFileNode rnode;
197+
BlockNumber blkno;
198+
199+
XLogRecGetBlockTag(record, 0, &rnode, NULL, &blkno);
200+
ptrack_add_block_redo(rnode, blkno);
177201

178202
xlrec = (xl_brin_samepage_update *) XLogRecGetData(record);
179203
action = XLogReadBufferForRedo(record, 0, &buffer);
204+
180205
if (action == BLK_NEEDS_REDO)
181206
{
182207
Size tuplen;
@@ -220,14 +245,21 @@ brin_xlog_revmap_extend(XLogReaderState *record)
220245
Page page;
221246
BlockNumber targetBlk;
222247
XLogRedoAction action;
248+
RelFileNode rnode;
249+
BlockNumber blkno;
223250

224251
xlrec = (xl_brin_revmap_extend *) XLogRecGetData(record);
225252

226-
XLogRecGetBlockTag(record, 1, NULL, NULL, &targetBlk);
253+
XLogRecGetBlockTag(record, 0, &rnode, NULL, &blkno);
254+
ptrack_add_block_redo(rnode, blkno);
255+
XLogRecGetBlockTag(record, 1, &rnode, NULL, &targetBlk);
256+
ptrack_add_block_redo(rnode, targetBlk);
257+
227258
Assert(xlrec->targetBlk == targetBlk);
228259

229260
/* Update the metapage */
230261
action = XLogReadBufferForRedo(record, 0, &metabuf);
262+
231263
if (action == BLK_NEEDS_REDO)
232264
{
233265
Page metapg;

src/backend/access/gin/ginbtree.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "access/gin_private.h"
1818
#include "access/xloginsert.h"
19+
#include "access/ptrack.h"
1920
#include "miscadmin.h"
2021
#include "utils/memutils.h"
2122
#include "utils/rel.h"
@@ -385,6 +386,9 @@ ginPlaceToPage(GinBtree btree, GinBtreeStack *stack,
385386
else if (rc == GPTP_INSERT)
386387
{
387388
/* It will fit, perform the insertion */
389+
ptrack_add_block(btree->index, BufferGetBlockNumber(stack->buffer));
390+
if (BufferIsValid(childbuf))
391+
ptrack_add_block(btree->index, BufferGetBlockNumber(childbuf));
388392
START_CRIT_SECTION();
389393

390394
if (RelationNeedsWAL(btree->index) && !btree->isBuild)
@@ -534,6 +538,12 @@ ginPlaceToPage(GinBtree btree, GinBtreeStack *stack,
534538
* the new contents of the root.
535539
*/
536540

541+
ptrack_add_block(btree->index, BufferGetBlockNumber(rbuffer));
542+
ptrack_add_block(btree->index, BufferGetBlockNumber(stack->buffer));
543+
if (stack->parent == NULL)
544+
ptrack_add_block(btree->index, BufferGetBlockNumber(lbuffer));
545+
if (BufferIsValid(childbuf))
546+
ptrack_add_block(btree->index, BufferGetBlockNumber(childbuf));
537547
START_CRIT_SECTION();
538548

539549
MarkBufferDirty(rbuffer);

src/backend/access/gin/gindatapage.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "access/gin_private.h"
1818
#include "access/xloginsert.h"
19+
#include "access/ptrack.h"
1920
#include "lib/ilist.h"
2021
#include "miscadmin.h"
2122
#include "utils/rel.h"
@@ -835,6 +836,7 @@ ginVacuumPostingTreeLeaf(Relation indexrel, Buffer buffer, GinVacuumState *gvs)
835836
computeLeafRecompressWALData(leaf);
836837

837838
/* Apply changes to page */
839+
ptrack_add_block(indexrel, BufferGetBlockNumber(buffer));
838840
START_CRIT_SECTION();
839841

840842
dataPlaceToPageLeafRecompress(buffer, leaf);
@@ -1811,6 +1813,7 @@ createPostingTree(Relation index, ItemPointerData *items, uint32 nitems,
18111813
page = BufferGetPage(buffer);
18121814
blkno = BufferGetBlockNumber(buffer);
18131815

1816+
ptrack_add_block(index, BufferGetBlockNumber(buffer));
18141817
START_CRIT_SECTION();
18151818

18161819
PageRestoreTempPage(tmppage, page);

src/backend/access/gin/ginfast.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
#include "access/gin_private.h"
2222
#include "access/xloginsert.h"
23+
#include "access/ptrack.h"
2324
#include "access/xlog.h"
2425
#include "commands/vacuum.h"
2526
#include "catalog/pg_am.h"
@@ -67,6 +68,7 @@ writeListPage(Relation index, Buffer buffer,
6768
/* workspace could be a local array; we use palloc for alignment */
6869
workspace = palloc(BLCKSZ);
6970

71+
ptrack_add_block(index, BufferGetBlockNumber(buffer));
7072
START_CRIT_SECTION();
7173

7274
GinInitBuffer(buffer, GIN_LIST);
@@ -293,6 +295,7 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
293295
/*
294296
* Main list is empty, so just insert sublist as main list
295297
*/
298+
ptrack_add_block(index, BufferGetBlockNumber(metabuffer));
296299
START_CRIT_SECTION();
297300

298301
metadata->head = sublist.head;
@@ -316,6 +319,8 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
316319

317320
Assert(GinPageGetOpaque(page)->rightlink == InvalidBlockNumber);
318321

322+
ptrack_add_block(index, BufferGetBlockNumber(metabuffer));
323+
ptrack_add_block(index, BufferGetBlockNumber(buffer));
319324
START_CRIT_SECTION();
320325

321326
GinPageGetOpaque(page)->rightlink = sublist.head;
@@ -358,6 +363,8 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
358363
if (needWal)
359364
XLogBeginInsert();
360365

366+
ptrack_add_block(index, BufferGetBlockNumber(metabuffer));
367+
ptrack_add_block(index, BufferGetBlockNumber(buffer));
361368
START_CRIT_SECTION();
362369

363370
/*
@@ -553,6 +560,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
553560
if (RelationNeedsWAL(index))
554561
XLogEnsureRecordSpace(data.ndeleted, 0);
555562

563+
ptrack_add_block(index, BufferGetBlockNumber(metabuffer));
556564
START_CRIT_SECTION();
557565

558566
metadata->head = blknoToDelete;

src/backend/access/gin/gininsert.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "access/gin_private.h"
1818
#include "access/xloginsert.h"
1919
#include "access/generic_xlog.h"
20+
#include "access/ptrack.h"
2021
#include "catalog/index.h"
2122
#include "miscadmin.h"
2223
#include "storage/bufmgr.h"
@@ -337,6 +338,8 @@ ginbuild(Relation heap, Relation index, IndexInfo *indexInfo)
337338
/* initialize the root page */
338339
RootBuffer = GinNewBuffer(index);
339340

341+
ptrack_add_block(index, BufferGetBlockNumber(MetaBuffer));
342+
ptrack_add_block(index, BufferGetBlockNumber(RootBuffer));
340343
START_CRIT_SECTION();
341344
GinInitMetabuffer(MetaBuffer);
342345
MarkBufferDirty(MetaBuffer);
@@ -430,6 +433,8 @@ ginbuildempty(Relation index)
430433
LockBuffer(RootBuffer, BUFFER_LOCK_EXCLUSIVE);
431434

432435
/* Initialize and xlog metabuffer and root buffer. */
436+
ptrack_add_block(index, BufferGetBlockNumber(MetaBuffer));
437+
ptrack_add_block(index, BufferGetBlockNumber(RootBuffer));
433438
START_CRIT_SECTION();
434439
GinInitMetabuffer(MetaBuffer);
435440
MarkBufferDirty(MetaBuffer);

src/backend/access/gin/ginutil.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "access/gin_private.h"
1818
#include "access/reloptions.h"
1919
#include "access/xloginsert.h"
20+
#include "access/ptrack.h"
2021
#include "catalog/pg_collation.h"
2122
#include "catalog/pg_type.h"
2223
#include "miscadmin.h"
@@ -639,6 +640,7 @@ ginUpdateStats(Relation index, const GinStatsData *stats, bool is_build)
639640
metapage = BufferGetPage(metabuffer);
640641
metadata = GinPageGetMeta(metapage);
641642

643+
ptrack_add_block(index, BufferGetBlockNumber(metabuffer));
642644
START_CRIT_SECTION();
643645

644646
metadata->nTotalPages = stats->nTotalPages;

src/backend/access/gin/ginvacuum.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "access/gin_private.h"
1818
#include "access/xloginsert.h"
19+
#include "access/ptrack.h"
1920
#include "commands/vacuum.h"
2021
#include "miscadmin.h"
2122
#include "postmaster/autovacuum.h"
@@ -209,6 +210,9 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
209210
* LockBufferForCleanup() */
210211
LockBuffer(pBuffer, GIN_EXCLUSIVE);
211212

213+
ptrack_add_block(gvs->index, BufferGetBlockNumber(pBuffer));
214+
ptrack_add_block(gvs->index, BufferGetBlockNumber(lBuffer));
215+
ptrack_add_block(gvs->index, BufferGetBlockNumber(dBuffer));
212216
START_CRIT_SECTION();
213217

214218
/* Unlink the page by changing left sibling's rightlink */
@@ -603,6 +607,7 @@ ginbulkdelete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats,
603607

604608
if (resPage)
605609
{
610+
ptrack_add_block(gvs.index, BufferGetBlockNumber(buffer));
606611
START_CRIT_SECTION();
607612
PageRestoreTempPage(resPage, page);
608613
MarkBufferDirty(buffer);

0 commit comments

Comments
 (0)