pg_amop#

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

Столбец

Тип данных

Описание

oid

oid

Идентификатор строки

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

Семейство операторов B-дерева, по которому эта запись сортируется, если оператор упорядочения; ноль, если оператор поиска

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

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

Примечание:

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

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