On Fri, 14 Feb 2025 at 12:59, Shlok Kyal <shlok.kyal....@gmail.com> wrote: > > I have used the changes suggested by you. Also I have updated the > comments and the function name.
There is another concurrency issue possible: +/* Check if a partitioned table has a foreign partition */ +bool +check_partrel_has_foreign_table(Form_pg_class relform) +{ + bool has_foreign_tbl = false; + + if (relform->relkind == RELKIND_PARTITIONED_TABLE) + { + List *relids = NIL; + + relids = find_all_inheritors(relform->oid, NoLock, NULL); Create a publication with publish_via_partition_root as true, hold the execution after check_partrel_has_foreign_table execution finishes. Then parallely execute the following: CREATE TABLE t1(id int) PARTITION BY RANGE(id); CREATE TABLE part1 PARTITION OF t1 FOR VALUES FROM (0) TO (5); CREATE TABLE part2 PARTITION OF t1 FOR VALUES FROM (5) TO (15) PARTITION BY RANGE(id); CREATE FOREIGN TABLE part2_1 PARTITION OF part2 FOR VALUES FROM (10) TO (15) SERVER fdw Now both the partitioned table having foreign table and a publication will be created. Regards, Vignesh