• Teodor Sigaev's avatar
    Add missing and dangling downlink checks to amcheck · 4eaf7eac
    Teodor Sigaev authored
    When bt_index_parent_check() is called with the heapallindexed option,
    allocate a second Bloom filter to fingerprint block numbers that appear
    in the downlinks of internal pages.  Use Bloom filter probes when
    walking the B-Tree to detect missing downlinks.  This can detect subtle
    problems with page deletion/VACUUM, such as corruption caused by the bug
    just fixed in commit 6db4b499.
    
    The downlink Bloom filter is bound in size by work_mem.  Its optimal
    size is typically far smaller than that of the regular heapallindexed
    Bloom filter, especially when the index has high fan-out.
    
    Author: Peter Geoghegan
    Reviewer: Teodor Sigaev
    Discussion: https://postgr.es/m/CAH2-WznUzY4fWTjm1tBB3JpVz8cCfz7k_qVp5BhuPyhivmWJFg@mail.gmail.com
    4eaf7eac
verify_nbtree.c 74 KB