Another fix for single-page hash index vacuum.
authorRobert Haas <rhaas@postgresql.org>
Mon, 20 Mar 2017 19:55:27 +0000 (15:55 -0400)
committerRobert Haas <rhaas@postgresql.org>
Mon, 20 Mar 2017 19:55:27 +0000 (15:55 -0400)
The WAL consistency checking code needed to be updated for the new
page status bit, but that didn't get done previously.

Ashutosh Sharma, reviewed by Amit Kapila

Discussion: http://postgr.es/m/CAA4eK1LP_oz4EfMen14OjJuzN5CqPdfRkFFuA-MfkcfeE8zGyg@mail.gmail.com

src/backend/access/hash/hash_xlog.c

index ac82092ab2492ca7081f2118077436cb16f975a9..de7522ea01ff33883c7347edb2b9274d796dd3f7 100644 (file)
@@ -1250,8 +1250,14 @@ hash_mask(char *pagedata, BlockNumber blkno)
        /*
         * In hash bucket and overflow pages, it is possible to modify the
         * LP_FLAGS without emitting any WAL record. Hence, mask the line
-        * pointer flags. See hashgettuple() for details.
+        * pointer flags. See hashgettuple(), _hash_kill_items() for details.
         */
        mask_lp_flags(page);
    }
+
+   /*
+    * It is possible that the hint bit LH_PAGE_HAS_DEAD_TUPLES may remain
+    * unlogged. So, mask it. See _hash_kill_items() for details.
+    */
+   opaque->hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
 }