|
|
|
@ -2478,7 +2478,7 @@ lazy_vacuum_heap_page(LVRelState *vacrel, BlockNumber blkno, Buffer buffer, |
|
|
|
|
VacDeadItems *dead_items = vacrel->dead_items; |
|
|
|
|
Page page = BufferGetPage(buffer); |
|
|
|
|
OffsetNumber unused[MaxHeapTuplesPerPage]; |
|
|
|
|
int uncnt = 0; |
|
|
|
|
int nunused = 0; |
|
|
|
|
TransactionId visibility_cutoff_xid; |
|
|
|
|
bool all_frozen; |
|
|
|
|
LVSavedErrInfo saved_err_info; |
|
|
|
@ -2508,10 +2508,10 @@ lazy_vacuum_heap_page(LVRelState *vacrel, BlockNumber blkno, Buffer buffer, |
|
|
|
|
|
|
|
|
|
Assert(ItemIdIsDead(itemid) && !ItemIdHasStorage(itemid)); |
|
|
|
|
ItemIdSetUnused(itemid); |
|
|
|
|
unused[uncnt++] = toff; |
|
|
|
|
unused[nunused++] = toff; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Assert(uncnt > 0); |
|
|
|
|
Assert(nunused > 0); |
|
|
|
|
|
|
|
|
|
/* Attempt to truncate line pointer array now */ |
|
|
|
|
PageTruncateLinePointerArray(page); |
|
|
|
@ -2527,13 +2527,13 @@ lazy_vacuum_heap_page(LVRelState *vacrel, BlockNumber blkno, Buffer buffer, |
|
|
|
|
xl_heap_vacuum xlrec; |
|
|
|
|
XLogRecPtr recptr; |
|
|
|
|
|
|
|
|
|
xlrec.nunused = uncnt; |
|
|
|
|
xlrec.nunused = nunused; |
|
|
|
|
|
|
|
|
|
XLogBeginInsert(); |
|
|
|
|
XLogRegisterData((char *) &xlrec, SizeOfHeapVacuum); |
|
|
|
|
|
|
|
|
|
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD); |
|
|
|
|
XLogRegisterBufData(0, (char *) unused, uncnt * sizeof(OffsetNumber)); |
|
|
|
|
XLogRegisterBufData(0, (char *) unused, nunused * sizeof(OffsetNumber)); |
|
|
|
|
|
|
|
|
|
recptr = XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_VACUUM); |
|
|
|
|
|
|
|
|
|