52.4. pg_amop #

O catálogo pg_amop armazena informações sobre operadores associados a famílias de operador de métodos de acesso. Há uma linha para cada operador que é membro de uma família de operador. Um membro da família pode ser um operador de procura ou um operador de ordenação. Um operador pode aparecer em mais de uma família, mas não pode aparecer em mais de uma posição de procura, nem em mais de uma posição de ordenação dentro de uma família. (É permitido, embora improvável, que um operador seja usado tanto para fins de procura quanto de ordenação.)

Tabela 52.4. Colunas de pg_amop

Coluna Tipo de dados

Descrição

oid oid

Identificador da linha

amopfamily oid (referencia pg_opfamily.oid)

A família de operador para a qual esta entrada se destina

amoplefttype oid (referencia pg_type.oid)

Tipo de dados do operador de dados de entrada à esquerda

amoprighttype oid (referencia pg_type.oid)

Tipo de dados do operador de dados de entrada à direita

amopstrategy int2

Número da estratégia do operador

amoppurpose char

Finalidade do operador, um entre s para procura e o para ordenação

amopopr oid (referencia pg_operator.oid)

OID do operador

amopmethod oid (referencia pg_am.oid)

Método de acesso a índice para o qual esta família de operador se destina

amopsortfamily oid (referencia pg_opfamily.oid)

Se for um operador de ordenação, a família de operador de Árvore-B que esta entrada classifica de acordo com; zero se for um operador de procura


Uma entrada de operador de procura indica que pode ser procurado um índice dessa família de operador para encontrar todas as linhas que satisfaçam WHERE coluna_indexada operador constante. Obviamente, este operador deve retornar boolean, e seu tipo de dados de entrada à esquerda deve corresponder ao tipo de dados da coluna do índice.

Uma entrada de operador de ordenação indica que pode ser varrido um índice dessa família de operador para retornar linhas na ordem representada por ORDER BY coluna_indexada operador constante. Este operador poderia retornar qualquer tipo de dados classificável, embora novamente seu tipo de dados de entrada à esquerda deva corresponder ao tipo de dados da coluna do índice. A semântica exata de ORDER BY é especificada pela coluna amopsortfamily, que deve fazer r eferência a uma família de operador de árvore-B para o tipo de dados de resultado do operador.

Nota

No momento, assume-se que a ordem de classificação para um operador de ordenação é a padrão para a família de operador referenciada, ou seja, ASC NULLS LAST. Algum dia isto poderá ser relaxado com a adição de colunas adicionais para especificar explicitamente as opções de classificação.

O amopmethod de uma entrada deve corresponder ao opfmethod da família de operador que o contém (incluir amopmethod aqui é uma desnormalização intencional da estrutura do catálogo por motivos de desempenho). Também, amoplefttype e amoprighttype devem corresponder aos campos oprleft e oprright da entrada de pg_operator referenciada.