• Peter Geoghegan's avatar
    Fix nbtree cleanup-only VACUUM stats inaccuracies. · 48e12913
    Peter Geoghegan authored
    Logic for counting heap TIDs from posting list tuples (added by commit
    0d861bbb) was faulty.  It didn't count any TIDs/index tuples in the
    event of no callback being set.  This meant that we incorrectly counted
    no index tuples in clean-up only VACUUMs, which could lead to
    pg_class.reltuples being spuriously set to 0 in affected indexes.
    
    To fix, go back to counting items from the page in cases where there is
    no callback.  This approach isn't very accurate, but it works well
    enough in practice while avoiding the expense of accessing every index
    tuple during cleanup-only VACUUMs.
    
    Author: Peter Geoghegan <pg@bowt.ie>
    Reported-By: default avatarJehan-Guillaume de Rorthais <jgdr@dalibo.com>
    https://postgr.es/m/20201023174451.69e358f1@firost
    Backpatch: 13-, where nbtree deduplication was introduced
    48e12913
nbtree.c 45.5 KB