]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Use TransactionXmin instead of RecentGlobalXmin in heap_abort_speculative().
authorAndres Freund <andres@anarazel.de>
Mon, 6 Apr 2020 00:47:30 +0000 (17:47 -0700)
committerAndres Freund <andres@anarazel.de>
Mon, 6 Apr 2020 00:48:40 +0000 (17:48 -0700)
commitf7f55d02c2a1e854f21cde4124453c2b247b701f
tree5f45b65a56008b1f02b7a7a5b5dce3873f8c15ba
parent3dcaea4b007afb326616855824f32f54bfc1fe5d
Use TransactionXmin instead of RecentGlobalXmin in heap_abort_speculative().

There's a very low risk that RecentGlobalXmin could be far enough in
the past to be older than relfrozenxid, or even wrapped
around. Luckily the consequences of that having happened wouldn't be
too bad - the page wouldn't be pruned for a while.

Avoid that risk by using TransactionXmin instead. As that's announced
via MyPgXact->xmin, it is protected against wrapping around (see code
comments for details around relfrozenxid).

Author: Andres Freund
Discussion: https://postgr.es/m/20200328213023.s4eyijhdosuc4vcj@alap3.anarazel.de
Backpatch: 9.5-
src/backend/access/heap/heapam.c