On Mon, Jul 13, 2020 at 9:10 PM Andres Freund <and...@anarazel.de> wrote: > > What if clog has been truncated so that the xmin can't be looked up? > > That's possible, but probably only in cases where xmin actually > committed.
Isn't that the normal case? I'm imagining something like: - Tuple gets inserted. Transaction commits. - VACUUM processes table. - Mischievous fairies mark page all-visible in the visibility map. - VACUUM runs lots more times, relfrozenxid advances, but without ever looking at the page in question, because it's all-visible. - clog is truncated, rendering xmin no longer accessible. - User runs VACUUM disabling page skipping, gets ERROR. - User deletes offending tuple. - At this point, I think the tuple is both invisible and unprunable? - Fairies happy, user sad. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company