Pav*_* V. 8 postgresql function
有一个类似的问题,但它是模棱两可的,并且接受的答案表明这个问题与我的略有不同.
如何查找不属于任何扩展程序(如PostGIS)的用户定义函数?链接问题的答案提供了一个返回大多数PostGIS函数的查询(噪音为我的目的),我不太清楚它是否足以改变它只返回我的函数(缺乏详细解释为什么它的工作方式和方式如何更改设置).
现在我没有C函数,我的所有函数都在模式公共中 - 您可以使用这个事实,但要明确如何释放这些约束.如果确切的扩展列表很重要,那么现在假设只是PostGIS,但是如果从代码中不明显的话,可以解释如何将其他列表添加到列表中.
Erw*_*ter 11
正如@Craig评论的那样,依赖关系存储在pg_catalog.pg_depend.
查询可能如下所示(Postgres 11或更高版本):
SELECT p.proname AS function_name
, pg_get_function_identity_arguments(p.oid) AS parameter_list
, pg_get_functiondef(p.oid) AS function_def -- CREATE FUNCTION statement
FROM pg_proc p
LEFT JOIN pg_depend d ON d.objid = p.oid
AND d.deptype = 'e' -- would depend on extension
WHERE p.pronamespace = 'public'::regnamespace -- your schema(s) of interest
AND d.objid IS NULL -- no such dependency
AND p.prokind = 'f'; -- only plain functions
Run Code Online (Sandbox Code Playgroud)
这取决于所有功能,具体取决于结果的扩展名.关于依赖类型的手册deptype = 'e':
DEPENDENCY_EXTENSION(e)
依赖对象是作为引用对象的扩展的成员(请参阅参考资料
pg_extension).依赖对象只能通过DROP EXTENSION引用的对象删除.从功能上讲,这种依赖类型与内部依赖项的作用相同,但为了清晰起见,它保持独立并简化了pg_dump.
并将p.prokind = 'f'结果限制为普通函数.手册:
f用于正常函数,p用于过程,a用于聚合函数或w用于窗口函数
这是Postgres 11中的新功能.对于Postgres 10或更早版本使用:
SELECT ...
...
AND NOT proisagg -- no aggregate functions
AND NOT proiswindow -- no window functions
Run Code Online (Sandbox Code Playgroud)
还没有程序.
在这里找到pg_get_function_identity_arguments()并pg_get_functiondef() 在手册中.有关:
| 归档时间: |
|
| 查看次数: |
1080 次 |
| 最近记录: |