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 ( tipos_dos_argumentos [, ...] )
   | 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 preencher 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 é selecionada para uma coluna do índice. Todos os operadores e funções usados por uma classe de operadores devem ser definidos antes da classe de operadores ser criada.

Se o nome do esquema for fornecido, então a classe de operadores é criada no esquema especificado, senão é 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. É responsabilidade do usuário definir uma classe de operadores válida.

Veja a Seção 33.13 para obter mais informações.

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 um operador associado com a classe de operadores.
nome_do_operador
O nome (opcionalmente qualificado pelo esquema) de um operador associado com a classe de operadores.
tipo_do_operador
Os tipos de dado dos operandos de um operador, ou NONE indicando um operador unário-esquerdo ou unário-direito. Os tipos de dado dos operandos podem ser omitidos no caso usual, onde são iguais ao tipo de dado da classe de operadores.
RECHECK
Se estiver presente, o índice para este operador é "lossy" [1] 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.

Exemplos

O exemplo mostrado abaixo define uma classe de operadores de índice GiST para o tipo de dado _int4 (matriz de int4). Consulte contrib/intarray/ para ver o exemplo completo.

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.

Veja 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.)

SourceForge.net Logo