]> granicus.if.org Git - postgresql/commitdiff
Document that ONLY can be specified in publication commands
authorPeter Eisentraut <peter_e@gmx.net>
Mon, 17 Apr 2017 13:14:22 +0000 (09:14 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Mon, 17 Apr 2017 13:51:52 +0000 (09:51 -0400)
Author: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>

doc/src/sgml/ref/alter_publication.sgml
doc/src/sgml/ref/create_publication.sgml
src/test/regress/expected/publication.out
src/test/regress/sql/publication.sql

index 0a965b3bbf8c3c0f4adf0e7891baaed744106361..858231fbcbfb16fa86bde9f6e8063dec4f30f51e 100644 (file)
@@ -31,9 +31,9 @@ ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> WITH ( <repl
 
 ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
 ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable>new_name</replaceable>
-ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> ADD TABLE <replaceable class="PARAMETER">table_name</replaceable> [, ...]
-ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> SET TABLE <replaceable class="PARAMETER">table_name</replaceable> [, ...]
-ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> DROP TABLE <replaceable class="PARAMETER">table_name</replaceable> [, ...]
+ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> ADD TABLE [ ONLY ] <replaceable class="PARAMETER">table_name</replaceable> [ * ] [, ...]
+ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> SET TABLE [ ONLY ] <replaceable class="PARAMETER">table_name</replaceable> [ * ] [, ...]
+ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> DROP TABLE [ ONLY ] <replaceable class="PARAMETER">table_name</replaceable> [ * ] [, ...]
 </synopsis>
  </refsynopsisdiv>
 
@@ -116,7 +116,11 @@ ALTER PUBLICATION <replaceable class="PARAMETER">name</replaceable> DROP TABLE <
     <term><replaceable class="parameter">table_name</replaceable></term>
     <listitem>
      <para>
-      Name of an existing table.
+      Name of an existing table.  If <literal>ONLY</> is specified before the
+      table name, only that table is affected.  If <literal>ONLY</> is not
+      specified, the table and all its descendant tables (if any) are
+      affected.  Optionally, <literal>*</> can be specified after the table
+      name to explicitly indicate that descendant tables are included.
      </para>
     </listitem>
    </varlistentry>
index 3cdde801fa1f6f35fa222ee0017b2fcaec8a117c..0369b579c5c386741fa64c1587c0899d82a68b6f 100644 (file)
@@ -22,7 +22,7 @@ PostgreSQL documentation
  <refsynopsisdiv>
 <synopsis>
 CREATE PUBLICATION <replaceable class="parameter">name</replaceable>
-    [ FOR TABLE <replaceable class="parameter">table_name</replaceable> [, ...]
+    [ FOR TABLE [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] [, ...]
       | FOR ALL TABLES ]
     [ WITH ( <replaceable class="parameter">option</replaceable> [, ... ] ) ]
 
@@ -68,7 +68,12 @@ CREATE PUBLICATION <replaceable class="parameter">name</replaceable>
     <term><literal>FOR TABLE</literal></term>
     <listitem>
      <para>
-      Specifies a list of tables to add to the publication.
+      Specifies a list of tables to add to the publication.  If
+      <literal>ONLY</> is specified before the table name, only
+      that table is added to the publication.  If <literal>ONLY</> is not
+      specified, the table and all its descendant tables (if any) are added.
+      Optionally, <literal>*</> can be specified after the table name to
+      explicitly indicate that descendant tables are included.
      </para>
     </listitem>
    </varlistentry>
index 0964718a60e0e2f412c43b168aa4747635c029f0..5b7fb674dad6b2819a7478cafedc2a24f071a755 100644 (file)
@@ -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
index 85530bec0e72f912e22800e17b8267b040959fa9..b118bc9906f3fd7c435a60987db5dc422be9e5e6 100644 (file)
@@ -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;