On Mon, Feb 9, 2026 at 9:07 PM Shinya Kato <[email protected]> wrote: > > On Mon, Feb 9, 2026 at 1:24 AM Tom Lane <[email protected]> wrote: > > > > =?UTF-8?Q?=C3=81lvaro_Herrera?= <[email protected]> writes: > > > On 2026-02-08, Shinya Kato wrote: > > >> Since pg_current_xact_id() returns xid8 which does not support > > >> arithmetic operators, places that need "xid + 1" cast the result via > > >> ::text::bigint first. > > > > > I think it may be better to add some operators, or was there a rationale > > > for these not being there? > > > > I'm fairly concerned about overloading the arithmetic operators with > > unsigned versions. The reason we never invented SQL-level uint8 and > > such is fear of getting a lot of "ambiguous operator" errors. Now, > > if we are careful not to create implicit casts between xid[8] and > > any ordinary type, maybe it'd be okay to invent xid+int, xid8-int, > > and a few more. > > Got it. I’ll give it a try, thanks.
I have added the + and - operators for the xid8 type in the v2-0001 patch. This allows for direct arithmetic and eliminates the need for casting through text and bigint. Specifically, I implemented: xid8 + int8 -> xid8 int8 + xid8 -> xid8 xid8 - int8 -> xid8 xid8 - xid8 -> int8 Additionally, the v2-0002 patch removes the existing ::text::bigint casts where they are no longer necessary. -- Best regards, Shinya Kato NTT OSS Center
v2-0001-Add-arithmetic-operators-for-xid8.patch
Description: Binary data
v2-0002-Use-pg_current_xact_id-instead-of-deprecated-txid.patch
Description: Binary data
