IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

ALTER OPERATOR FAMILY

ALTER OPERATOR FAMILY — Modifier la d�finition d'une famille d'op�rateur

Synopsis

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

Description

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.

Param�tres

nom

Le nom d'une famille d'op�rateur (pouvant �tre qualifi� du sch�ma).

methode_indexage

Le nom de la m�thode d'indexage.

numero_strategie

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

nom_operateur

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

type_op

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.

nom_famille_tri

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.

numero_support

Le num�ro de la proc�dure de support de la m�thode d'indexage associ� avec la famille d'op�rateur.

nom_fonction

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.

argument_types

Les types de donn�es pour les arguments de la fonction.

nouveau_nom

Le nouveau nom de la famille d'op�rateur

nouveau_proprietaire

Le nouveau propri�taire de la famille d'op�rateur

nouveau_sch�ma

Le nouveau sch�ma de la famille d'op�rateur.

Les clauses OPERATOR et FUNCTION peuvent apparaître dans n'importe quel ordre.

Notes

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.

Exemples

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

Compatibilit�

Il n'existe pas d'instruction ALTER OPERATOR FAMILY dans le standard SQL.