root/traduc/branches/bv747/manuel/ref/create_operator.sgml

Revision 104, 9.8 kB (checked in by gleu, 3 years ago)

Des sauts de ligne en trop dans les exemples.

Line 
1 <!--
2 $Header: /var/lib/cvs/pgsql-fr/sgml/ref/create_operator.sgml,v 1.8.2.2 2005/07/15 06:33:53 guillaume Exp $
3 PostgreSQL documentation
4 -->
5
6 <refentry id="SQL-CREATEOPERATOR">
7  <refmeta>
8   <refentrytitle id="sql-createoperator-title">CREATE OPERATOR</refentrytitle>
9   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
10  </refmeta>
11
12  <refnamediv>
13   <refname>CREATE OPERATOR</refname>
14   <refpurpose>définit un nouvel opérateur</refpurpose>
15  </refnamediv>
16
17  <indexterm zone="sql-createoperator">
18   <primary>CREATE OPERATOR</primary>
19  </indexterm>
20
21  <refsynopsisdiv>
22 <synopsis>
23 CREATE OPERATOR <replaceable>nom</replaceable> (
24     PROCEDURE = <replaceable class="parameter">nomfonc</replaceable>
25     [, LEFTARG = <replaceable class="parameter">typegauche</replaceable> ]
26     [, RIGHTARG = <replaceable class="parameter">typedroit</replaceable> ]
27     [, COMMUTATOR = <replaceable class="parameter">op_com</replaceable> ]
28     [, NEGATOR = <replaceable class="parameter">op_neg</replaceable> ]
29     [, RESTRICT = <replaceable class="parameter">proc_res</replaceable> ]
30     [, JOIN = <replaceable class="parameter">proc_join</replaceable> ]
31     [, HASHES ] [, MERGES ]
32     [, SORT1 = <replaceable class="parameter">op_tri_gauche</replaceable> ]
33     [, SORT2 = <replaceable class="parameter">op_tri_droit</replaceable> ]
34     [, LTCMP = <replaceable class="parameter">op_inf</replaceable> ]
35     [, GTCMP = <replaceable class="parameter">op_sup</replaceable> ]
36 )
37 </synopsis>
38  </refsynopsisdiv>
39
40  <refsect1>
41   <title>Description</title>
42
43   <para>
44    <command>CREATE OPERATOR</command> définit un nouvel opérateur,
45    <replaceable class="parameter">nom</replaceable>. L'utilisateur qui définit
46    un opérateur en devient son propriétaire. Si un nom de schéma est donné,
47    alors l'opérateur est créé dans le schéma spécifié. Sinon, il est créé dans
48    le schéma courant.
49   </para>
50
51   <para>
52    Le nom de l'opérateur est une séquence d'au moins <symbol>NAMEDATALEN</>-1
53    (63 par défaut) caractères de la liste suivante&nbsp;:
54 <literallayout>
55 + - * / &lt; &gt; = ~ ! @ # % ^ &amp; | ` ?
56 </literallayout>
57
58    Il existe quelques restrictions dans le choix du nom&nbsp;:
59    <itemizedlist>
60     <listitem>
61      <para>
62      <literal>--</literal> et <literal>/*</literal> ne peuvent pas apparaître
63      n'importe où dans le nom d'un opérateur car ils sont pris pour le début
64      d'un commentaire.
65      </para>
66     </listitem>
67     <listitem>
68      <para>
69      Un nom d'opérateur multicaractères ne peut pas finir avec
70      <literal>+</literal> ou <literal>-</literal> sauf si le nom contient aussi
71      au moins un de ces caractères&nbsp;:
72 <literallayout>
73 ~ ! @ # % ^ &amp; | ` ?
74 </literallayout>
75      Par exemple, <literal>@-</literal> est un nom d'opérateur autorisé mais
76      <literal>*-</literal> ne l'est pas. Cette restriction permet à
77      <productname>PostgreSQL</productname> d'analyser les commandes compatibles
78      SQL sans nécessiter d'espaces entre les jetons.
79      </para>
80     </listitem>
81    </itemizedlist>
82   </para>
83
84   <para>
85    L'opérateur <literal>!=</literal> correspond à
86    <literal>&lt;&gt;</literal> en entrée, donc ces deux noms sont toujours
87    équivalents.
88   </para>
89
90   <para>
91    Au moins un de <literal>LEFTARG</> et <literal>RIGHTARG</> doit être défini.
92    Pour les opérateurs binaires, les deux doivent être définis. Pour les
93    opérateurs unaires droits, seul <literal>LEFTARG</> devrait être défini
94    alors que pour les opérateurs unaires gauches seul <literal>RIGHTARG</>
95    devrait être défini.
96   </para>
97
98   <para>
99    La procédure <replaceable class="parameter">nomfonc</replaceable> doit être
100    été précédemment définie en utilisant <command>CREATE FUNCTION</command> et
101    doit accepter le bon nombre d'arguments (soit un ou deux) des types indiqués.
102   </para>
103
104   <para>
105    Les autres clauses spécifient des clauses optionnelles d'optimisation
106    d'opérateur. Leur signification est détaillée dans <xref linkend="xoper">.
107   </para>
108  </refsect1>
109
110  <refsect1>
111   <title>Paramètres</title>
112
113     <variablelist>
114      <varlistentry>
115       <term><replaceable class="parameter">nom</replaceable></term>
116       <listitem>
117        <para>
118         Le nom de l'opérateur à définir. Voir ci-dessus pour les caractères
119         autorisés. Le nom peut être qualifié avec le nom du schéma, par
120         exemple <literal>CREATE OPERATOR monschema.+ (...)</>. Sinon,
121         l'opérateur est créé dans le schéma courant. Deux opérateurs dans le
122         même schéma peuvent avoir le même nom s'ils opérent sur des types de
123         données différents. Ceci est appelé le <firstterm>surchargement</>.
124        </para>
125       </listitem>
126      </varlistentry>
127
128      <varlistentry>
129       <term><replaceable class="parameter">nomfonc</replaceable></term>
130       <listitem>
131        <para>
132         La fonction utilisée pour implémenter cet opérateur.
133        </para>
134       </listitem>
135      </varlistentry>
136
137      <varlistentry>
138       <term><replaceable class="parameter">typegauche</replaceable></term>
139       <listitem>
140        <para>
141         Le type de l'argument gauche de l'opérateur, s'il existe. Cette option
142         sera omise pour un opérateur unaire gauche.
143        </para>
144       </listitem>
145      </varlistentry>
146
147      <varlistentry>
148       <term><replaceable class="parameter">typedroit</replaceable></term>
149       <listitem>
150        <para>
151         Le type de l'argument droit de l'opérateur, s'il existe. Cette option
152         sera omise pour un opérateur unaire droit.
153        </para>
154       </listitem>
155      </varlistentry>
156
157      <varlistentry>
158       <term><replaceable class="parameter">op_com</replaceable></term>
159       <listitem>
160        <para>
161         Le commutateur de cet opérateur.
162        </para>
163       </listitem>
164      </varlistentry>
165
166      <varlistentry>
167       <term><replaceable class="parameter">op_neg</replaceable></term>
168       <listitem>
169        <para>
170         La négation de cet opérateur.
171        </para>
172       </listitem>
173      </varlistentry>
174
175      <varlistentry>
176       <term><replaceable class="parameter">proc_res</replaceable></term>
177       <listitem>
178        <para>
179         La fonction d'estimation de la sélectivité restreinte pour cet
180         opérateur.
181        </para>
182       </listitem>
183      </varlistentry>
184
185      <varlistentry>
186       <term><replaceable class="parameter">proc_join</replaceable></term>
187       <listitem>
188        <para>
189         La fonction d'estimation de la sélectivité de jointure pour cet
190         opérateur.
191        </para>
192       </listitem>
193      </varlistentry>
194
195      <varlistentry>
196       <term><literal>HASHES</literal></term>
197       <listitem>
198        <para>
199        Indique que cet opérateur peut supporter une jointure de découpage.
200        </para>
201       </listitem>
202      </varlistentry>
203
204      <varlistentry>
205       <term><literal>MERGES</literal></term>
206       <listitem>
207        <para>
208        Indique que cet opérateur peut supporter une jointure d'assemblage.
209        </para>
210       </listitem>
211      </varlistentry>
212
213      <varlistentry>
214       <term><replaceable class="parameter">op_tri_gauche</replaceable></term>
215       <listitem>
216        <para>
217         Si cet opérateur peut supporter une jointure d'assemblage,
218         l'opérateur inférieur qui trie le type de données à gauche de cet
219         opérateur.
220        </para>
221       </listitem>
222      </varlistentry>
223
224      <varlistentry>
225       <term><replaceable class="parameter">op_tri_droit</replaceable></term>
226       <listitem>
227        <para>
228         Si cet opérateur peut supporter une jointure d'assemblage,
229         l'opérateur supérieur qui trie le type de données à droite de cet
230         opérateur.
231        </para>
232       </listitem>
233      </varlistentry>
234
235      <varlistentry>
236       <term><replaceable class="parameter">op_inf</replaceable></term>
237       <listitem>
238        <para>
239         Si cet opérateur peut supporter une jointure d'assemblage,
240         l'opérateur inférieur qui compare les types de données de cet
241         opérateur.
242        </para>
243       </listitem>
244      </varlistentry>
245
246      <varlistentry>
247       <term><replaceable class="parameter">op_sup</replaceable></term>
248       <listitem>
249        <para>
250         Si cet opérateur peut supporter une jointure d'assemblage,
251         l'opérateur supérieur qui compare les types de données de cet
252         opérateur.
253        </para>
254       </listitem>
255      </varlistentry>
256     </variablelist>
257
258   <para>
259    Pour donner un nom d'opérateur qualifié d'un schéma dans <replaceable
260    class="parameter">op_com</replaceable> ou les autres arguments optionnels,
261    utilisez la syntaxe <literal>OPERATOR()</> par exemple
262 <programlisting>
263 COMMUTATOR = OPERATOR(mon_schema.===) ,
264 </programlisting> 
265   </para>
266  </refsect1>
267  
268  <refsect1>
269   <title>Notes</title>
270
271   <para>
272    Référez-vous à <xref linkend="xoper"> pour plus d'informations.
273   </para>
274
275   <para>
276    Utilisez <command>DROP OPERATOR</command> pour supprimer les opérateurs
277    définis par l'utilisateur sur une base de données.
278   </para>
279  </refsect1>
280  
281  <refsect1>
282   <title>Exemples</title>
283
284   <para>
285    La commande suivante définit un nouvel opérateur,
286    <quote>area-equality</quote>, pour le type de données <type>box</type>&nbsp;:
287 <programlisting>
288 CREATE OPERATOR === (
289     LEFTARG = box,
290     RIGHTARG = box,
291     PROCEDURE = area_equal_procedure,
292     COMMUTATOR = ===,
293     NEGATOR = !==,
294     RESTRICT = area_restriction_procedure,
295     JOIN = area_join_procedure,
296     HASHES,
297     SORT1 = &lt;&lt;&lt;,
298     SORT2 = &lt;&lt;&lt;
299     -- Since sort operators were given, MERGES is implied.
300     -- LTCMP and GTCMP are assumed to be &lt; and &gt; respectively
301 );
302 </programlisting> 
303   </para>
304  </refsect1>
305  
306  <refsect1>
307   <title>Compatibilité</title>
308
309   <para>
310    <command>CREATE OPERATOR</command> est une extension
311    <productname>PostgreSQL</productname>. Il n'existe pas d'opérateurs définis
312    par l'utilisateur dans le standard SQL.
313   </para>
314  </refsect1>
315 </refentry>
316
317 <!-- Keep this comment at the end of the file
318 Local variables:
319 mode: sgml
320 sgml-omittag:nil
321 sgml-shorttag:t
322 sgml-minimize-attributes:nil
323 sgml-always-quote-attributes:t
324 sgml-indent-step:1
325 sgml-indent-data:t
326 sgml-parent-document:nil
327 sgml-default-dtd-file:"../reference.ced"
328 sgml-exposed-tags:nil
329 sgml-local-catalogs:"/usr/lib/sgml/catalog"
330 sgml-local-ecat-files:nil
331 End:
332 -->
Note: See TracBrowser for help on using the browser.