From 555f6037f5caa09d95767d40d966e677f2a3fa71 Mon Sep 17 00:00:00 2001 From: Maxim Orlov Date: Wed, 22 Nov 2023 19:14:03 +0300 Subject: [PATCH] Add warning if datfrozenxid or datminmxid is not set due to bogus relfrozenxid or relminmxid. Author: Maxim Orlov --- src/backend/commands/vacuum.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 8bdbee6841..00712e7adb 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -1660,6 +1660,13 @@ vac_update_datfrozenxid(void) if (TransactionIdPrecedes(lastSaneFrozenXid, classForm->relfrozenxid)) { bogus = true; + ereport(WARNING, + (errcode(ERRCODE_DATA_CORRUPTED), + errmsg("bogus relfrozenxid %llu for relation \"%s\"", + (unsigned long long) classForm->relfrozenxid, + NameStr(classForm->relname)), + errhint("Relfrozenxid seem to be in the future, last sane xact is %llu.", + (unsigned long long) lastSaneFrozenXid))); break; } @@ -1674,6 +1681,13 @@ vac_update_datfrozenxid(void) if (MultiXactIdPrecedes(lastSaneMinMulti, classForm->relminmxid)) { bogus = true; + ereport(WARNING, + (errcode(ERRCODE_DATA_CORRUPTED), + errmsg("bogus relminmxid %llu for relation \"%s\"", + (unsigned long long) classForm->relminmxid, + NameStr(classForm->relname)), + errhint("Relminmxid seem to be in the future, last sane multixact is %llu. Consider running vacuumdb.", + (unsigned long long) lastSaneMinMulti))); break; } -- 2.42.0