amcheck: Generalize one of the recently-added update chain checks.
Robert Haas <rhaas@postgresql.org>
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
Files
| Path | Change | +/− |
|---|---|---|
| contrib/amcheck/verify_heapam.c | modified | +9 −11 |
| src/bin/pg_amcheck/t/004_verify_heapam.pl | modified | +5 −6 |
Discussion
- HOT chain validation in verify_heapam() 100 messages · 2022-08-26 → 2023-03-27