Re: Should we add xid_current() or a int8->xid cast?
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Fujii Masao <masao.fujii@oss.nttdata.com>
Cc: Mark Dilger <hornschnorter@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2020-03-20T22:14:13Z
Lists: pgsql-hackers
Attachments
- v7-0001-Add-SQL-type-xid8-to-expose-FullTransactionId-to-.patch (text/x-patch) patch v7-0001
- v7-0002-Introduce-xid8-variants-of-the-txid_XXX-fmgr-func.patch (text/x-patch) patch v7-0002
On Fri, Feb 14, 2020 at 6:31 PM Thomas Munro <thomas.munro@gmail.com> wrote: > On Wed, Jan 29, 2020 at 12:43 AM Fujii Masao <masao.fujii@oss.nttdata.com> wrote: > > /* > > - * do a TransactionId -> txid conversion for an XID near the given epoch > > + * Do a TransactionId -> fxid conversion for an XID that is known to precede > > + * the given 'next_fxid'. > > */ > > -static txid > > -convert_xid(TransactionId xid, const TxidEpoch *state) > > +static FullTransactionId > > +convert_xid(TransactionId xid, FullTransactionId next_fxid) > > > > As the comment suggests, this function assumes that "xid" must > > precede "next_fxid". But there is no check for the assumption. > > Isn't it better to add, e.g., an assertion checking that? > > Or convert_xid() should handle the case where "xid" follows > > "next_fxid" like the orignal convert_xid() does. That is, don't > > apply the following change. > > > > - if (xid > state->last_xid && > > - TransactionIdPrecedes(xid, state->last_xid)) > > + if (xid > next_xid) > > epoch--; > > - else if (xid < state->last_xid && > > - TransactionIdFollows(xid, state->last_xid)) > > - epoch++; I don't think it is reachable. I have renamed the function to widen_snapshot_xid() and rewritten the comments to explain the logic. The other changes in this version: * updated OIDs to avoid collisions * added btequalimage to btree/xid8_ops
Commits
-
Introduce xid8-based functions to replace txid_XXX.
- 4c04be9b05ad 13.0 landed
-
Add SQL type xid8 to expose FullTransactionId to users.
- aeec457de8a8 13.0 landed
-
Replace the former method of determining snapshot xmax --- to wit, calling
- 6bd4f401b0cb 8.3.0 cited