Re: Proposal: Conflict log history table for Logical Replication

From: Dilip Kumar <dilipbalaut(at)gmail(dot)com>
To: shveta malik <shveta(dot)malik(at)gmail(dot)com>
Cc: Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Proposal: Conflict log history table for Logical Replication
Date: 2026-04-27 16:21:00
Message-ID: CAFiTN-tD9BayZPgkz5AB=kedyzPZajjSU10ELx+wJzyB9+WNmg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Apr 27, 2026 at 3:08 PM shveta malik <shveta(dot)malik(at)gmail(dot)com> wrote:
>
> Few comments on 001 alone:
>
>
> 1)
> postgres=# create publication pub1 for all tables except (table temp_table);
> ERROR: cannot specify relation "temp_table" in the publication EXCEPT clause
> DETAIL: This operation is not supported for temporary tables.
>
> postgres=# create publication pub1 for all tables except (table
> pg_conflict.pg_conflict_16395);
> ERROR: cannot add relation "pg_conflict.pg_conflict_16395" to publication
> DETAIL: This operation is not supported for conflict log tables.
>
> We shall change the error message for CLT in alignement with new
> EXCEPT error message added recently.

Yeah we should do that. I see the string we used in
check_publication_add_relation() is non-schema qualified e.g. If you
see the example below, the schemaname is omitted in the error message.
Ideally, I would like this to be schema qualified but that can be
fixed separately. Therefore, I think we can use the same "errormsg"
for throwing the error for the conflict log table as well

postgres[750473]=# create publication pub1 for all tables except
(table pg_temp_7.temp_table);
ERROR: 22023: cannot specify relation "temp_table" in the publication
EXCEPT clause
DETAIL: This operation is not supported for temporary tables.
LOCATION: check_publication_add_relation, pg_publication.c:90

> 2)
> \dRs+
> List of subscriptions
>
> Name | .... Conflict log destination | Conflict log table
> sub1 | table | pg_conflict_16395
>
> I know we discussed earlier whether to qualify the CLT with the schema
> name in the above output, and one of us suggested it was not needed.
> But on revisiting this thread, I wonder if including the
> schema-qualified name would be useful, as it makes it easier for users
> to refer to it quickly when needed. It took me a while to recall the
> schema name here.

Yeah we can add schema name, I would change this.

> 3)
> Also I would like to know which one is better here:
>
> \dRs+ giving 'Conflict log table' in tabular format (current way)
>
> Or giving it as 'Conflict log table' at the end, like:
>
> Conflict Log Table:
> "pg_conflict.pg_conflict_16395"
>
> I’m slightly inclined toward option 2, similar to how \dRp shows
> “Tables” and “Except tables” at the end; it catches the eye faster.
> But I don't have a strong opinion here. I'd be interested to hear what
> others think.

I am not completely convinced, but I don't have a strong opinion
against it, so as you said, let's hear from others as well.

> 4)
> When we create CLT during create-sub or alter-sub, can we please log
> it to logile, something like:
> LOG: created conflict log table "pg_conflict.pg_conflict_16395" for
> subscription "sub1"

I will change this in the new version

--
Regards,
Dilip Kumar
Google

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Dmitry Dolgov 2026-04-27 16:24:13 Randomize B-Tree page split location to avoid oscillating patterns
Previous Message Marco Nenciarini 2026-04-27 16:00:45 Re: BUG: Cascading standby fails to reconnect after falling back to archive recovery