pgsql: vacuumlazy.c: document vistest and OldestXmin.

From: Peter Geoghegan <pg(at)bowt(dot)ie>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: vacuumlazy.c: document vistest and OldestXmin.
Date: 2022-03-12 20:53:49
Message-ID: E1nT8kG-000SoG-Nd@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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 <pg(at)bowt(dot)ie>
Reviewed-By: Andres Freund <andres(at)anarazel(dot)de>
Discussion: https://postgr.es/m/20211211045710.ljtuu4gfloh754rs@alap3.anarazel.de
Discussion: https://postgr.es/m/CAH2-WznYsUxVT156rCQ+q=YD4S4=1M37hWvvHLz-H1pwSM8-Ew@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(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Geoghegan 2022-03-12 21:22:22 pgsql: vacuumlazy.c: Standardize rel_pages terminology.
Previous Message Peter Geoghegan 2022-03-12 03:30:54 pgsql: Normalize heap_prepare_freeze_tuple argument name.