From bd624d1a5f9f504fcdd57dcd9db1da6a80915efa Mon Sep 17 00:00:00 2001
From: Maxim Orlov <m.orlov@postgrespro.ru>
Date: Fri, 14 Jun 2024 15:29:14 +0300
Subject: [PATCH v1 2/3] Fix using of MultiXactOffset type insted of
 TransactionId in multixact.

Using of TransactionId type in casting was erroneous.  It wasn't led to any real
problem, since TransactionId and MultiXactOffset were both typedefs of uint32.
But it is semantically wrong and should be fixed anyway.

Author: Maxim Orlov <orlovmg@gmail.com>
Reviewed-by: ...
Discussions:
https://www.postgresql.org/message-id/ff143b24-a093-40da-9833-d36b83726bdf%40iki.fi
---
 src/backend/access/transam/multixact.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 3c76cc797c..53a81b3ef9 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -156,16 +156,16 @@
 		((uint32) ((0xFFFFFFFF % MULTIXACT_MEMBERS_PER_PAGE) + 1))
 
 /* page in which a member is to be found */
-#define MXOffsetToMemberPage(offset) ((offset) / (TransactionId) MULTIXACT_MEMBERS_PER_PAGE)
+#define MXOffsetToMemberPage(offset) ((offset) / (MultiXactOffset) MULTIXACT_MEMBERS_PER_PAGE)
 #define MXOffsetToMemberSegment(offset) (MXOffsetToMemberPage(offset) / SLRU_PAGES_PER_SEGMENT)
 
 /* Location (byte offset within page) of flag word for a given member */
 #define MXOffsetToFlagsOffset(offset) \
-	((((offset) / (TransactionId) MULTIXACT_MEMBERS_PER_MEMBERGROUP) % \
-	  (TransactionId) MULTIXACT_MEMBERGROUPS_PER_PAGE) * \
-	 (TransactionId) MULTIXACT_MEMBERGROUP_SIZE)
+	((((offset) / (MultiXactOffset) MULTIXACT_MEMBERS_PER_MEMBERGROUP) % \
+	  (MultiXactOffset) MULTIXACT_MEMBERGROUPS_PER_PAGE) * \
+	 (MultiXactOffset) MULTIXACT_MEMBERGROUP_SIZE)
 #define MXOffsetToFlagsBitShift(offset) \
-	(((offset) % (TransactionId) MULTIXACT_MEMBERS_PER_MEMBERGROUP) * \
+	(((offset) % (MultiXactOffset) MULTIXACT_MEMBERS_PER_MEMBERGROUP) * \
 	 MXACT_MEMBER_BITS_PER_XACT)
 
 /* Location (byte offset within page) of TransactionId of given member */
-- 
2.44.0

