From 2d2841a56c8fa37a5dd5c6d33488ba6ca37116ff Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Tue, 22 Nov 2011 09:48:06 +0000 Subject: [PATCH] Continue to allow VACUUM to mark last block of index dirty even when there is no work to do. Further analysis required. Revert of patch c1458cc495ff800cd176a1c2e56d8b62680d9b71 --- src/backend/access/nbtree/nbtpage.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 6f6e676ec0..f9b3e1feaf 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -732,7 +732,7 @@ _bt_page_recyclable(Page page) * and so must be scanned anyway during replay. We always write a WAL record * for the last block in the index, whether or not it contained any items * to be removed. This allows us to scan right up to end of index to - * ensure correct locking. That is the only time we are called with nitems==0. + * ensure correct locking. */ void _bt_delitems_vacuum(Relation rel, Buffer buf, @@ -764,8 +764,7 @@ _bt_delitems_vacuum(Relation rel, Buffer buf, */ opaque->btpo_flags &= ~BTP_HAS_GARBAGE; - if (nitems > 0) - MarkBufferDirty(buf); + MarkBufferDirty(buf); /* XLOG stuff */ if (RelationNeedsWAL(rel)) @@ -805,11 +804,8 @@ _bt_delitems_vacuum(Relation rel, Buffer buf, recptr = XLogInsert(RM_BTREE_ID, XLOG_BTREE_VACUUM, rdata); - if (nitems > 0) - { - PageSetLSN(page, recptr); - PageSetTLI(page, ThisTimeLineID); - } + PageSetLSN(page, recptr); + PageSetTLI(page, ThisTimeLineID); } END_CRIT_SECTION();