vacuumlazy.c: document vistest and OldestXmin. Explain the relationship between vacuumlazy.c's vistest and OldestXmin cutoffs. These closely related cutoffs are different in subtle but important ways. Also document a closely related rule: we must establish rel_pages _after_ OldestXmin to ensure that no XID < OldestXmin can be missed by lazy_scan_heap().
It's easier to explain these issues by initializing everything together, so consolidate initialization of vacrel state. Now almost every vacrel field is initialized by heap_vacuum_rel(). The only remaining exception is the dead_items array, which is still managed by lazy_scan_heap() due to interactions with how we initialize parallel VACUUM. Also move the process that updates pg_class entries for each index into heap_vacuum_rel(), and adjust related assertions. All pg_class updates now take place after lazy_scan_heap() returns, which seems clearer. Author: Peter Geoghegan <[email protected]> Reviewed-By: Andres Freund <[email protected]> Discussion: https://postgr.es/m/[email protected] Discussion: https://postgr.es/m/CAH2-WznYsUxVT156rCQ+q=YD4S4=1m37hwvvhlz-h1pwsm8...@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/73f6ec3d3c8d5786c54373e71a096e5acf78e7ca Modified Files -------------- src/backend/access/heap/vacuumlazy.c | 173 +++++++++++++++++++---------------- 1 file changed, 92 insertions(+), 81 deletions(-)
