Changeset 734

Show
Ignore:
Timestamp:
10/08/07 11:52:21 (1 year ago)
Author:
gleu
Message:

grmbl, encore un oubli...

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • traduc/branches/bv82x/manuel/xindex.xml

    r509 r734  
    501501 
    502502  <para> 
    503    Le code C de l'opérateur d'égalité ressemble à ceci&nbsp;: 
     503   Le plus simple moyen de définie un ensemble d'opérateurs de comparaison est 
     504   d'écrire en premier la fonction de comparaison B-tree, puis d'écrire les 
     505   autres fonctions en tant que wrapper de la fonction de support. Ceci réduit 
     506   les risques de résultats incohérents pour les cas spécifiques. En suivant 
     507   cette approche, nous devons tout d'abord écrire&nbsp;: 
    504508 
    505509<programlisting>#define Mag(c) ((c)-&gt;x*(c)-&gt;x + (c)-&gt;y*(c)-&gt;y) 
     
    512516} 
    513517</programlisting> 
    514    Les quatre autres opérateurs sont très similaires. Vous pouvez trouver leur 
    515    code dans <filename>src/tutorial/complex.c</filename> et 
    516    <filename>src/tutorial/complex.sql</filename> dans la distribution des 
    517    sources. 
    518   </para> 
    519  
    520   <para> 
    521    Maintenant, déclarons les fonctions et les opérateurs basés sur ces 
     518 
     519   Maintenant, la fonction plus-petit-que ressemble à ceci&nbsp;: 
     520 
     521<programlisting>PG_FUNCTION_INFO_V1(complex_abs_lt); 
     522 
     523Datum 
     524complex_abs_lt(PG_FUNCTION_ARGS) 
     525
     526    Complex    *a = (Complex *) PG_GETARG_POINTER(0); 
     527    Complex    *b = (Complex *) PG_GETARG_POINTER(1); 
     528 
     529    PG_RETURN_BOOL(complex_abs_cmp_internal(a, b) &lt; 0); 
     530
     531</programlisting> 
     532 
     533   Les quatre autres fonctions diffèrent seulement sur la façon dont ils 
     534   comparent le résultat de la fonction interne au zéro. 
     535  </para> 
     536 
     537  <para> 
     538   Maintenant, déclarons en SQL les fonctions et les opérateurs basés sur ces 
    522539   fonctions&nbsp;: 
    523 <programlisting>CREATE FUNCTION complex_abs_eq(complex, complex) RETURNS boolean 
    524     AS '<replaceable>nom_fichier</replaceable>', 'complex_abs_eq' 
    525     LANGUAGE C; 
    526  
    527 CREATE OPERATOR = ( 
    528     leftarg = complex, 
    529     rightarg = complex, 
    530     procedure = complex_abs_eq, 
    531     restrict = eqsel, 
    532     join = eqjoinsel 
     540<programlisting>CREATE FUNCTION complex_abs_lt(complex, complex) RETURNS bool 
     541    AS '<replaceable>nom_fichier</replaceable>', 'complex_abs_lt' 
     542    LANGUAGE C IMMUTABLE STRICT; 
     543 
     544CREATE OPERATOR &lt; ( 
     545   leftarg = complex, rightarg = complex, procedure = complex_abs_lt, 
     546   commutator = &gt; , negator = &gt;= , 
     547   restrict = scalarltsel, join = scalarltjoinsel 
    533548); 
    534549</programlisting>