Re: Added schema level support for publication.

Amit Kapila <amit.kapila16@gmail.com>

From: Amit Kapila <amit.kapila16@gmail.com>
To: Peter Smith <smithpb2250@gmail.com>
Cc: "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>, vignesh C <vignesh21@gmail.com>, Greg Nancarrow <gregn4422@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Tom Lane <tgl@sss.pgh.pa.us>, 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-11-09T09:21:12Z
Lists: pgsql-hackers
On Tue, Nov 9, 2021 at 7:20 AM Peter Smith <smithpb2250@gmail.com> wrote:
>
> FYI -  I spotted a trivial SQL mistake (?) of the schema publication patch [1].
>
> See the file describe.c, function describeOneTableDetails.
> The new SQL has a 3rd UNION that looks like:
>
> ...
> "UNION\n"
> "SELECT pubname\n"
> "FROM pg_catalog.pg_publication p\n"
> "WHERE puballtables AND pg_catalog.pg_relation_is_publishable('%s')\n"
> "ORDER BY 1;",
> oid, oid, oid, oid);
>
> Notice that there is a table alias "p" but it is never used. It seems
> to me like it is just an accidental omission. I think it should be
> written like -
>
> BEFORE:
> "WHERE puballtables AND pg_catalog.pg_relation_is_publishable('%s')\n"
> AFTER:
> "WHERE p.puballtables AND pg_catalog.pg_relation_is_publishable('%s')\n"
>
> Doing this will make it consistent with the SQL of the nearby "else"
> case which uses the same alias as expected.
>

The above makes sense to me. So, pushed a fix for this along with
Vignesh's patch to fix other comments related to this work.

-- 
With Regards,
Amit Kapila.



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.