postgres.git / summary / log / commit / refs

commit    b7cea58822c67724effc711ae28e4077a01a7cd6
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Tue Mar 28 20:16:53 2023 +0000
First released in: 16.0, 14.8, 15.3

    amcheck: In verify_heapam, allows tuples with xmin 0.
    
    Commit e88754a1965c0f40a723e6e46d670cacda9e19bd caused that case
    to be reported as corruption, but Peter Geoghegan pointed out that
    it can legitimately happen in the case of a speculative insertion
    that aborts, so we'd better not flag it as corruption after all.
    
    Back-patch to v14, like the commit that introduced the issue.
    
    Discussion: http://postgr.es/m/CAH2-WzmEabzcPTxSY-NXKH6Qt3FkAPYHGQSe2PtvGgj17ZQkCw@mail.gmail.com


contrib/amcheck/verify_heapam.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c index ce3114f4e6c..f50ee9d29f7 100644 --- a/contrib/amcheck/verify_heapam.c +++ b/contrib/amcheck/verify_heapam.c @@ -1032,8 +1032,7 @@ check_tuple_visibility(HeapCheckContext *ctx, bool *xmin_commit_status_ok, switch (get_xid_status(xmin, ctx, &xmin_status)) { case XID_INVALID: - report_corruption(ctx, - pstrdup("xmin is invalid")); + /* Could be the result of a speculative insertion that aborted. */ return false; case XID_BOUNDS_OK: *xmin_commit_status_ok = true; [parent: bade01cb4dd8]