Re: Restrict publishing of partitioned table with a foreign table as partition - Mailing list pgsql-hackers

From vignesh C
Subject Re: Restrict publishing of partitioned table with a foreign table as partition
Date
Msg-id CALDaNm2+eL22Sbvj74uS37xvt=haQWcOwP15QnDuVeYsjHiffw@mail.gmail.com
Whole thread Raw
In response to Re: Restrict publishing of partitioned table with a foreign table as partition  (vignesh C <vignesh21@gmail.com>)
List pgsql-hackers
On Fri, 14 Feb 2025 at 12:59, Shlok Kyal <shlok.kyal.oss@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



pgsql-hackers by date:

Previous
From: Japin Li
Date:
Subject: Incorrect translator comment for ListenServerPort()?
Next
From: Daniel Gustafsson
Date:
Subject: Re: Incorrect translator comment for ListenServerPort()?