Fix assertions with RI triggers in heap_update and heap_delete.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 28 Nov 2023 09:59:09 +0000 (11:59 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 28 Nov 2023 10:00:14 +0000 (12:00 +0200)
commit60f227316c0ebf5f4f8296f11cedc9360e9cb8ae
treec8f01254949d4986ef613663170e0a6dc035c4b5
parentcd342474890f31a7364c0d1161334546822b639c
Fix assertions with RI triggers in heap_update and heap_delete.

If the tuple being updated is not visible to the crosscheck snapshot,
we return TM_Updated but the assertions would not hold in that case.
Move them to before the cross-check.

Fixes bug #17893. Backpatch to all supported versions.

Author: Alexander Lakhin
Backpatch-through: 12
Discussion: https://www.postgresql.org/message-id/17893-35847009eec517b5%40postgresql.org
src/backend/access/heap/heapam.c
src/include/access/tableam.h
src/test/isolation/expected/fk-snapshot.out
src/test/isolation/specs/fk-snapshot.spec