pgsql: amcheck: Generalize one of the recently-added update chain check

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: amcheck: Generalize one of the recently-added update chain check
Date: 2023-03-27 17:41:32
Message-ID: E1pgqqZ-00010g-E3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

amcheck: Generalize one of the recently-added update chain checks.

Commit bbc1376b39627c6bddd8a0dc0a7dda24c91a97a0 checked that if
a redirected line pointer pointed to a tuple, the tuple should be
marked both HEAP_ONLY_TUPLE and HEAP_UPDATED. But Andres Freund
pointed out that *any* tuple that is marked HEAP_ONLY_TUPLE should
be marked HEAP_UPDATED, not just one that is the target of a
redirected line pointer. Do that instead.

To see why this is better, consider a redirect line pointer A
which points to a heap-only tuple B which points (via CTID)
to another heap-only tuple C. With the old code, we'd complain
if B was not marked HEAP_UPDATED, but with this change, we'll
complain if either B or C is not marked HEAP_UPDATED.

(Note that, with or without this commit, if either B or C were
not marked HEAP_ONLY_TUPLE, we would also complain about that.)

Discussion: http://postgr.es/m/CA%2BTgmobLypZx%3DcOH%2ByY1GZmCruaoucHm77A6y_-Bo%3Dh-_3H28g%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/c87aff065c33e1a3c9bf0350f9160e84bfce1c36

Modified Files
--------------
contrib/amcheck/verify_heapam.c | 20 +++++++++-----------
src/bin/pg_amcheck/t/004_verify_heapam.pl | 11 +++++------
2 files changed, 14 insertions(+), 17 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Geoghegan 2023-03-27 18:34:16 Re: pgsql: amcheck: Fix verify_heapam for tuples where xmin or xmax is 0.
Previous Message Robert Haas 2023-03-27 17:36:40 pgsql: amcheck: Tighten up validation of redirect line pointers.