]> granicus.if.org Git - postgresql/commitdiff
Add more tests for CREATE SUBSCRIPTION
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 17 May 2017 16:22:56 +0000 (12:22 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 17 May 2017 16:24:48 +0000 (12:24 -0400)
Add some tests for parsing different option combinations.  Fix some of
the resulting error messages for recent changes in option naming.

Author: Masahiko Sawada <sawada.mshk@gmail.com>

src/backend/commands/subscriptioncmds.c
src/test/regress/expected/subscription.out
src/test/regress/sql/subscription.sql

index 265f2efd622683ee3b77a12c7dc217b2bb85f7cc..1f7274bc572fdcbdb6d36d59eb51ea4c8eab32da 100644 (file)
@@ -181,17 +181,17 @@ parse_subscription_options(List *options, bool *connect, bool *enabled_given,
                if (enabled && *enabled_given && *enabled)
                        ereport(ERROR,
                                        (errcode(ERRCODE_SYNTAX_ERROR),
-                                        errmsg("noconnect and enabled are mutually exclusive options")));
+                                        errmsg("connect = false and enabled = true are mutually exclusive options")));
 
                if (create_slot && create_slot_given && *create_slot)
                        ereport(ERROR,
                                        (errcode(ERRCODE_SYNTAX_ERROR),
-                                        errmsg("noconnect and create slot are mutually exclusive options")));
+                                        errmsg("connect = false and create_slot = true are mutually exclusive options")));
 
                if (copy_data && copy_data_given && *copy_data)
                        ereport(ERROR,
                                        (errcode(ERRCODE_SYNTAX_ERROR),
-                                        errmsg("noconnect and copy data are mutually exclusive options")));
+                                        errmsg("connect = false and copy_data = true are mutually exclusive options")));
 
                /* Change the defaults of other options. */
                *enabled = false;
@@ -208,12 +208,12 @@ parse_subscription_options(List *options, bool *connect, bool *enabled_given,
                if (enabled && *enabled_given && *enabled)
                        ereport(ERROR,
                                        (errcode(ERRCODE_SYNTAX_ERROR),
-                                        errmsg("slot_name = NONE and enabled are mutually exclusive options")));
+                                        errmsg("slot_name = NONE and enabled = true are mutually exclusive options")));
 
                if (create_slot && create_slot_given && *create_slot)
                        ereport(ERROR,
                                        (errcode(ERRCODE_SYNTAX_ERROR),
-                                        errmsg("slot_name = NONE and create slot are mutually exclusive options")));
+                                        errmsg("slot_name = NONE and create_slot = true are mutually exclusive options")));
        }
 }
 
index 10c3644e51db85c526a9d9452e4949b5bd12d396..1c42013b4728d2315c56a3507ed0d0766cfbc7af 100644 (file)
@@ -45,6 +45,26 @@ SET SESSION AUTHORIZATION 'regress_subscription_user2';
 CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION foo WITH (connect = false);
 ERROR:  must be superuser to create subscriptions
 SET SESSION AUTHORIZATION 'regress_subscription_user';
+-- fail - invalid option combinations
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, copy_data = true);
+ERROR:  connect = false and copy_data = true are mutually exclusive options
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, enabled = true);
+ERROR:  connect = false and enabled = true are mutually exclusive options
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, create_slot = true);
+ERROR:  connect = false and create_slot = true are mutually exclusive options
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, enabled = true);
+ERROR:  slot_name = NONE and enabled = true are mutually exclusive options
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, create_slot = true);
+ERROR:  slot_name = NONE and create_slot = true are mutually exclusive options
+-- ok - with slot_name = NONE
+CREATE SUBSCRIPTION testsub3 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, connect = false);
+WARNING:  tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables
+-- fail
+ALTER SUBSCRIPTION testsub3 ENABLE;
+ERROR:  cannot enable subscription that does not have a slot name
+ALTER SUBSCRIPTION testsub3 REFRESH PUBLICATION;
+ERROR:  ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled subscriptions
+DROP SUBSCRIPTION testsub3;
 -- fail - invalid connection string
 ALTER SUBSCRIPTION testsub CONNECTION 'foobar';
 ERROR:  invalid connection string syntax: missing "=" after "foobar" in connection info string
index 798bb0dbd31fa2b0cdc882836c63afee20b76d37..36cdd96c7754f31945096d9741b632b1acab719f 100644 (file)
@@ -38,6 +38,21 @@ SET SESSION AUTHORIZATION 'regress_subscription_user2';
 CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION foo WITH (connect = false);
 SET SESSION AUTHORIZATION 'regress_subscription_user';
 
+-- fail - invalid option combinations
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, copy_data = true);
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, enabled = true);
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, create_slot = true);
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, enabled = true);
+CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, create_slot = true);
+
+-- ok - with slot_name = NONE
+CREATE SUBSCRIPTION testsub3 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, connect = false);
+-- fail
+ALTER SUBSCRIPTION testsub3 ENABLE;
+ALTER SUBSCRIPTION testsub3 REFRESH PUBLICATION;
+
+DROP SUBSCRIPTION testsub3;
+
 -- fail - invalid connection string
 ALTER SUBSCRIPTION testsub CONNECTION 'foobar';