From 1fe33252a08c285de9e84615cfde0569b9a75e58 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 17 Apr 2017 09:14:22 -0400 Subject: [PATCH] Document that ONLY can be specified in publication commands Author: Amit Langote --- doc/src/sgml/ref/alter_publication.sgml | 12 ++++++++---- doc/src/sgml/ref/create_publication.sgml | 9 +++++++-- src/test/regress/expected/publication.out | 23 +++++++++++++++++++++++ src/test/regress/sql/publication.sql | 10 ++++++++++ 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/ref/alter_publication.sgml b/doc/src/sgml/ref/alter_publication.sgml index 0a965b3bbf..858231fbcb 100644 --- a/doc/src/sgml/ref/alter_publication.sgml +++ b/doc/src/sgml/ref/alter_publication.sgml @@ -31,9 +31,9 @@ ALTER PUBLICATION name WITH ( name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } ALTER PUBLICATION name RENAME TO new_name -ALTER PUBLICATION name ADD TABLE table_name [, ...] -ALTER PUBLICATION name SET TABLE table_name [, ...] -ALTER PUBLICATION name DROP TABLE table_name [, ...] +ALTER PUBLICATION name ADD TABLE [ ONLY ] table_name [ * ] [, ...] +ALTER PUBLICATION name SET TABLE [ ONLY ] table_name [ * ] [, ...] +ALTER PUBLICATION name DROP TABLE [ ONLY ] table_name [ * ] [, ...] @@ -116,7 +116,11 @@ ALTER PUBLICATION name DROP TABLE < table_name - Name of an existing table. + Name of an existing table. If ONLY is specified before the + table name, only that table is affected. If ONLY is not + specified, the table and all its descendant tables (if any) are + affected. Optionally, * can be specified after the table + name to explicitly indicate that descendant tables are included. diff --git a/doc/src/sgml/ref/create_publication.sgml b/doc/src/sgml/ref/create_publication.sgml index 3cdde801fa..0369b579c5 100644 --- a/doc/src/sgml/ref/create_publication.sgml +++ b/doc/src/sgml/ref/create_publication.sgml @@ -22,7 +22,7 @@ PostgreSQL documentation CREATE PUBLICATION name - [ FOR TABLE table_name [, ...] + [ FOR TABLE [ ONLY ] table_name [ * ] [, ...] | FOR ALL TABLES ] [ WITH ( option [, ... ] ) ] @@ -68,7 +68,12 @@ CREATE PUBLICATION name FOR TABLE - Specifies a list of tables to add to the publication. + Specifies a list of tables to add to the publication. If + ONLY is specified before the table name, only + that table is added to the publication. If ONLY is not + specified, the table and all its descendant tables (if any) are added. + Optionally, * can be specified after the table name to + explicitly indicate that descendant tables are included. diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out index 0964718a60..5b7fb674da 100644 --- a/src/test/regress/expected/publication.out +++ b/src/test/regress/expected/publication.out @@ -71,6 +71,29 @@ Publications: DROP TABLE testpub_tbl2; DROP PUBLICATION testpub_foralltables; +CREATE TABLE testpub_tbl3 (a int); +CREATE TABLE testpub_tbl3a (b text) INHERITS (testpub_tbl3); +CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3; +CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3; +\dRp+ testpub3 + Publication testpub3 + Inserts | Updates | Deletes +---------+---------+--------- + t | t | t +Tables: + "public.testpub_tbl3" + "public.testpub_tbl3a" + +\dRp+ testpub4 + Publication testpub4 + Inserts | Updates | Deletes +---------+---------+--------- + t | t | t +Tables: + "public.testpub_tbl3" + +DROP TABLE testpub_tbl3, testpub_tbl3a; +DROP PUBLICATION testpub3, testpub4; -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; ERROR: "testpub_view" is not a table diff --git a/src/test/regress/sql/publication.sql b/src/test/regress/sql/publication.sql index 85530bec0e..b118bc9906 100644 --- a/src/test/regress/sql/publication.sql +++ b/src/test/regress/sql/publication.sql @@ -44,6 +44,16 @@ SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_forall DROP TABLE testpub_tbl2; DROP PUBLICATION testpub_foralltables; +CREATE TABLE testpub_tbl3 (a int); +CREATE TABLE testpub_tbl3a (b text) INHERITS (testpub_tbl3); +CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3; +CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3; +\dRp+ testpub3 +\dRp+ testpub4 + +DROP TABLE testpub_tbl3, testpub_tbl3a; +DROP PUBLICATION testpub3, testpub4; + -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk; -- 2.40.0