Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite59d428

Browse files
committed
Fixes in ALTER SUBSCRIPTION DROP PUBLICATION code
ALTER SUBSCRIPTION DROP PUBLICATION does not actually supportcopy_data option, so remove it from tab completion.Also, reword the error message that is thrown when all thepublications from a subscription are specified to be dropped.Also, made few doc and cosmetic adjustments.Author: Vignesh C <vignesh21@gmail.com>Reviewed-by: Bharath Rupireddy <bharath.rupireddy@enterprisedb.com>Reviewed-by: Japin Li <japinli@hotmail.com>Discussion:https://www.postgresql.org/message-id/flat/CALDaNm21RwsDzs4xj14ApteAF7auyyomHNnp+NEL-sH8m-jMvQ@mail.gmail.com
1 parent63e6d05 commite59d428

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

‎doc/src/sgml/ref/alter_subscription.sgml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ PostgreSQL documentation
2222
<refsynopsisdiv>
2323
<synopsis>
2424
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> CONNECTION '<replaceable>conninfo</replaceable>'
25-
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> SET PUBLICATION <replaceable class="parameter">publication_name</replaceable> [, ...] [ WITH ( <replaceable class="parameter">set_publication_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
26-
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> ADD PUBLICATION <replaceable class="parameter">publication_name</replaceable> [, ...] [ WITH ( <replaceable class="parameter">set_publication_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
27-
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> DROP PUBLICATION <replaceable class="parameter">publication_name</replaceable> [, ...] [ WITH ( <replaceable class="parameter">set_publication_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
25+
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> SET PUBLICATION <replaceable class="parameter">publication_name</replaceable> [, ...] [ WITH ( <replaceable class="parameter">publication_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
26+
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> ADD PUBLICATION <replaceable class="parameter">publication_name</replaceable> [, ...] [ WITH ( <replaceable class="parameter">publication_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
27+
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> DROP PUBLICATION <replaceable class="parameter">publication_name</replaceable> [, ...] [ WITH ( <replaceable class="parameter">publication_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
2828
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> REFRESH PUBLICATION [ WITH ( <replaceable class="parameter">refresh_option</replaceable> [= <replaceable class="parameter">value</replaceable>] [, ... ] ) ]
2929
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> ENABLE
3030
ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> DISABLE
@@ -102,17 +102,17 @@ ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> RENAME TO <
102102
<para>
103103
Changes the list of subscribed publications. <literal>SET</literal>
104104
replaces the entire list of publications with a new list,
105-
<literal>ADD</literal> adds additional publications,
106-
<literal>DROP</literal> removespublications fromthelist of
107-
publications. See <xref linkend="sql-createsubscription"/> for more
108-
information. By default, this command will also act like
105+
<literal>ADD</literal> adds additional publications to the list of
106+
publications, and<literal>DROP</literal> removes thepublications from
107+
the list ofpublications. See <xref linkend="sql-createsubscription"/>
108+
for moreinformation. By default, this command will also act like
109109
<literal>REFRESH PUBLICATION</literal>, except that in case of
110110
<literal>ADD</literal> or <literal>DROP</literal>, only the added or
111111
dropped publications are refreshed.
112112
</para>
113113

114114
<para>
115-
<replaceable>set_publication_option</replaceable> specifies additional
115+
<replaceable>publication_option</replaceable> specifies additional
116116
options for this operation. The supported options are:
117117

118118
<variablelist>
@@ -129,7 +129,8 @@ ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> RENAME TO <
129129
</variablelist>
130130

131131
Additionally, refresh options as described
132-
under <literal>REFRESH PUBLICATION</literal> may be specified.
132+
under <literal>REFRESH PUBLICATION</literal> may be specified,
133+
except in the case of <literal>DROP PUBLICATION</literal>.
133134
</para>
134135
</listitem>
135136
</varlistentry>

‎src/backend/commands/subscriptioncmds.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -953,8 +953,6 @@ AlterSubscription(AlterSubscriptionStmt *stmt, bool isTopLevel)
953953
boolrefresh;
954954
List*publist;
955955

956-
publist=merge_publications(sub->publications,stmt->publication,isadd,stmt->subname);
957-
958956
parse_subscription_options(stmt->options,
959957
NULL,/* no "connect" */
960958
NULL,NULL,/* no "enabled" */
@@ -967,6 +965,8 @@ AlterSubscription(AlterSubscriptionStmt *stmt, bool isTopLevel)
967965
NULL,NULL,/* no "binary" */
968966
NULL,NULL);/* no "streaming" */
969967

968+
publist=merge_publications(sub->publications,stmt->publication,isadd,stmt->subname);
969+
970970
values[Anum_pg_subscription_subpublications-1]=
971971
publicationListToArray(publist);
972972
replaces[Anum_pg_subscription_subpublications-1]= true;
@@ -1676,7 +1676,7 @@ merge_publications(List *oldpublist, List *newpublist, bool addpub, const char *
16761676
if (!oldpublist)
16771677
ereport(ERROR,
16781678
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
1679-
errmsg("subscription must contain at least one publication")));
1679+
errmsg("cannot drop all the publications from a subscription")));
16801680

16811681
returnoldpublist;
16821682
}

‎src/bin/psql/tab-complete.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1675,10 +1675,14 @@ psql_completion(const char *text, int start, int end)
16751675
elseif (HeadMatches("ALTER","SUBSCRIPTION",MatchAny)&&
16761676
TailMatches("ADD|DROP|SET","PUBLICATION",MatchAny))
16771677
COMPLETE_WITH("WITH (");
1678-
/* ALTER SUBSCRIPTION <name> ADD|DROP|SET PUBLICATION <name> WITH ( */
1678+
/* ALTER SUBSCRIPTION <name> ADD|SET PUBLICATION <name> WITH ( */
16791679
elseif (HeadMatches("ALTER","SUBSCRIPTION",MatchAny)&&
1680-
TailMatches("ADD|DROP|SET","PUBLICATION",MatchAny,"WITH","("))
1680+
TailMatches("ADD|SET","PUBLICATION",MatchAny,"WITH","("))
16811681
COMPLETE_WITH("copy_data","refresh");
1682+
/* ALTER SUBSCRIPTION <name> DROP PUBLICATION <name> WITH ( */
1683+
elseif (HeadMatches("ALTER","SUBSCRIPTION",MatchAny)&&
1684+
TailMatches("DROP","PUBLICATION",MatchAny,"WITH","("))
1685+
COMPLETE_WITH("refresh");
16821686

16831687
/* ALTER SCHEMA <name> */
16841688
elseif (Matches("ALTER","SCHEMA",MatchAny))

‎src/test/regress/expected/subscription.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub1, testpub1 WITH (ref
223223
ERROR: publication name "testpub1" used more than once
224224
-- fail - all publications are deleted
225225
ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub, testpub1, testpub2 WITH (refresh = false);
226-
ERROR:subscription must contain at least one publication
226+
ERROR:cannot drop all the publications from a subscription
227227
-- fail - publication does not exist in subscription
228228
ALTER SUBSCRIPTION regress_testsub DROP PUBLICATION testpub3 WITH (refresh = false);
229229
ERROR: publication "testpub3" is not in subscription "regress_testsub"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp