pg_proc

PostgreSQL 8.4.1文書
前のページ | 巻戻し | 第 44章システムカタログ | 早送り | 次のページ

# 44.30. `pg_proc`

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

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

表 44-30. `pg_proc`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`proname` | `name` |  | 関数名
`pronamespace` | `oid` | ``pg_namespace`.oid` | この関数を含む名前空間のOID
`proowner` | `oid` | ``pg_authid`.oid` | 関数の所有者
`prolang` | `oid` | ``pg_language`.oid` | この関数の実装言語または呼び出しインタフェース
`procost` | `float4` |  | 見積もられた実行コスト(cpu_operator_cost単位です)。`proretset`の場合は、行ごとに返されたコストになります。
`prorows` | `float4` |  | 見積もられた結果の行の数(`proretset`でなければゼロになります)
`provariadic` | `oid` | ``pg_type`.oid` | 可変配列パラメータの要素のデータ型。もしくはもし関数が可変パラメータを持っていない場合はゼロになります。
`proisagg` | `bool` |  | 集約関数である関数
`proiswindow` | `bool` |  | 関数はウィンドウ関数です。
`prosecdef` | `bool` |  | セキュリティ定義の関数（例："setuid"関数）
`proisstrict` | `bool` |  | 関数は呼び出し引数がNULL値の場合にはNULL値を返します。その場合、関数は実際にはまったく呼び出されません。"厳密"ではない関数はNULL値入力を取り扱えるようにしなければいけません。
`proretset` | `bool` |  | 集合を返す関数（すなわち指定されたデータ型の複数の値）
`provolatile` | `char` |  | `provolatile`は、関数の結果が入力引数のみで決定されるか、または外部要素に影響されるかを示します。"immutable"関数の`i`は同じ入力に対し常に同じ結果をもたらします。"stable"関数の`s`はスキャン内で（固定入力の）結果に変更を及ぼしません。"volatile"関数の`v`は常に異なる結果を出す可能性があります（また、副作用を持つ関数に`v`を使用することで、その関数に対する呼び出しが最適化されないようにできます）。
`pronargs` | `int2` |  | 入力の引数の数
`pronargdefaults` | `int2` |  | デフォルト値を持つ引数の数
`prorettype` | `oid` | ``pg_type`.oid` | 戻り値のデータ型
`proargtypes` | `oidvector` | ``pg_type`.oid` | 関数の引数のデータ型を所有した配列。これは入力引数（`INOUT`と`VARIADIC`も含みます）のみを含んでいて、関数の署名の呼び出しを表現しています。
`proallargtypes` | `oid[]` | ``pg_type`.oid` | 関数の引数のデータ型を格納した配列。 これは（`OUT`と`INOUT`引数を含んだ）全ての引数を含みます。 しかし、全ての引数が`IN`であった場合は、この列はNULLになります。 添え字は1から始まっていることに注意してください。これは歴史的な理由から`proargtypes`は0から番号が振られていることが理由です。
`proargmodes` | `char[]` |  | 関数の引数のモードを所有する配列。以下のように符号化されています。 `IN`引数に対しては`i`、 `OUT`引数に対しては`o`、 `INOUT`引数に対しては`b`、 `VARIADIC`引数に対しては`v`、 `TABLE`引数に対しては`t`。 もし全ての引数が`IN`引数であった場合は、この列はNULLとなります。 添え字は`proargtypes`ではなく`proallargtypes`の位置に対応していることに注意してください。
`proargnames` | `text[]` |  | 関数の引数名を所有する配列。名前のない引数は、配列内では空文字列で設定されます。 もし全ての引数に名前がない場合は、この列はNULLとなります。 添え字は`proargtypes`ではなく`proallargtypes`の位置に対応していることに注意してください。
`proargdefaults` | `text` |  | デフォルト値のための(`nodeToString()`形式の)演算式ツリー これは`pronargdefaults`の要素のリストで、最後の`N` input引数と対応しています。 (つまり最後の`N` `proargtypes`の位置ということです) もし引数にデフォルト値がない場合は、このフィールドはNULLになります。
`prosrc` | `text` |  | 関数にどうやって起動をかけるかを関数ハンドラに伝えます。翻訳された言語やリンクシンボル、ファイル名など、実装された言語・呼び出し仕様の実際のソースコードである可能性が大いにあります。
`probin` | `bytea` |  | 関数を起動する方法についての追加情報。同じように解釈は言語に依存します。
`proconfig` | `text[]` |  | 実行時の設定変数に対する関数のローカル設定
`proacl` | `aclitem[]` |  | アクセス許可権限。詳細はGRANTとREVOKEを参照してください。

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

前のページ | ホーム | 次のページ
`pg_pltemplate` | 上に戻る | `pg_rewrite`