pg_proc カタログは関数(またはプロシージャ)に関する情報を格納します。CREATE FUNCTION コマンドの説明と 項33.3 にはいくつかの列に関するより詳しい情報があります。
このテーブルには、明瞭な関数のみならず集約関数も含まれます。proisagg が真なら pg_aggregate に一致する行があるはずです。
表 43-24. pg_proc 列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
proname | name | 関数名 | |
pronamespace | oid | pg_namespace.oid | この関数を含む名前空間の OID |
proowner | int4 | pg_shadow.usesysid | 関数の所有者 |
prolang | oid | pg_langauge.oid | この関数の実装言語または呼び出しインタフェース |
proisagg | bool | 集約関数である関数 | |
prosecdef | bool | セキュリティ定義の関数(例:"setuid" 関数) | |
proisstrict | bool | 関数は呼び出し引数が NULL 値 の場合には NULL 値を返します。その場合、関数は実際にはまったく呼び出されません。"厳密"ではない関数は NULL 値入力を取り扱えるようにしなければいけません。 | |
proretset | bool | 集合を返す関数(すなわち指定されたデータ型の複数の値) | |
provolatile | char | provolatile は、関数の結果が入力引数のみで決定されるか、または外部要素に影響されるかを示します。"immutable" 関数の i は同じ入力に対し常に同じ結果をもららします。"stable" 関数の s はスキャン内で(固定入力の)結果に変更を及ぼしません。"volatile" 関数の v は常に異なる結果を出す可能性があります。(また、副作用を持つ関数に v を使用することで、その関数に対する呼び出しが最適化されないようにできます。) | |
pronargs | int2 | 引数の数 | |
prorettype | oid | pg_type.oid | 戻り値のデータ型 |
proargtypes | oidvector | pg_type.oid | 関数の引数のデータ型を所有した配列 |
prosrc | text | 関数にどうやって起動かけるかを関数ハンドラに伝えます。翻訳された言語やリンクシンボル、ファイル名など、実装された言語・呼び出し仕様の実際のソースコードである可能性が多いにあります。 | |
probin | bytea | 関数を起動する方法に付いての追加情報。同じように解釈は言語に依存します。 | |
proacl | aclitem[] | アクセス許可権限 |
prosrc は静的に組み込まれたものと動的に取り込まれたもの双方に対し、コンパイルされた関数に対する関数の C 言語による名称(リンクシンボル)を持っています。すべての他の言語型に対して prosrc は関数のソーステキストを持ちます。probin は動的に取り込まれた C 関数に対してその関数を保有する共有ライブラリファイルの名前を与える以外には使用されていません。