Re: POC: make mxidoff 64 bits
Heikki Linnakangas <hlinnaka@iki.fi>
From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Maxim Orlov <orlovmg@gmail.com>, Alexander Korotkov <aekorotkov@gmail.com>
Cc: wenhui qiu <qiuwenhuifx@gmail.com>,
Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-10-22T09:43:34Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix partial read handling in pg_upgrade's multixact conversion
- ac94ce8194e5 19 (unreleased) landed
-
Increase timeout in multixid_conversion upgrade test
- bd43940b02b2 19 (unreleased) landed
-
Improve sanity checks on multixid members length
- ecb553ae8211 19 (unreleased) landed
-
Clarify comment on multixid offset wraparound check
- 170361d7b869 14.21 landed
- b0b52b7123ae 15.16 landed
- 7d42e2367c6b 16.12 landed
- cd1a887fe9bf 17.8 landed
- 3fbad030a24d 18.2 landed
- 366dcdaf5779 19 (unreleased) landed
-
Never store 0 as the nextMXact
- 87a350e1f284 19 (unreleased) landed
-
Add runtime checks for bogus multixact offsets
- d4b7bde4183b 19 (unreleased) landed
-
Widen MultiXactOffset to 64 bits
- bd8d9c9bdfa0 19 (unreleased) landed
-
Move pg_multixact SLRU page format definitions to a separate header
- bb3b1c4f6462 19 (unreleased) landed
-
Convert confusing macros in multixact.c to static inline functions
- 0099b9408e8c 17.0 landed
-
Index SLRUs by 64-bit integers rather than by 32-bit integers
- 4ed8f0913bfd 17.0 cited
-
Cope with possible failure of the oldest MultiXact to exist.
- b6a3444fa635 9.4.4 cited
On 07/09/2024 07:36, Maxim Orlov wrote: > Here is v3. MultiXactMemberFreezeThreshold looks quite bogus now. Now that MaxMultiXactOffset==2^64-1, you cannot get anywhere near the MULTIXACT_MEMBER_SAFE_THRESHOLD and MULTIXACT_MEMBER_DANGER_THRESHOLD values anymore. Can we just get rid of MultiXactMemberFreezeThreshold? I guess it would still be useful to trigger autovacuum if multixacts members grows large though, to release the disk space, even if you can't run out of members as such anymore. What should the logic for that look like? I'd love to see some tests for the pg_upgrade code. Something like a little perl script to generate test clusters with different wraparound scenarios etc. using the old version, and a TAP test to run pg_upgrade on them and verify that queries on the upgraded cluster works correctly. We don't have tests like that in the repository today, and I don't know if we'd want to commit these permanently either, but it would be highly useful now as a one-off thing, to show that the code works. On upgrade, are there really no changes required to pg_multixact/members? I imagined that the segment files would need to be renamed around wraparound, so that if you previously had files like this: pg_multixact/members/FFFE pg_multixact/members/FFFF pg_multixact/members/0000 pg_multixact/members/0001 after upgrade you would need to have: pg_multixact/members/00000000FFFE pg_multixact/members/00000000FFFF pg_multixact/members/000000010000 pg_multixact/members/000000010001 Thanks for working on this! -- Heikki Linnakangas Neon (https://neon.tech)