【JPUG主催】PostgreSQLカンファレンス2020【11月13日開催】
他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

44.30. pg_proc

pg_procカタログは関数(またはプロシージャ)に関する情報を格納します。詳細はCREATE FUNCTION項34.3を参照してください。

このテーブルには、明瞭な関数のみならず集約関数も含まれます。proisaggが真ならpg_aggregateに一致する行があるはずです。

表 44-30. pg_procの列

名前参照先説明
pronamename 関数名
pronamespaceoidpg_namespace.oid この関数を含む名前空間のOID
proowneroidpg_authid.oid関数の所有者
prolangoidpg_language.oidこの関数の実装言語または呼び出しインタフェース
procostfloat4 見積もられた実行コスト(cpu_operator_cost単位です)。proretsetの場合は、行ごとに返されたコストになります。
prorowsfloat4 見積もられた結果の行の数(proretsetでなければゼロになります)
provariadicoidpg_type.oid可変配列パラメータの要素のデータ型。もしくはもし関数が可変パラメータを持っていない場合はゼロになります。
proisaggbool 集約関数である関数
proiswindowbool 関数はウィンドウ関数です。
prosecdefbool  セキュリティ定義の関数(例:"setuid"関数)
proisstrictbool  関数は呼び出し引数がNULL値の場合にはNULL値を返します。その場合、関数は実際にはまったく呼び出されません。"厳密"ではない関数はNULL値入力を取り扱えるようにしなければいけません。
proretsetbool  集合を返す関数(すなわち指定されたデータ型の複数の値)
provolatilechar  provolatileは、関数の結果が入力引数のみで決定されるか、または外部要素に影響されるかを示します。"immutable"関数のiは同じ入力に対し常に同じ結果をもたらします。"stable"関数のsはスキャン内で(固定入力の)結果に変更を及ぼしません。"volatile"関数のvは常に異なる結果を出す可能性があります(また、副作用を持つ関数にvを使用することで、その関数に対する呼び出しが最適化されないようにできます)。
pronargsint2 入力の引数の数
pronargdefaultsint2 デフォルト値を持つ引数の数
prorettypeoidpg_type.oid戻り値のデータ型
proargtypesoidvectorpg_type.oid 関数の引数のデータ型を所有した配列。これは入力引数(INOUTVARIADICも含みます)のみを含んでいて、関数の署名の呼び出しを表現しています。
proallargtypesoid[]pg_type.oid関数の引数のデータ型を格納した配列。 これは(OUTINOUT引数を含んだ)全ての引数を含みます。 しかし、全ての引数がINであった場合は、この列はNULLになります。 添え字は1から始まっていることに注意してください。これは歴史的な理由からproargtypesは0から番号が振られていることが理由です。
proargmodeschar[]  関数の引数のモードを所有する配列。以下のように符号化されています。 IN引数に対してはiOUT引数に対してはoINOUT引数に対してはbVARIADIC引数に対してはvTABLE引数に対してはt。 もし全ての引数がIN引数であった場合は、この列はNULLとなります。 添え字はproargtypesではなくproallargtypesの位置に対応していることに注意してください。
proargnamestext[]  関数の引数名を所有する配列。名前のない引数は、配列内では空文字列で設定されます。 もし全ての引数に名前がない場合は、この列はNULLとなります。 添え字はproargtypesではなくproallargtypesの位置に対応していることに注意してください。
proargdefaultstext  デフォルト値のための(nodeToString()形式の)演算式ツリー これはpronargdefaultsの要素のリストで、最後のN input引数と対応しています。 (つまり最後のN proargtypesの位置ということです) もし引数にデフォルト値がない場合は、このフィールドはNULLになります。
prosrctext  関数にどうやって起動をかけるかを関数ハンドラに伝えます。翻訳された言語やリンクシンボル、ファイル名など、実装された言語・呼び出し仕様の実際のソースコードである可能性が大いにあります。
probinbytea  関数を起動する方法についての追加情報。同じように解釈は言語に依存します。
proconfigtext[] 実行時の設定変数に対する関数のローカル設定
proaclaclitem[] アクセス許可権限。詳細はGRANTREVOKEを参照してください。

prosrcは静的に組み込まれたものと動的に取り込まれたもの双方に対し、コンパイルされた関数に対する関数のC言語による名称(リンクシンボル)を持っています。全ての他の言語型に対してprosrcは関数のソーステキストを持ちます。probinは動的に取り込まれたC関数に対してその関数を保有する共有ライブラリファイルの名前を与える以外には使用されていません。