From ac587fc638a1d1f0bc75f8cc64201e92fe4f200c Mon Sep 17 00:00:00 2001 From: Maxim Orlov Date: Fri, 22 Mar 2024 11:54:10 +0300 Subject: [PATCH v1 2/2] Use proper types in defines in multixact.c Use appropriate type casts to MultiXactId and MultiXactOffset instead of TransactionId in macro functions and defines. Author: Maxim Orlov --- src/backend/access/transam/multixact.c | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index 83b578dced..e4a5924911 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -136,7 +136,7 @@ (MULTIXACT_FLAGBYTES_PER_GROUP * MXACT_MEMBER_FLAGS_PER_BYTE) /* size in bytes of a complete group */ #define MULTIXACT_MEMBERGROUP_SIZE \ - (sizeof(TransactionId) * MULTIXACT_MEMBERS_PER_MEMBERGROUP + MULTIXACT_FLAGBYTES_PER_GROUP) + (sizeof(MultiXactId) * MULTIXACT_MEMBERS_PER_MEMBERGROUP + MULTIXACT_FLAGBYTES_PER_GROUP) #define MULTIXACT_MEMBERGROUPS_PER_PAGE (BLCKSZ / MULTIXACT_MEMBERGROUP_SIZE) #define MULTIXACT_MEMBERS_PER_PAGE \ (MULTIXACT_MEMBERGROUPS_PER_PAGE * MULTIXACT_MEMBERS_PER_MEMBERGROUP) @@ -155,30 +155,30 @@ ((uint32) ((0xFFFFFFFF % MULTIXACT_MEMBERS_PER_PAGE) + 1)) /* page in which a member is to be found */ -#define MXOffsetToMemberPage(xid) ((xid) / (TransactionId) MULTIXACT_MEMBERS_PER_PAGE) -#define MXOffsetToMemberSegment(xid) (MXOffsetToMemberPage(xid) / SLRU_PAGES_PER_SEGMENT) +#define MXOffsetToMemberPage(off) ((off) / (MultiXactOffset) MULTIXACT_MEMBERS_PER_PAGE) +#define MXOffsetToMemberSegment(off) (MXOffsetToMemberPage(off) / SLRU_PAGES_PER_SEGMENT) /* Location (byte offset within page) of flag word for a given member */ -#define MXOffsetToFlagsOffset(xid) \ - ((((xid) / (TransactionId) MULTIXACT_MEMBERS_PER_MEMBERGROUP) % \ - (TransactionId) MULTIXACT_MEMBERGROUPS_PER_PAGE) * \ - (TransactionId) MULTIXACT_MEMBERGROUP_SIZE) -#define MXOffsetToFlagsBitShift(xid) \ - (((xid) % (TransactionId) MULTIXACT_MEMBERS_PER_MEMBERGROUP) * \ +#define MXOffsetToFlagsOffset(off) \ + ((((off) / (MultiXactId) MULTIXACT_MEMBERS_PER_MEMBERGROUP) % \ + (MultiXactId) MULTIXACT_MEMBERGROUPS_PER_PAGE) * \ + (MultiXactId) MULTIXACT_MEMBERGROUP_SIZE) +#define MXOffsetToFlagsBitShift(off) \ + (((off) % (MultiXactId) MULTIXACT_MEMBERS_PER_MEMBERGROUP) * \ MXACT_MEMBER_BITS_PER_XACT) /* Location (byte offset within page) of TransactionId of given member */ -#define MXOffsetToMemberOffset(xid) \ - (MXOffsetToFlagsOffset(xid) + MULTIXACT_FLAGBYTES_PER_GROUP + \ - ((xid) % MULTIXACT_MEMBERS_PER_MEMBERGROUP) * sizeof(TransactionId)) +#define MXOffsetToMemberOffset(off) \ + (MXOffsetToFlagsOffset(off) + MULTIXACT_FLAGBYTES_PER_GROUP + \ + ((off) % MULTIXACT_MEMBERS_PER_MEMBERGROUP) * sizeof(TransactionId)) /* Multixact members wraparound thresholds. */ #define MULTIXACT_MEMBER_SAFE_THRESHOLD (MaxMultiXactOffset / 2) #define MULTIXACT_MEMBER_DANGER_THRESHOLD \ (MaxMultiXactOffset - MaxMultiXactOffset / 4) -#define PreviousMultiXactId(xid) \ - ((xid) == FirstMultiXactId ? MaxMultiXactId : (xid) - 1) +#define PreviousMultiXactId(mxid) \ + ((mxid) == FirstMultiXactId ? MaxMultiXactId : (mxid) - 1) /* * Links to shared-memory data structures for MultiXact control -- 2.44.0