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 |
|---|
Identificador da linha |
A família de operador para a qual esta entrada se destina |
Tipo de dados do operador de dados de entrada à esquerda |
Tipo de dados do operador de dados de entrada à direita |
Número da estratégia do operador |
Finalidade do operador, um entre |
OID do operador |
Método de acesso a índice para o qual esta família de operador se destina |
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.
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.