On Thursday, September 24, 2020 1:27 PM, Tsunakawa-san wrote: > (1) > + for (cur_blk = firstDelBlock[j]; cur_blk < > nblocks; cur_blk++) > > The right side of "cur_blk <" should not be nblocks, because nblocks is not > the number of the relation fork anymore.
Right. Fixed. It should be the total number of (n)blocks of relation. > (2) > + BlockNumber nblocks; > + nblocks = smgrnblocks(smgr_reln, forkNum[j]) - > firstDelBlock[j]; > > You should either: > > * Combine the two lines into one: BlockNumber nblocks = ...; > > or > > * Put an empty line between the two lines to separate declarations and > execution statements. Right. I separated them in the updated patch. And to prevent confusion, instead of nblocks, nTotalBlocks & nBlocksToInvalidate are used. /* Get the total number of blocks for the supplied relation's fork */ nTotalBlocks = smgrnblocks(smgr_reln, forkNum[j]); /* Get the total number of blocks to be invalidated for the specified fork */ nBlocksToInvalidate = nTotalBlocks - firstDelBlock[j]; > After correcting these, I think you can check the recovery performance. I'll send performance measurement results in the next email. Thanks a lot for the reviews! Regards, Kirk Jamison
v16-Optimize-DropRelFileNodeBuffers-during-recovery.patch
Description: v16-Optimize-DropRelFileNodeBuffers-during-recovery.patch
v1-Prevent-invalidating-blocks-in-smgrextend-during-recovery.patch
Description: v1-Prevent-invalidating-blocks-in-smgrextend-during-recovery.patch