sql >> データベース >  >> RDS >> PostgreSQL

どの関数が型を使用しているかを確認するにはどうすればよいですか?

    すべての依存関係は、システムカタログpg_depend

    これにより、タイプに応じてすべての関数が返されます 。つまりRETURNSのタイプのものだけではありません 句だけでなく、関数パラメータとしてタイプを持つもの:

    SELECT objid::regproc                            AS function_name
         , pg_get_functiondef(objid)                 AS function_definition
         , pg_get_function_identity_arguments(objid) AS function_args
         , pg_get_function_result(objid)             AS function_returns
    FROM   pg_depend
    WHERE  refclassid = 'pg_type'::regclass
    AND    refobjid   = 'my_type'::regtype    -- insert your type name here
    AND    classid    = 'pg_proc'::regclass;  -- only find functions
    

    これはテーブル関数でも機能します:

    ...
    RETURNS TABLE (foo my_type, bar int)
    

    システムカタログ情報関数の使用

    (関数ではなく)他の依存関係がある可能性があります。最後のWHEREを削除します クエリからテストへの条件(およびSELECTの適応) リスト、明らかに)。

    また、関数本体または動的SQLのクエリで、型が明示的に(たとえば、キャストで)使用される可能性があります。このようなユースケースは、関数本体のテキストを解析することによってのみ識別できます。システムに登録されている明示的な依存関係はありません。

    関連:



    1. データベースと同期されたMemcachedを実装する方法

    2. SQL-WITH...ASの代替

    3. Kafka jdbc connect がデータを varchar ではなく BLOB として挿入する理由

    4. MySQL-動的ピボットテーブルのグループ化の問題