PostgreSQL 9.2.4文書 | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 45章システムカタログ | 次のページ |
pg_procカタログは関数(またはプロシージャ)に関する情報を格納します。 CREATE FUNCTIONと項35.3を参照してください。
このテーブルには、普通の関数のみならず集約関数も含まれます。 proisaggが真ならpg_aggregateに一致する行があるはずです。
表 45-35. 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 | 可変配列パラメータの要素のデータ型。関数が可変パラメータを持っていない場合はゼロになります。 |
protransform | regproc | pg_proc.oid | この関数呼び出しは他の関数により簡略化できます。 (項35.9.11を参照してください) |
proisagg | bool | 関数は集約関数です。 | |
proiswindow | bool | 関数はウィンドウ関数です。 | |
prosecdef | bool | セキュリティ定義の関数(すなわち"setuid"関数) | |
proleakproof | bool | この関数には副作用がありません。引数に関する情報が戻り値以外から伝わることがありません。 引数の値に依存するエラーを発生する可能性がある関数はすべてリークプルーフ関数ではありません。 | |
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になります。 歴史的な理由から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個の入力引数と対応しています
(つまり最後のN proargtypesの位置ということです)。
もし引数にデフォルト値がない場合は、この列はNULLになります。
| |
prosrc | text | 関数の起動方法を関数ハンドラに伝えます。 実装言語や呼び出し規約に依存して、使用する言語用の関数の実際のソースコード、リンクシンボル、ファイル名などになります。 | |
probin | text | 関数の起動方法についての追加情報。 同じように解釈は言語に依存します。 | |
proconfig | text[] | 実行時の設定変数に対する関数のローカル設定 | |
proacl | aclitem[] | アクセス権限。 GRANTとREVOKEを参照してください。 |
コンパイル言語で作成された、組込みおよび動的にロードされる関数では、prosrcは関数のC言語名(リンクシンボル)を持ちます。 他の種類の言語はすべて、prosrcは関数のソーステキストを持ちます。 probinは動的にロードされるC関数に対してその関数を保有する共有ライブラリファイルの名前を与える以外には使用されていません。