Перейти к основному содержимому

pg_amop

В каталоге pg_amop хранится информация об операторах, связанных с семействами операторов методов доступа. Для каждого оператора, входящего в семейство операторов, существует одна строка. Член семейства может быть либо оператором поиска, либо оператором упорядочивания. Оператор может присутствовать более чем в одном семействе, но не может появляться более чем в одной позиции поиска или более чем в одной позиции упорядочивания внутри семейства (допускается, хотя и маловероятно, чтобы оператор использовался и для поиска, и для упорядочивания).

СтолбецТип данныхОписание
oidoidИдентификатор строки
amopfamilyoid (ссылается на pg_opfamily.oidСемейство операторов, для которого эта запись
amoplefttypeoid (ссылается на pg_type.oidТип данных левого входа оператора
amoprighttypeoid (ссылается на pg_type.oidТип входных данных правой руки оператора
amopstrategyint2Номер стратегии оператора
amoppurposecharНазначение оператора, либо s для поиска, либо o для заказа
amopoproid (ссылается на pg_operator.oidOID оператора
amopmethodoid (ссылается на pg_am.oidСемейство операторов метода доступа к индексу для
amopsortfamilyoid (ссылается на pg_opfamily.oidСемейство операторов B-дерева, по которому эта запись сортируется, если оператор упорядочения; ноль, если оператор поиска

Запись оператора «поиск» указывает на то, что индекс данного семейства операторов можно перебрать, чтобы найти все строки, удовлетворяющие константе оператора WHERE indexed_column. Очевидно, что такой оператор должен возвращать булево, а его левый входной тип должен соответствовать типу данных столбца индекса.

Запись оператора «упорядочивание» указывает на то, что индекс этого семейства операторов может быть просканирован для возврата строк в порядке, представленном константой оператора ORDER BY indexed_column. Такой оператор может возвращать любой сортируемый тип данных, хотя, опять же, его левый входной тип должен соответствовать типу данных столбца индекса. Точная семантика ORDER BY задается столбцом amopsortfamily, который должен ссылаться на семейство операторов B-дерева для типа результата оператора.

Примечание:

В настоящее время предполагается, что порядок сортировки оператора упорядочивания является по умолчанию для семейства операторов, на которые ссылаются, т.е., ASC NULLS LAST. Возможно, когда-нибудь это можно ослабить, добавив дополнительные столбцы для явного указания параметров сортировки

amopmethod записи должен совпадать с opfmethod содержащего ее семейства операторов (включение amopmethod сюда является намеренной денормализацией структуры каталога для повышения производительности). Кроме того, amoplefttype и amoprighttype должны соответствовать полям oprleft и oprright записи pg_operator, на которую ссылается запись.