pg_proc
pg_procカタログは関数、プロシージャ、集約関数あるいはWINDOW関数(これらをまとめてルーチンとも言います)に関する情報を格納します。
CREATE FUNCTIONと37.3を参照してください。
  
prokindがそのエントリが集約関数であることを示しているなら、pg_aggregateに一致する行があるはずです。
  
表51.39 pg_procの列
| 名前 | 型 | 参照先 | 説明 | 
|---|---|---|---|
| oid | oid | 行識別子 | |
| proname | name | 関数名 | |
| pronamespace | oid |  | この関数を含む名前空間のOID | 
| proowner | oid |  | 関数の所有者 | 
| prolang | oid |  | この関数の実装言語または呼び出しインタフェース | 
| procost | float4 | 推定実行コスト(cpu_operator_cost単位です)。 proretsetの場合は、返される行毎のコストになります。 | |
| prorows | float4 | 結果の推定行数( proretsetでなければゼロになります) | |
| provariadic | oid |  | 可変配列パラメータの要素のデータ型。関数が可変パラメータを持っていない場合はゼロになります。 | 
| prosupport | regproc |  | この関数に対する任意のプランナサポート関数 (37.11参照) | 
| prokind | char | fなら通常の関数、pならプロシージャ、aなら集約関数、wならWINDOW関数 | |
| prosecdef | bool | セキュリティ定義の関数(すなわち「setuid」関数) | |
| proleakproof | bool | この関数には副作用がありません。引数に関する情報が戻り値以外から伝わることがありません。 引数の値に依存するエラーを発生する可能性がある関数はすべてリークプルーフ関数ではありません。 | |
| proisstrict | bool | 関数は呼び出し引数がNULLの場合にはNULLを返します。 その場合、関数は実際にはまったく呼び出されません。 「厳密」ではない関数はNULL値入力を取り扱えるようにしなければいけません。 | |
| proretset | bool | 集合(すなわち指定されたデータ型の複数の値)を返す関数 | |
| provolatile | char | provolatileは、関数の結果が入力引数のみで決定されるか、または外部要素に影響されるかを示します。iは「immutable(不変)」関数を表し、同じ入力に対し常に同じ結果をもたらします。sは「stable(安定)」関数を表し、(固定入力に対する)結果はスキャン内で変わりません。vは「volatile(不安定)」関数を表し、どのような場合にも結果は異なる可能性があります。
(また、副作用を持つ関数にvを使用することで、その関数に対する呼び出しが最適化で消されないようにできます。) | |
| proparallel | char | proparallelは関数が並列モードにて安全に実行できるかを示します。sは、制限なしに並列モードにて実行することが安全である関数を表します。rは、並列モードにて実行可能な関数を表しますが、実行は並列グループリーダに制限されます。
並列ワーカプロセスはこれらの関数を呼び出すことができません。uは、並列モードにて安全ではない関数を表します。
このような関数が存在すると、直列的な実行プランが強制されます。 | |
| pronargs | int2 | 入力の引数の数 | |
| pronargdefaults | int2 | デフォルト値を持つ引数の数 | |
| prorettype | oid |  | 戻り値のデータ型 | 
| proargtypes | oidvector |  | 関数の引数のデータ型を格納した配列。
これは入力引数( INOUTとVARIADICも含みます)のみを含んでいて、関数の呼び出しシグネチャを表現します。 | 
| proallargtypes | oid[] |  | 関数の引数のデータ型を格納した配列。
これは( OUTとINOUT引数を含んだ)全ての引数を含みます。
しかし、すべての引数がINであった場合は、この列はNULLになります。
歴史的な理由からproargtypesは0から番号が振られていますが、添字は1から始まっていることに注意してください。 | 
| proargmodes | char[] | 関数の引数のモードを格納した配列。
以下のようにエンコードされています。 IN引数に対してはi、OUT引数に対してはo、INOUT引数に対してはb、VARIADIC引数に対してはv、TABLE引数に対してはt。
もしすべての引数がIN引数であった場合は、この列はNULLです。
添字はproargtypesではなくproallargtypesの位置に対応していることに注意してください。 | |
| proargnames | text[] | 関数の引数名を格納する配列。
名前のない引数は、配列内では空文字列で設定されます。
もしすべての引数に名前がない場合は、この列はNULLです。
添字は proargtypesではなくproallargtypesの位置に対応していることに注意してください。 | |
| proargdefaults | pg_node_tree | デフォルト値のための( nodeToString()表現の)演算式ツリー。
これはpronargdefaultsの要素のリストで、最後のN個の入力引数と対応しています(つまり最後のNproargtypesの位置ということです)。
もし引数にデフォルト値がない場合は、この列はNULLになります。 | |
| protrftypes | oid[] | 変換が適用されるデータ型のOID | |
| prosrc | text | 関数の起動方法を関数ハンドラに伝えます。 実装言語や呼び出し規約に依存して、使用する言語用の関数の実際のソースコード、リンクシンボル、ファイル名などになります。 | |
| probin | text | 関数の起動方法についての追加情報。 同じように解釈は言語に依存します。 | |
| proconfig | text[] | 実行時の設定変数に対する関数のローカル設定 | |
| proacl | aclitem[] | アクセス権限。 詳細は5.7を参照してください。 | 
コンパイル言語で作成された、組み込みおよび動的にロードされる関数では、prosrcは関数のC言語名(リンクシンボル)を持ちます。
他の種類の言語はすべて、prosrcは関数のソーステキストを持ちます。
probinは動的にロードされるC関数に対してその関数を保有する共有ライブラリファイルの名前を与える以外には使用されていません。