Re: BUG #18212: Functions txid_status() and pg_xact_status() return invalid status of the specified transaction
Karina Litskevich <litskevichkarina@gmail.com>
From: Karina Litskevich <litskevichkarina@gmail.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: kyzevan23@mail.ru, pgsql-bugs@lists.postgresql.org
Date: 2023-11-30T05:30:36Z
Lists: pgsql-bugs
Attachments
- v2-0001-Fix-TransactionIdInRecentPast.patch (text/x-patch) patch v2-0001
On Tue, Nov 28, 2023 at 8:20 AM Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote: > I considered bringing this down to a comparison of 32-bit XIDs, but > couldn't come up with a clean method. Therefore, using full XID seems > to be the right approach. However, it seems like there is an error in > the XID comparison condition. There are cases where oldest_xid and > now_epoch_next_xid can have the same value. If we skip running > txid_current() in the repro in the your previous mail, and directly > execute txid_status(3), it would lead to assertion failure. > Thank you for your feedback! You're right, I haven't thought about this corner case. Fixed in v2. Also, I feel the comments could be more straight forward and simple > like this: > > > Convert oldest_xid into a full XID to compare with the given > > XID. Alghouth it's guaranteed that the the oldest and newest XIDs > > are within the XID wraparound distance, they may have different > > epochs. > I tried to improve the comment too. Anyway, don't hesitate to change it to whatever you like better. Best regards, Karina Litskevich Postgres Professional: http://postgrespro.com/
Commits
-
Fix wrong logic in TransactionIdInRecentPast()
- d44060cfcc49 12.19 landed
- 4efaf4b09e8f 13.15 landed
- 18388291aab8 14.12 landed
- 503299b7f728 15.7 landed
- e3e05addee42 16.3 landed
- 165d921c9a88 17.0 landed