mirror of
https://github.com/postgres/postgres.git
synced 2025-05-27 00:04:24 -04:00
Make lazy_vacuum_heap_rel match lazy_scan_heap.
Make lazy_vacuum_heap_rel variable names match those from lazy_scan_heap where that makes sense. Extracted from a larger patch to deal with issues with how vacuumlazy.c sets pages all-frozen. Author: Peter Geoghegan <pg@bowt.ie> Discussion: https://postgr.es/m/CAH2-WznuNGSzF8v6OsgjaC5aYsb3cZ6HW6MLm30X0d65cmSH6A@mail.gmail.com
This commit is contained in:
parent
8c233cf86b
commit
d30b499997
@ -2388,8 +2388,8 @@ lazy_vacuum_all_indexes(LVRelState *vacrel)
|
||||
static void
|
||||
lazy_vacuum_heap_rel(LVRelState *vacrel)
|
||||
{
|
||||
int index;
|
||||
BlockNumber vacuumed_pages;
|
||||
int index = 0;
|
||||
BlockNumber vacuumed_pages = 0;
|
||||
Buffer vmbuffer = InvalidBuffer;
|
||||
LVSavedErrInfo saved_err_info;
|
||||
|
||||
@ -2406,42 +2406,34 @@ lazy_vacuum_heap_rel(LVRelState *vacrel)
|
||||
VACUUM_ERRCB_PHASE_VACUUM_HEAP,
|
||||
InvalidBlockNumber, InvalidOffsetNumber);
|
||||
|
||||
vacuumed_pages = 0;
|
||||
|
||||
index = 0;
|
||||
while (index < vacrel->dead_items->num_items)
|
||||
{
|
||||
BlockNumber tblk;
|
||||
BlockNumber blkno;
|
||||
Buffer buf;
|
||||
Page page;
|
||||
Size freespace;
|
||||
|
||||
vacuum_delay_point();
|
||||
|
||||
tblk = ItemPointerGetBlockNumber(&vacrel->dead_items->items[index]);
|
||||
vacrel->blkno = tblk;
|
||||
buf = ReadBufferExtended(vacrel->rel, MAIN_FORKNUM, tblk, RBM_NORMAL,
|
||||
blkno = ItemPointerGetBlockNumber(&vacrel->dead_items->items[index]);
|
||||
vacrel->blkno = blkno;
|
||||
buf = ReadBufferExtended(vacrel->rel, MAIN_FORKNUM, blkno, RBM_NORMAL,
|
||||
vacrel->bstrategy);
|
||||
LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
|
||||
index = lazy_vacuum_heap_page(vacrel, tblk, buf, index, &vmbuffer);
|
||||
index = lazy_vacuum_heap_page(vacrel, blkno, buf, index, &vmbuffer);
|
||||
|
||||
/* Now that we've vacuumed the page, record its available space */
|
||||
page = BufferGetPage(buf);
|
||||
freespace = PageGetHeapFreeSpace(page);
|
||||
|
||||
UnlockReleaseBuffer(buf);
|
||||
RecordPageWithFreeSpace(vacrel->rel, tblk, freespace);
|
||||
RecordPageWithFreeSpace(vacrel->rel, blkno, freespace);
|
||||
vacuumed_pages++;
|
||||
}
|
||||
|
||||
/* Clear the block number information */
|
||||
vacrel->blkno = InvalidBlockNumber;
|
||||
|
||||
if (BufferIsValid(vmbuffer))
|
||||
{
|
||||
ReleaseBuffer(vmbuffer);
|
||||
vmbuffer = InvalidBuffer;
|
||||
}
|
||||
|
||||
/*
|
||||
* We set all LP_DEAD items from the first heap pass to LP_UNUSED during
|
||||
|
Loading…
x
Reference in New Issue
Block a user