CREATE OPERATOR CLASS

Nome

CREATE OPERATOR CLASS -- cria uma classe de operadores

Sinopse

CREATE OPERATOR CLASS nome [ DEFAULT ] FOR TYPE tipo_de_dado USING método_de_índice AS
  {  OPERATOR número_da_estratégia nome_do_operador [ ( tipo_do_operador, tipo_do_operador ) ] [ RECHECK ]
   | FUNCTION número_de_suporte nome_da_função ( tipo_do_argumento [, ...] )
   | STORAGE tipo_armazenado
  } [, ... ]

Descrição

O comando CREATE OPERATOR CLASS cria uma classe de operadores. Uma classe de operadores define como um determinado tipo de dado pode ser usado em um índice. A classe de operadores especifica que certos operadores vão desempenhar determinados papéis, ou "estratégias", para este tipo de dado e este método de índice. A classe de operadores também especifica os procedimentos de suporte a serem usados pelo método do índice quando a classe de operadores for selecionada para uma coluna do índice. Todos os operadores e funções usados por uma classe de operadores deverão estar definidos antes da classe de operadores ser criada.

Se for fornecido o nome do esquema então a classe de operadores será criada no esquema especificado, senão será criada no esquema corrente. Duas classes de operadores no mesmo esquema podem ter o mesmo nome somente se forem para métodos de índice diferentes.

O usuário que cria a classe de operadores se torna seu dono. Atualmente o usuário criador deve ser um superusuário; esta restrição é feita porque uma definição de classe de operadores errada pode confundir, ou mesmo derrubar, o servidor.

Atualmente o comando CREATE OPERATOR CLASS não verifica se a definição da classe de operadores inclui todos os operadores e funções requeridos pelo método de índice, nem se os operadores e funções formam um conjunto autoconsistente. É responsabilidade do usuário definir uma classe de operadores válida.

Consulte a Seção 31.14 para obter informações adicionais.

Parâmetros

nome

O nome da classe de operadores a ser criada. O nome pode ser qualificado pelo esquema.

DEFAULT

Se estiver presente, a classe de operadores se tornará a classe de operadores padrão para seu tipo de dado. No máximo uma classe de operadores pode ser a classe padrão para um determinado tipo de dado e método de índice.

tipo_de_dado

O tipo de dado de coluna que esta classe de operadores se destina.

método_de_índice

O nome do método de índice que esta classe de operadores se destina.

número_da_estratégia

O número da estratégia do método de índice para o operador associado com a classe de operadores.

nome_do_operador

O nome (opcionalmente qualificado pelo esquema) do operador associado com a classe de operadores.

tipo_do_operador

Os tipos de dado dos operandos do operador, ou NONE indicando um operador unário-esquerdo ou unário-direito. Os tipos de dado dos operandos podem ser omitidos no caso normal, onde são os mesmos do tipo de dado da classe de operadores.

RECHECK

Se estiver presente, o índice para este operador será lossy [1] (com perdas) e, portanto, as linhas trazidas usando o índice devem ser verificadas outra vez para ver se realmente satisfazem a cláusula de qualificação envolvendo este operador.

número_de_suporte

O número do procedimento de suporte do método de índice para a função associada com a classe de operadores.

nome_da_função

O nome (opcionalmente qualificado pelo esquema) da função que é o procedimento de suporte do método de índice para a classe de operadores.

tipos_dos_argumentos

Os tipos de dado dos parâmetros da função.

tipo_armazenado

O tipo de dado realmente armazenado no índice. Geralmente é o mesmo tipo de dado da coluna, mas alguns métodos de índice (somente GiST no momento) permitem que seja diferente. A cláusula STORAGE deve ser omitida, a menos que o método de índice permita o uso de um tipo diferente.

As cláusulas OPERATOR, FUNCTION e STORAGE podem ser escritas em qualquer ordem.

Observações

Os operadores não devem ser definidos através de funções SQL. É possível que a função SQL seja incorporada ( inlined [2] ) ao comando que faz a chamada, impedindo que o otimizador reconheça que o comando corresponde a um índice.

Exemplos

O exemplo mostrado a seguir define uma classe de operadores de índice GiST para o tipo de dado _int4 (matriz de int4). Para ver o exemplo completo deve ser consultado contrib/intarray/.

CREATE OPERATOR CLASS gist__int_ops
    DEFAULT FOR TYPE _int4 USING gist AS
        OPERATOR        3       &&,
        OPERATOR        6       =       RECHECK,
        OPERATOR        7       @,
        OPERATOR        8       ~,
        OPERATOR        20      @@ (_int4, query_int),
        FUNCTION        1       g_int_consistent (internal, _int4, int4),
        FUNCTION        2       g_int_union (bytea, internal),
        FUNCTION        3       g_int_compress (internal),
        FUNCTION        4       g_int_decompress (internal),
        FUNCTION        5       g_int_penalty (internal, internal, internal),
        FUNCTION        6       g_int_picksplit (internal, internal),
        FUNCTION        7       g_int_same (_int4, _int4, internal);

Compatibilidade

O comando CREATE OPERATOR CLASS é uma extensão do PostgreSQL. Não existe o comando CREATE OPERATOR CLASS no padrão SQL.

Consulte também

ALTER OPERATOR CLASS, DROP OPERATOR CLASS

Notas

[1]

lossy — Termo que descreve um algoritmo de compressão que na verdade reduz a quantidade de informações nos dados, em vez de reduzir apenas o número de bits usados para representar esta informação. A informação perdida normalmente é removida porque é subjetivamente menos importante à qualidade dos dados (geralmente uma imagem ou som), ou porque pode ser recuperada razoavelmente por interpolação dos dados remanescentes. MPEG e JPEG são exemplos de técnicas de compressão com perdas. FOLDOC - Free On-Line Dictionary of Computing (N. do T.)

[2]

inline — Substituir a chamada à função por uma instância do corpo da função. FOLDOC - Free On-Line Dictionary of Computing (N. do T.)

SourceForge.net Logo CSS válido!