]> granicus.if.org Git - postgresql/commitdiff
Continue to allow VACUUM to mark last block of index dirty
authorSimon Riggs <simon@2ndQuadrant.com>
Tue, 22 Nov 2011 09:48:06 +0000 (09:48 +0000)
committerSimon Riggs <simon@2ndQuadrant.com>
Tue, 22 Nov 2011 09:48:06 +0000 (09:48 +0000)
even when there is no work to do. Further analysis required.
Revert of patch c1458cc495ff800cd176a1c2e56d8b62680d9b71

src/backend/access/nbtree/nbtpage.c

index 6f6e676ec08791689a049c7b2a556f2670a7a5b4..f9b3e1feafe62130e250f68b2183cdf5f944d19b 100644 (file)
@@ -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();