Re: Add 64-bit XIDs into PostgreSQL 15
Maxim Orlov <orlovmg@gmail.com>
From: Maxim Orlov <orlovmg@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Andres Freund <andres@anarazel.de>, Yura Sokolov <y.sokolov@postgrespro.ru>,
Evgeny Voropaev <evgeny.voropaev@tantorlabs.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>,
Andrey Borodin <x4mmm@yandex-team.ru>
Date: 2026-02-12T06:17:12Z
Lists: pgsql-hackers
On Tue, 10 Feb 2026 at 17:54, Robert Haas <robertmhaas@gmail.com> wrote: > Well, what three committers are telling you is that this approach has > zero chance of being accepted. > Yes, thank you; I do understand. I expressed an unpopular opinion: all XIDs in Potsgres should be 64-bit. And it is quite evident to me that no one on the committers' side supports it. But, ideally, I'd like to know why you have this opinion and what the reasons against it are, besides the fact that this will increase the size of the database. According, Michael Stonebraker, I guess he is a professor two, in [0] that: Every tuple has an immutable unique identifier (IID) that is assigned at tuple creation time and never changes. This is a 64 bit quantity assigned internally by POSTGRES. It appears that this was lost at a later time, and we are now dealing with 32-bit XIDs. There are other things about the patch set you might have more luck > getting people to change their mind. You can offer arguments why your > approach is better, or you can argue that we've misunderstood the > situation and the competing approaches are less viable than we > believe. And it's not like we're all three of us in lock step about > every single design decision here. But I would respectfully suggest > that you save arguing for the cases where there is a truly debatable > point. I typically find that I, and other people who want to get their > patches committed, generally need to accept 80-90% of the feedback > they get from pgsql-hackers and put in the effort to reshape the patch > accordingly, and then maybe 10-20% of it you can argue about and say > "well, actually, I see it differently." Please make this clear for me. Do I understand correctly that you oppose Postgres' ability to handle transactions more than an epoch apart? For me, this is more than just an argument; it is the essence of this patch. As I mentioned above, I'm currently revising the patch and will, of course, consider your suggestions. However, without converting, let's say, procarray to 64-bit, the whole point of the transition is somehow lost on me. So it's essentially a change that will simplify the logic for handling transaction IDs in some places while lowering page space and requiring additional epoch synchronization with the XIDs of every tuple. [0] https://dsf.berkeley.edu/papers/ERL-M85-95.pdf -- Best regards, Maxim Orlov.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add SLRU tests for 64-bit page case
- a60b8a58f435 17.0 landed
-
Make use FullTransactionId in 2PC filenames
- 5a1dfde8334b 17.0 landed
-
Use larger segment file names for pg_notify
- 2cdf131c46e6 17.0 landed
-
Index SLRUs by 64-bit integers rather than by 32-bit integers
- 4ed8f0913bfd 17.0 landed