Re: BUG #18212: Functions txid_status() and pg_xact_status() return invalid status of the specified transaction
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Karina Litskevich <litskevichkarina@gmail.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, kyzevan23@mail.ru, pgsql-bugs@lists.postgresql.org
Date: 2024-02-05T13:51:02Z
Lists: pgsql-bugs
Attachments
- 0001-Fix-wrong-logic-in-TransactionIdInRecentPast-v3.patch (application/octet-stream) patch v3-0001
Hi! On Thu, Nov 30, 2023 at 7:30 AM Karina Litskevich <litskevichkarina@gmail.com> wrote: > 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. Thank you for your work on the subject. I've slightly revised the patch (attached). I'm going to push it if there are no objections. ------ Regards, Alexander Korotkov
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