23rd May 2019: PostgreSQL 12 Beta 1 Released!

Sometimes, strategies aren't enough information for the system to figure out how to use an index. Some access methods require additional support routines in order to work. For example, the B-tree access method must be able to compare two keys and determine whether one is greater than, equal to, or less than the other. Similarly, the R-tree access method must be able to compute intersections, unions, and sizes of rectangles. These operations do not correspond to operators used in qualifications in SQL queries; they are administrative routines used by the access methods, internally.

In order to manage diverse support routines consistently
across all PostgreSQL access
methods, `pg_am`

includes a column
called `amsupport`. This column
records the number of support routines used by an access method.
For B-trees, this number is one: the routine to take two keys and
return -1, 0, or +1, depending on whether the first key is less
than, equal to, or greater than the second. (Strictly speaking,
this routine can return a negative number (< 0), zero, or a
non-zero positive number (> 0).)

The `amstrategies` entry in
`pg_am`

is just the number of
strategies defined for the access method in question. The
operators for less than, less equal, and so on don't appear in
`pg_am`

. Similarly, `amsupport` is just the number of support
routines required by the access method. The actual routines are
listed elsewhere.

By the way, the `amorderstrategy`
column tells whether the access method supports ordered scan.
Zero means it doesn't; if it does, `amorderstrategy` is the number of the strategy
routine that corresponds to the ordering operator. For example,
B-tree has `amorderstrategy` = 1,
which is its "less than" strategy
number.