Re: POC: make mxidoff 64 bits

Chao Li <li.evan.chao@gmail.com>

From: Chao Li <li.evan.chao@gmail.com>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: pgsql-hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-01-05T04:34:45Z
Lists: pgsql-hackers

Attachments


> On Jan 5, 2026, at 02:06, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
> 
> Yes, you're right. Good catch! Committed the fix, thanks.
> 
> - Heikki

Hi Heikki,

I actually reviewed this patch and had a comment on slur_io.c, but I don’t know why I left my comment email in the draft box and never sent it out.

The comment was that:
```
+void
+FreeSlruRead(SlruSegState *state)
+{
+	Assert(!state->writing);	/* read only mode */
+
+	if (state->fd != -1)
+		close(state->fd);
+	pg_free(state);
+}

+void
+FreeSlruWrite(SlruSegState *state)
+{
+	Assert(state->writing);
+
+	SlruFlush(state);
+
+	if (state->fd != -1)
+		close(state->fd);
+	pg_free(state);
+}
```

In both FreeSlruRead() and FreeSlruWrite(), as we pg_free(state), I don’t see a reason why we don’t free state->dir and state->fn as well, because they are allocated by pstrdup and psrintf, which looks like memory leaks.

I made a change as the attached diff. Please see if you agree with the change.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix partial read handling in pg_upgrade's multixact conversion

  2. Increase timeout in multixid_conversion upgrade test

  3. Improve sanity checks on multixid members length

  4. Clarify comment on multixid offset wraparound check

  5. Never store 0 as the nextMXact

  6. Add runtime checks for bogus multixact offsets

  7. Widen MultiXactOffset to 64 bits

  8. Move pg_multixact SLRU page format definitions to a separate header

  9. Convert confusing macros in multixact.c to static inline functions

  10. Index SLRUs by 64-bit integers rather than by 32-bit integers

  11. Cope with possible failure of the oldest MultiXact to exist.