|
|
|
|
@ -5,7 +5,10 @@ CREATE ROLE regress_publication_user LOGIN SUPERUSER; |
|
|
|
|
CREATE ROLE regress_publication_user2; |
|
|
|
|
CREATE ROLE regress_publication_user_dummy LOGIN NOSUPERUSER; |
|
|
|
|
SET SESSION AUTHORIZATION 'regress_publication_user'; |
|
|
|
|
-- suppress warning that depends on wal_level |
|
|
|
|
SET client_min_messages = 'ERROR'; |
|
|
|
|
CREATE PUBLICATION testpub_default; |
|
|
|
|
RESET client_min_messages; |
|
|
|
|
COMMENT ON PUBLICATION testpub_default IS 'test publication'; |
|
|
|
|
SELECT obj_description(p.oid, 'pg_publication') FROM pg_publication p; |
|
|
|
|
obj_description |
|
|
|
|
@ -13,7 +16,9 @@ SELECT obj_description(p.oid, 'pg_publication') FROM pg_publication p; |
|
|
|
|
test publication |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SET client_min_messages = 'ERROR'; |
|
|
|
|
CREATE PUBLICATION testpib_ins_trunct WITH (publish = insert); |
|
|
|
|
RESET client_min_messages; |
|
|
|
|
ALTER PUBLICATION testpub_default SET (publish = update); |
|
|
|
|
-- error cases |
|
|
|
|
CREATE PUBLICATION testpub_xxx WITH (foo); |
|
|
|
|
@ -43,7 +48,9 @@ CREATE TABLE testpub_tbl1 (id serial primary key, data text); |
|
|
|
|
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); |
|
|
|
|
SET client_min_messages = 'ERROR'; |
|
|
|
|
CREATE PUBLICATION testpub_foralltables FOR ALL TABLES WITH (publish = 'insert'); |
|
|
|
|
RESET client_min_messages; |
|
|
|
|
ALTER PUBLICATION testpub_foralltables SET (publish = 'insert, update'); |
|
|
|
|
CREATE TABLE testpub_tbl2 (id serial primary key, data text); |
|
|
|
|
-- fail - can't add to for all tables publication |
|
|
|
|
@ -86,8 +93,10 @@ DROP TABLE testpub_tbl2; |
|
|
|
|
DROP PUBLICATION testpub_foralltables; |
|
|
|
|
CREATE TABLE testpub_tbl3 (a int); |
|
|
|
|
CREATE TABLE testpub_tbl3a (b text) INHERITS (testpub_tbl3); |
|
|
|
|
SET client_min_messages = 'ERROR'; |
|
|
|
|
CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3; |
|
|
|
|
CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3; |
|
|
|
|
RESET client_min_messages; |
|
|
|
|
\dRp+ testpub3 |
|
|
|
|
Publication testpub3 |
|
|
|
|
Owner | All tables | Inserts | Updates | Deletes | Truncates |
|
|
|
|
@ -111,7 +120,9 @@ DROP PUBLICATION testpub3, testpub4; |
|
|
|
|
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; |
|
|
|
|
ERROR: "testpub_view" is not a table |
|
|
|
|
DETAIL: Only tables can be added to publications. |
|
|
|
|
SET client_min_messages = 'ERROR'; |
|
|
|
|
CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk; |
|
|
|
|
RESET client_min_messages; |
|
|
|
|
-- fail - already added |
|
|
|
|
ALTER PUBLICATION testpub_fortbl ADD TABLE testpub_tbl1; |
|
|
|
|
ERROR: relation "testpub_tbl1" is already member of publication "testpub_fortbl" |
|
|
|
|
@ -196,7 +207,9 @@ ERROR: permission denied for database regression |
|
|
|
|
SET ROLE regress_publication_user; |
|
|
|
|
GRANT CREATE ON DATABASE regression TO regress_publication_user2; |
|
|
|
|
SET ROLE regress_publication_user2; |
|
|
|
|
SET client_min_messages = 'ERROR'; |
|
|
|
|
CREATE PUBLICATION testpub2; -- ok |
|
|
|
|
RESET client_min_messages; |
|
|
|
|
ALTER PUBLICATION testpub2 ADD TABLE testpub_tbl1; -- fail |
|
|
|
|
ERROR: must be owner of table testpub_tbl1 |
|
|
|
|
SET ROLE regress_publication_user; |
|
|
|
|
|