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 ------ master Details ------- https://git.postgresql.org/pg/commitdiff/f65ab862e3b8d96c6886641155d9447bc73b5126 Modified Files -------------- src/backend/commands/vacuum.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)