From: | vignesh C <vignesh21(at)gmail(dot)com> |
---|---|
To: | Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com> |
Cc: | 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-10 10:40:56 |
Message-ID: | CALDaNm3KLqor8GSB7-tcEy-W5csVZ6aPLdzjQOg4uOMLALkN1w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, 4 Feb 2025 at 18:31, vignesh C <vignesh21(at)gmail(dot)com> wrote:
>
> On Thu, 30 Jan 2025 at 17:32, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com> wrote:
> >
> > @@ -1428,6 +1427,12 @@ check_foreign_tables_in_schema(Oid schemaid)
> > errdetail("foreign table \"%s\" is a partition of
> > partitioned table \"%s\"",
> > get_rel_name(foreign_tbl_relid), parent_name)));
> > }
> > + else if (relForm->relkind == RELKIND_FOREIGN_TABLE)
> > + ereport(ERROR,
> > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> > + errmsg("cannot add relation \"%s\" to publication",
> > + get_rel_name(relForm->oid)),
> > + errdetail_relkind_not_supported(RELKIND_FOREIGN_TABLE)));
> > }
> >
> > We should only throw error when foreign table is part of a partition
> > table in case of 'FOR TABLES IN SCHEMA' . We should not throw an error
> > otherwise because in case of 'FOR TABLES IN SCHEMA' foreign tables are
> > not published by default.
> >
> > I have added the changes in v3-0001.
>
> In case of all tables publication you have retrieved all the foreign
> tables and then checked if any of the foreign tables is a partition of
> a partitioned table. In case of all tables in schema publication you
> have retrieved all the partitioned tables and then check if it
> includes foreign tables. I felt you can keep the all tables in schema
> publication also similar to all tables publication(as generally the
> number of foreign tables will be lesser than the tables) i.e. retrieve
> all the foreign tables and then check if any of the foreign tables is
> a partition of a partitioned table.
I believe you chose this approach because partitioned tables can have
their partitions as foreign tables in a different schema. As a result,
the current approach works well for the 'TABLES IN SCHEMA' case. It
would be helpful to include a brief comment explaining this reasoning
where you're handling tables in the schema publication.
Regards,
Vignesh
From | Date | Subject | |
---|---|---|---|
Next Message | John Naylor | 2025-02-10 11:34:28 | Re: Fix punctuation errors in PostgreSQL documentation |
Previous Message | Zhijie Hou (Fujitsu) | 2025-02-10 09:56:49 | RE: Introduce XID age and inactive timeout based replication slot invalidation |