@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
これにより、拡張子に応じたすべての関数が結果から除外されます。 マニュアル
依存関係タイプについてdeptype = 'e'
:
そしてp.prokind = 'f'
結果を単純な関数に制限します。 マニュアル:
これはPostgres11の新機能です。Postgres10以前の場合 代わりに使用してください:
SELECT ...
...
AND NOT proisagg -- no aggregate functions
AND NOT proiswindow -- no window functions
手順はありませんでした 、まだ。
pg_get_function_identity_arguments()
を見つけます およびpg_get_functiondef()