Re: Skipping schema changes in publication
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Cc: vignesh C <vignesh21@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-04-28T11:31:53Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix miscellaneous issues in EXCEPT publication clause.
- 6b0550c45d13 19 (unreleased) landed
-
Change syntax of EXCEPT TABLE clause in publication commands.
- 5984ea868eee 19 (unreleased) landed
-
Add support for EXCEPT TABLE in ALTER PUBLICATION.
- 493f8c6439cf 19 (unreleased) landed
-
Allow table exclusions in publications via EXCEPT TABLE.
- fd366065e06a 19 (unreleased) landed
-
Add wait_for_subscription_sync for TAP tests.
- 0c20dd33db16 16.0 cited
On Fri, Apr 22, 2022 at 9:39 PM Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> wrote: > > On Tue, Mar 22, 2022 at 12:39 PM vignesh C <vignesh21@gmail.com> wrote: > > > > This feature adds an option to skip changes of all tables in specified > > schema while creating publication. > > This feature is helpful for use cases where the user wants to > > subscribe to all the changes except for the changes present in a few > > schemas. > > Ex: > > CREATE PUBLICATION pub1 FOR ALL TABLES SKIP ALL TABLES IN SCHEMA s1,s2; > > OR > > ALTER PUBLICATION pub1 ADD SKIP ALL TABLES IN SCHEMA s1,s2; > > > > The feature seems to be useful especially when there are lots of > schemas in a database. However, I don't quite like the syntax. Do we > have 'SKIP' identifier in any of the SQL statements in SQL standard? > After discussion, it seems EXCEPT is a preferred choice and the same is used in the other existing syntax as well. > Can we think of adding skip_schema_list as an option, something like > below? > > CREATE PUBLICATION foo FOR ALL TABLES (skip_schema_list = 's1, s2'); > ALTER PUBLICATION foo SET (skip_schema_list = 's1, s2'); - to set > ALTER PUBLICATION foo SET (skip_schema_list = ''); - to reset > Yeah, that is also an option but it seems it will be difficult to extend if want to support "all columns except (c1, ..)" for the column list feature. The other thing to decide is for which all objects we want to support EXCEPT clause as it may not be useful for everything as indicated by Peter E. and Euler. We have seen that Oracle supports "all columns except (c1, ..)" [1] and MySQL seems to support for tables [2]. I guess we should restrict ourselves to those two cases for now and then we can extend it later for schemas if required or people agree. Also, we should see the syntax we choose here should be extendable. Another idea that occurred to me today for tables this is as follows: 1. Allow to mention except during create publication ... For All Tables. CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT TABLE t1,t2; 2. Allow to Reset it. This new syntax will reset all objects in the publications. Alter Publication ... RESET; 3. Allow to add it to an existing publication Alter Publication ... Add ALL TABLES [EXCEPT TABLE t1,t2]; I think it can be extended in a similar way for schema syntax as well. [1] - https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html [2] - https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/selecting-columns.html#GUID-9A851C8B-48F7-43DF-8D98-D086BE069E20 -- With Regards, Amit Kapila.