Fix potential SSI hazard in heap_update().

Thomas Munro <tmunro@postgresql.org>

Commit: b1df6b696b759f00ebbf02e6de64e259d4be5785
Author: Thomas Munro <tmunro@postgresql.org>
Date: 2021-04-13T01:02:56Z
Releases: 14.0
Fix potential SSI hazard in heap_update().

Commit 6f38d4dac38 failed to heed a warning about the stability of the
value pointed to by "otid".  The caller is allowed to pass in a pointer to
newtup->t_self, which will be updated during the execution of the
function.  Instead, the SSI check should use the value we copy into
oldtup.t_self near the top of the function.

Not a live bug, because newtup->t_self doesn't really get updated until
a bit later, but it was confusing and broke the rule established by the
comment.

Back-patch to 13.

Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/2689164.1618160085%40sss.pgh.pa.us

Files

PathChange+/−
src/backend/access/heap/heapam.c modified +2 −1

Discussion