Remove overzealous VACUUM visibility map assertion.
authorPeter Geoghegan <pg@bowt.ie>
Thu, 6 May 2021 20:17:39 +0000 (13:17 -0700)
committerPeter Geoghegan <pg@bowt.ie>
Thu, 6 May 2021 20:17:39 +0000 (13:17 -0700)
The all_visible_according_to_vm variable's value is inherently prone to
becoming invalidated concurrently, since it is set before we even
acquire a lock on a related heap page buffer.

Oversight in commit 7136bf34, which added the assertion in passing.

Author: Masahiko Sawada <sawada.mshk@gmail.com>
Reported-By: Tang <tanghy.fnst@fujitsu.com>
Diagnosed-By:: Masahiko Sawada <sawada.mshk@gmail.com>
Discussion: https://postgr.es/m/CAD21AoDzgc8_MYrA5m1fyydomw_eVKtQiYh7sfDK4KEhdMsf_g@mail.gmail.com

src/backend/access/heap/vacuumlazy.c

index c3fc12d76c7969ffbfa0854d5f6bd6cea6517ae3..47ac6385d12120ff545655254712591ac2431e0a 100644 (file)
@@ -1344,7 +1344,6 @@ lazy_scan_heap(LVRelState *vacrel, VacuumParams *params, bool aggressive)
                lazy_scan_prune(vacrel, buf, blkno, page, vistest, &prunestate);
 
                Assert(!prunestate.all_visible || !prunestate.has_lpdead_items);
-               Assert(!all_visible_according_to_vm || prunestate.all_visible);
 
                /* Remember the location of the last page with nonremovable tuples */
                if (prunestate.hastup)