Re: Add 64-bit XIDs into PostgreSQL 15

Maxim Orlov <orlovmg@gmail.com>

From: Maxim Orlov <orlovmg@gmail.com>
To: Yura Sokolov <y.sokolov@postgrespro.ru>
Cc: Evgeny Voropaev <evgeny.voropaev@tantorlabs.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, Andrey Borodin <x4mmm@yandex-team.ru>
Date: 2025-08-22T10:37:21Z
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 →
  1. Add SLRU tests for 64-bit page case

  2. Make use FullTransactionId in 2PC filenames

  3. Use larger segment file names for pg_notify

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

Attachments

Rebase @ 53eff471c69dc8b0c01

I revised parts of heap_convert.c's conversion from 32-bit to
64-bit pages.

Previously, we used a deferred full-page write to the converted pages
to reduce the impact on WAL. Leaving some converted pages in RAM
memory. This, however, may cause the incoming autovacuum (AV) to clean
transaction statuses for some pages depending on their XIDs. As a
result, we risk losing transaction statuses and encountering problems
like "could not open file pg_xact/...".

So I decided to abandon the delayed FPW of converted pages, as this
write is purely a one-time issue on the first read of the data after
the 64-bit upgrade.


On Tue, 15 Jul 2025 at 09:23, Maxim Orlov <orlovmg@gmail.com> wrote:

>
> Rebase @ f5a987c0e5f6bbf0
> Main conflicts were:
> 62a17a9283 Integrate FullTransactionIds deeper into two-phase code
> 2633dae2e4 Standardize LSN formatting by zero padding
>
> Also, no setting XLOG_HEAP_INIT_PAGE on empty page as discussed above
> added.
>
> On Mon, 7 Jul 2025 at 12:49, Yura Sokolov <y.sokolov@postgrespro.ru>
> wrote:
> > Wow, it is really great bug.
> It's funny that no one has actually encountered this problem in all these
> years. It must
> be a very rare mix of circumstances, I think.
>
> Thank you very much, everyone, for participating!
>
> --
> Best regards,
> Maxim Orlov.
>


-- 
Best regards,
Maxim Orlov.