From b0678f07a650454a90f7974efc7f4be876f7d722 Mon Sep 17 00:00:00 2001 From: Andrey Borodin Date: Wed, 21 Jul 2021 10:57:18 +0500 Subject: [PATCH v4 2/3] Prefer real Xid over local --- src/backend/storage/lmgr/lock.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index 25e3bb6fda..50553e729c 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -3018,7 +3018,14 @@ GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode, int *countp) /* Conflict! */ GET_VXID_FROM_PGPROC(vxid, *proc); - if (VirtualTransactionIdIsValid(vxid)) + /* Prefer real Xid over local Xid */ + if (TransactionIdIsValid(proc->xid)) + { + vxids[count].backendId = InvalidBackendId; + vxids[count].localTransactionId = proc->xid; + count++; + } + else if (VirtualTransactionIdIsValid(vxid)) vxids[count++] = vxid; /* else, xact already committed or aborted */ @@ -3079,7 +3086,14 @@ GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode, int *countp) GET_VXID_FROM_PGPROC(vxid, *proc); - if (VirtualTransactionIdIsValid(vxid)) + /* Prefer real Xid over local Xid */ + if (TransactionIdIsValid(proc->xid)) + { + vxids[count].backendId = InvalidBackendId; + vxids[count].localTransactionId = proc->xid; + count++; + } + else if (VirtualTransactionIdIsValid(vxid)) { int i; -- 2.24.3 (Apple Git-128)