CREATE OPERATOR CLASS

Nom

CREATE OPERATOR CLASS -- d�finit une nouvelle classe d'op�rateur

Synopsis

CREATE OPERATOR CLASS nom [ DEFAULT ] FOR TYPE type_donn�es USING m�thode_index AS
  {  OPERATOR num�ro_strat�gie nom_op�rateur [ ( op_type, op_type ) ] [ RECHECK ]
   | FUNCTION num�ro_support nom_fonction ( type_argument [, ...] )
   | STORAGE type_stockage
  } [, ... ]

Description

CREATE OPERATOR CLASS cr�e une nouvelle classe d'op�rateur. Une classe d'op�rateur d�finit comment un certain type de donn�es peut �tre utilis� avec un index. La classe d'op�rateur sp�cifie que certains op�rateurs joueront des r�les particuliers ou des <<�strat�gies�>> pour ce type de donn�es et cette m�thode d'indexage. La classe d'op�rateur sp�cifie aussi les proc�dures de support pour �tre utilis�e par la m�thode d'indexage quand la classe d'op�rateur est s�lectionn�e pour une colonne d'index. Tous les op�rateurs et fonctions utilis�s par une classe d'op�rateur doivent �tre d�finis avant la cr�ation de la classe d'op�rateur.

Si un nom de sch�ma est donn�, alors la classe d'op�rateur est cr��e dans le sch�ma sp�cifi�. Sinon, elle est cr��e dans le sch�ma courant. Deux classes d'op�rateur peuvent avoir le m�me nom seulement s'ils sont pour des m�thodes d'indexage diff�rentes.

L'utilisateur qui d�finit une classe d'op�rateur devient son propri�taire. Actuellement, le cr�ateur doit �tre un superutilisateur. (Cette restriction est faite parce qu'une d�finition erron�e d'une classe d'op�rateur pourrait g�ner le serveur, voire causer un arr�t brutal de celui-ci.)

Actuellement, CREATE OPERATOR CLASS ne v�rifie pas si la d�finition de la classe d'op�rateur inclut tous les op�rateurs et fonctions requis par la m�thode d'indexage. C'est de la responsabilit� de l'utilisateur de d�finir une classe d'op�rateur valide.

R�f�rez-vous au Section 31.14 pour plus d'informations.

Param�tres

nom

Le nom de la classe d'op�rateur � cr�er. Ce nom pourrait �tre qualifi� avec le nom du sch�ma.

DEFAULT

Si pr�sent, la classe d'op�rateur deviendra la classe d'op�rateur par d�faut pour ce type de donn�es. Au plus une classe d'op�rateur peut �tre la classe par d�faut pour un type de donn�es et une m�thode d'indexage sp�cifiques.

type_donn�es

Le type de donn�es de la colonne pour cette classe d'op�rateur.

m�thode_index

Le nom de la m�thode d'indexage pour cette classe d'op�rateur.

num�ro_strat�gie

Le num�ro de strat�gie de la m�thode d'indexage pour un op�rateur associ� avec la classe d'op�rateur.

nom_op�rateur

Le nom (pouvant �tre qualifi� du nom du sch�ma) d'un op�rateur associ� avec la classe d'op�rateur.

op_type

Le type de donn�es de l'op�rande d'un op�rateur ou NONE pour signifier un op�rateur unaire. Les types de donn�es de l'op�rande pourraient �tre omis dans le cas normal o� ils sont identiques au type de donn�es de la classe d'op�rateur.

RECHECK

Si pr�sent, l'index est <<�� perte�>> pour cet op�rateur. Du coup, les lignes r�cup�r�es en utilisant l'index doivent �tre de nouveau v�rifi�es pour s'assurer qu'elles satisfont r�ellement la clause de qualification impliquant cet op�rateur.

num�ro_support

Le num�ro de proc�dure du support pour cette m�thode d'indexage pour une fonction associ�e avec la classe d'op�rateur.

nom_fonction

Le nom (pouvant �tre qualifi� avec le nom du sch�ma) d'une fonction qui est la proc�dure de support pour la m�thode d'indexage sur la classe d'op�rateur.

types_argument

Le(s) type(s) de donn�es des param�tres de la fonction.

type_stockage

Le type de donn�es r�ellement stock� dans l'index. Normalement, c'est le m�me que le type de donn�es de la colonne mais certaines m�thodes d'indexage (uniquement GiST au moment de l'�criture de ce document) autorisent une diff�rence. La clause STORAGE doit �tre omise sauf si la m�thode d'indexage autorise l'utilisation d'un type diff�rent.

Les clauses OPERATOR, FUNCTION et STORAGE pourraient appara�tre dans n'importe quel ordre.

Notes

Les op�rators ne devraient pas �tre d�finis par des fonctions SQL. Une fonction SQL a des chances d'�tre int�gr�e dans la requ�te appelante, ce qui emp�chera l'optimiseur de reconna�tre que la requ�te correspond � un index.

Exemples

La commande issue de l'exemple suivant d�finit une classe d'op�rateur d'indexage GiST pour le type de donn�es _int4 (tableau de int4). Voir contrib/intarray/ pour l'exemple complet.

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);

Compatibilit�

CREATE OPERATOR CLASS est une extension PostgreSQL. Il n'existe pas d'instruction CREATE OPERATOR CLASS dans le standard SQL.

Voir aussi

ALTER OPERATOR CLASS, DROP OPERATOR CLASS