RE: Conflict detection and logging in logical replication

Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>

From: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
To: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, shveta malik <shveta.malik@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, Nisha Moond <nisha.moond412@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Dilip Kumar <dilipbalaut@gmail.com>, Jan Wieck <jan@wi3ck.info>, Peter Smith <smithpb2250@gmail.com>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Date: 2024-08-28T04:14:11Z
Lists: pgsql-hackers

Attachments

On Wednesday, August 28, 2024 12:11 PM  Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote:
> > > > Peter Smith mentioned to me off-list that the names of conflict
> > > > types 'update_differ' and 'delete_differ' are not intuitive as
> > > > compared to all other conflict types like insert_exists,
> > > > update_missing, etc. The other alternative that comes to mind for
> > > > those conflicts is to name them as
> > 'update_origin_differ'/''delete_origin_differ'.
> > > >
> > >
> > > For things to "differ" there must be more than one them. The plural
> > > of origin is origins.
> > >
> > > e.g. 'update_origins_differ'/''delete_origins_differ'.
> > >
> > > OTOH, you could say "differs" instead of differ:
> > >
> > > e.g. 'update_origin_differs'/''delete_origin_differs'.
> > >
> >
> > +1 on 'update_origin_differs' instead of 'update_origins_differ' as
> > the former is somewhat similar to other conflict names 'insert_exists'
> > and 'update_exists'.
> 
> Since we reached a consensus on this, I am attaching a small patch to rename
> as suggested.

Sorry, I attached the wrong patch. Here is correct one.

Best Regards,
Hou zj

Commits

  1. Rename the conflict types for the origin differ cases.

  2. Doc: explain the log format of logical replication conflicts.

  3. Log the conflicts while applying changes in logical replication.

  4. Avoid duplicate table scans for cross-partition updates during logical replication.