diff options
Diffstat (limited to 'src/backend/access/heap/heapam.c')
-rw-r--r-- | src/backend/access/heap/heapam.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 32e7d3c1464..4be0dee4de0 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -5907,7 +5907,6 @@ heap_abort_speculative(Relation relation, ItemPointer tid) Page page; BlockNumber block; Buffer buffer; - TransactionId prune_xid; Assert(ItemPointerIsValid(tid)); @@ -5960,11 +5959,16 @@ heap_abort_speculative(Relation relation, ItemPointer tid) * TransactionXmin, so there's no race here). */ Assert(TransactionIdIsValid(TransactionXmin)); - if (TransactionIdPrecedes(TransactionXmin, relation->rd_rel->relfrozenxid)) - prune_xid = relation->rd_rel->relfrozenxid; - else - prune_xid = TransactionXmin; - PageSetPrunable(page, prune_xid); + { + TransactionId relfrozenxid = relation->rd_rel->relfrozenxid; + TransactionId prune_xid; + + if (TransactionIdPrecedes(TransactionXmin, relfrozenxid)) + prune_xid = relfrozenxid; + else + prune_xid = TransactionXmin; + PageSetPrunable(page, prune_xid); + } /* store transaction information of xact deleting the tuple */ tp.t_data->t_infomask &= ~(HEAP_XMAX_BITS | HEAP_MOVED); |