Re: PostgreSQL 16 bug feedback - Mailing list pgsql-hackers

From yexiu-glory
Subject Re: PostgreSQL 16 bug feedback
Date
Msg-id tencent_C96116A882BE19DFA694E4D98E7C331FA809@qq.com
Whole thread Raw
In response to Re: PostgreSQL 16 bug feedback  (Laurenz Albe <laurenz.albe@cybertec.at>)
List pgsql-hackers
On Thu, 2025-07-18 at 00:21, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> On Thu, 2025-07-17 at 19:41 +0800, yexiu-glory wrote:
> > I encountered a problem in PostgreSQL 16:
> > In db1, there is a user table with fields id, name, phone, and createtime
> > db2 replicates the user table from db1 through logical replication, specifying the fields as id, name, and createtime
> > Then, in db1, perform the following operation: alter table user replica identity full;
> > Then, modifying or deleting a record in the user table will result in an error,
> > The error message for modification is as follows, and similar errors also occur when deleting.
> > update "public"."user" set name='aaa’where id = 20005
> > > ERROR: cannot update table "user"DETAIL: Column list used by the publication does not cover the replica identity.
>
> That's not a bug.
> To make that replication work, you must have excluded the column "phone" from
> the list of published columns.  So it cannot be a part of the replica identity,
> the set of columns used in the WHERE condition on the subscriber.
>
> Stick with REPLICA IDENTITY DEFAULT.
>


I think it would be better if, when using the command "alter table user replica identity full" and specifying columns, the full-state synchronization should also synchronize all the specified fields?

pgsql-hackers by date:

Previous
From: "yexiu-glory"
Date:
Subject: Re: PostgreSQL 16 bug feedback
Next
From: "David G. Johnston"
Date:
Subject: Re: PostgreSQL 16 bug feedback