RE: Added schema level support for publication.
Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
From: "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>
To: vignesh C <vignesh21@gmail.com>
Cc: "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, Greg Nancarrow <gregn4422@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Peter
Eisentraut <peter.eisentraut@enterprisedb.com>, Tom Lane <tgl@sss.pgh.pa.us>, Peter Smith <smithpb2250@gmail.com>, Ajin Cherian <itsajin@gmail.com>, Rahila
Syed <rahilasyed90@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>
Date: 2021-10-16T05:57:08Z
Lists: pgsql-hackers
Attachments
- v40-Topup-partition-fix.patch (application/octet-stream) patch v40
- v40-0001-Added-schema-level-support-for-publication.patch (application/octet-stream) patch v40-0001
- v40-0002-Client-side-changes-to-support-FOR-ALL-TABLES-IN.patch (application/octet-stream) patch v40-0002
- v40-0003-Tests-for-FOR-ALL-TABLES-IN-SCHEMA-publication.patch (application/octet-stream) patch v40-0003
- v40-0004-Documentation-for-FOR-ALL-TABLES-IN-SCHEMA-publi.patch (application/octet-stream) patch v40-0004
- v40-0005-Implemented-pg_publication_objects-view.patch (application/octet-stream) patch v40-0005
On Wednesday, October 13, 2021 10:49 AM Hou, Zhijie wrote: > On Tuesday, October 12, 2021 9:15 PM vignesh C <vignesh21@gmail.com> > > Attached v40 patch has the fix for the above comments. > > Thanks for the update, I have some minor issues about partition related > behavior. > > 1) > > Tang tested and discussed this issue with me. > The testcase is: > We publish a schema and there is a partition in the published schema. If > publish_via_partition_root is on and the partition's parent table is not in the > published schema, neither the change on the partition nor the parent table will > not be published. > > But if we publish by FOR TABLE partition and set publish_via_partition_root to > on, the change on the partition will be published. So, I think it'd be better to > publish the change on partition for FOR ALL TABLES IN SCHEMA case if its parent > table > is not published in the same publication. > > It seems we should pass publication oid to the GetSchemaPublicationRelations() > and add some check like the following: > 2) > I think a partitioned table could also be a partition which should not be > appended to the list. I think we should also filter these cases here by same > check in 1). After some offline discussion with Vignesh and Amit. I found my proposed fix can be improved because it brings some overhead to functions which could be invoked many times for the same publication. Now, I think it'd be better to add this check in GetAllSchemaPublicationRelations and GetPublicationRelations. Besides, I found we misunderstood the flag PUBLICATION_PART_ROOT it means: "ROOT: only the table explicitly mentioned in the publication" We cannot use it as a flag to judge whether do the partition filtering, I think we need to pass the actual pubviaroot flag. Based on the V40 patchset, attaching the Top-up patch which try to fix the partition issue in a cleaner way. Best regards, Hou zj
Commits
-
Include schema/table publications even with exclude options in dump.
- 4aa6fa3cd0a2 18.0 landed
-
Rename some enums to use TABLE instead of REL.
- b3812d0b9bcf 15.0 landed
-
Add tap tests for the schema publications.
- 6b0f6f79eef2 15.0 landed
-
Allow publishing the tables of schema.
- 5a2832465fd8 15.0 landed
-
In pg_dump, use simplehash.h to look up dumpable objects by OID.
- 92316a4582a5 15.0 cited