ginxlogDeletePage *data = (ginxlogDeletePage *) XLogRecGetData(record);
Buffer dbuffer;
Buffer pbuffer;
- Buffer lbuffer;
+ Buffer lbuffer = InvalidBlockNumber;
Page page;
/*
* ginStepRight().
*/
if (record->xl_info & XLR_BKP_BLOCK(2))
- (void) RestoreBackupBlock(lsn, record, 2, false, false);
+ lbuffer = RestoreBackupBlock(lsn, record, 2, false, true);
else if (data->leftBlkno != InvalidBlockNumber)
{
lbuffer = XLogReadBuffer(data->node, data->leftBlkno, false);
PageSetLSN(page, lsn);
MarkBufferDirty(lbuffer);
}
- UnlockReleaseBuffer(lbuffer);
}
}
}
if (record->xl_info & XLR_BKP_BLOCK(1))
- pbuffer = RestoreBackupBlock(lsn, record, 1, false, true);
+ (void) RestoreBackupBlock(lsn, record, 1, false, false);
else
{
pbuffer = XLogReadBuffer(data->node, data->parentBlkno, false);
PageSetLSN(page, lsn);
MarkBufferDirty(pbuffer);
}
+ UnlockReleaseBuffer(pbuffer);
}
}
if (BufferIsValid(lbuffer))
UnlockReleaseBuffer(lbuffer);
- if (BufferIsValid(pbuffer))
- UnlockReleaseBuffer(pbuffer);
if (BufferIsValid(dbuffer))
UnlockReleaseBuffer(dbuffer);
}