On Thu, Oct 21, 2021 at 3:25 AM vignesh C <vignes...@gmail.com> wrote: > > Attached v44 patch as the fixes for the same. >
In the v44-0001 patch, I have some doubts about the condition guarding the following code in pg_get_publication_tables(): + if (schemarelids) + { + /* + * If the publication publishes partition changes via their + * respective root partitioned tables, we must exclude + * partitions in favor of including the root partitioned + * tables. Otherwise, the function could return both the child + * and parent tables which could cause data of the child table + * to be double-published on the subscriber side. + * + * XXX As of now, we do this when a publication has associated + * schema or for all tables publication. See + * GetAllTablesPublicationRelations(). + */ + tables = list_concat_unique_oid(relids, schemarelids); + if (publication->pubviaroot) + tables = filter_partitions(tables); + } Shouldn't a partition be filtered out only if publication->pubviaroot and the partition belongs to a schema (i.e. ALL TABLES IN SCHEMA) included in the publication? The current code seems to filter out partitions of partitioned tables included in the publication if ANY schemas are included as part of the publication (e.g. which could be a schema not including any partitioned tables or partitions). Regards, Greg Nancarrow Fujitsu Australia