diff options
| author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2014-12-30 15:41:50 -0300 |
|---|---|---|
| committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2014-12-30 15:41:50 -0300 |
| commit | a676201490c8113b4692562126c77a29dfd8dac1 (patch) | |
| tree | 79c188b9f7402d4b006a4a9d86b24b82f0fa3401 /src/test | |
| parent | 5b447ad3a98aa6f059ba467eb10a832eb1544985 (diff) | |
| download | postgresql-a676201490c8113b4692562126c77a29dfd8dac1.tar.gz | |
Add pg_identify_object_as_address
This function returns object type and objname/objargs arrays, which can
be passed to pg_get_object_address. This is especially useful because
the textual representation can be copied to a remote server in order to
obtain the corresponding OID-based address. In essence, this function
is the inverse of recently added pg_get_object_address().
Catalog version bumped due to the addition of the new function.
Also add docs to pg_get_object_address.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/object_address.out | 85 | ||||
| -rw-r--r-- | src/test/regress/sql/object_address.sql | 11 |
2 files changed, 53 insertions, 43 deletions
diff --git a/src/test/regress/expected/object_address.out b/src/test/regress/expected/object_address.out index 87c08daba8..8e11b42759 100644 --- a/src/test/regress/expected/object_address.out +++ b/src/test/regress/expected/object_address.out @@ -339,46 +339,51 @@ WITH objects (type, name, args) AS (VALUES -- event trigger ('policy', '{addr_nsp, gentable, genpol}', '{}') ) -SELECT (pg_identify_object(classid, objid, subobjid)).* - FROM objects, pg_get_object_address(type, name, args) -ORDER BY classid, objid; - type | schema | name | identity ----------------------------+------------+-------------------+---------------------------------------------------------------------- - type | pg_catalog | _int4 | integer[] - type | addr_nsp | gencomptype | addr_nsp.gencomptype - type | addr_nsp | genenum | addr_nsp.genenum - type | addr_nsp | gendomain | addr_nsp.gendomain - function | pg_catalog | | pg_catalog.pg_identify_object(pg_catalog.oid,pg_catalog.oid,integer) - aggregate | addr_nsp | | addr_nsp.genaggr(integer) - sequence | addr_nsp | gentable_a_seq | addr_nsp.gentable_a_seq - table | addr_nsp | gentable | addr_nsp.gentable - table column | addr_nsp | gentable | addr_nsp.gentable.b - index | addr_nsp | gentable_pkey | addr_nsp.gentable_pkey - view | addr_nsp | genview | addr_nsp.genview - materialized view | addr_nsp | genmatview | addr_nsp.genmatview - foreign table column | addr_nsp | genftable | addr_nsp.genftable.a - foreign table | addr_nsp | genftable | addr_nsp.genftable - role | | regtest_addr_user | regtest_addr_user - server | | addr_fserv | addr_fserv - foreign-data wrapper | | addr_fdw | addr_fdw - default value | | | for addr_nsp.gentable.b - cast | | | (bigint AS integer) - table constraint | addr_nsp | | a_chk on addr_nsp.gentable - domain constraint | addr_nsp | | domconstr on addr_nsp.gendomain - conversion | pg_catalog | ascii_to_mic | ascii_to_mic - language | | plpgsql | plpgsql - schema | | addr_nsp | addr_nsp - operator class | pg_catalog | int4_ops | pg_catalog.int4_ops for btree - operator | pg_catalog | | pg_catalog.+(integer,integer) - rule | | | "_RETURN" on addr_nsp.genview - trigger | | | t on addr_nsp.gentable - operator family | pg_catalog | integer_ops | pg_catalog.integer_ops for btree - policy | | | genpol on addr_nsp.gentable - collation | pg_catalog | "default" | pg_catalog."default" - text search dictionary | addr_nsp | addr_ts_dict | addr_nsp.addr_ts_dict - text search parser | addr_nsp | addr_ts_prs | addr_nsp.addr_ts_prs - text search configuration | addr_nsp | addr_ts_conf | addr_nsp.addr_ts_conf - text search template | addr_nsp | addr_ts_temp | addr_nsp.addr_ts_temp +SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*, + -- test roundtrip through pg_identify_object_as_address + ROW(pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)) = + ROW(pg_identify_object(addr2.classid, addr2.objid, addr2.subobjid)) + FROM objects, pg_get_object_address(type, name, args) addr1, + pg_identify_object_as_address(classid, objid, subobjid) ioa(typ,nms,args), + pg_get_object_address(typ, nms, ioa.args) as addr2 + ORDER BY addr1.classid, addr1.objid; + type | schema | name | identity | ?column? +---------------------------+------------+-------------------+----------------------------------------------------------------------+---------- + type | pg_catalog | _int4 | integer[] | t + type | addr_nsp | gencomptype | addr_nsp.gencomptype | t + type | addr_nsp | genenum | addr_nsp.genenum | t + type | addr_nsp | gendomain | addr_nsp.gendomain | t + function | pg_catalog | | pg_catalog.pg_identify_object(pg_catalog.oid,pg_catalog.oid,integer) | t + aggregate | addr_nsp | | addr_nsp.genaggr(integer) | t + sequence | addr_nsp | gentable_a_seq | addr_nsp.gentable_a_seq | t + table | addr_nsp | gentable | addr_nsp.gentable | t + table column | addr_nsp | gentable | addr_nsp.gentable.b | t + index | addr_nsp | gentable_pkey | addr_nsp.gentable_pkey | t + view | addr_nsp | genview | addr_nsp.genview | t + materialized view | addr_nsp | genmatview | addr_nsp.genmatview | t + foreign table column | addr_nsp | genftable | addr_nsp.genftable.a | t + foreign table | addr_nsp | genftable | addr_nsp.genftable | t + role | | regtest_addr_user | regtest_addr_user | t + server | | addr_fserv | addr_fserv | t + foreign-data wrapper | | addr_fdw | addr_fdw | t + default value | | | for addr_nsp.gentable.b | t + cast | | | (bigint AS integer) | t + table constraint | addr_nsp | | a_chk on addr_nsp.gentable | t + domain constraint | addr_nsp | | domconstr on addr_nsp.gendomain | t + conversion | pg_catalog | ascii_to_mic | ascii_to_mic | t + language | | plpgsql | plpgsql | t + schema | | addr_nsp | addr_nsp | t + operator class | pg_catalog | int4_ops | pg_catalog.int4_ops for btree | t + operator | pg_catalog | | pg_catalog.+(integer,integer) | t + rule | | | "_RETURN" on addr_nsp.genview | t + trigger | | | t on addr_nsp.gentable | t + operator family | pg_catalog | integer_ops | pg_catalog.integer_ops for btree | t + policy | | | genpol on addr_nsp.gentable | t + collation | pg_catalog | "default" | pg_catalog."default" | t + text search dictionary | addr_nsp | addr_ts_dict | addr_nsp.addr_ts_dict | t + text search parser | addr_nsp | addr_ts_prs | addr_nsp.addr_ts_prs | t + text search configuration | addr_nsp | addr_ts_conf | addr_nsp.addr_ts_conf | t + text search template | addr_nsp | addr_ts_temp | addr_nsp.addr_ts_temp | t (35 rows) --- diff --git a/src/test/regress/sql/object_address.sql b/src/test/regress/sql/object_address.sql index dc55895d93..9fc27d8f6e 100644 --- a/src/test/regress/sql/object_address.sql +++ b/src/test/regress/sql/object_address.sql @@ -159,9 +159,14 @@ WITH objects (type, name, args) AS (VALUES -- event trigger ('policy', '{addr_nsp, gentable, genpol}', '{}') ) -SELECT (pg_identify_object(classid, objid, subobjid)).* - FROM objects, pg_get_object_address(type, name, args) -ORDER BY classid, objid; +SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)).*, + -- test roundtrip through pg_identify_object_as_address + ROW(pg_identify_object(addr1.classid, addr1.objid, addr1.subobjid)) = + ROW(pg_identify_object(addr2.classid, addr2.objid, addr2.subobjid)) + FROM objects, pg_get_object_address(type, name, args) addr1, + pg_identify_object_as_address(classid, objid, subobjid) ioa(typ,nms,args), + pg_get_object_address(typ, nms, ioa.args) as addr2 + ORDER BY addr1.classid, addr1.objid; --- --- Cleanup resources |
