Re: Conflict detection for multiple_unique_conflicts in logical replication
От | Amit Kapila |
---|---|
Тема | Re: Conflict detection for multiple_unique_conflicts in logical replication |
Дата | |
Msg-id | CAA4eK1K0kEt+wQVQd6ySdEb-BbCo93UoY=BPXJ7+rK4Ff3nW1A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Conflict detection for multiple_unique_conflicts in logical replication (Nisha Moond <nisha.moond412@gmail.com>) |
Ответы |
Re: Conflict detection for multiple_unique_conflicts in logical replication
|
Список | pgsql-hackers |
On Thu, Mar 13, 2025 at 4:30 PM Nisha Moond <nisha.moond412@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.
В списке pgsql-hackers по дате отправления: