v1-0002-Convert-PageXLogRecPtrSet-from-macro-to-inline-fu.patch
text/x-patch
Filename: v1-0002-Convert-PageXLogRecPtrSet-from-macro-to-inline-fu.patch
Type: text/x-patch
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 v1-0002
Subject: Convert PageXLogRecPtrSet() from macro to inline function
| File | + | − |
|---|---|---|
| src/backend/access/common/bufmask.c | 1 | 1 |
| src/include/access/gist.h | 1 | 1 |
| src/include/storage/bufpage.h | 11 | 5 |
From fbf115b1c567183ef16961f08e7cf978235c8c33 Mon Sep 17 00:00:00 2001
From: Andreas Karlsson <andreas.karlsson@percona.com>
Date: Fri, 21 Nov 2025 14:34:03 +0100
Subject: [PATCH v1 2/2] Convert PageXLogRecPtrSet() from macro to inline
function
This makes the code a bit more consistent and clean while providing a
tiny bit of extra type safety.
---
src/backend/access/common/bufmask.c | 2 +-
src/include/access/gist.h | 2 +-
src/include/storage/bufpage.h | 16 +++++++++++-----
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/src/backend/access/common/bufmask.c b/src/backend/access/common/bufmask.c
index bb260cffa68..fa6b5099226 100644
--- a/src/backend/access/common/bufmask.c
+++ b/src/backend/access/common/bufmask.c
@@ -32,7 +32,7 @@ mask_page_lsn_and_checksum(Page page)
{
PageHeader phdr = (PageHeader) page;
- PageXLogRecPtrSet(phdr->pd_lsn, (uint64) MASK_MARKER);
+ PageXLogRecPtrSet(&phdr->pd_lsn, (uint64) MASK_MARKER);
phdr->pd_checksum = MASK_MARKER;
}
diff --git a/src/include/access/gist.h b/src/include/access/gist.h
index b3f4e02cbfd..2777b5de6f3 100644
--- a/src/include/access/gist.h
+++ b/src/include/access/gist.h
@@ -187,7 +187,7 @@ typedef struct GISTENTRY
#define GistClearFollowRight(page) ( GistPageGetOpaque(page)->flags &= ~F_FOLLOW_RIGHT)
#define GistPageGetNSN(page) ( PageXLogRecPtrGet(GistPageGetOpaque(page)->nsn))
-#define GistPageSetNSN(page, val) ( PageXLogRecPtrSet(GistPageGetOpaque(page)->nsn, val))
+#define GistPageSetNSN(page, val) ( PageXLogRecPtrSet(&GistPageGetOpaque(page)->nsn, val))
/*
diff --git a/src/include/storage/bufpage.h b/src/include/storage/bufpage.h
index 1b54967c70c..331d471bf97 100644
--- a/src/include/storage/bufpage.h
+++ b/src/include/storage/bufpage.h
@@ -108,8 +108,11 @@ PageXLogRecPtrGet(PageXLogRecPtr val)
return val;
}
-#define PageXLogRecPtrSet(ptr, lsn) \
- ((ptr) = (lsn))
+static inline void
+PageXLogRecPtrSet(PageXLogRecPtr *ptr, XLogRecPtr lsn)
+{
+ *ptr = lsn;
+}
#else
@@ -119,8 +122,11 @@ PageXLogRecPtrGet(volatile PageXLogRecPtr val)
return (val << 32) | (val >> 32);
}
-#define PageXLogRecPtrSet(ptr, lsn) \
- ((ptr) = ((lsn) << 32) | ((lsn) >> 32))
+static inline void
+PageXLogRecPtrSet(PageXLogRecPtr *ptr, XLogRecPtr lsn)
+{
+ *ptr = (lsn << 32) | (lsn >> 32);
+}
#endif
@@ -405,7 +411,7 @@ PageGetLSN(const PageData *page)
static inline void
PageSetLSN(Page page, XLogRecPtr lsn)
{
- PageXLogRecPtrSet(((PageHeader) page)->pd_lsn, lsn);
+ PageXLogRecPtrSet(&((PageHeader) page)->pd_lsn, lsn);
}
static inline bool
--
2.47.3