amcheck: In verify_heapam, allows tuples with xmin 0.
authorRobert Haas <[email protected]>
Tue, 28 Mar 2023 20:16:53 +0000 (16:16 -0400)
committerRobert Haas <[email protected]>
Tue, 28 Mar 2023 20:16:53 +0000 (16:16 -0400)
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

index ce3114f4e6c4136d7ccb24d64a397bb2b9145ce3..f50ee9d29f725e10526a09fd401f63090457b2a9 100644 (file)
@@ -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;