From: | Nisha Moond <nisha(dot)moond412(at)gmail(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | Peter Smith <smithpb2250(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com> |
Subject: | Re: Conflict detection for multiple_unique_conflicts in logical replication |
Date: | 2025-03-19 05:41:11 |
Message-ID: | CABdArM6zpKg--6LC5oZzvz1S4L5oO-7cOCsfxkb4VqgS4ptF7g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Mar 17, 2025 at 3:20 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>
> On Thu, Mar 13, 2025 at 4:30 PM Nisha Moond <nisha(dot)moond412(at)gmail(dot)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.
>
Modified the code to use the existing ReportApplyConflict function.
> 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.
>
I have separated the "stats" part from the core patch and will post it
as a separate patch in the next version.
Please find the attached v5-0001 patch without the stats part.
--
Thanks,
Nisha
Attachment | Content-Type | Size |
---|---|---|
v5-0001-Implement-the-conflict-detection-for-multiple_uni.patch | application/octet-stream | 20.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Florents Tselai | 2025-03-19 05:43:41 | Re: like pg_shmem_allocations, but fine-grained for DSM registry ? |
Previous Message | Steven Niu | 2025-03-19 05:38:26 | Add missing PQclear for StreamLogicalLog function |