Remove ALL keyword from TABLES IN SCHEMA for publication
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 22 Sep 2022 17:02:25 +0000 (19:02 +0200)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 22 Sep 2022 17:02:25 +0000 (19:02 +0200)
commit790bf615ddba8a0ba3b870915d03438ce9cb7860
treec7d90ce91890f024292293bc74bac0ceaaa8d494
parentba50834551f936719450a287c0d7f1d0d769e9c9
Remove ALL keyword from TABLES IN SCHEMA for publication

This may be a bit too subtle, but removing that word from there makes
this clause no longer a perfect parallel of the GRANT variant "ALL
TABLES IN SCHEMA": indeed, for publications what we record is the schema
itself, not the tables therein, which means that any tables added to the
schema in the future are also published.  This is completely different
to what GRANT does, which is affect only the tables that exist when the
command is executed.

There isn't resounding support for this change, but there are a few
positive votes and no opposition.  Because the time to 15 RC1 is very
short, let's get this out now.

Backpatch to 15.

Discussion: https://postgr.es/m/2729c9e2-9aac-8cda-f2f4-34f2bcc18f4e
21 files changed:
doc/src/sgml/logical-replication.sgml
doc/src/sgml/ref/alter_publication.sgml
doc/src/sgml/ref/create_publication.sgml
doc/src/sgml/ref/create_subscription.sgml
doc/src/sgml/system-views.sgml
src/backend/catalog/pg_publication.c
src/backend/commands/publicationcmds.c
src/backend/parser/gram.y
src/backend/replication/pgoutput/pgoutput.c
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/t/002_pg_dump.pl
src/bin/psql/tab-complete.c
src/test/regress/expected/alter_table.out
src/test/regress/expected/object_address.out
src/test/regress/expected/publication.out
src/test/regress/sql/alter_table.sql
src/test/regress/sql/object_address.sql
src/test/regress/sql/publication.sql
src/test/subscription/t/025_rep_changes_for_schema.pl
src/test/subscription/t/028_row_filter.pl
src/test/subscription/t/031_column_list.pl