pg_amop
pg_amop
カタログにはアクセスメソッド演算子の集合に関連付けられた演算子の情報が格納されています。
演算子族のメンバである演算子毎に1つの行が存在します。
演算子族のメンバは検索演算子または順序付け演算子のいずれかになることができます。
演算子は1つ以上の演算子族に現れますが、演算子族の中では検索でも順序付けでも複数現れることはありません。
(ほとんどありませんが、ある演算子が検索目的と順序付け目的の両方で使用されることが許されます。)
表51.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
に一致しなくてはいけません。