Keep newest live XID up-to-date even if page not all-visible During pruning, we keep track of the newest xmin of live tuples on the page visible to all running and future transactions so that we can use it later as the snapshot conflict horizon when setting the VM if the page turns out to be all-visible.
Previously, we stopped updating this value once we determined the page was not all-visible. However, maintaining it even when the page is not all-visible is inexpensive and makes the snapshot conflict horizon calculation clearer. This guarantees it won't contain a stale value. Since we'll keep it up to date all the time now anyway, there's no reason not to maintain set_all_visible for on-access pruning. This will allow us to set the VM on-access in the future. Author: Melanie Plageman <[email protected]> Reviewed-by: Andres Freund <[email protected]> Reviewed-by: Chao Li <[email protected]> Discussion: https://postgr.es/m/bqc4kh5midfn44gnjiqez3bjqv4zogydguvdn446riw45jcf3y%404ez66il7ebvk Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/9ba3ec076a68b82d49fb4d0ea008205befd2292b Modified Files -------------- src/backend/access/heap/pruneheap.c | 138 +++++++++++++++-------------------- src/backend/access/heap/vacuumlazy.c | 30 ++++---- 2 files changed, 73 insertions(+), 95 deletions(-)
