Close race condition between datfrozen and relfrozen updates. vac_update_datfrozenxid() did multiple loads of relfrozenxid and relminmxid from buffer memory, and it assumed each would get the same value. Not so if a concurrent vac_update_relstats() did an inplace update. Commit 2d2e40e3befd8b9e0d2757554537345b15fa6ea2 fixed the same kind of bug in vac_truncate_clog(). Today's bug could cause the rel-level field and XIDs in the rel's rows to precede the db-level field. A cluster having such values should VACUUM affected tables. Back-patch to v12 (all supported versions).
Discussion: https://postgr.es/m/20240423003956.e7.nmi...@google.com Branch ------ REL_16_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/92685c389d5416f87553bfb80205d79d5670a695 Modified Files -------------- src/backend/commands/vacuum.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)