diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index 798c1a2d1e..284ca55469 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -2254,10 +2254,16 @@ pg_get_object_address(PG_FUNCTION_ARGS) */ switch (type) { + case OBJECT_PUBLICATION_NAMESPACE: + case OBJECT_USER_MAPPING: + if (list_length(name) != 1) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("name list length must be exactly %d", 1))); + /* fall through to check args length */ + /* FALLTHROUGH */ case OBJECT_DOMCONSTRAINT: case OBJECT_CAST: - case OBJECT_USER_MAPPING: - case OBJECT_PUBLICATION_NAMESPACE: case OBJECT_PUBLICATION_REL: case OBJECT_DEFACL: case OBJECT_TRANSFORM: diff --git a/src/test/regress/expected/object_address.out b/src/test/regress/expected/object_address.out index 4117fc27c9..cbb99c7b9f 100644 --- a/src/test/regress/expected/object_address.out +++ b/src/test/regress/expected/object_address.out @@ -105,7 +105,7 @@ BEGIN ('text search template'), ('text search configuration'), ('policy'), ('user mapping'), ('default acl'), ('transform'), ('operator of access method'), ('function of access method'), - ('publication relation') + ('publication namespace'), ('publication relation') LOOP FOR names IN VALUES ('{eins}'), ('{addr_nsp, zwei}'), ('{eins, zwei, drei}') LOOP @@ -285,10 +285,10 @@ WARNING: error for policy,{eins,zwei,drei},{}: schema "eins" does not exist WARNING: error for policy,{eins,zwei,drei},{integer}: schema "eins" does not exist WARNING: error for user mapping,{eins},{}: argument list length must be exactly 1 WARNING: error for user mapping,{eins},{integer}: user mapping for user "eins" on server "integer" does not exist -WARNING: error for user mapping,{addr_nsp,zwei},{}: argument list length must be exactly 1 -WARNING: error for user mapping,{addr_nsp,zwei},{integer}: user mapping for user "addr_nsp" on server "integer" does not exist -WARNING: error for user mapping,{eins,zwei,drei},{}: argument list length must be exactly 1 -WARNING: error for user mapping,{eins,zwei,drei},{integer}: user mapping for user "eins" on server "integer" does not exist +WARNING: error for user mapping,{addr_nsp,zwei},{}: name list length must be exactly 1 +WARNING: error for user mapping,{addr_nsp,zwei},{integer}: name list length must be exactly 1 +WARNING: error for user mapping,{eins,zwei,drei},{}: name list length must be exactly 1 +WARNING: error for user mapping,{eins,zwei,drei},{integer}: name list length must be exactly 1 WARNING: error for default acl,{eins},{}: argument list length must be exactly 1 WARNING: error for default acl,{eins},{integer}: unrecognized default ACL object type "i" WARNING: error for default acl,{addr_nsp,zwei},{}: argument list length must be exactly 1 @@ -313,6 +313,12 @@ WARNING: error for function of access method,{addr_nsp,zwei},{}: name list leng WARNING: error for function of access method,{addr_nsp,zwei},{integer}: name list length must be at least 3 WARNING: error for function of access method,{eins,zwei,drei},{}: argument list length must be exactly 2 WARNING: error for function of access method,{eins,zwei,drei},{integer}: argument list length must be exactly 2 +WARNING: error for publication namespace,{eins},{}: argument list length must be exactly 1 +WARNING: error for publication namespace,{eins},{integer}: schema "eins" does not exist +WARNING: error for publication namespace,{addr_nsp,zwei},{}: name list length must be exactly 1 +WARNING: error for publication namespace,{addr_nsp,zwei},{integer}: name list length must be exactly 1 +WARNING: error for publication namespace,{eins,zwei,drei},{}: name list length must be exactly 1 +WARNING: error for publication namespace,{eins,zwei,drei},{integer}: name list length must be exactly 1 WARNING: error for publication relation,{eins},{}: argument list length must be exactly 1 WARNING: error for publication relation,{eins},{integer}: relation "eins" does not exist WARNING: error for publication relation,{addr_nsp,zwei},{}: argument list length must be exactly 1 diff --git a/src/test/regress/sql/object_address.sql b/src/test/regress/sql/object_address.sql index acd0468a9d..8cae20c0f5 100644 --- a/src/test/regress/sql/object_address.sql +++ b/src/test/regress/sql/object_address.sql @@ -98,7 +98,7 @@ BEGIN ('text search template'), ('text search configuration'), ('policy'), ('user mapping'), ('default acl'), ('transform'), ('operator of access method'), ('function of access method'), - ('publication relation') + ('publication namespace'), ('publication relation') LOOP FOR names IN VALUES ('{eins}'), ('{addr_nsp, zwei}'), ('{eins, zwei, drei}') LOOP