ALTER OPERATOR FAMILY — Modifier la d�finition d'une famille d'op�rateur
ALTER OPERATOR FAMILY nom USING methode_indexage ADD { OPERATOR numero_strategie nom_operateur ( type_op, type_op ) [ FOR SEARCH | FOR ORDER BY nom_famille_tri ] | FUNCTION numero_support [ ( type_op [ , type_op ] ) ] nom_fonction ( type_argument [, ...] ) } [, ... ] ALTER OPERATOR FAMILY nom USING methode_indexage DROP { OPERATOR numero_strategie ( type_op [ , type_op ] ) | FUNCTION numero_support ( type_op [ , type_op ] ) } [, ... ] ALTER OPERATOR FAMILY nom USING m�thode_indexage RENAME TO nouveau_nom ALTER OPERATOR FAMILY nom USING m�thode_indexage OWNER TO nouveau_proprietaire ALTER OPERATOR FAMILY name USING m�thode_indexage SET SCHEMA nouveau_sch�ma
ALTER OPERATOR FAMILY modifie la d�finition d'une famille d'op�rateur. Vous pouvez ajouter des op�rateurs et des fonctions du support � la famille, les supprimer ou modifier le nom et le propri�taire de la famille.
Quand les op�rateurs et fonctions de support sont ajout�s � une famille avec la commande ALTER OPERATOR FAMILY, ils ne font partie d'aucune classe d'op�rateur sp�cifique � l'int�rieur de la famille. Ils sont � l�ches � dans la famille. Ceci indique que ces op�rateurs et fonctions sont compatibles avec la s�mantique de la famille but qu'ils ne sont pas requis pour un fonctionnement correct d'un index sp�cifique. (Les op�rateurs et fonctions qui sont ainsi n�cessaires doivent �tre d�clar�s comme faisant partie d'une classe d'op�rateur ; voir CREATE OPERATOR CLASS(7).) PostgreSQL™ la suppression des membres lâches d'une famille � tout moment, mais les membres d'une classe d'op�rateur ne peuvent pas �tre supprim�s sans supprimer toute la classe et les index qui en d�pendent. Typiquement, les op�rateurs et fonctions sur un seul type de donn�es font partie des classes d'op�rateurs car ils ont besoin de supporter un index sur ce type de donn�es sp�cifique alors que les op�rateurs et familles inter-types sont fait de membres lâches de la famille.
Vous devez �tre superutilisateur pour utiliser ALTER OPERATOR FAMILY. (Cette restriction est faite parce qu'une d�finition erron�e d'une famille d'op�rateur pourrait g�ner voire m�me arr�ter brutalement le serveur.)
ALTER OPERATOR FAMILY ne v�rifie pas encore si la d�finition de l'op�rateur de famille inclut tous les op�rateurs et fonctions requis par la m�thode d'indexage, ni si les op�rateurs et les fonctions forment un ensemble coh�rent et suffisant. C'est de la responsabilit� de l'utilisateur de d�finir une famille d'op�rateur valide.
Voir Section 35.14, � Interfacer des extensions d'index � pour plus d'informations.
Le nom d'une famille d'op�rateur (pouvant �tre qualifi� du sch�ma).
Le nom de la m�thode d'indexage.
Le num�ro de strat�gie de la m�thode d'indexage pour un op�rateur associ� avec la famille.
Le nom d'un op�rateur (pouvant �tre qualifi� du sch�ma) associ� avec la famille d'op�rateur.
Dans une clause OPERATOR, les types de donn�es en op�rande de l'op�rateur, ou NONE pour signifier un op�rateur unaire. Contrairement � la syntaxe comparable de CREATE OPERATOR CLASS, les types de donn�es en op�rande doivent toujours �tre pr�cis�s.
Dans une clause ADD FUNCTION, les types de donn�es des op�randes que la fonction est sens�e supporter, si diff�rent des types de donn�es en entr�e de la fonction. Pour les fonctions de comparaison des index B-tree et hash, il n'est pas strictement n�cessaire de sp�cifier op_type car les types de donn�es en entr�e de la fonction sont toujours les bons � utiliser. Pour les fonctions de tri des index B-tree ainsi que pour toutes les fonctions des classes d'op�rateur GIST, SP-GiST et GIN, il est n�cessaire de sp�cifier le type de donn�es en entr�e qui sera utilis� par la fonction.
Dans une clause DROP FUNCTION, les types de donn�es en op�rande que la fonction est sens�e supporter doivent �tre pr�cis�s. Pour les index GiST, SP-GiST et GIN, les types en question pourraient ne pas �tre identiques aux des arguments en entr�e de la fonction.
Le nom d'une famille d'op�rateur btree (pouvant �tre qualifi� du sch�ma) d�crivant l'ordre de tri associ� � l'op�rateur de tri.
Si ni FOR SEARCH ni FOR ORDER BY ne sont indiqu�s, FOR SEARCH est la valeur par d�faut.
Le num�ro de la proc�dure de support de la m�thode d'indexage associ� avec la famille d'op�rateur.
Le nom (pouvant �tre qualifi� du sch�ma) d'une fonction qui est une proc�dure de support de la m�thode d'indexage pour la famille d'op�rateur.
Les types de donn�es pour les arguments de la fonction.
Le nouveau nom de la famille d'op�rateur
Le nouveau propri�taire de la famille d'op�rateur
Le nouveau sch�ma de la famille d'op�rateur.
Les clauses OPERATOR et FUNCTION peuvent apparaître dans n'importe quel ordre.
Notez que la syntaxe DROP sp�cifie uniquement le � slot � dans la famille d'op�rateur, par strat�gie ou num�ro de support et types de donn�es en entr�e. Le nom de l'op�rateur ou de la fonction occupant le slot n'est pas mentionn�. De plus, pour DROP FUNCTION, les types � sp�cifier sont les types de donn�es en entr�e que la fonction doit supporter ; pour les index GIN et GiST, ceci pourrait ne rien avoir � faire avec les types d'argument en entr�e de la fonction.
Comme le processus des index ne v�rifie pas les droits sur les fonctions avant de les utiliser, inclure une fonction ou un op�rateur dans une famille d'op�rateur est �quivalent � donner le droit d'ex�cution � public. Ceci n'est g�n�ralement pas un probl�me pour les tris de fonction qui sont utiles � une famille d'op�rateur.
Les op�rateurs ne doivent pas �tre d�finis par des fonctions SQL. Une fonction SQL risque d'�tre remplac�e dans la requ�te appelante, ce qui emp�chera l'optimiseur de savoir si la requ�te peut utiliser un index.
Avant PostgreSQL™ 8.4, la clause OPERATOR pouvait inclure une option RECHECK. Ce n'est plus support� parce que le fait qu'un op�rateur d'index soit � � perte � est maintenant d�termin� � l'ex�cution. Cela permet une gestion plus efficace des cas o� un op�rateur pourrait ou non �tre � perte.
La commande exemple suivant ajoute des op�rateurs inter-type de donn�es et ajoute les fonctions de support pour une famille d'op�rateur qui contient d�j� les classes d'op�rateur B_tree pour les types de donn�es int4 et int2.
ALTER OPERATOR FAMILY integer_ops USING btree ADD -- int4 vs int2 OPERATOR 1 < (int4, int2) , OPERATOR 2 <= (int4, int2) , OPERATOR 3 = (int4, int2) , OPERATOR 4 >= (int4, int2) , OPERATOR 5 > (int4, int2) , FUNCTION 1 btint42cmp(int4, int2) , -- int2 vs int4 OPERATOR 1 < (int2, int4) , OPERATOR 2 <= (int2, int4) , OPERATOR 3 = (int2, int4) , OPERATOR 4 >= (int2, int4) , OPERATOR 5 > (int2, int4) , FUNCTION 1 btint24cmp(int2, int4) ;
Pour supprimer de nouveau ces entr�es :
ALTER OPERATOR FAMILY integer_ops USING btree DROP -- int4 vs int2 OPERATOR 1 (int4, int2) , OPERATOR 2 (int4, int2) , OPERATOR 3 (int4, int2) , OPERATOR 4 (int4, int2) , OPERATOR 5 (int4, int2) , FUNCTION 1 (int4, int2) , -- int2 vs int4 OPERATOR 1 (int2, int4) , OPERATOR 2 (int2, int4) , OPERATOR 3 (int2, int4) , OPERATOR 4 (int2, int4) , OPERATOR 5 (int2, int4) , FUNCTION 1 (int2, int4) ;