Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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)