v4-0002-Prefer-real-Xid-over-local.patch
application/octet-stream
Filename: v4-0002-Prefer-real-Xid-over-local.patch
Type: application/octet-stream
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v4-0002
Subject: Prefer real Xid over local
| File | + | − |
|---|---|---|
| src/backend/storage/lmgr/lock.c | 16 | 2 |
From b0678f07a650454a90f7974efc7f4be876f7d722 Mon Sep 17 00:00:00 2001
From: Andrey Borodin <amborodin@acm.org>
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)