summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Vondra2017-07-09 11:52:50 +0000
committerTomas Vondra2017-07-09 11:52:50 +0000
commit665c224a6b2afa055100bb2a8099f7071d173d75 (patch)
treeff7f9090082bc10b9bcaa7f9b8f20d3ab9c481df
parent8c88742b734862e3422e5de555448e2f48fc6347 (diff)
Disable support for CREATE PUBLICATION/SUBSCRIPTION
As the in-core logical replication is based on decoding WAL, there's no easy way to support it on Postgres-XL as the WAL is spread over many nodes. We essentially forward the actions to coordinators/datanodes, and each of them has it's own local WAL. Reconstructing the global WAL (which is needed for publications) would be challenging (e.g. because replicated tables have data on all nodes), and it's certainly not something we want to do during stabilization phase. Supporting subscriptions would be challenging to, although for different reasons (multiple subscriptions vs. multiple coordinators). So instead just disable the CREATE PUBLICATION / SUBSCRIPTION commands, just like we do for other unsupported features (e.g. triggers).
-rw-r--r--src/backend/tcop/utility.c13
-rw-r--r--src/test/regress/expected/object_address.out7
-rw-r--r--src/test/regress/expected/publication.out189
-rw-r--r--src/test/regress/expected/subscription.out132
-rw-r--r--src/test/regress/sql/subscription.sql3
5 files changed, 172 insertions, 172 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index a25498874a..e6687ab3b2 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -2535,7 +2535,11 @@ ProcessUtilitySlow(ParseState *pstate,
break;
case T_CreatePublicationStmt:
- address = CreatePublication((CreatePublicationStmt *) parsetree);
+ /* Postgres-XC does not support publications */
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("Postgres-XL does not support CREATE PUBLICATION"),
+ errdetail("The feature is not currently supported")));
break;
case T_AlterPublicationStmt:
@@ -2549,8 +2553,11 @@ ProcessUtilitySlow(ParseState *pstate,
break;
case T_CreateSubscriptionStmt:
- address = CreateSubscription((CreateSubscriptionStmt *) parsetree,
- isTopLevel);
+ /* Postgres-XC does not support subscriptions */
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("Postgres-XL does not support CREATE SUBSCRIPTION"),
+ errdetail("The feature is not currently supported")));
break;
case T_AlterSubscriptionStmt:
diff --git a/src/test/regress/expected/object_address.out b/src/test/regress/expected/object_address.out
index 067c945d24..89d78ee17f 100644
--- a/src/test/regress/expected/object_address.out
+++ b/src/test/regress/expected/object_address.out
@@ -48,8 +48,11 @@ CREATE TRANSFORM FOR int LANGUAGE SQL (
FROM SQL WITH FUNCTION varchar_transform(internal),
TO SQL WITH FUNCTION int4recv(internal));
CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable;
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
CREATE SUBSCRIPTION addr_sub CONNECTION '' PUBLICATION bar WITH (connect = false, slot_name = NONE);
-WARNING: tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
CREATE STATISTICS addr_nsp.gentable_stat ON a, b FROM addr_nsp.gentable;
-- test some error cases
SELECT pg_get_object_address('stone', '{}', '{}');
@@ -237,7 +240,9 @@ SET client_min_messages TO 'warning';
DROP FOREIGN DATA WRAPPER addr_fdw CASCADE;
ERROR: foreign-data wrapper "addr_fdw" does not exist
DROP PUBLICATION addr_pub;
+ERROR: publication "addr_pub" does not exist
DROP SUBSCRIPTION addr_sub;
+ERROR: subscription "addr_sub" does not exist
DROP SCHEMA addr_nsp CASCADE;
DROP OWNED BY regress_addr_user;
DROP USER regress_addr_user;
diff --git a/src/test/regress/expected/publication.out b/src/test/regress/expected/publication.out
index 50592c63a9..6f34ff3e46 100644
--- a/src/test/regress/expected/publication.out
+++ b/src/test/regress/expected/publication.out
@@ -6,36 +6,40 @@ CREATE ROLE regress_publication_user2;
CREATE ROLE regress_publication_user_dummy LOGIN NOSUPERUSER;
SET SESSION AUTHORIZATION 'regress_publication_user';
CREATE PUBLICATION testpub_default;
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
COMMENT ON PUBLICATION testpub_default IS 'test publication';
+ERROR: publication "testpub_default" does not exist
SELECT obj_description(p.oid, 'pg_publication') FROM pg_publication p;
- obj_description
-------------------
- test publication
-(1 row)
+ obj_description
+-----------------
+(0 rows)
CREATE PUBLICATION testpib_ins_trunct WITH (publish = insert);
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
ALTER PUBLICATION testpub_default SET (publish = update);
+ERROR: publication "testpub_default" does not exist
-- error cases
CREATE PUBLICATION testpub_xxx WITH (foo);
-ERROR: unrecognized publication parameter: foo
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
CREATE PUBLICATION testpub_xxx WITH (publish = 'cluster, vacuum');
-ERROR: unrecognized "publish" value: "cluster"
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
\dRp
- List of publications
- Name | Owner | All tables | Inserts | Updates | Deletes
---------------------+--------------------------+------------+---------+---------+---------
- testpib_ins_trunct | regress_publication_user | f | t | f | f
- testpub_default | regress_publication_user | f | f | t | f
-(2 rows)
+ List of publications
+ Name | Owner | All tables | Inserts | Updates | Deletes
+------+-------+------------+---------+---------+---------
+(0 rows)
ALTER PUBLICATION testpub_default SET (publish = 'insert, update, delete');
+ERROR: publication "testpub_default" does not exist
\dRp
- List of publications
- Name | Owner | All tables | Inserts | Updates | Deletes
---------------------+--------------------------+------------+---------+---------+---------
- testpib_ins_trunct | regress_publication_user | f | t | f | f
- testpub_default | regress_publication_user | f | t | t | t
-(2 rows)
+ List of publications
+ Name | Owner | All tables | Inserts | Updates | Deletes
+------+-------+------------+---------+---------+---------
+(0 rows)
--- adding tables
CREATE SCHEMA pub_test;
@@ -44,25 +48,24 @@ CREATE TABLE pub_test.testpub_nopk (foo int, bar int);
CREATE VIEW testpub_view AS SELECT 1;
CREATE TABLE testpub_parted (a int) PARTITION BY LIST (a);
CREATE PUBLICATION testpub_foralltables FOR ALL TABLES WITH (publish = 'insert');
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
ALTER PUBLICATION testpub_foralltables SET (publish = 'insert, update');
+ERROR: publication "testpub_foralltables" does not exist
CREATE TABLE testpub_tbl2 (id serial primary key, data text);
-- fail - can't add to for all tables publication
ALTER PUBLICATION testpub_foralltables ADD TABLE testpub_tbl2;
-ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES
-DETAIL: Tables cannot be added to or dropped from FOR ALL TABLES publications.
+ERROR: publication "testpub_foralltables" does not exist
-- fail - can't drop from all tables publication
ALTER PUBLICATION testpub_foralltables DROP TABLE testpub_tbl2;
-ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES
-DETAIL: Tables cannot be added to or dropped from FOR ALL TABLES publications.
+ERROR: publication "testpub_foralltables" does not exist
-- fail - can't add to for all tables publication
ALTER PUBLICATION testpub_foralltables SET TABLE pub_test.testpub_nopk;
-ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES
-DETAIL: Tables cannot be added to or dropped from FOR ALL TABLES publications.
+ERROR: publication "testpub_foralltables" does not exist
SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_foralltables';
- pubname | puballtables
-----------------------+--------------
- testpub_foralltables | t
-(1 row)
+ pubname | puballtables
+---------+--------------
+(0 rows)
\d+ testpub_tbl2
Table "public.testpub_tbl2"
@@ -72,84 +75,63 @@ SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_forall
data | text | | | | extended | |
Indexes:
"testpub_tbl2_pkey" PRIMARY KEY, btree (id)
-Publications:
- "testpub_foralltables"
+Distribute By: HASH(id)
+Location Nodes: ALL DATANODES
\dRp+ testpub_foralltables
- Publication testpub_foralltables
- All tables | Inserts | Updates | Deletes
-------------+---------+---------+---------
- t | t | t | f
-(1 row)
-
DROP TABLE testpub_tbl2;
DROP PUBLICATION testpub_foralltables;
+ERROR: publication "testpub_foralltables" does not exist
CREATE TABLE testpub_tbl3 (a int);
CREATE TABLE testpub_tbl3a (b text) INHERITS (testpub_tbl3);
CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3;
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3;
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
\dRp+ testpub3
- Publication testpub3
- All tables | Inserts | Updates | Deletes
-------------+---------+---------+---------
- f | t | t | t
-Tables:
- "public.testpub_tbl3"
- "public.testpub_tbl3a"
-
\dRp+ testpub4
- Publication testpub4
- All tables | Inserts | Updates | Deletes
-------------+---------+---------+---------
- f | t | t | t
-Tables:
- "public.testpub_tbl3"
-
DROP TABLE testpub_tbl3, testpub_tbl3a;
DROP PUBLICATION testpub3, testpub4;
+ERROR: publication "testpub3" does not exist
-- fail - view
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view;
-ERROR: "testpub_view" is not a table
-DETAIL: Only tables can be added to publications.
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk;
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
-- fail - already added
ALTER PUBLICATION testpub_fortbl ADD TABLE testpub_tbl1;
-ERROR: relation "testpub_tbl1" is already member of publication "testpub_fortbl"
+ERROR: publication "testpub_fortbl" does not exist
-- fail - already added
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1;
-ERROR: publication "testpub_fortbl" already exists
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
\dRp+ testpub_fortbl
- Publication testpub_fortbl
- All tables | Inserts | Updates | Deletes
-------------+---------+---------+---------
- f | t | t | t
-Tables:
- "pub_test.testpub_nopk"
- "public.testpub_tbl1"
-
-- fail - view
ALTER PUBLICATION testpub_default ADD TABLE testpub_view;
-ERROR: "testpub_view" is not a table
-DETAIL: Only tables can be added to publications.
+ERROR: publication "testpub_default" does not exist
-- fail - partitioned table
ALTER PUBLICATION testpub_fortbl ADD TABLE testpub_parted;
-ERROR: "testpub_parted" is a partitioned table
-DETAIL: Adding partitioned tables to publications is not supported.
-HINT: You can add the table partitions individually.
+ERROR: publication "testpub_fortbl" does not exist
ALTER PUBLICATION testpub_default ADD TABLE testpub_tbl1;
+ERROR: publication "testpub_default" does not exist
ALTER PUBLICATION testpub_default SET TABLE testpub_tbl1;
+ERROR: publication "testpub_default" does not exist
ALTER PUBLICATION testpub_default ADD TABLE pub_test.testpub_nopk;
+ERROR: publication "testpub_default" does not exist
ALTER PUBLICATION testpib_ins_trunct ADD TABLE pub_test.testpub_nopk, testpub_tbl1;
+ERROR: publication "testpib_ins_trunct" does not exist
\d+ pub_test.testpub_nopk
Table "pub_test.testpub_nopk"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+---------+--------------+-------------
foo | integer | | | | plain | |
bar | integer | | | | plain | |
-Publications:
- "testpib_ins_trunct"
- "testpub_default"
- "testpub_fortbl"
+Distribute By: HASH(foo)
+Location Nodes: ALL DATANODES
\d+ testpub_tbl1
Table "public.testpub_tbl1"
@@ -159,24 +141,15 @@ Publications:
data | text | | | | extended | |
Indexes:
"testpub_tbl1_pkey" PRIMARY KEY, btree (id)
-Publications:
- "testpib_ins_trunct"
- "testpub_default"
- "testpub_fortbl"
+Distribute By: HASH(id)
+Location Nodes: ALL DATANODES
\dRp+ testpub_default
- Publication testpub_default
- All tables | Inserts | Updates | Deletes
-------------+---------+---------+---------
- f | t | t | t
-Tables:
- "pub_test.testpub_nopk"
- "public.testpub_tbl1"
-
ALTER PUBLICATION testpub_default DROP TABLE testpub_tbl1, pub_test.testpub_nopk;
+ERROR: publication "testpub_default" does not exist
-- fail - nonexistent
ALTER PUBLICATION testpub_default DROP TABLE pub_test.testpub_nopk;
-ERROR: relation "testpub_nopk" is not part of the publication
+ERROR: publication "testpub_default" does not exist
\d+ testpub_tbl1
Table "public.testpub_tbl1"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
@@ -185,63 +158,65 @@ ERROR: relation "testpub_nopk" is not part of the publication
data | text | | | | extended | |
Indexes:
"testpub_tbl1_pkey" PRIMARY KEY, btree (id)
-Publications:
- "testpib_ins_trunct"
- "testpub_fortbl"
+Distribute By: HASH(id)
+Location Nodes: ALL DATANODES
-- permissions
SET ROLE regress_publication_user2;
CREATE PUBLICATION testpub2; -- fail
-ERROR: permission denied for database regression
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
SET ROLE regress_publication_user;
GRANT CREATE ON DATABASE regression TO regress_publication_user2;
SET ROLE regress_publication_user2;
CREATE PUBLICATION testpub2; -- ok
+ERROR: Postgres-XL does not support CREATE PUBLICATION
+DETAIL: The feature is not currently supported
ALTER PUBLICATION testpub2 ADD TABLE testpub_tbl1; -- fail
-ERROR: must be owner of relation testpub_tbl1
+ERROR: publication "testpub2" does not exist
SET ROLE regress_publication_user;
GRANT regress_publication_user TO regress_publication_user2;
SET ROLE regress_publication_user2;
ALTER PUBLICATION testpub2 ADD TABLE testpub_tbl1; -- ok
+ERROR: publication "testpub2" does not exist
DROP PUBLICATION testpub2;
+ERROR: publication "testpub2" does not exist
SET ROLE regress_publication_user;
REVOKE CREATE ON DATABASE regression FROM regress_publication_user2;
DROP TABLE testpub_parted;
DROP VIEW testpub_view;
DROP TABLE testpub_tbl1;
\dRp+ testpub_default
- Publication testpub_default
- All tables | Inserts | Updates | Deletes
-------------+---------+---------+---------
- f | t | t | t
-(1 row)
-
-- fail - must be owner of publication
SET ROLE regress_publication_user_dummy;
ALTER PUBLICATION testpub_default RENAME TO testpub_dummy;
-ERROR: must be owner of publication testpub_default
+ERROR: publication "testpub_default" does not exist
RESET ROLE;
ALTER PUBLICATION testpub_default RENAME TO testpub_foo;
+ERROR: publication "testpub_default" does not exist
\dRp testpub_foo
- List of publications
- Name | Owner | All tables | Inserts | Updates | Deletes
--------------+--------------------------+------------+---------+---------+---------
- testpub_foo | regress_publication_user | f | t | t | t
-(1 row)
+ List of publications
+ Name | Owner | All tables | Inserts | Updates | Deletes
+------+-------+------------+---------+---------+---------
+(0 rows)
-- rename back to keep the rest simple
ALTER PUBLICATION testpub_foo RENAME TO testpub_default;
+ERROR: publication "testpub_foo" does not exist
ALTER PUBLICATION testpub_default OWNER TO regress_publication_user2;
+ERROR: publication "testpub_default" does not exist
\dRp testpub_default
- List of publications
- Name | Owner | All tables | Inserts | Updates | Deletes
------------------+---------------------------+------------+---------+---------+---------
- testpub_default | regress_publication_user2 | f | t | t | t
-(1 row)
+ List of publications
+ Name | Owner | All tables | Inserts | Updates | Deletes
+------+-------+------------+---------+---------+---------
+(0 rows)
DROP PUBLICATION testpub_default;
+ERROR: publication "testpub_default" does not exist
DROP PUBLICATION testpib_ins_trunct;
+ERROR: publication "testpib_ins_trunct" does not exist
DROP PUBLICATION testpub_fortbl;
+ERROR: publication "testpub_fortbl" does not exist
DROP SCHEMA pub_test CASCADE;
NOTICE: drop cascades to table pub_test.testpub_nopk
RESET SESSION AUTHORIZATION;
diff --git a/src/test/regress/expected/subscription.out b/src/test/regress/expected/subscription.out
index 4fcbf7efe9..113dba7fb8 100644
--- a/src/test/regress/expected/subscription.out
+++ b/src/test/regress/expected/subscription.out
@@ -18,138 +18,154 @@ LINE 1: CREATE SUBSCRIPTION testsub PUBLICATION foo;
-- fail - cannot do CREATE SUBSCRIPTION CREATE SLOT inside transaction block
BEGIN;
CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub WITH (create_slot);
-ERROR: CREATE SUBSCRIPTION ... WITH (create_slot = true) cannot run inside a transaction block
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
COMMIT;
-- fail - invalid connection string
CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub;
-ERROR: invalid connection string syntax: missing "=" after "testconn" in connection info string
-
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
-- fail - duplicate publications
CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION foo, testpub, foo WITH (connect = false);
-ERROR: publication name "foo" used more than once
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
-- ok
CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false);
-WARNING: tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
COMMENT ON SUBSCRIPTION testsub IS 'test subscription';
+ERROR: subscription "testsub" does not exist
SELECT obj_description(s.oid, 'pg_subscription') FROM pg_subscription s;
- obj_description
--------------------
- test subscription
-(1 row)
+ obj_description
+-----------------
+(0 rows)
-- fail - name already exists
CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false);
-ERROR: subscription "testsub" already exists
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
-- fail - must be superuser
SET SESSION AUTHORIZATION 'regress_subscription_user2';
CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION foo WITH (connect = false);
-ERROR: must be superuser to create subscriptions
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
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
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (connect = false, enabled = true);
-ERROR: connect = false and enabled = true are mutually exclusive options
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
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
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
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
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
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
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE);
-ERROR: subscription with slot_name = NONE must also set enabled = false
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, enabled = false);
-ERROR: subscription with slot_name = NONE must also set create_slot = false
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, create_slot = false);
-ERROR: subscription with slot_name = NONE must also set enabled = false
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
-- 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
+ERROR: Postgres-XL does not support CREATE SUBSCRIPTION
+DETAIL: The feature is not currently supported
-- fail
ALTER SUBSCRIPTION testsub3 ENABLE;
-ERROR: cannot enable subscription that does not have a slot name
+ERROR: subscription "testsub3" does not exist
ALTER SUBSCRIPTION testsub3 REFRESH PUBLICATION;
-ERROR: ALTER SUBSCRIPTION ... REFRESH is not allowed for disabled subscriptions
+ERROR: subscription "testsub3" does not exist
DROP SUBSCRIPTION testsub3;
+ERROR: subscription "testsub3" does not exist
-- fail - invalid connection string
ALTER SUBSCRIPTION testsub CONNECTION 'foobar';
-ERROR: invalid connection string syntax: missing "=" after "foobar" in connection info string
-
+ERROR: subscription "testsub" does not exist
\dRs+
- List of subscriptions
- Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
----------+---------------------------+---------+-------------+--------------------+---------------------
- testsub | regress_subscription_user | f | {testpub} | off | dbname=doesnotexist
-(1 row)
+ List of subscriptions
+ Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
+------+-------+---------+-------------+--------------------+----------
+(0 rows)
ALTER SUBSCRIPTION testsub SET PUBLICATION testpub2, testpub3 WITH (refresh = false);
+ERROR: subscription "testsub" does not exist
ALTER SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist2';
+ERROR: subscription "testsub" does not exist
ALTER SUBSCRIPTION testsub SET (slot_name = 'newname');
+ERROR: subscription "testsub" does not exist
-- fail
ALTER SUBSCRIPTION doesnotexist CONNECTION 'dbname=doesnotexist2';
ERROR: subscription "doesnotexist" does not exist
ALTER SUBSCRIPTION testsub SET (create_slot = false);
-ERROR: unrecognized subscription parameter: create_slot
+ERROR: subscription "testsub" does not exist
\dRs+
- List of subscriptions
- Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
----------+---------------------------+---------+---------------------+--------------------+----------------------
- testsub | regress_subscription_user | f | {testpub2,testpub3} | off | dbname=doesnotexist2
-(1 row)
+ List of subscriptions
+ Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
+------+-------+---------+-------------+--------------------+----------
+(0 rows)
-BEGIN;
ALTER SUBSCRIPTION testsub ENABLE;
+ERROR: subscription "testsub" does not exist
\dRs
- List of subscriptions
- Name | Owner | Enabled | Publication
----------+---------------------------+---------+---------------------
- testsub | regress_subscription_user | t | {testpub2,testpub3}
-(1 row)
+ List of subscriptions
+ Name | Owner | Enabled | Publication
+------+-------+---------+-------------
+(0 rows)
ALTER SUBSCRIPTION testsub DISABLE;
+ERROR: subscription "testsub" does not exist
\dRs
- List of subscriptions
- Name | Owner | Enabled | Publication
----------+---------------------------+---------+---------------------
- testsub | regress_subscription_user | f | {testpub2,testpub3}
-(1 row)
+ List of subscriptions
+ Name | Owner | Enabled | Publication
+------+-------+---------+-------------
+(0 rows)
-COMMIT;
-- fail - must be owner of subscription
SET ROLE regress_subscription_user_dummy;
ALTER SUBSCRIPTION testsub RENAME TO testsub_dummy;
-ERROR: must be owner of subscription testsub
+ERROR: subscription "testsub" does not exist
RESET ROLE;
ALTER SUBSCRIPTION testsub RENAME TO testsub_foo;
+ERROR: subscription "testsub" does not exist
ALTER SUBSCRIPTION testsub_foo SET (synchronous_commit = local);
+ERROR: subscription "testsub_foo" does not exist
ALTER SUBSCRIPTION testsub_foo SET (synchronous_commit = foobar);
-ERROR: invalid value for parameter "synchronous_commit": "foobar"
-HINT: Available values: local, remote_write, remote_apply, on, off.
+ERROR: subscription "testsub_foo" does not exist
\dRs+
- List of subscriptions
- Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
--------------+---------------------------+---------+---------------------+--------------------+----------------------
- testsub_foo | regress_subscription_user | f | {testpub2,testpub3} | local | dbname=doesnotexist2
-(1 row)
+ List of subscriptions
+ Name | Owner | Enabled | Publication | Synchronous commit | Conninfo
+------+-------+---------+-------------+--------------------+----------
+(0 rows)
-- rename back to keep the rest simple
ALTER SUBSCRIPTION testsub_foo RENAME TO testsub;
+ERROR: subscription "testsub_foo" does not exist
-- fail - new owner must be superuser
ALTER SUBSCRIPTION testsub OWNER TO regress_subscription_user2;
-ERROR: permission denied to change owner of subscription "testsub"
-HINT: The owner of a subscription must be a superuser.
+ERROR: subscription "testsub" does not exist
ALTER ROLE regress_subscription_user2 SUPERUSER;
-- now it works
ALTER SUBSCRIPTION testsub OWNER TO regress_subscription_user2;
+ERROR: subscription "testsub" does not exist
-- fail - cannot do DROP SUBSCRIPTION inside transaction block with slot name
BEGIN;
DROP SUBSCRIPTION testsub;
-ERROR: DROP SUBSCRIPTION cannot run inside a transaction block
+ERROR: subscription "testsub" does not exist
COMMIT;
ALTER SUBSCRIPTION testsub SET (slot_name = NONE);
+ERROR: subscription "testsub" does not exist
-- now it works
BEGIN;
DROP SUBSCRIPTION testsub;
+ERROR: subscription "testsub" does not exist
COMMIT;
DROP SUBSCRIPTION IF EXISTS testsub;
NOTICE: subscription "testsub" does not exist, skipping
diff --git a/src/test/regress/sql/subscription.sql b/src/test/regress/sql/subscription.sql
index 36fa1bbac8..c049589ae7 100644
--- a/src/test/regress/sql/subscription.sql
+++ b/src/test/regress/sql/subscription.sql
@@ -71,7 +71,6 @@ ALTER SUBSCRIPTION testsub SET (create_slot = false);
\dRs+
-BEGIN;
ALTER SUBSCRIPTION testsub ENABLE;
\dRs
@@ -80,8 +79,6 @@ ALTER SUBSCRIPTION testsub DISABLE;
\dRs
-COMMIT;
-
-- fail - must be owner of subscription
SET ROLE regress_subscription_user_dummy;
ALTER SUBSCRIPTION testsub RENAME TO testsub_dummy;