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.