他のバージョンの文書 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

17.2. アクセスメソッド

pg_am テーブルには各インデックスアクセスメソッド用の行が一つずつ含まれています。PostgreSQL にはヒープアクセスメソッドが組み込まれていますが、他のすべてのアクセスメソッドはこのpg_amで記述されています。そのスキーマをTable 17-1 に示します。

Table 17-1. インデックスアクセスメソッドのスキーマ

説明
amnameアクセスメソッドの名前
amowner所有者のユーザ ID (現時点では未使用)
amstrategiesこのアクセスメソッド用のストラテジの数(後述)
amsupportこのアクセスメソッド用のサポートルーチンの数(後述)
amorderstrategyインデックスがソート順を提供しない場合はゼロ、その他の場合はソート順を説明するストラテジ演算子のストラテジ数
amcanuniqueAM が一意性インデックスをサポートするかどうか?
amcanmulticolAM が複数列インデックスをサポートするかどうか?
amindexnullsAM がインデックスエントリに NULL を許すかどうか?
amconcurrentAM が同時更新をサポートするかどうか?
amgettuple 
aminsert 
... アクセスメソッドへのインタフェースルーチン 用のプロシージャ識別子。たとえば regproc ID は、ここで紹介するアクセスメソッドをオープン/クローズしたり、そこからインスタンスを取得したりするためのものです。

pg_amの中の行のオブジェクト ID は他の沢山のテーブルの中で外部キーとして使われています。このテーブルには新しい行を追加する必要はありません。唯一重要なのは拡張したいアクセスメソッドのオブジェクト ID です。

SELECT oid FROM pg_am WHERE amname = 'btree';

 oid
-----
 403
(1 row)

後の WHERE 節内にてこの問い合わせを使います。