Hi, On 4/4/23 1:43 PM, Amit Kapila wrote:
On Tue, Apr 4, 2023 at 3:14 PM Drouvot, Bertrand <[email protected]> wrote:+static inline bool +LogicalReplicationSlotXidsConflict(ReplicationSlot *s, TransactionId xid) +{ + TransactionId slot_xmin; + TransactionId slot_catalog_xmin; + + slot_xmin = s->data.xmin; + slot_catalog_xmin = s->data.catalog_xmin; + + return (((TransactionIdIsValid(slot_xmin) && TransactionIdPrecedesOrEquals(slot_xmin, xid)) || For logical slots, slot->data.xmin will always be an InvalidTransactionId. It will only be set/updated for physical slots. So, it is not clear to me why in this and other related functions, you are referring to and or invalidating it.
I think you're right that invalidating/checking only on the catalog xmin is enough for logical slot (I'm not sure how I ended up taking the xmin into account but that seems useless indeed). I'll submit a new version to deal with the catalog xmin only, thanks! Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
