Skip to content

Commit efb2a1a

Browse files
committed
Merge branch 'PGPROEE96_ptrack1_2' into PGPROEE9_6
2 parents 2ed7ab1 + 46441e6 commit efb2a1a

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

src/backend/access/transam/generic_xlog.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#include "access/generic_xlog.h"
1717
#include "access/xlogutils.h"
18+
#include "access/ptrack.h"
1819
#include "miscadmin.h"
1920
#include "utils/memutils.h"
2021

@@ -305,10 +306,18 @@ GenericXLogRegisterBuffer(GenericXLogState *state, Buffer buffer, int flags)
305306

306307
if (BufferIsInvalid(page->buffer))
307308
{
309+
RelFileNode rnode;
310+
BlockNumber blkno;
311+
ForkNumber forkno;
312+
308313
/* Empty slot, so use it (there cannot be a match later) */
309314
page->buffer = buffer;
310315
page->flags = flags;
311316
memcpy(page->image, BufferGetPage(buffer), BLCKSZ);
317+
318+
BufferGetTag(buffer, &rnode, &forkno, &blkno);
319+
if (forkno == MAIN_FORKNUM)
320+
ptrack_add_block_redo(rnode, blkno);
312321
return (Page) page->image;
313322
}
314323
else if (page->buffer == buffer)
@@ -490,13 +499,18 @@ generic_redo(XLogReaderState *record)
490499
for (block_id = 0; block_id <= record->max_block_id; block_id++)
491500
{
492501
XLogRedoAction action;
502+
RelFileNode rnode;
503+
BlockNumber blkno;
493504

494505
if (!XLogRecHasBlockRef(record, block_id))
495506
{
496507
buffers[block_id] = InvalidBuffer;
497508
continue;
498509
}
499510

511+
XLogRecGetBlockTag(record, block_id, &rnode, NULL, &blkno);
512+
ptrack_add_block_redo(rnode, blkno);
513+
500514
action = XLogReadBufferForRedo(record, block_id, &buffers[block_id]);
501515

502516
/* Apply redo to given block if needed */

src/backend/access/transam/xloginsert.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "access/xlog.h"
2424
#include "access/xlog_internal.h"
2525
#include "access/xloginsert.h"
26+
#include "access/ptrack.h"
2627
#include "catalog/pg_control.h"
2728
#include "common/pg_lzcompress.h"
2829
#include "miscadmin.h"

src/backend/catalog/storage.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ RelationTruncate(Relation rel, BlockNumber nblocks)
243243
rel->rd_smgr->smgr_targblock = InvalidBlockNumber;
244244
rel->rd_smgr->smgr_fsm_nblocks = InvalidBlockNumber;
245245
rel->rd_smgr->smgr_vm_nblocks = InvalidBlockNumber;
246-
rel->rd_smgr->smgr_ptrack_nblocks = InvalidBlockNumber;
247246
rel->rd_smgr->smgr_main_nblocks = InvalidBlockNumber;
247+
rel->rd_smgr->smgr_ptrack_nblocks = InvalidBlockNumber;
248248

249249
/* Truncate the FSM first if it exists */
250250
fsm = smgrexists(rel->rd_smgr, FSM_FORKNUM);

src/include/storage/smgr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ typedef struct SMgrRelationData
5454
*/
5555
BlockNumber smgr_targblock; /* current insertion target block */
5656
BlockNumber smgr_fsm_nblocks; /* last known size of fsm fork */
57-
BlockNumber smgr_vm_nblocks; /* last known size of vm fork */
57+
BlockNumber smgr_vm_nblocks; /* last known size of vm fork */
5858
BlockNumber smgr_ptrack_nblocks; /* last known size of ptrack fork */
5959

6060
/*

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy