查找Postgres过程的用法

时间:2019-04-10 07:15:22

标签: postgresql

我想更改Postgres过程,但是在执行此操作之前,我想确保它不会破坏任何东西。

为此,我需要找到它的用法。

1 个答案:

答案 0 :(得分:1)

如果将track_functions设置为plall,则可以使用视图pg_stat_user_functions查看调用函数的频率。

但这可能不是您想要的;我假设您想知道从哪个其他函数调用了函数。这要困难得多,因为PostgreSQL不跟踪函数和代码中使用的对象之间的依赖关系。最好的办法是执行字符串搜索:

SELECT oid::regprocedure
FROM pg_catalog.pg_proc
WHERE prosrc ILIKE '%your_function_name%';

这当然会产生误报,尤其是当您搜索的函数名称是代码中常用的字符串时。

也可能存在假阴性,请考虑以下PL / pgSQL代码:

EXECUTE 'SELECT your_func' || 'tion_name()';

但是,如果您知道自己的代码库,则可以排除这种情况。

一个完全不同的问题是在您的 application 代码中使用该函数的问题。但是由于您仅将问题标记为,所以我认为这不在本文范围之内。