我的类型定义为:
CREATE TYPE A AS
(header text,
body text,
id numeric);
ALTER TYPE A
我想为它添加更多的属性,但我不知道如何检查这种类型的使用位置。
如何获取哪个函数将其用作返回类型的列表?
例如,如果我有功能:
CREATE OR REPLACE FUNCTION X(a integer, b integer, c integer, d citext)
RETURNS A AS .....
查询将在其结果中列出X.
答案 0 :(得分:1)
示例设置:
create type my_type as (id int, str text);
create table my_table (val my_type);
create function my_fun()
returns my_type language sql as $$
select (1, '1')::my_type;
$$;
使用pg_depend查找对my_type
的所有引用:
select deptype, pg_describe_object(classid, objid, objsubid)
from pg_depend d
join pg_class c on refobjid = reltype
where c.oid = 'my_type'::regclass
deptype | pg_describe_object
---------+---------------------------
i | composite type my_type
i | type my_type[]
n | table my_table column val
n | function my_fun()
(4 rows)
答案 1 :(得分:0)
您可以运行以下查询:
postgres=# select oid::regprocedure from pg_proc
where prorettype = 'A'::regtype;
┌─────────────────────────────────┐
│ oid │
├─────────────────────────────────┤
│ x(integer,integer,integer,text) │
└─────────────────────────────────┘
(1 row)
有关函数的所有信息都存储在表pg_proc
中。