Fix more holes with SLRU code in need of int64 for segment numbers
authorMichael Paquier <[email protected]>
Mon, 19 Aug 2024 03:34:18 +0000 (12:34 +0900)
committerMichael Paquier <[email protected]>
Mon, 19 Aug 2024 03:34:18 +0000 (12:34 +0900)
This is a continuation of c9e24573905b, containing changes included into
the proposed  that have been missed in the actual commit.  I have
managed to miss these diffs while doing a rebase of the original .

Thanks to Noah Misch, Peter Eisentraut and Alexander Korotkov for the
pokes.

Discussion: https://postgr.es/m/92fe572d-638e-4162-aef6-1c42a2936f25@eisentraut.org
Discussion: https://postgr.es/m/20240810175055[email protected]
Back-through: 17

src/backend/access/transam/multixact.c
src/backend/access/transam/slru.c

index c601ff98a14d514d88fa3b8a9343f4c81896b9e1..b7b47ef076a9c8dded442e05c376fa3dea395559 100644 (file)
@@ -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
index 27473009b002867e8cd0000f6e5b61143ee97b6f..e7f73bf4275a14cb4afb5a21120364b7acc9f666 100644 (file)
@@ -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);
 
                /*