pg_amop
pg_amopカタログにはアクセスメソッド演算子の集合に関連付けられた演算子の情報が格納されています。
演算子族のメンバである演算子毎に1つの行が存在します。
演算子族のメンバは検索演算子または順序付け演算子のいずれかになることができます。
演算子は1つ以上の演算子族に現れますが、演算子族の中では検索でも順序付けでも複数現れることはありません。
(ほとんどありませんが、ある演算子が検索目的と順序付け目的の両方で使用されることが許されます。)
表52.4 pg_amopの列
| 名前 | 型 | 参照先 | 説明 |
|---|---|---|---|
oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
amopfamily | oid | | この項目用の演算子族 |
amoplefttype | oid | | 演算子の左辺側のデータ型 |
amoprighttype | oid | | 演算子の右辺側のデータ型 |
amopstrategy | int2 | 演算子の戦略番号 | |
amoppurpose | char | 演算子の目的。検索用ならばs、順序付け用であればo | |
amopopr | oid | | 演算子のOID |
amopmethod | oid | | 演算子族用のインデックスアクセスメソッド |
amopsortfamily | oid | | 順序付け用の演算子の場合、この項目のソートが従うB-tree演算子族。検索用演算子であればゼロ |
「検索」用演算子の項目は、この演算子族のインデックスをWHERE indexed_column operator constantを満たすすべての行を見つけるための検索に使用できることを示します。
いうまでもありませんが、こうした演算子は論理型を返さなければならず、また左辺の入力型はインデックス列のデータ型に一致しなければなりません。
「順序付け」用演算子の項目は、この演算子族のインデックスをORDER BY indexed_column operator constantで表される順序で行を返すためのスキャンに使用できることを示します。
こうした演算子の左辺の入力型はインデックス列のデータ型に一致しなければならないことは同じですが、任意のソート可能なデータ型を返すことができます。
ORDER BYの正確な意味は、この演算子の結果型用のB-tree演算子族を参照する必要があるamopsortfamily列により指定されます。
現在、順序付け演算子のソート順は参照される演算子族のデフォルト、つまりASC NULLS LASTであると仮定されています。
これは将来、ソートオプションを明示的に指定する追加列を加えることで緩和されるかもしれません。
項目のamopmethodは、項目を含む演算子族のopfmethodに一致しなくてはいけません。
(ここでのamopmethodは、性能上の理由からカタログ構造を意図的に非正規化したものも含みます。)
また、amoplefttypeとamoprighttypeは、参照されているpg_operator項目のoprleftとoprrightに一致しなくてはいけません。