Re: Proposal: Conflict log history table for Logical Replication

Dilip Kumar <dilipbalaut@gmail.com>

From: Dilip Kumar <dilipbalaut@gmail.com>
To: Nisha Moond <nisha.moond412@gmail.com>
Cc: Peter Smith <smithpb2250@gmail.com>, vignesh C <vignesh21@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, shveta malik <shveta.malik@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-21T09:51:09Z
Lists: pgsql-hackers

Attachments

On Mon, Apr 20, 2026 at 7:31 PM Nisha Moond <nisha.moond412@gmail.com> wrote:
>
> On Mon, Apr 20, 2026 at 5:25 PM Nisha Moond <nisha.moond412@gmail.com> wrote:
> >
> > On Thu, Apr 16, 2026 at 9:24 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
> > >
> > > On Fri, Apr 10, 2026 at 4:54 PM Nisha Moond <nisha.moond412@gmail.com> wrote:
> > > >
> > > > Hi Dilip,
> > > > I’m planning to review/test the feature patches, but they don’t apply
> > > > cleanly on the latest HEAD. Could you please rebase them?
> > > >
> > >  Thanks Nisha. Here is the rebased version
> >
> > Thank you Dilip. I reviewed the patches and did basic testing.
> >
> > Here are a few comments for the first two patches -
>
> Please find further comments for the document patch-0003:
>
> 1) File: /doc/src/sgml/logical-replication.sgml
> +   <xref linkend="logical-replication-conflict-log-schema"/>.
> +  </para>
> +
> +  <table id="logical-replication-conflict-log-schema">
> +   <title>Conflict Log Table Schema</title>
>
> The "replica_identity" column is missing from the schema table in docs.
> ~~~
>
> Few minor comments:
> 2) File: /doc/src/sgml/logical-replication.sgml: couple of typos in
> below change-
> -   The log format for logical replication conflicts is as follows:
> +   The <link linkend="sql-createsubscription-params-with-conflict-log-destination"><literal>conflict_log_destination</literal></link>
> +   parameter can automatically creates a dedicated conflict log
> table.  This table is created in the dedicated
> +   <literal>pg_conflict</literal> namespace.  The name of the
> conflict log table
> +   is <literal>pg_conflict_&lt;subid&gt;</literal>. The predefined
> schema of this table is
> +   detailed in
> +   <xref linkend="logical-replication-conflict-log-schema"/>.
> +  </para>
>
> 2a) "can automatically creates" / "automatically creates"
> 2b) there are double spaces after full stop.
> "conflict log table.  This table "
> " namespace.  The name of the conflict"
> ~~~
>
> 3) Commit message typo -
> Doccumentation patch / Documentation patch
> ~~~
>
> 4) File: /doc/src/sgml/ref/alter_subscription.sgml
> +      When the <link
> linkend="sql-createsubscription-params-with-conflict-log-destination"><literal>conflict_log_destination</literal></link>
> +      parameter is set to <literal>table</literal> or
> <literal>all</literal>, the system
> +      automatically creates the internal conflict log table if it
> does not already
> +      exist.
>
> The phrase “if it does not already exist” seems misleading here. The
> table shouldn’t pre-exist, as it’s always dropped and recreated when
> conflict_log_destination changes. Let me know if I’m missing any case
> where it could pre-exist.
> ~~~

Thanks Nisha for the review. All your comments make sense so I have
fixed them in the latest patch.

-- 
Regards,
Dilip Kumar
Google

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Allow logical replication conflicts to be logged to a table.

  2. Avoid orphaned objects dependencies