mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 00:03:09 -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
|
static void
|
||||||
lazy_vacuum_heap_rel(LVRelState *vacrel)
|
lazy_vacuum_heap_rel(LVRelState *vacrel)
|
||||||
{
|
{
|
||||||
int index;
|
int index = 0;
|
||||||
BlockNumber vacuumed_pages;
|
BlockNumber vacuumed_pages = 0;
|
||||||
Buffer vmbuffer = InvalidBuffer;
|
Buffer vmbuffer = InvalidBuffer;
|
||||||
LVSavedErrInfo saved_err_info;
|
LVSavedErrInfo saved_err_info;
|
||||||
|
|
||||||
@ -2406,42 +2406,34 @@ lazy_vacuum_heap_rel(LVRelState *vacrel)
|
|||||||
VACUUM_ERRCB_PHASE_VACUUM_HEAP,
|
VACUUM_ERRCB_PHASE_VACUUM_HEAP,
|
||||||
InvalidBlockNumber, InvalidOffsetNumber);
|
InvalidBlockNumber, InvalidOffsetNumber);
|
||||||
|
|
||||||
vacuumed_pages = 0;
|
|
||||||
|
|
||||||
index = 0;
|
|
||||||
while (index < vacrel->dead_items->num_items)
|
while (index < vacrel->dead_items->num_items)
|
||||||
{
|
{
|
||||||
BlockNumber tblk;
|
BlockNumber blkno;
|
||||||
Buffer buf;
|
Buffer buf;
|
||||||
Page page;
|
Page page;
|
||||||
Size freespace;
|
Size freespace;
|
||||||
|
|
||||||
vacuum_delay_point();
|
vacuum_delay_point();
|
||||||
|
|
||||||
tblk = ItemPointerGetBlockNumber(&vacrel->dead_items->items[index]);
|
blkno = ItemPointerGetBlockNumber(&vacrel->dead_items->items[index]);
|
||||||
vacrel->blkno = tblk;
|
vacrel->blkno = blkno;
|
||||||
buf = ReadBufferExtended(vacrel->rel, MAIN_FORKNUM, tblk, RBM_NORMAL,
|
buf = ReadBufferExtended(vacrel->rel, MAIN_FORKNUM, blkno, RBM_NORMAL,
|
||||||
vacrel->bstrategy);
|
vacrel->bstrategy);
|
||||||
LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
|
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 */
|
/* Now that we've vacuumed the page, record its available space */
|
||||||
page = BufferGetPage(buf);
|
page = BufferGetPage(buf);
|
||||||
freespace = PageGetHeapFreeSpace(page);
|
freespace = PageGetHeapFreeSpace(page);
|
||||||
|
|
||||||
UnlockReleaseBuffer(buf);
|
UnlockReleaseBuffer(buf);
|
||||||
RecordPageWithFreeSpace(vacrel->rel, tblk, freespace);
|
RecordPageWithFreeSpace(vacrel->rel, blkno, freespace);
|
||||||
vacuumed_pages++;
|
vacuumed_pages++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear the block number information */
|
|
||||||
vacrel->blkno = InvalidBlockNumber;
|
vacrel->blkno = InvalidBlockNumber;
|
||||||
|
|
||||||
if (BufferIsValid(vmbuffer))
|
if (BufferIsValid(vmbuffer))
|
||||||
{
|
|
||||||
ReleaseBuffer(vmbuffer);
|
ReleaseBuffer(vmbuffer);
|
||||||
vmbuffer = InvalidBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We set all LP_DEAD items from the first heap pass to LP_UNUSED during
|
* We set all LP_DEAD items from the first heap pass to LP_UNUSED during
|
||||||
|
Loading…
x
Reference in New Issue
Block a user