diff options
-rw-r--r-- | src/backend/access/heap/heapam.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b1b3add38d9..8e1a3bff192 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -4807,7 +4807,16 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid, ItemPointerCopy(&tupid, &(mytup.t_self)); if (!heap_fetch(rel, SnapshotAny, &mytup, &buf, false, NULL)) - elog(ERROR, "unable to fetch updated version of tuple"); + { + /* + * if we fail to find the updated version of the tuple, it's + * because it was vacuumed/pruned away after its creator + * transaction aborted. So behave as if we got to the end of the + * chain, and there's no further tuple to lock: return success to + * caller. + */ + return HeapTupleMayBeUpdated; + } l4: CHECK_FOR_INTERRUPTS(); |