From: | Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com> |
---|---|
To: | vignesh C <vignesh21(at)gmail(dot)com> |
Cc: | Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Sergey Tatarintsev <s(dot)tatarintsev(at)postgrespro(dot)ru>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Restrict publishing of partitioned table with a foreign table as partition |
Date: | 2025-02-18 10:29:43 |
Message-ID: | CANhcyEUt8SfTfWpRdZBBJ=WBxH=x2-VXk5BzdJvXi=UvdwUiSA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, 17 Feb 2025 at 20:13, vignesh C <vignesh21(at)gmail(dot)com> wrote:
>
> On Fri, 14 Feb 2025 at 12:59, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)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.
>
Hi Vignesh,
I have addressed the above issue. If we take a ShareLock on the
pg_class, we won't be able to create table concurrently, which may
address the issue. Thoughts?
I have attached the v8 patch here.
Thanks and Regards,
Shlok Kyal
Attachment | Content-Type | Size |
---|---|---|
v8-0001-Restrict-publishing-of-partitioned-table-with-for.patch | application/octet-stream | 25.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Bertrand Drouvot | 2025-02-18 10:43:15 | Remove wal_[sync|write][_time] from pg_stat_wal and track_wal_io_timing |
Previous Message | Richard Guo | 2025-02-18 10:09:17 | Re: Virtual generated columns |