On Fri, Aug 28, 2020 at 2:10 PM Andrey M. Borodin <x4...@yandex-team.ru> wrote: > I don't think so. ISTM It's the same problem of xmax<relfrozenxid actually, > just hidden behind detoasing. > Our regular heap_check was checking xmin\xmax invariants for tables, but > failed to recognise the problem in toast (while toast was accessible until > CLOG truncation).
The code can (and should, and I think does) refrain from looking up XIDs that are out of the range thought to be valid -- but how do you propose that it avoid looking up XIDs that ought to have clog data associated with them despite being >= relfrozenxid and < nextxid? TransactionIdDidCommit() does not have a suppress-errors flag, adding one would be quite invasive, yet we cannot safely perform a significant number of checks without knowing whether the inserting transaction committed. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company