Re: bogus: logical replication rows/cols combinations
Peter Eisentraut <peter.eisentraut@enterprisedb.com>
From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Amit Kapila <amit.kapila16@gmail.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>,
Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-04-28T12:26:25Z
Lists: pgsql-hackers
On 27.04.22 12:33, Amit Kapila wrote: > Currently, when the subscription has multiple publications, we combine > the objects, and actions of those publications. It happens for > 'publish_via_partition_root', publication actions, tables, column > lists, or row filters. I think the whole design works on this idea > even the initial table sync. I think it might need a major change > (which I am not sure about at this stage) if we want to make the > initial sync also behave similar to what you are proposing. If one publication says "publish if insert" and another publication says "publish if update", then the combination of that is clearly "publish if insert or update". Similarly, if one publication says "WHERE (foo)" and one says "WHERE (bar)", then the combination is "WHERE (foo OR bar)". But if one publication says "publish columns a and b if condition-X" and another publication says "publish columns a and c if not-condition-X", then the combination is clearly *not* "publish columns a, b, c if true". That is not logical, in the literal sense of that word. I wonder how we handle the combination of pub1: publish=insert WHERE (foo) pub2: publish=update WHERE (bar) I think it would be incorrect if the combination is pub1, pub2: publish=insert,update WHERE (foo OR bar).
Commits
-
Prohibit combining publications with different column lists.
- fd0b9dcebda7 15.0 landed
-
Extend pg_publication_tables to display column list and row filter.
- 0ff20288e1cb 15.0 landed
-
Remove dynamic_shared_memory_type=none
- bcbd940806a2 12.0 cited