他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

52.38. pg_proc

pg_procカタログは関数、プロシージャ、集約関数あるいはWINDOW関数(これらをまとめてルーチンとも言います)に関する情報を格納します。 CREATE FUNCTIONCREATE PROCEDURE38.3を参照してください。

prokindがそのエントリが集約関数であることを示しているなら、pg_aggregateに一致する行があるはずです。

表52.38 pg_procの列

列 型

説明

oid oid

行識別子

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

可変配列パラメータの要素のデータ型。関数が可変パラメータを持っていない場合はゼロになります。

prosupport regproc (参照先 pg_proc.oid

この関数に対する任意のプランナサポート関数。なければゼロ。 (38.11参照)

prokind char

fなら通常の関数、pならプロシージャ、aなら集約関数、wならWINDOW関数

prosecdef bool

セキュリティ定義の関数(すなわちsetuid関数)

proleakproof bool

この関数には副作用がありません。引数に関する情報が戻り値以外から伝わることがありません。 引数の値に依存するエラーを発生する可能性がある関数はすべてリークプルーフ関数ではありません。

proisstrict bool

関数は呼び出し引数がNULLの場合にはNULLを返します。 その場合、関数は実際にはまったく呼び出されません。 厳密ではない関数はNULL値入力を取り扱えるようにしなければいけません。

proretset bool

集合(すなわち指定されたデータ型の複数の値)を返す関数

provolatile char

provolatileは、関数の結果が入力引数のみで決定されるか、または外部要素に影響されるかを示します。 iimmutable(不変)関数を表し、同じ入力に対し常に同じ結果をもたらします。 sstable(安定)関数を表し、(固定入力に対する)結果はスキャン内で変わりません。 vvolatile(不安定)関数を表し、どのような場合にも結果は異なる可能性があります。 (また、副作用を持つ関数にvを使用することで、その関数に対する呼び出しが最適化で消されないようにできます。)

proparallel char

proparallelは関数が並列モードにて安全に実行できるかを示します。 sは、制限なしに並列モードにて実行することが安全である関数を表します。 rは、並列モードにて実行可能な関数を表しますが、実行は並列グループリーダに制限されます。 並列ワーカプロセスはこれらの関数を呼び出すことができません。 uは、並列モードにて安全ではない関数を表します。 このような関数が存在すると、直列的な実行プランが強制されます。

pronargs int2

入力の引数の数

pronargdefaults int2

デフォルト値を持つ引数の数

prorettype oid (参照先 pg_type.oid

戻り値のデータ型

proargtypes oidvector (参照先 pg_type.oid

関数の引数のデータ型を格納した配列。 これは入力引数(INOUTVARIADICも含みます)のみを含んでいて、関数の呼び出しシグネチャを表現します。

proallargtypes oid[] (参照先 pg_type.oid

関数の引数のデータ型を格納した配列。 これは(OUTINOUT引数を含んだ)全ての引数を含みます。 しかし、すべての引数がINであった場合は、この列はNULLになります。 歴史的な理由からproargtypesは0から番号が振られていますが、添字は1から始まっていることに注意してください。

proargmodes char[]

関数の引数のモードを格納した配列。 以下のようにエンコードされています。 IN引数に対してはiOUT引数に対してはoINOUT引数に対してはbVARIADIC引数に対してはvTABLE引数に対してはt。 もしすべての引数がIN引数であった場合は、この列はNULLです。 添字はproargtypesではなくproallargtypesの位置に対応していることに注意してください。

proargnames text[]

関数の引数名を格納する配列。 名前のない引数は、配列内では空文字列で設定されます。 もしすべての引数に名前がない場合は、この列はNULLです。 添字はproargtypesではなくproallargtypesの位置に対応していることに注意してください。

proargdefaults pg_node_tree

デフォルト値のための(nodeToString()表現の)演算式ツリー。 これはpronargdefaultsの要素のリストで、最後のN個の入力引数と対応しています(つまり最後のN proargtypesの位置ということです)。 もし引数にデフォルト値がない場合は、この列はNULLになります。

protrftypes oid[] (参照先 pg_type.oid

(関数のTRANSFORM句による)変換を適用するための引数/結果データ型の配列。 なければNULL。

prosrc text

関数の起動方法を関数ハンドラに伝えます。 実装言語や呼び出し規約に依存して、使用する言語用の関数の実際のソースコード、リンクシンボル、ファイル名などになります。

probin text

関数の起動方法についての追加情報。 同じように解釈は言語に依存します。

prosqlbody pg_node_tree

前もってパースしたSQL関数の本体。 文字列リテラルではなく、SQL標準表記で本体が与えられた時にSQL言語関数に使用されます。 その他の場合はNULLです。

proconfig text[]

実行時の設定変数に対する関数のローカル設定

proacl aclitem[]

アクセス権限。 詳細は5.7を参照してください。


コンパイル言語で作成された、組み込みおよび動的にロードされる関数では、prosrcは関数のC言語名(リンクシンボル)を持ちます。 SQL言語関数に対しては、関数が文字列リテラルで与えられた場合にprosrcは関数のソーステキストを持ちます。 しかし関数本体がSQL標準形式で指定された場合には、prosrcは使われず(典型的には空文字列となります)、prosqlbodyに前もってパースされた定義が格納されます。 それ以外の現在知られているすべての言語形式では、prosrcには関数のソーステキストが含まれます。 probinは動的にロードされるC関数に対してはその関数を保有する共有ライブラリファイルの名前を与えますが、それ以外ではNULLです。