Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 31. Extension de SQL | Avance rapide | Suivant |
Chaque op�rateur est un <<�sucre syntaxique�>> pour l'appel d'une fonction sous-jacente qui effectue le v�ritable travail ; aussi devez-vous en premier lieu cr�er cette fonction avant de pouvoir cr�er l'op�rateur. Toutefois, un op�rateur n'est pas simplement un <<�sucre syntaxique�>> car il apporte des informations suppl�mentaires qui aident le planificateur de requ�te � optimiser les requ�tes utilis�es par l'op�rateur. La prochaine section est consacr�e � l'explication de ces informations additionnelles.
PostgreSQL accepte les op�rateurs unaire gauche, unaire droit et binaire. Les op�rateurs peuvent �tre surcharg�s ; c'est-�-dire que le m�me nom d'op�rateur peut �tre utilis� pour diff�rents op�rateurs � condition qu'ils aient des nombres et des types diff�rents d'op�randes. Quand une requ�te est ex�cut�e, le syst�me d�termine l'op�rateur � appeler en fonction du nombre et des types d'op�randes fournis.
Voici un exemple de cr�ation d'op�rateur pour l'addition de deux nombres complexes. Nous supposons avoir d�j� cr�� la d�finition du type complex (voir la Section 31.11). Premi�rement, nous avons besoin d'une fonction qui fasse le travail, ensuite nous pouvons d�finir l'op�rateur :
CREATE FUNCTION complex_add(complex, complex) RETURNS complex AS 'filename', 'complex_add' LANGUAGE C; CREATE OPERATOR + ( leftarg = complex, rightarg = complex, procedure = complex_add, commutator = + );
Maintenant nous pouvons ex�cuter la requ�te comme ceci :
SELECT (a + b) AS c FROM test_complex; c ----------------- (5.2,6.05) (133.42,144.95)
Nous avons montr� comment cr�er un op�rateur binaire. Pour cr�er des op�rateurs unaires, il suffit d'omettre un des leftarg (pour un op�rateur unaire gauche) ou rightarg (pour un op�rateur unaire droit). La clause procedure et les clauses argument sont les seuls �l�ments requis dans la commande CREATE OPERATOR. La clause commutator montr�e dans l'exemple est une indication optionnelle pour l'optimiseur de requ�te. Des d�tails suppl�mentaires sur la clause commutator et d'autres compl�ments d'optimisation sont donn�s dans la prochaine section.
Pr�c�dent | Sommaire | Suivant |
Types d�finis par l'utilisateur | Niveau sup�rieur | Informations sur l'optimisation d'un op�rateur |