Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Avance rapide | Suivant |
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 } [, ... ]
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.
Le nom de la classe d'op�rateur � cr�er. Ce nom pourrait �tre qualifi� avec le nom du sch�ma.
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.
Le type de donn�es de la colonne pour cette classe d'op�rateur.
Le nom de la m�thode d'indexage pour cette classe d'op�rateur.
Le num�ro de strat�gie de la m�thode d'indexage pour un op�rateur associ� avec la classe d'op�rateur.
Le nom (pouvant �tre qualifi� du nom du sch�ma) d'un op�rateur associ� avec la classe d'op�rateur.
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.
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.
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.
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.
Le(s) type(s) de donn�es des param�tres de la fonction.
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.
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.
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);
CREATE OPERATOR CLASS est une extension PostgreSQL. Il n'existe pas d'instruction CREATE OPERATOR CLASS dans le standard SQL.
Pr�c�dent | Sommaire | Suivant |
CREATE OPERATOR | Niveau sup�rieur | CREATE RULE |