CREATE OPERATOR

Nom

CREATE OPERATOR -- d�finit un nouvel op�rateur

Synopsis

CREATE OPERATOR nom (
    PROCEDURE = nomfonc
    [, LEFTARG = typegauche ]
    [, RIGHTARG = typedroit ]
    [, COMMUTATOR = op_com ]
    [, NEGATOR = op_neg ]
    [, RESTRICT = proc_res ]
    [, JOIN = proc_join ]
    [, HASHES ] [, MERGES ]
    [, SORT1 = op_tri_gauche ]
    [, SORT2 = op_tri_droit ]
    [, LTCMP = op_inf ]
    [, GTCMP = op_sup ]
)

Description

CREATE OPERATOR d�finit un nouvel op�rateur, nom. L'utilisateur qui d�finit un op�rateur en devient son propri�taire. Si un nom de sch�ma est donn�, alors l'op�rateur est cr�� dans le sch�ma sp�cifi�. Sinon, il est cr�� dans le sch�ma courant.

Le nom de l'op�rateur est une s�quence d'au moins NAMEDATALEN-1 (63 par d�faut) caract�res de la liste suivante :

+ - * / < > = ~ ! @ # % ^ & | ` ?

Il existe quelques restrictions dans le choix du nom :

L'op�rateur != correspond � <> en entr�e, donc ces deux noms sont toujours �quivalents.

Au moins un de LEFTARG et RIGHTARG doit �tre d�fini. Pour les op�rateurs binaires, les deux doivent �tre d�finis. Pour les op�rateurs unaires droits, seul LEFTARG devrait �tre d�fini alors que pour les op�rateurs unaires gauches seul RIGHTARG devrait �tre d�fini.

La proc�dure nomfonc doit �tre �t� pr�c�demment d�finie en utilisant CREATE FUNCTION et doit accepter le bon nombre d'arguments (soit un ou deux) des types indiqu�s.

Les autres clauses sp�cifient des clauses optionnelles d'optimisation d'op�rateur. Leur signification est d�taill�e dans Section 31.13.

Param�tres

nom

Le nom de l'op�rateur � d�finir. Voir ci-dessus pour les caract�res autoris�s. Le nom peut �tre qualifi� avec le nom du sch�ma, par exemple CREATE OPERATOR monschema.+ (...). Sinon, l'op�rateur est cr�� dans le sch�ma courant. Deux op�rateurs dans le m�me sch�ma peuvent avoir le m�me nom s'ils op�rent sur des types de donn�es diff�rents. Ceci est appel� le surchargement.

nomfonc

La fonction utilis�e pour impl�menter cet op�rateur.

typegauche

Le type de donn�es de l'op�rande gauche de l'op�rateur, s'il existe. Cette option sera omise pour un op�rateur unaire gauche.

typedroit

Le type de donn�es de l'op�rande droit de l'op�rateur, s'il existe. Cette option sera omise pour un op�rateur unaire droit.

op_com

Le commutateur de cet op�rateur.

op_neg

La n�gation de cet op�rateur.

proc_res

La fonction d'estimation de la s�lectivit� restreinte pour cet op�rateur.

proc_join

La fonction d'estimation de la s�lectivit� de jointure pour cet op�rateur.

HASHES

Indique que cet op�rateur peut supporter une jointure de d�coupage.

MERGES

Indique que cet op�rateur peut supporter une jointure d'assemblage.

op_tri_gauche

Si cet op�rateur peut supporter une jointure d'assemblage, l'op�rateur inf�rieur qui trie le type de donn�es � gauche de cet op�rateur.

op_tri_droit

Si cet op�rateur peut supporter une jointure d'assemblage, l'op�rateur sup�rieur qui trie le type de donn�es � droite de cet op�rateur.

op_inf

Si cet op�rateur peut supporter une jointure d'assemblage, l'op�rateur inf�rieur qui compare les types de donn�es de cet op�rateur.

op_sup

Si cet op�rateur peut supporter une jointure d'assemblage, l'op�rateur sup�rieur qui compare les types de donn�es de cet op�rateur.

Pour donner un nom d'op�rateur qualifi� d'un sch�ma dans op_com ou les autres arguments optionnels, utilisez la syntaxe OPERATOR() par exemple

COMMUTATOR = OPERATOR(mon_schema.===) ,

Notes

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

Utilisez DROP OPERATOR pour supprimer les op�rateurs d�finis par l'utilisateur sur une base de donn�es. Utilisez ALTER OPERATOR pour modifier les op�rateurs dans une base de donn�es.

Exemples

La commande suivante d�finit un nouvel op�rateur, <<�area-equality�>>, pour le type de donn�es box :

CREATE OPERATOR === (
    LEFTARG = box,
    RIGHTARG = box,
    PROCEDURE = area_equal_procedure,
    COMMUTATOR = ===,
    NEGATOR = !==,
    RESTRICT = area_restriction_procedure,
    JOIN = area_join_procedure,
    HASHES,
    SORT1 = <<<,
    SORT2 = <<<
    -- Since sort operators were given, MERGES is implied.
    -- LTCMP and GTCMP are assumed to be < and > respectively
);

Compatibilit�

CREATE OPERATOR est une extension PostgreSQL. Il n'existe pas d'op�rateurs d�finis par l'utilisateur dans le standard SQL.

Voir aussi

ALTER OPERATOR, CREATE OPERATOR CLASS, DROP OPERATOR