From 3dd7c8d0de11b0da327b5e4050f8ffc0ff194781 Mon Sep 17 00:00:00 2001 From: Alexander Korotkov Date: Wed, 14 Aug 2024 05:04:13 +0300 Subject: [PATCH v1] Fix even more holes with SLRU code in need of int64 for segment numbers This is a continuation of c9e24573905b, containing changes included into a patch, but for some reason absent in c9e24573905b. Discussion: https://postgr.es/m/20240810175055.cd.nmisch%40google.com Discussion: https://postgr.es/m/92fe572d-638e-4162-aef6-1c42a2936f25%40eisentraut.org Author: Michael Paquier --- src/backend/access/transam/multixact.c | 12 ++++++------ src/backend/access/transam/slru.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index c601ff98a14..c33d5d8426d 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -120,7 +120,7 @@ MultiXactIdToOffsetEntry(MultiXactId multi) return multi % MULTIXACT_OFFSETS_PER_PAGE; } -static inline int +static inline int64 MultiXactIdToOffsetSegment(MultiXactId multi) { return MultiXactIdToOffsetPage(multi) / SLRU_PAGES_PER_SEGMENT; @@ -174,7 +174,7 @@ MXOffsetToMemberPage(MultiXactOffset offset) return offset / MULTIXACT_MEMBERS_PER_PAGE; } -static inline int +static inline int64 MXOffsetToMemberSegment(MultiXactOffset offset) { return MXOffsetToMemberPage(offset) / SLRU_PAGES_PER_SEGMENT; @@ -3039,10 +3039,10 @@ SlruScanDirCbFindEarliest(SlruCtl ctl, char *filename, int64 segpage, void *data static void PerformMembersTruncation(MultiXactOffset oldestOffset, MultiXactOffset newOldestOffset) { - const int maxsegment = MXOffsetToMemberSegment(MaxMultiXactOffset); - int startsegment = MXOffsetToMemberSegment(oldestOffset); - int endsegment = MXOffsetToMemberSegment(newOldestOffset); - int segment = startsegment; + const int64 maxsegment = MXOffsetToMemberSegment(MaxMultiXactOffset); + int64 startsegment = MXOffsetToMemberSegment(oldestOffset); + int64 endsegment = MXOffsetToMemberSegment(newOldestOffset); + int64 segment = startsegment; /* * Delete all the segments but the last one. The last segment can still diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c index 248aa1a6553..713d3bff3f9 100644 --- a/src/backend/access/transam/slru.c +++ b/src/backend/access/transam/slru.c @@ -1532,7 +1532,7 @@ restart: did_write = false; for (int slotno = 0; slotno < shared->num_slots; slotno++) { - int pagesegno; + int64 pagesegno; int curbank = SlotGetBankNumber(slotno); /* -- 2.39.3 (Apple Git-146)