pg_aggregate
pg_aggregateカタログには集約関数の情報が格納されています。
集約関数とは、値の集合(多くの場合は問い合わせ条件に該当する各行の1つの列)にある操作を行い、それらすべての値の演算の結果得られる単一の値を返します。
集約関数の代表的なものはsum、countそしてmaxです。
pg_aggregate内の各項目は、pg_proc内の項目の拡張です。
pg_procの項目には、集約の名前、入出力データ型および通常の関数と類似したその他の情報が含まれます。
表52.2 pg_aggregateの列
| 名前 | 型 | 参照先 | 説明 |
|---|---|---|---|
aggfnoid | regproc | | 集約関数のpg_proc OID |
aggkind | char | 集約関数の種類:
n 「通常の」集約関数、
o 「順序集合の」集約関数、
h 「仮想集合の」集約関数
| |
aggnumdirectargs | int2 |
順序集合や仮想集合の集約関数では、(集約されていない)複数の引数は、可変長配列として1個の引数と見なします。
引数が数がpronargsと同じ場合、最終的な直接引数同様、集約された引数として、集約関数の引数は、可変または可変長配列で記述しなければなりません。
通常の集約関数は引数を取りません。 | |
aggtransfn | regproc | | 遷移関数 |
aggfinalfn | regproc | | 最終関数(ない時はゼロ) |
aggcombinefn | regproc | | 結合関数(ない時はゼロ) |
aggserialfn | regproc | | 直列化関数(ない時はゼロ) |
aggdeserialfn | regproc | | 逆直列化関数(ない時はゼロ) |
aggmtransfn | regproc | | 移動集約モードの順方向遷移関数(ない時はゼロ) |
aggminvtransfn | regproc | | 移動集約モードの逆遷移関数(ない時はゼロ) |
aggmfinalfn | regproc | | 移動集約モードの最終関数(ない時はゼロ) |
aggfinalextra | bool | aggfinalfnに追加の仮引数を渡す場合はTrue | |
aggmfinalextra | bool | aggmfinalfnに追加の仮引数を渡す場合はTrue | |
aggfinalmodify | char | aggfinalfnが遷移状態値を変更するかどうか。
読み出し専用ならr、aggfinalfnの後でaggtransfnを適用できなければs、その値に書き込むならw。
| |
aggmfinalmodify | char | aggmfinalfn用であることを除き、aggfinalmodifyと同様。
| |
aggsortop | oid | | 関連するソート演算子(ない時はゼロ) |
aggtranstype | oid | | 集約関数の内部遷移(状態)データのデータ型 |
aggtransspace | int4 | 遷移状態データの推定平均サイズ(バイト)、またはデフォルトの推定値であるゼロ | |
aggmtranstype | oid | | 移動集約モードの、集約関数の内部遷移(状態)データのデータ型(ない時はゼロ) |
aggmtransspace | int4 | 移動集約モードの、遷移状態データの推定平均サイズ(バイト)、またはデフォルトの推定値であるゼロ | |
agginitval | text | 遷移状態の初期値。 外部文字列表現での初期値を含んだテキストフィールド。 フィールドがNULL値の場合、推移状態はNULL値で始まります。 | |
aggminitval | text | 移動集約モードの、遷移状態の初期値。外部に文字列表記された初期値を含むテキストフィールド。 このフィールドがnullの場合、遷移状態の値はnullから始まります。 |
新しい集約関数はCREATE AGGREGATEコマンドで登録されます。 集約関数の書き方や遷移関数の説明などの詳細は38.11を参照してください。