Re: Added schema level support for publication.

vignesh C <vignesh21@gmail.com>

From: vignesh C <vignesh21@gmail.com>
To: "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>
Cc: Greg Nancarrow <gregn4422@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Tom Lane <tgl@sss.pgh.pa.us>, Peter Smith <smithpb2250@gmail.com>, "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-09-28T14:45:46Z
Lists: pgsql-hackers

Attachments

On Mon, Sep 27, 2021 at 12:15 PM houzj.fnst@fujitsu.com
<houzj.fnst@fujitsu.com> wrote:
>
> On Monday, September 27, 2021 12:32 PM vignesh C <vignesh21@gmail.com> wrote:
> > On Fri, Sep 24, 2021 at 11:46 AM vignesh C <vignesh21@gmail.com> wrote:
> > >
> >
> > Attached v33 patch has the preprocess_pubobj_list review comment fix
> > suggested by Alvaro at [1]. The
> > v33-0006-Alternate-grammar-for-ALL-TABLES-IN-SCHEMA.patch patch has
> > the grammar changes as suggested by Alvaro at [1]. If we agree this is better, I
> > will merge this into the 0001 patch.
> > [1] - https://www.postgresql.org/message-id/202109241325.eag5g6mpvoup%40alvherre.pgsql
>
> Hi,
>
> The grammar change basically looks good to me. Only one suggestion is that it
> will be better to add some more comments in gram.y to describe the rule
> PublicationObjSpec. Because it's a new style syntax in postgresql, people might
> wonder how the code work and why we choose this design when they first time
> see this rule in gram.y.
>
> Maybe something like the following:
>
> +/*
> + * FOR TABLE and FOR ALL TABLES IN SCHEMA specifications
> + *
> + * This rule parses publication object with and without keyword prefix.
> + *
> + * The actual type of the object without keyword prefix depends on the previous
> + * one with keyword prefix. It will be preprocessed in preprocess_pubobj_list().
> + *
> + * For the object without keyword prefix, we cannot just use relation_expr here,
> + * because some extended expression in relation_expr cannot be used as a
> + * schemaname and we cannot differentiate it. So, we extract the rules from
> + * relation_expr here.
> + */
> PublicationObjSpec:
>                         TABLE relation_expr
>                         ...
>
> My words might not be good, but I think it will be better to add some comments
> to explain a bit about the code in gram.y. Thoughts ?

Modified.

Attached v34 patch has the changes for the same.

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.