v2-0004-Use-custom-SLRU-IO-error-msg-for-multixact.patch
application/octet-stream
Filename: v2-0004-Use-custom-SLRU-IO-error-msg-for-multixact.patch
Type: application/octet-stream
Part: 3
Message:
Re: POC: make mxidoff 64 bits
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 v2-0004
Subject: Use custom SLRU IO error msg for multixact
| File | + | − |
|---|---|---|
| src/backend/access/transam/multixact.c | 20 | 4 |
From cde77c8ddaf2b57c39f23f2a5c1431c970e3851c Mon Sep 17 00:00:00 2001
From: Maxim Orlov <orlovmg@gmail.com>
Date: Wed, 25 Feb 2026 18:20:01 +0300
Subject: [PATCH v2 4/5] Use custom SLRU IO error msg for multixact
---
src/backend/access/transam/multixact.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 63d5256823e..34daacae82b 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -881,7 +881,8 @@ RecordNewMultiXact(MultiXactId multi, MultiXactOffset offset,
LWLockAcquire(lock, LW_EXCLUSIVE);
prevlock = lock;
}
- slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true, &multi);
+ slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true,
+ &offset);
prev_pageno = pageno;
}
@@ -1309,7 +1310,8 @@ GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members,
lock = newlock;
}
- slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true, &multi);
+ slotno = SimpleLruReadPage(MultiXactMemberCtl, pageno, true,
+ &offset);
prev_pageno = pageno;
}
@@ -1720,6 +1722,20 @@ MultiXactShmemSize(void)
return size;
}
+static inline char *
+MultiXactOffsetIoErrorMsg(const void *opaque_data)
+{
+ return psprintf("could not access status of multixact offset %u",
+ *(MultiXactId *) opaque_data);
+}
+
+static inline char *
+MultiXactMemberIoErrorMsg(const void *opaque_data)
+{
+ return psprintf("could not access status of multixact member %" PRIu64,
+ *(MultiXactOffset *) opaque_data);
+}
+
void
MultiXactShmemInit(void)
{
@@ -1730,8 +1746,8 @@ MultiXactShmemInit(void)
MultiXactOffsetCtl->PagePrecedes = MultiXactOffsetPagePrecedes;
MultiXactMemberCtl->PagePrecedes = MultiXactMemberPagePrecedes;
- MultiXactOffsetCtl->IoErrorMsg = TransactionIdIoErrorMsg;
- MultiXactMemberCtl->IoErrorMsg = TransactionIdIoErrorMsg;
+ MultiXactOffsetCtl->IoErrorMsg = MultiXactOffsetIoErrorMsg;
+ MultiXactMemberCtl->IoErrorMsg = MultiXactMemberIoErrorMsg;
SimpleLruInit(MultiXactOffsetCtl,
"multixact_offset", multixact_offset_buffers, 0,
--
2.50.1 (Apple Git-155)