Re: Added schema level support for publication.

vignesh C <vignesh21@gmail.com>

From: vignesh C <vignesh21@gmail.com>
To: Greg Nancarrow <gregn4422@gmail.com>
Cc: "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, Ajin Cherian <itsajin@gmail.com>, Rahila Syed <rahilasyed90@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Date: 2021-07-16T10:13:11Z
Lists: pgsql-hackers
On Fri, Jul 16, 2021 at 9:25 AM Greg Nancarrow <gregn4422@gmail.com> wrote:
>
> On Wed, Jul 14, 2021 at 8:17 PM vignesh C <vignesh21@gmail.com> wrote:
> >
> > Thanks for your comments, the attached v11 patch fixes the issues.
> >
>
> Thanks for your work on this.
>
> I have some minor review comments on the documentation:
>
> (1) wrong link (uses altersubscription instead of alterpublication)
> doc/src/sgml/catalogs.sgml
>
> BEFORE:
> +       created as an empty publication type. When a table or schema is
added to
> +       the publication using <link linkend="sql-altersubscription">
> +       <command>ALTER PUBLICATION</command></link> then the publication
type
>
> AFTER:
> +       created as an empty publication type. When a table or schema is
added to
> +       the publication using <link linkend="sql-alterpublication">
> +       <command>ALTER PUBLICATION</command></link> then the publication
type

Modified.

> (2) Improve wording and suggest "or" instead of "and"
> doc/src/sgml/catalogs.sgml
>
> BEFORE:
> +       If a publication is created without specifying any of
> +       <literal>FOR ALL TABLES</literal>, <literal>FOR TABLE</literal>
and
> +       <literal>FOR SCHEMA</literal> option, then the publication will be
>
> AFTER:
> +       If a publication is created without specifying any of the
> +       <literal>FOR ALL TABLES</literal>, <literal>FOR TABLE</literal> or
> +       <literal>FOR SCHEMA</literal> options, then the publication will
be

Modified.

> (3) space at start of literal
> doc/src/sgml/catalogs.sgml
>
> +   and <literal> FOR SCHEMA</literal>, so for such publications there
will be a

Modified.

> (4) Should say "variants of this command change ..." ?
>
> +   The fourth, fifth and sixth variants change which schemas are part of
the

Modified.

>
> Also, there seems to be an issue with ALTER PUBLICATION ... SET SCHEMA ...
> (PubType is getting set to 'e' instead of 's'
>
> test_pub=# create publication pub1;
> CREATE PUBLICATION
> test_pub=# create table myschema.test(i int);
> CREATE TABLE
> test_pub=# alter publication pub1 set schema myschema;
> ALTER PUBLICATION
> test_pub=# \dRp pub1
>                                    List of publications
>  Name | Owner | All tables | Inserts | Updates | Deletes | Truncates |
> Via root | PubType
>
------+-------+------------+---------+---------+---------+-----------+----------+---------
>  pub1 | gregn | f          | t       | t       | t       | t         |
> f        | e
> (1 row)
>
> test_pub=# alter publication pub1 add table test;
> ALTER PUBLICATION
> test_pub=# \dRp pub1
>                                    List of publications
>  Name | Owner | All tables | Inserts | Updates | Deletes | Truncates |
> Via root | PubType
>
------+-------+------------+---------+---------+---------+-----------+----------+---------
>  pub1 | gregn | f          | t       | t       | t       | t         |
> f        | t
> (1 row)
>
>
> When I use "ADD SCHEMA" instead of "SET SCHEMA" on an empty
> publication, it seems OK.

Modified.

Thanks for the comments, these issues are fixed as part of the v12 patch
posted at [1].
[1]  -
https://www.postgresql.org/message-id/CALDaNm3V9ny5dJM8nofLGJ3zDuDG0gS2dX%2BAhDph--U5y%2B4VbQ%40mail.gmail.com

Regards,
Vignesh

Commits

  1. Include schema/table publications even with exclude options in dump.

  2. Rename some enums to use TABLE instead of REL.

  3. Add tap tests for the schema publications.

  4. Allow publishing the tables of schema.

  5. In pg_dump, use simplehash.h to look up dumpable objects by OID.