On Wed, 26 Aug 2026 at 18:26, Dilip Kumar <[email protected]> wrote:
>
> I didn’t check the script but if publisher has set the RI full then isn’t we 
> should say RI is full, publisher is the one defining what should be RI am I 
> missing something?

I don't think this is necessarily true. The publisher's replica
identity determines the identity information sent in the logical
change, whereas the conflict log records the local relation's replica
identity on the subscriber.
For example, both publisher tables can have RI full:
CREATE TABLE tab1 (a int, b text);
ALTER TABLE tab1 REPLICA IDENTITY FULL;
CREATE TABLE tab2 (a int, b text);
ALTER TABLE tab2 REPLICA IDENTITY FULL;

But on the subscriber, one table has primary key and another table has RI full:
CREATE TABLE tab1 (a int PRIMARY KEY, b text);
CREATE TABLE tab2 (a int, b text);
ALTER TABLE tab2 REPLICA IDENTITY FULL;

Generate update_origin_differs conflict for both the tables.

The conflict log then shows:
 relname | replica_identity_full
---------+-----------------------
 tab1    | f
 tab2    | t

If replica_identity_full represented the publisher's RI, both would be
true. The different values show that it represents the subscriber's
local RI.

Regards,
Vignesh


Reply via email to