pg_amop

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 第 45章システムカタログ | 早送り | 次のページ

# 45.4. `pg_amop`

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

表 45-4. `pg_amop`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`amopfamily` | `oid` | ``pg_opfamily`.oid` | この項目用の演算子族
`amoplefttype` | `oid` | ``pg_type`.oid` | 演算子の左辺側のデータ型
`amoprighttype` | `oid` | ``pg_type`.oid` | 演算子の右辺側のデータ型
`amopstrategy` | `int2` |  | 演算子の戦略番号
`amoppurpose` | `char` |  | 演算子の目的。検索用ならば`s`、順序付け用であれば`o`
`amopopr` | `oid` | ``pg_operator`.oid` | 演算子のOID
`amopmethod` | `oid` | ``pg_am`.oid` | 演算子族用のインデックスアクセスメソッド
`amopsortfamily` | `oid` | ``pg_opfamily`.oid` | 順序付け用の演算子の場合、この項目のソートが従うbtree演算子族。検索用演算子であればゼロ

"検索"用演算子の項目は、この演算子族のインデックスを`WHERE` `indexed_column` `operator` `constant`を持たすすべての行を見つけるための検索に使用できることを示します。 いうまでもありませんが、こうした演算子は論理型を返さなければならず、また左辺の入力型はインデックス列のデータ型に一致しなければなりません。

"順序付け"用演算子の項目は、この演算子族のインデックスを `ORDER BY` `indexed_column` `operator` `constant`で表される順序で行を返すためのスキャンに使用することができることを示します。 こうした演算子の左辺の入力型はインデックス列のデータ型に一致しなければならないことは同じですが、任意のソート可能なデータ型を返すことができます。 `ORDER BY`の正確な意味は、この演算子の結果型用のbtree演算子族を参照する必要がある`amopsortfamily`列により指定されます。

> 注意: 現在、順序付け演算子のソート順は参照される演算子族のデフォルト、つまり`ASC NULLS LAST`であると仮定されています。 これは将来、ソートオプションを明示的に指定する追加列を加えることで緩和されるかもしれません。

項目の`amopmethod`は、項目を含む演算子族の`opfmethod`に一致しなくてはいけません。 （ここでの`amopmethod`は、性能上の理由からカタログ構造を意図的に非正規化したものも含みます。） また、`amoplefttype`と`amoprighttype`は、参照されている`pg_operator`項目の`oprleft`と`oprright`に一致しなくてはいけません。

前のページ | ホーム | 次のページ
`pg_am` | 上に戻る | `pg_amproc`