Fix assertions with RI triggers in heap_update and heap_delete.

Heikki Linnakangas <heikki.linnakangas@iki.fi>

Commit: e434d3620a91f6f4511de32aaad70c1830949797
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2023-11-28T09:59:52Z
Releases: 13.14
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

Files

PathChange+/−
src/backend/access/heap/heapam.c modified +24 −17
src/include/access/tableam.h modified +2 −2

Discussion