diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-03-03 23:25:34 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-03-03 23:29:13 -0500 |
commit | 272adf4f9cd67df323ae57ff3dee238b649d3b73 (patch) | |
tree | cc7f778f7a2cb49ed7f3dcf46eefb61e1aece4a4 /src/test | |
parent | 347302730dc3092143ccbc1c29b47ac3354f924b (diff) |
Disallow CREATE/DROP SUBSCRIPTION in transaction block
Disallow CREATE SUBSCRIPTION and DROP SUBSCRIPTION in a transaction
block when the replication slot is to be created or dropped, since that
cannot be rolled back.
based on patch by Masahiko Sawada <sawada.mshk@gmail.com>
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/subscription.out | 12 | ||||
-rw-r--r-- | src/test/regress/sql/subscription.sql | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/test/regress/expected/subscription.out b/src/test/regress/expected/subscription.out index cb1ab4e7914..a8a61ee8afa 100644 --- a/src/test/regress/expected/subscription.out +++ b/src/test/regress/expected/subscription.out @@ -14,6 +14,11 @@ ERROR: syntax error at or near "PUBLICATION" LINE 1: CREATE SUBSCRIPTION testsub PUBLICATION foo; ^ set client_min_messages to error; +-- fail - cannot do CREATE SUBSCRIPTION CREATE SLOT inside transaction block +BEGIN; +CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub WITH (CREATE SLOT); +ERROR: CREATE SUBSCRIPTION ... CREATE SLOT cannot run inside a transaction block +COMMIT; CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub; ERROR: invalid connection string syntax: missing "=" after "testconn" in connection info string @@ -69,6 +74,13 @@ ALTER SUBSCRIPTION testsub RENAME TO testsub_foo; testsub_foo | regress_subscription_user | f | {testpub,testpub1} (1 row) +-- fail - cannot do DROP SUBSCRIPTION DROP SLOT inside transaction block +BEGIN; +DROP SUBSCRIPTION testsub DROP SLOT; +ERROR: DROP SUBSCRIPTION ... DROP SLOT cannot run inside a transaction block +COMMIT; +BEGIN; DROP SUBSCRIPTION testsub_foo NODROP SLOT; +COMMIT; RESET SESSION AUTHORIZATION; DROP ROLE regress_subscription_user; diff --git a/src/test/regress/sql/subscription.sql b/src/test/regress/sql/subscription.sql index fce6069a9cd..0b6c8a3f5c9 100644 --- a/src/test/regress/sql/subscription.sql +++ b/src/test/regress/sql/subscription.sql @@ -12,6 +12,11 @@ CREATE SUBSCRIPTION testsub CONNECTION 'foo'; CREATE SUBSCRIPTION testsub PUBLICATION foo; set client_min_messages to error; +-- fail - cannot do CREATE SUBSCRIPTION CREATE SLOT inside transaction block +BEGIN; +CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub WITH (CREATE SLOT); +COMMIT; + CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub; CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (DISABLED, NOCREATE SLOT); reset client_min_messages; @@ -42,7 +47,14 @@ ALTER SUBSCRIPTION testsub RENAME TO testsub_foo; \dRs +-- fail - cannot do DROP SUBSCRIPTION DROP SLOT inside transaction block +BEGIN; +DROP SUBSCRIPTION testsub DROP SLOT; +COMMIT; + +BEGIN; DROP SUBSCRIPTION testsub_foo NODROP SLOT; +COMMIT; RESET SESSION AUTHORIZATION; DROP ROLE regress_subscription_user; |