Re: Column Filtering in Logical Replication
Amit Kapila <amit.kapila16@gmail.com>
On Fri, Jan 14, 2022 at 7:08 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > On 2022-Jan-14, Amit Kapila wrote: > > > 1. Replica Identity handling: Currently the column filter patch gives > > an error during create/alter subscription if the specified column list > > is invalid (Replica Identity columns are missing). It also gives an > > error if the user tries to change the replica identity. However, it > > doesn't deal with cases where the user drops and adds a different > > primary key that has a different set of columns which can lead to > > failure during apply on the subscriber. > > Hmm, yeah, I suppose we should check that the primary key is compatible > with the column list in all publications. (I wonder what happens in the > interim, that is, what happens to tuples modified after the initial PK > is dropped and before the new PK is installed. Are these considered to > have "replica identiy nothing"?) > I think so. > > I think another issue w.r.t column filter patch is that even while > > creating publication (even for 'insert' publications) it should check > > that all primary key columns must be part of published columns, > > otherwise, it can fail while applying on subscriber as it will try to > > insert NULL for the primary key column. > > I'm not so sure about the primary key aspects, actually; keep in mind > that the replica can have a different table definition, and it might > have even a completely different primary key. I think this part is up > to the user to set up correctly; we have enough with just trying to make > the replica identity correct. > But OTOH, the primary key is also considered default replica identity, so I think users will expect it to work. You are right this problem can also happen if the user defined a different primary key on a replica but that is even a problem in HEAD (simple inserts will fail) but I am worried about the case where both the publisher and subscriber have the same primary key as that works in HEAD. -- With Regards, Amit Kapila.
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Doc: Explain about Column List feature.
- f98d07424523 16.0 landed
- 25996a82a446 15.0 landed
-
Doc: fix column list vs. replica identity rules.
- 376af686111e 16.0 landed
- ab3131880d8a 15.0 landed
-
Prohibit combining publications with different column lists.
- fd0b9dcebda7 15.0 cited
-
Fix the check to limit sync workers.
- be46985bed8a 10.21 landed
- a90de822e483 11.16 landed
- 59348fbdeb7b 12.11 landed
- 82d4a17a1750 13.7 landed
- c9dea58e2702 14.3 landed
- dd4ab6fd6528 15.0 landed
-
Wait for subscription to sync in t/031_column_list.sql
- 404f49338fef 15.0 landed
-
Move prattrs to the pg_publication_rel section in docs
- 41b00f8e601f 15.0 landed
-
Allow specifying column lists for logical replication
- 923def9a533a 15.0 landed
-
Fix row filters with multiple publications
- 5a079662256e 15.0 landed
-
Fix publish_as_relid with multiple publications
- 27fafee72d17 13.7 landed
- 677a1dc0ca0f 14.3 landed
- c91f71b9dc91 15.0 landed
-
Add some additional tests for row filters in logical replication.
- ceb57afd3ce1 15.0 cited
-
Add index on pg_publication_rel.prpubid
- 025b920a3d45 15.0 landed
-
Avoid using DefElemAction in AlterPublicationStmt
- 9623d8999603 15.0 landed
-
Small cleanups related to PUBLICATION framework code
- c9105dd3660f 15.0 landed
-
Add PublicationTable and PublicationRelInfo structs
- 0c6828fa987b 15.0 landed
-
Fix various concurrency issues in logical replication worker launching
- de4389712206 10.0 cited