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 по дате отправления: