使用适度的PostgreSQL安装,我们积累了相当多的存储过程/函数和类型。
现在处于最低级别的复合类型(即使用它构建3种类型,并且无数函数引用任何这些类型),该类型的一个元素是错误类型(即smallint而不是bigint ),因此处理它是相同的,只有范围是不同的。
我知道它的4个问题,但是atm这有点令人沮丧,任何帮助都会受到赞赏! 非常感谢!
答案 0 :(得分:1)
系统目录“pg_depend”包含一些有用的依赖项信息。您可以根据特定类型找到对象,如下所示:
select * from pg_depend where refclassid = 'pg_type'::regclass
and refobjid = 'information_schema.sql_identifier'::regtype;
这会查找依赖于“information_schema.sql_identifier”类型的对象。在结果中,classid是目录的OID - 例如,对于取决于用户类型的列,classid是'pg_class':: regclass,objid是pg_class行的OID,objsubid是pg_attribute的attnum值,因此对于这种情况,您可以格式化结果:
select objid::regclass, attname from pg_depend
join pg_attribute on pg_attribute.attrelid = pg_depend.objid and pg_attribute.attnum = pg_depend.objsubid
where refclassid = 'pg_type'::regclass and refobjid = 'information_schema.sql_identifier'::regtype
and classid = 'pg_class'::regclass
limit 10
所以在pg_depend中,(classid,objid,objsubid)
描述了一些取决于(refclassid,refobjid)
描述的对象的对象。