Re: bogus: logical replication rows/cols combinations
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Amit Kapila <amit.kapila16@gmail.com>,
Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-05-02T18:40:08Z
Lists: pgsql-hackers
On 5/2/22 19:51, Alvaro Herrera wrote: > On 2022-May-02, Tomas Vondra wrote: > >> pgoutput.c is relies on relcache callbacks to get notified of changes. >> See the stuff that touches replicate_valid and publications_valid. So >> the walsender should notice the changes immediately. > > Hmm, I suppose that makes any changes easy enough to detect. We don't > need a separate signalling mechanism. > > But it does mean that the walsender needs to test the consistency of > [rowfilter, column list, published actions] whenever they change for any > of the current publications and it is working for more than one, and > disconnect if the combination no longer complies with the rules. By the > next time the replica tries to connect, START_REPLICATION will throw the > error. > >> Why would we need to know publications replicated by other walsenders? >> And what if the subscriber is not connected at the moment? In that case >> there'll be no walsender. > > Sure, if the replica is not connected then there's no issue -- as you > say, that replica will fail at START_REPLICATION time. > Right, I got confused a bit. Anyway, I think the main challenge is defining what exactly we want to check, in order to ensure "sensible" behavior, without preventing way too many sensible use cases. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
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