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

Commite3920ac

Browse files
committed
Add more subscription DDL tests
Add more tests for various variants of subscription DDL commands, basedon code coverage report. Fix a small bug discovered by that.
1 parent2e0c919 commite3920ac

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

‎src/backend/commands/subscriptioncmds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ publicationListToArray(List *publist)
228228
/* Check for duplicates. */
229229
foreach(pcell,publist)
230230
{
231-
char*pname=strVal(lfirst(cell));
231+
char*pname=strVal(lfirst(pcell));
232232

233233
if (name==pname)
234234
break;

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
-- SUBSCRIPTION
33
--
44
CREATE ROLE regress_subscription_user LOGIN SUPERUSER;
5+
CREATE ROLE regress_subscription_user2;
56
CREATE ROLE regress_subscription_user_dummy LOGIN NOSUPERUSER;
67
SET SESSION AUTHORIZATION 'regress_subscription_user';
78
-- fail - no publications
@@ -19,11 +20,24 @@ BEGIN;
1920
CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub WITH (CREATE SLOT);
2021
ERROR: CREATE SUBSCRIPTION ... CREATE SLOT cannot run inside a transaction block
2122
COMMIT;
23+
-- fail - invalid connection string
2224
CREATE SUBSCRIPTION testsub CONNECTION 'testconn' PUBLICATION testpub;
2325
ERROR: invalid connection string syntax: missing "=" after "testconn" in connection info string
2426

27+
-- fail - duplicate publications
28+
CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION foo, testpub, foo WITH (NOCONNECT);
29+
ERROR: publication name "foo" used more than once
30+
-- ok
2531
CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (NOCONNECT);
2632
WARNING: tables were not subscribed, you will have to run ALTER SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables
33+
-- fail - name already exists
34+
CREATE SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist' PUBLICATION testpub WITH (NOCONNECT);
35+
ERROR: subscription "testsub" already exists
36+
-- fail - must be superuser
37+
SET SESSION AUTHORIZATION 'regress_subscription_user2';
38+
CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION foo WITH (NOCONNECT);
39+
ERROR: must be superuser to create subscriptions
40+
SET SESSION AUTHORIZATION 'regress_subscription_user';
2741
\dRs+
2842
List of subscriptions
2943
Name | Owner | Enabled | Publication | Conninfo
@@ -33,6 +47,10 @@ WARNING: tables were not subscribed, you will have to run ALTER SUBSCRIPTION ..
3347

3448
ALTER SUBSCRIPTION testsub SET PUBLICATION testpub2, testpub3 NOREFRESH;
3549
ALTER SUBSCRIPTION testsub CONNECTION 'dbname=doesnotexist2';
50+
ALTER SUBSCRIPTION testsub WITH (SLOT NAME = 'newname');
51+
-- fail
52+
ALTER SUBSCRIPTION doesnotexist CONNECTION 'dbname=doesnotexist2';
53+
ERROR: subscription "doesnotexist" does not exist
3654
\dRs+
3755
List of subscriptions
3856
Name | Owner | Enabled | Publication | Conninfo
@@ -73,6 +91,13 @@ ALTER SUBSCRIPTION testsub RENAME TO testsub_foo;
7391

7492
-- rename back to keep the rest simple
7593
ALTER SUBSCRIPTION testsub_foo RENAME TO testsub;
94+
-- fail - new owner must be superuser
95+
ALTER SUBSCRIPTION testsub OWNER TO regress_subscription_user2;
96+
ERROR: permission denied to change owner of subscription "testsub"
97+
HINT: The owner of an subscription must be a superuser.
98+
ALTER ROLE regress_subscription_user2 SUPERUSER;
99+
-- now it works
100+
ALTER SUBSCRIPTION testsub OWNER TO regress_subscription_user2;
76101
-- fail - cannot do DROP SUBSCRIPTION DROP SLOT inside transaction block
77102
BEGIN;
78103
DROP SUBSCRIPTION testsub DROP SLOT;
@@ -81,6 +106,10 @@ COMMIT;
81106
BEGIN;
82107
DROP SUBSCRIPTION testsub NODROP SLOT;
83108
COMMIT;
109+
DROP SUBSCRIPTION IF EXISTS testsub NODROP SLOT;
110+
NOTICE: subscription "testsub" does not exist, skipping
111+
DROP SUBSCRIPTION testsub NODROP SLOT; -- fail
112+
ERROR: subscription "testsub" does not exist
84113
RESET SESSION AUTHORIZATION;
85114
DROP ROLE regress_subscription_user;
86115
DROP ROLE regress_subscription_user_dummy;

‎src/test/regress/sql/subscription.sql

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
--
44

55
CREATE ROLE regress_subscription_user LOGIN SUPERUSER;
6+
CREATE ROLE regress_subscription_user2;
67
CREATE ROLE regress_subscription_user_dummy LOGIN NOSUPERUSER;
78
SET SESSION AUTHORIZATION'regress_subscription_user';
89

@@ -17,14 +18,31 @@ BEGIN;
1718
CREATE SUBSCRIPTION testsub CONNECTION'testconn' PUBLICATION testpub WITH (CREATE SLOT);
1819
COMMIT;
1920

21+
-- fail - invalid connection string
2022
CREATE SUBSCRIPTION testsub CONNECTION'testconn' PUBLICATION testpub;
2123

24+
-- fail - duplicate publications
25+
CREATE SUBSCRIPTION testsub CONNECTION'dbname=doesnotexist' PUBLICATION foo, testpub, foo WITH (NOCONNECT);
26+
27+
-- ok
28+
CREATE SUBSCRIPTION testsub CONNECTION'dbname=doesnotexist' PUBLICATION testpub WITH (NOCONNECT);
29+
30+
-- fail - name already exists
2231
CREATE SUBSCRIPTION testsub CONNECTION'dbname=doesnotexist' PUBLICATION testpub WITH (NOCONNECT);
2332

33+
-- fail - must be superuser
34+
SET SESSION AUTHORIZATION'regress_subscription_user2';
35+
CREATE SUBSCRIPTION testsub2 CONNECTION'dbname=doesnotexist' PUBLICATION foo WITH (NOCONNECT);
36+
SET SESSION AUTHORIZATION'regress_subscription_user';
37+
2438
\dRs+
2539

2640
ALTER SUBSCRIPTION testsubSET PUBLICATION testpub2, testpub3 NOREFRESH;
2741
ALTER SUBSCRIPTION testsub CONNECTION'dbname=doesnotexist2';
42+
ALTER SUBSCRIPTION testsub WITH (SLOT NAME='newname');
43+
44+
-- fail
45+
ALTER SUBSCRIPTION doesnotexist CONNECTION'dbname=doesnotexist2';
2846

2947
\dRs+
3048

@@ -51,6 +69,12 @@ ALTER SUBSCRIPTION testsub RENAME TO testsub_foo;
5169
-- rename back to keep the rest simple
5270
ALTER SUBSCRIPTION testsub_foo RENAME TO testsub;
5371

72+
-- fail - new owner must be superuser
73+
ALTER SUBSCRIPTION testsub OWNER TO regress_subscription_user2;
74+
ALTER ROLE regress_subscription_user2 SUPERUSER;
75+
-- now it works
76+
ALTER SUBSCRIPTION testsub OWNER TO regress_subscription_user2;
77+
5478
-- fail - cannot do DROP SUBSCRIPTION DROP SLOT inside transaction block
5579
BEGIN;
5680
DROP SUBSCRIPTION testsub DROP SLOT;
@@ -60,6 +84,9 @@ BEGIN;
6084
DROP SUBSCRIPTION testsub NODROP SLOT;
6185
COMMIT;
6286

87+
DROP SUBSCRIPTION IF EXISTS testsub NODROP SLOT;
88+
DROP SUBSCRIPTION testsub NODROP SLOT;-- fail
89+
6390
RESET SESSION AUTHORIZATION;
6491
DROP ROLE regress_subscription_user;
6592
DROP ROLE regress_subscription_user_dummy;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp