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

