@@ -36,6 +36,8 @@ ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user REVOKE DELETE ON TABLES FROM
3636CREATE TRANSFORM FOR int LANGUAGE SQL (
3737 FROM SQL WITH FUNCTION varchar_transform(internal),
3838 TO SQL WITH FUNCTION int4recv(internal));
39+ CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable;
40+ CREATE SUBSCRIPTION addr_sub CONNECTION '' PUBLICATION bar WITH (DISABLED, NOCREATE SLOT);
3941-- test some error cases
4042SELECT pg_get_object_address('stone', '{}', '{}');
4143ERROR: unrecognized object type "stone"
8183 ('text search parser'), ('text search dictionary'),
8284 ('text search template'), ('text search configuration'),
8385 ('policy'), ('user mapping'), ('default acl'), ('transform'),
84- ('operator of access method'), ('function of access method')
86+ ('operator of access method'), ('function of access method'),
87+ ('publication relation')
8588 LOOP
8689 FOR names IN VALUES ('{eins}'), ('{addr_nsp, zwei}'), ('{eins, zwei, drei}')
8790 LOOP
@@ -283,6 +286,12 @@ WARNING: error for function of access method,{addr_nsp,zwei},{}: name list leng
283286WARNING: error for function of access method,{addr_nsp,zwei},{integer}: name list length must be at least 3
284287WARNING: error for function of access method,{eins,zwei,drei},{}: argument list length must be exactly 2
285288WARNING: error for function of access method,{eins,zwei,drei},{integer}: argument list length must be exactly 2
289+ WARNING: error for publication relation,{eins},{}: argument list length must be exactly 1
290+ WARNING: error for publication relation,{eins},{integer}: relation "eins" does not exist
291+ WARNING: error for publication relation,{addr_nsp,zwei},{}: argument list length must be exactly 1
292+ WARNING: error for publication relation,{addr_nsp,zwei},{integer}: relation "addr_nsp.zwei" does not exist
293+ WARNING: error for publication relation,{eins,zwei,drei},{}: argument list length must be exactly 1
294+ WARNING: error for publication relation,{eins,zwei,drei},{integer}: cross-database references are not implemented: "eins.zwei.drei"
286295-- these object types cannot be qualified names
287296SELECT pg_get_object_address('language', '{one}', '{}');
288297ERROR: language "one" does not exist
@@ -330,6 +339,14 @@ SELECT pg_get_object_address('access method', '{one}', '{}');
330339ERROR: access method "one" does not exist
331340SELECT pg_get_object_address('access method', '{one,two}', '{}');
332341ERROR: access method name cannot be qualified
342+ SELECT pg_get_object_address('publication', '{one}', '{}');
343+ ERROR: publication "one" does not exist
344+ SELECT pg_get_object_address('publication', '{one,two}', '{}');
345+ ERROR: publication name cannot be qualified
346+ SELECT pg_get_object_address('subscription', '{one}', '{}');
347+ ERROR: subscription "one" does not exist
348+ SELECT pg_get_object_address('subscription', '{one,two}', '{}');
349+ ERROR: subscription name cannot be qualified
333350-- test successful cases
334351WITH objects (type, name, args) AS (VALUES
335352 ('table', '{addr_nsp, gentable}'::text[], '{}'::text[]),
@@ -379,7 +396,10 @@ WITH objects (type, name, args) AS (VALUES
379396 -- event trigger
380397 ('policy', '{addr_nsp, gentable, genpol}', '{}'),
381398 ('transform', '{int}', '{sql}'),
382- ('access method', '{btree}', '{}')
399+ ('access method', '{btree}', '{}'),
400+ ('publication', '{addr_pub}', '{}'),
401+ ('publication relation', '{addr_nsp, gentable}', '{addr_pub}'),
402+ ('subscription', '{addr_sub}', '{}')
383403 )
384404SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*,
385405 -- test roundtrip through pg_identify_object_as_address
@@ -433,13 +453,18 @@ SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*,
433453 text search parser | addr_nsp | addr_ts_prs | addr_nsp.addr_ts_prs | t
434454 text search configuration | addr_nsp | addr_ts_conf | addr_nsp.addr_ts_conf | t
435455 text search template | addr_nsp | addr_ts_temp | addr_nsp.addr_ts_temp | t
436- (42 rows)
456+ subscription | | addr_sub | addr_sub | t
457+ publication | | addr_pub | addr_pub | t
458+ publication relation | | | gentable in publication addr_pub | t
459+ (45 rows)
437460
438461---
439462--- Cleanup resources
440463---
441464SET client_min_messages TO 'warning';
442465DROP FOREIGN DATA WRAPPER addr_fdw CASCADE;
466+ DROP PUBLICATION addr_pub;
467+ DROP SUBSCRIPTION addr_sub NODROP SLOT;
443468DROP SCHEMA addr_nsp CASCADE;
444469DROP OWNED BY regress_addr_user;
445470DROP USER regress_addr_user;
0 commit comments