From: | "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, shveta malik <shveta(dot)malik(at)gmail(dot)com> |
Cc: | "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Jan Wieck <jan(at)wi3ck(dot)info>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
Subject: | RE: Conflict detection and logging in logical replication |
Date: | 2024-08-19 07:02:19 |
Message-ID: | OS0PR01MB571667532CF59906EBDD5138948C2@OS0PR01MB5716.jpnprd01.prod.outlook.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Monday, August 19, 2024 2:40 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>
> On Mon, Aug 19, 2024 at 11:54 AM shveta malik <shveta(dot)malik(at)gmail(dot)com>
> wrote:
> >
> > On Mon, Aug 19, 2024 at 11:37 AM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
> wrote:
> > >
> > > On Mon, Aug 19, 2024 at 9:08 AM shveta malik <shveta(dot)malik(at)gmail(dot)com>
> wrote:
> > > >
> > > > On Sun, Aug 18, 2024 at 2:27 PM Zhijie Hou (Fujitsu)
> > > > <houzj(dot)fnst(at)fujitsu(dot)com> wrote:
> > > > >
> > > > > Attach the V16 patch which addressed the comments we agreed on.
> > > > > I will add a doc patch to explain the log format after the 0001 is RFC.
> > > > >
> > > >
> > > > Thank You for addressing comments. Please see this scenario:
> > > >
> > > > create table tab1(pk int primary key, val1 int unique, val2 int);
> > > >
> > > > pub: insert into tab1 values(1,1,1);
> > > > sub: insert into tab1 values(2,2,3);
> > > > pub: update tab1 set val1=2 where pk=1;
> > > >
> > > > Wrong 'replica identity' column logged? shouldn't it be pk?
> > > >
> > > > ERROR: conflict detected on relation "public.tab1":
> > > > conflict=update_exists
> > > > DETAIL: Key already exists in unique index "tab1_val1_key",
> > > > modified locally in transaction 801 at 2024-08-19 08:50:47.974815+05:30.
> > > > Key (val1)=(2); existing local tuple (2, 2, 3); remote tuple (1,
> > > > 2, 1); replica identity (val1)=(1).
> > > >
> > >
> > > The docs say that by default replica identity is primary_key [1]
> > > (see REPLICA IDENTITY),
> >
> > yes, I agree. But here the importance of dumping it was to know the
> > value of RI as well which is being used as an identification of row
> > being updated rather than row being conflicted. Value is logged
> > correctly.
> >
>
> Agreed, sorry, I misunderstood the problem reported. I thought the suggestion
> was to use 'primary key' instead of 'replica identity' but you pointed out that the
> column used in 'replica identity' was wrong.
> We should fix this one.
Thanks for reporting the bug. I have fixed it and ran pgindent in V17 patch.
I also adjusted few comments and fixed a typo.
Best Regards,
Hou zj
Attachment | Content-Type | Size |
---|---|---|
v17-0001-Detect-and-log-conflicts-in-logical-replication.patch | application/octet-stream | 64.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | shveta malik | 2024-08-19 07:03:04 | Re: Conflict detection and logging in logical replication |
Previous Message | Heikki Linnakangas | 2024-08-19 06:49:41 | Re: Refactoring postmaster's code to cleanup after child exit |