The pg_am table contains one row for every index access method. Support for the heap access method is built into PostgreSQL, but all other access methods are described in pg_am. The schema is shown in Table 17-1.
Table 17-1. Index Access Method Schema
|amname||name of the access method|
|amowner||user ID of the owner (currently not used)|
|amstrategies||number of strategies for this access method (see below)|
|amsupport||number of support routines for this access method (see below)|
|amorderstrategy||zero if the index offers no sort order, otherwise the strategy number of the strategy operator that describes the sort order|
|amcanunique||does AM support unique indexes?|
|amcanmulticol||does AM support multicolumn indexes?|
|amindexnulls||does AM support NULL index entries?|
|amconcurrent||does AM support concurrent updates?|
|...||procedure identifiers for interface routines to the access method. For example, regproc IDs for opening, closing, and getting rows from the access method appear here.|
The object ID of the row in pg_am is used as a foreign key in a lot of other tables. You do not need to add a new row to this table; all that you are interested in is the object ID of the access method you want to extend:
SELECT oid FROM pg_am WHERE amname = 'btree'; oid ----- 403 (1 row)
We will use that query in a WHERE clause later.