• Peter Geoghegan's avatar
    Revise BTP_HAS_GARBAGE nbtree VACUUM comments. · 4b25f5d0
    Peter Geoghegan authored
    _bt_delitems_vacuum() comments claimed that it isn't worth another scan
    of the page to avoid falsely unsetting the BTP_HAS_GARBAGE page flag
    hint (this happens to be the same wording that was removed from
    _bt_delitems_delete() by my recent commit fe97c61c).  The comments made
    little sense, though.  The issue can't have much to do with performing a
    second scan of the target leaf page, since an LP_DEAD test could easily
    be performed in the first scan of the page anyway (the scan that takes
    place in btvacuumpage() caller).
    
    Revise the explanation.  It makes much more sense to frame this as an
    issue about recovery conflicts.  _bt_delitems_vacuum() cannot easily
    generate an XID cutoff in the same way that _bt_delitems_delete() is
    designed to.
    
    Falsely unsetting the page flag is not ideal, and is likely to happen
    more often than was supposed by the original comments.  Explain why it
    usually isn't a problem in practice.  There may be an argument for
    _bt_delitems_vacuum() not clearing the BTP_HAS_GARBAGE bit, removing the
    question of it being falsely unset by VACUUM (there may even be an
    argument for not using a page level hint at all).  This can be revisited
    later.
    4b25f5d0
nbtpage.c 64.9 KB