Re: XID formatting and SLRU refactorings (was: Add 64-bit XIDs into PostgreSQL 15)

Maxim Orlov <orlovmg@gmail.com>

From: Maxim Orlov <orlovmg@gmail.com>
To: Pavel Borisov <pashkin.elfe@gmail.com>
Cc: Aleksander Alekseev <aleksander@timescale.com>, Postgres hackers <pgsql-hackers@lists.postgresql.org>, Japin Li <japinli@hotmail.com>, Alexander Korotkov <aekorotkov@gmail.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, Ilya Anfimov <ilan@tzirechnoy.com>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Date: 2022-03-22T11:54:56Z
Lists: pgsql-hackers

Attachments

Hi!

Here is v23. As was suggested by Alexander above, I've changed the order of
the patches and improved the commit message. Now, SLRU patch is the first.

Splitting 64 bit XIDs into a bunch of patches was done to simplify
reviewing and making commits in small portions. We have little overhead
here like removing Epoch later and now changes are based on the fact that
Epoch still exists.

In the SLRU patch we have changed SLRU page numbering from int to int64.
There were proposals to make use of SLRU pages numbers that are in fact
unsigned and change from int to uint64. I fully support this, but I'm not
sure this big SLRU refactoring should be done in this patchset. On the
other hand it seems logical to change everything in SLRU at once. I think I
need a second opinion in support of this change.

In general, I consider this patchset is ready to commit. It would be great
to deliver it in PG15.

-- 
Best regards,
Maxim Orlov.

Commits

  1. Fix more holes with SLRU code in need of int64 for segment numbers

  2. Use more consistently int64 for page numbers in SLRU-related code

  3. Improve comments in slru.{c,h} about segment name format

  4. Reorder actions in ProcArrayApplyRecoveryInfo()

  5. Fix typo in 5a1dfde8334b

  6. Fix warning due non-standard inline declaration in 4ed8f0913bfdb5f355

  7. Add SLRU tests for 64-bit page case

  8. Make use FullTransactionId in 2PC filenames

  9. Use larger segment file names for pg_notify

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

  11. Keep track of transaction commit timestamps

  12. Handle 5-char filenames in SlruScanDirectory