On Thu, Mar 13, 2025 at 4:30 PM Nisha Moond <nisha.moond...@gmail.com> wrote: > > Attached is the v4 patch (test case changes only). >
Comments: ========= 1. + /* + * Report an INSERT_EXISTS or UPDATE_EXISTS conflict when only one unique + * constraint is violated. + */ + if (conflicts == 1) + { + Oid uniqueidx; + RepOriginId origin; + TimestampTz committs; + TransactionId xmin; + + uniqueidx = linitial_oid(conflictIndexes); + conflictslot = linitial(conflictSlots); + + GetTupleTransactionInfo(conflictslot, &xmin, &origin, &committs); + ReportApplyConflict(estate, resultRelInfo, ERROR, type, + searchslot, conflictslot, remoteslot, + uniqueidx, xmin, origin, committs); + } + + /* + * Report MULTIPLE_UNIQUE_CONFLICTS when two or more unique constraints + * are violated. + */ + else if (conflicts > 1) + ReportMultipleUniqueConflict(estate, resultRelInfo, ERROR, + CT_MULTIPLE_UNIQUE_CONFLICTS, + searchslot, remoteslot, + conflictSlots, conflictIndexes); It looks a bit odd to have different functions for one or multiple conflicts. We can improve this coding pattern by extending the current function ReportApplyConflict to report one or multiple conflicts depending on the length of conflictSlots. 2. From the commit message: "Also, the patch adds a new column 'confl_multiple_unique_conflicts' in view pg_stat_subscription_stats to support stats collection for this conflict type.". This part can be split into a second patch. Let's try to get the core patch first. -- With Regards, Amit Kapila.