| 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 : |
|---|
| | 520 | |
|---|
| | 521 | <programlisting>PG_FUNCTION_INFO_V1(complex_abs_lt); |
|---|
| | 522 | |
|---|
| | 523 | Datum |
|---|
| | 524 | complex_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) < 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 |
|---|
| 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 | |
|---|
| | 544 | CREATE OPERATOR < ( |
|---|
| | 545 | leftarg = complex, rightarg = complex, procedure = complex_abs_lt, |
|---|
| | 546 | commutator = > , negator = >= , |
|---|
| | 547 | restrict = scalarltsel, join = scalarltjoinsel |
|---|