Hi, On 2023-01-27 19:57:35 -0800, Andrey Borodin wrote: > On Fri, Jan 27, 2023 at 7:40 PM Tom Lane <t...@sss.pgh.pa.us> wrote: > > > > What are you using it for, that you don't care whether the answer > > is trustworthy? > > > > It's not trustworthy anyway. Xid wraparound might happen during > reconnect.
I think that part would be approximately fine, as long as you can live with an answer of "too old". The xid returned by txid_status/pg_current_xact_id() is 64bit, and there is code to verify that the relevant range is covered by the clog. However - there's nothing preventing the xid to become too old in case of a crash. If you have an open connection, you can prevent the clog from being truncated by having an open snapshot. But you can't really without using e.g. 2PC if you want to handle crashes - obviously snapshots don't survive them. I really don't think txid_status() can be used for anything but informational probing of the clog / procarray. > I suspect we can design a test that will show that it does not always show > correct results during xid->2pc conversion (there is a point in time when > xid is not in regular and not in 2pc, and I'm not sure ProcArrayLock is > held). Maybe there are other edge cases. Unless I am missing something, that would be very bad [TM], completely independent of txid_status(). The underlying functions like TransactionIdIsInProgress() are used for MVCC. Greetings, Andres Freund