pg_proc

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

# 45.31. `pg_proc`

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

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

表 45-31. `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`個の入力引数と対応しています （つまり最後の`N` `proargtypes`の位置ということです）。 もし引数にデフォルト値がない場合は、この列はNULLになります。
`prosrc` | `text` |  | 関数の起動方法を関数ハンドラに伝えます。 実装言語や呼び出し規約に依存して、使用する言語用の関数の実際のソースコード、リンクシンボル、ファイル名などになります。
`probin` | `text` |  | 関数の起動方法についての追加情報。 同じように解釈は言語に依存します。
`proconfig` | `text[]` |  | 実行時の設定変数に対する関数のローカル設定
`proacl` | `aclitem[]` |  | アクセス権限。 GRANTとREVOKEを参照してください。

コンパイル言語で作成された、組込みおよび動的にロードされる関数では、`prosrc`は関数のC言語名（リンクシンボル）を持ちます。 他の種類の言語はすべて、`prosrc`は関数のソーステキストを持ちます。 `probin`は動的にロードされるC関数に対してその関数を保有する共有ライブラリファイルの名前を与える以外には使用されていません。

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