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: "houzj.fnst@fujitsu.com" <houzj.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>, "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>
Date: 2021-07-26T05:21:38Z
Lists: pgsql-hackers

Attachments

On Mon, Jul 26, 2021 at 8:17 AM Greg Nancarrow <gregn4422@gmail.com> wrote:
>
> On Fri, Jul 23, 2021 at 10:16 PM vignesh C <vignesh21@gmail.com> wrote:
> >
> > I have changed it to pg_pubication_schema as earlier as both you and Houzj San felt pg_publication_schema was better. This is fixed in the v14 patch attached at [1].
> > [1] - https://www.postgresql.org/message-id/CALDaNm3DTj535ezfmm8QHLOtOkcHF2ZcCfSjfR%3DVbTbLZXFRsA%40mail.gmail.com
> >
>
> Thanks, I think it looks better.
>
> On another issue, there seems to be problems with pg_dump support for
> FOR SCHEMA publications.
>
> For example:
>
>    CREATE PUBLICATION p FOR SCHEMA myschema;
>
> pg_dump is dumping:
>
>    CREATE PUBLICATION p WITH (publish = 'insert, update, delete, truncate');
>    ...
>    ALTER PUBLICATION p ADD SCHEMA p;
>
> Obviously that last line should instead be "ALTER PUBLICATION p ADD
> SCHEMA myschema;"
>
> I think the bug is caused by the following:
>
> + appendPQExpBuffer(query,
> +   "ALTER PUBLICATION %s ADD SCHEMA %s;\n",
> +   fmtId(pubsinfo->pubname), fmtId(schemainfo->dobj.name));
>
> The comment for fmtId() says:
>
>     *  Note that the returned string must be used before calling fmtId again,
>     *  since we re-use the same return buffer each time.
>
> So I think there was a reason why the ALTER PUBLICATION and ADD SCHEMA
> were previously formatted separately (and so should NOT have been
> combined).
> It should be restored to how it was in the previous patch version.

Thanks for the comment, this is modified in the v15 patch attached.

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.