Changeset 756
- Timestamp:
- 10/17/07 22:39:31 (1 year ago)
- Files:
-
- traduc/trunk/manuel/config.xml (modified) (1 diff)
- traduc/trunk/manuel/cvs.xml (modified) (3 diffs)
- traduc/trunk/manuel/datatype.xml (modified) (32 diffs)
- traduc/trunk/manuel/ddl.xml (modified) (1 diff)
- traduc/trunk/manuel/docguide.xml (modified) (3 diffs)
- traduc/trunk/manuel/extend.xml (modified) (2 diffs)
- traduc/trunk/manuel/features.xml (modified) (1 diff)
- traduc/trunk/manuel/func.xml (modified) (30 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
traduc/trunk/manuel/config.xml
r753 r756 3922 3922 <indexterm><primary>tablespace</primary><secondary>temporary</secondary></indexterm> 3923 3923 <para> 3924 This variable specifies tablespace(s) in which to create temporary 3925 objects (temp tables and indexes on temp tables) when a 3926 <command>CREATE</command> command does not explicitly specify a tablespace. 3927 Temporary files for purposes such as sorting large data sets 3928 are also created in these tablespace(s). 3929 </para> 3930 3931 <para> 3932 The value is a list of names of tablespaces. When there is more than 3933 one name in the list, <productname>PostgreSQL</productname> chooses a random 3934 member of the list each time a temporary object is to be created; 3935 except that within a transaction, successively created temporary 3936 objects are placed in successive tablespaces from the list. 3937 If any element of the list is an empty string, 3938 <productname>PostgreSQL</productname> will automatically use the default 3939 tablespace of the current database instead. 3940 </para> 3941 3942 <para> 3943 When <varname>temp_tablespaces</varname> is set interactively, specifying a 3944 nonexistent tablespace is an error, as is specifying a tablespace for 3945 which the user does not have <literal>CREATE</literal> privilege. However, 3946 when using a previously set value, nonexistent tablespaces are 3947 ignored, as are tablespaces for which the user lacks 3948 <literal>CREATE</literal> privilege. In particular, this rule applies when 3949 using a value set in <filename>postgresql.conf</filename>. 3924 Cette variable spécifie le (ou les) tablespace dans lequel sera créé 3925 les objets temporaires (tables et index temporaires sur des tables 3926 temporaires) quand une commande <command>CREATE</command> n'explicite 3927 pas un tablespace. Les fichiers temporaires dû à des tris de gros 3928 ensembles de données sont aussi créés dans ce tablespace. 3929 </para> 3930 3931 <para> 3932 Cette valeur est une liste de noms de tablespaces. Quand cette liste 3933 contient plus d'un nom, <productname>PostgreSQL</productname> choisit 3934 un membre de la liste au hasard à chaque fois qu'un objet temporaire doit 3935 être créé. Par contre, dans une transaction, les objets temporaires 3936 créés successivement sont placés dans les tablespaces successifs de la 3937 liste. Si un élément de la liste est une chaîne vide, 3938 <productname>PostgreSQL</productname> utilisera automatiquement le 3939 tablespace par défaut de la base en cours. 3940 </para> 3941 3942 <para> 3943 Quand <varname>temp_tablespaces</varname> est configuré interactivement, 3944 spécifier un tablespace inexistant est une erreur. De même, une erreur 3945 est renvoyée si l'utilisateur n'a pas le droit <literal>CREATE</literal> 3946 sur le tablespace indiqué. Néanmoins, lors de l'utilisation d'une 3947 valeur configurée précédemment, les tablespaces inexistants sont ignorés 3948 comme le sont les tablespaces pour lesquels l'utilisateur n'a pas le droit 3949 <literal>CREATE</literal>. En particulier, cette règle s'applique lors 3950 de l'utilisateur d'une valeur configurée dans le fichier 3951 <filename>postgresql.conf</filename>. 3950 3952 </para> 3951 3953 traduc/trunk/manuel/cvs.xml
r735 r756 40 40 code source du serveur <productname>PostgreSQL</productname> vers un 41 41 serveur local. 42 Our CVS Wiki, <ulink 43 url="http://developer.postgresql.org/index.php/Working_with_CVS"></ulink>, 44 has additional details on working with CVS. 42 Notre <ulink 43 url="http://developer.postgresql.org/index.php/Working_with_CVS">page wiki 44 sur CVS</ulink>, comprend des informations supplémentaires sur le travail 45 avec CVS. 45 46 </para> 46 47 … … 155 156 ligne à <ulink url="http://www.nongnu.org/cvs/"></ulink>. 156 157 </para> 157 <para> 158 <productname>CVS</productname> has deficiencies. For example, 159 generating diffs that add or remove files requires write access to the 160 CVS repository. To work around that deficiency, use 161 <productname>cvsutils</productname>, which is packaged in several 162 operating systems, and is available in source form at <ulink 158 159 <para> 160 <productname>CVS</productname> a des inconvénients. Par exemple, générer 161 des fichiers diff qui ajoutent ou suppriment des fichiers requièrent un 162 accès en écriture au dépôt CVS. Pour contourner ce problème, utiliser 163 <productname>cvsutils</productname> qui est disponible sur plusieurs 164 systèmes d'exploitation et aussi au format source sur <ulink 163 165 url="http://www.red-bean.com/cvsutils/"></ulink>. 164 166 </para> 165 167 166 168 <para> 167 Note that building <productname>PostgreSQL</productname> from a CVS 168 pull requires reasonably up-to-date versions of <application>bison</application> 169 and <application>flex</application>, which are not needed to build from a distribution 170 tarball because the files made with them are pre-built in a tarball. 171 Otherwise the tool requirements are the same as building from source. 169 Notez que la construction de <productname>PostgreSQL</productname> à partir 170 d'une récupération de la version CVS nécessite des versions à jour de 171 <application>bison</application> et <application>flex</application>, versions 172 qui ne sont pas nécessaire pour la contruction des sources provenant d'une 173 archive tar car les fichiers qu'ils créent sont pré-construits dans une 174 archive tar. Sinon, les outils nécessaires sont identiques. 172 175 </para> 173 176 </sect1> … … 280 283 281 284 <sect1 id="rsync"> 282 <title> Getting The Source Via <productname>rsync</productname></title>283 284 <para> 285 An alternative to using anonymous CVS for retrieving the286 <productname>PostgreSQL</productname> source tree is287 <productname>rsync</productname>, an incremental file transfer tool.288 A major advantage to using <productname>rsync</productname> is that it289 can reliably replicate the <emphasis>entire</emphasis> CVS repository290 on your local system, allowing fast local access to <command>cvs</command>291 operations such as <option>log</option> and <option>diff</option>.292 Other advantages include fast synchronization to the293 <productname>PostgreSQL</productname> server due to an efficient294 streaming transfer protocol which only sends the changes since the last295 update.296 </para> 297 298 <para> 299 You can download the CVS repository using this command:285 <title>Obtenir les sources via <productname>rsync</productname></title> 286 287 <para> 288 Une autre façon d'utiliser le CVS anonyme pour récupérer les sources de 289 <productname>PostgreSQL</productname> est 290 <productname>rsync</productname>, un outil de transfert incrémental de 291 fichiers. Un avantage majeur à l'utilisation de 292 <productname>rsync</productname> est qu'il peut répliquer de façon fiable 293 le dépôt CVS <emphasis>complet</emphasis> sur votre système local, en 294 utilisant l'accès local rapide aux opérations <command>cvs</command> comme 295 <option>log</option> et <option>diff</option>. Entre autres avantages, la 296 synchronisation rapide avec le serveur 297 <productname>PostgreSQL</productname> grâce à un protocole de transfert 298 efficace qui n'envoie que les modifications depuis la dernière mise à jour. 299 </para> 300 301 <para> 302 Vous pouvez télécharger le dépôt CVS en utilisant cette commande : 300 303 <programlisting> 301 304 rsync -avzCH --delete anoncvs.postgresql.org::pgsql-cvs cvsroot/ 302 305 </programlisting> 303 For full instructions, see the "rsync" section in the 306 Pour des instructions complètes, lire la section « rsync » dans 307 les 304 308 <ulink url="http://pgfoundry.org/docman/view.php/1000040/4/PGBuildFarm-HOWTO.txt"> 305 pgbuildfarm instructions</ulink>.309 instructions de pgbuildfarm</ulink>. 306 310 </para> 307 311 </sect1> traduc/trunk/manuel/datatype.xml
r747 r756 246 246 <entry><type>tsquery</type></entry> 247 247 <entry></entry> 248 <entry> full text search query</entry>248 <entry>requête pour la recherche plein texte</entry> 249 249 </row> 250 250 … … 252 252 <entry><type>tsvector</type></entry> 253 253 <entry></entry> 254 <entry> full text search document</entry>254 <entry>document pour la recherche plein texte</entry> 255 255 </row> 256 256 … … 258 258 <entry><type>uuid</type></entry> 259 259 <entry></entry> 260 <entry> universally unique identifier</entry>260 <entry>identifiant unique universel</entry> 261 261 </row> 262 262 … … 264 264 <entry><type>xml</type></entry> 265 265 <entry></entry> 266 <entry> XML data</entry>266 <entry>données XML</entry> 267 267 </row> 268 268 </tbody> … … 477 477 478 478 <indexterm> 479 <primary> arbitrary precision numbers</primary>479 <primary>nombres à virgule flottante</primary> 480 480 </indexterm> 481 481 … … 558 558 <indexterm> 559 559 <primary>not a number</primary> 560 <secondary>numeric ( data type)</secondary>560 <secondary>numeric (type de données)</secondary> 561 561 </indexterm> 562 562 … … 575 575 <note> 576 576 <para> 577 In most implementations of the <quote>not-a-number</quote> concept,578 <literal>NaN</literal> is not considered equal to any other numeric579 value (including <literal>NaN</literal>). In order to allow580 <type>numeric</type> values to be sorted and used in tree-based581 indexes, <productname>PostgreSQL</productname> treats <literal>NaN</literal>582 values as equal, and greater than all non-<literal>NaN</literal>583 values.577 Dans la plupart des implémentations du concept <quote>not-a-number</quote>, 578 <literal>NaN</literal> est considéré différent de toute valeur numérique 579 (ceci incluant <literal>NaN</literal>). Pour autoriser le tri des valeurs 580 de type <type>numeric</type> et les utiliser dans des index basés sur le 581 tri, <productname>PostgreSQL</productname> traite les valeurs 582 <literal>NaN</literal> comme identiques entre elles, mais toutes supérieures 583 aux valeurs non <literal>NaN</literal>. 584 584 </para> 585 585 </note> … … 701 701 <note> 702 702 <para> 703 IEEE754 specifies that <literal>NaN</literal> should not compare equal 704 to any other floating-point value (including <literal>NaN</literal>). 705 In order to allow floating-point values to be sorted and used 706 in tree-based indexes, <productname>PostgreSQL</productname> treats 707 <literal>NaN</literal> values as equal, and greater than all 708 non-<literal>NaN</literal> values. 703 IEEE754 spécifie que <literal>NaN</literal> ne devrait pas être considéré 704 égale à toute autre valeur en virgule flottante (ceci incluant 705 <literal>NaN</literal>). Pour permettre le tri des valeurs en virgule 706 flottante et leur utilisation dans des index basés sur des arbres, 707 <productname>PostgreSQL</productname> traite les valeurs 708 <literal>NaN</literal> comme identiques entre elles, mais supérieures 709 à toute valeur différente de <literal>NaN</literal>. 709 710 </para> 710 711 </note> … … 1021 1022 1022 1023 <para> 1023 The storage requirement for a short string (up to 126 bytes) is 1 byte 1024 plus the actual string, which includes the space padding in the case of 1025 <type>character</type>. Longer strings have 4 bytes overhead instead 1026 of 1. Long strings are compressed by the system automatically, so 1027 the physical requirement on disk might be less. Very long values are also 1028 stored in background tables so that they do not interfere with rapid 1029 access to shorter column values. 1024 L'espace nécessaire pour une chaîne de caractères courte (jusqu'à 126 octets) 1025 est de un octet, plus la taille de la chaîne qui inclut le remplissage avec 1026 des espaces dans le cas du type <type>character</type>. Les chaînes plus 1027 longues ont quatre octets d'en-tête au lieu d'un seul. Les chaînes longues 1028 sont automatiquement compressées par le système, donc le besoin pourrait 1029 être moindre. Les chaînes vraiment très longues sont stockées dans des 1030 tables supplémentaires, pour qu'elles n'empêchent pas d'accéder rapidement 1031 à des valeurs plus courtes. 1030 1032 Dans tous les cas, la taille maximale possible pour une chaîne de 1031 1033 caractères est de l'ordre de 1 Go. (La taille maximale pour … … 1043 1045 <para> 1044 1046 Il n'y a aucune différence de performance entre ces trois types, si ce 1045 n'est la place disque supplémentaire requise pour le type à remplissage1046 and a few extra cycles to check the length when storing into 1047 a length-constrained column. Bien que1048 <type>character(<replaceable>n</replaceable>)</type> ait des avantages en terme de1049 performance sur certains autres systèmes de bases de données, il ne1050 dispose pas de ce type d'avantages dans1047 n'est la place disque supplémentaire requise pour le type à remplissage 1048 et quelques cycles CPU supplémentaires pour vérifier la longueur lors du 1049 stockage dans une colonne contrainte par la taille. Bien que 1050 <type>character(<replaceable>n</replaceable>)</type> ait des avantages en 1051 terme de performance sur certains autres systèmes de bases de données, il 1052 ne dispose pas de ce type d'avantages dans 1051 1053 <productname>PostgreSQL</productname>. Dans la plupart des situations, 1052 1054 les types <type>text</type> et <type>character varying</type> peuvent … … 2379 2381 conduit le système à utiliser en réalité une abréviation très 2380 2382 particulière d'UTC. 2381 Another issue to keep in mind is that in POSIX time zone names, 2382 positive offsets are used for locations <emphasis>west</emphasis> of Greenwich. 2383 Everywhere else, <productname>PostgreSQL</productname> follows the 2384 ISO-8601 convention that positive timezone offsets are <emphasis>east</emphasis> 2385 of Greenwich. 2383 Un autre problème à conserver en tête est que, pour les noms des fuseaux 2384 horaires POSIX, les décalages positifs sont utilisés pour les emplacements 2385 situés à l'<emphasis>ouest</emphasis> de Greenwich. Partout ailleurs, 2386 <productname>PostgreSQL</productname> suit la convention ISO-8601 pour qui 2387 les décalages positifs de fuseaux horaires concernent 2388 l'<emphasis>est</emphasis> de Greenwich. 2386 2389 </para> 2387 2390 … … 2422 2425 les fuseaux horaires connus par 2423 2426 <productname>PostgreSQL</productname> ; 2424 ( These rules are also used to choose the default value of2425 <xref linkend="guc-log-timezone"/>, if it is not specified.)2427 (Ces règles sont aussi utilisées pour choisir la valeur par défaut de 2428 <xref linkend="guc-log-timezone"/>, si elle n'est pas précisée.) 2426 2429 </para> 2427 2430 </listitem> … … 2547 2550 2548 2551 <sect1 id="datatype-enum"> 2549 <title> Enumerated Types</title>2552 <title>Types énumération</title> 2550 2553 2551 2554 <indexterm zone="datatype-enum"> 2552 2555 <primary>data type</primary> 2553 <secondary>enumerated (enum)</secondary> 2554 </indexterm> 2555 2556 <para> 2557 Enumerated (enum) types are data types that 2558 are comprised of a static, predefined set of values with a 2559 specific order. They are equivalent to the <type>enum</type> 2560 types in a number of programming languages. An example of an enum 2561 type might be the days of the week, or a set of status values for 2562 a piece of data. 2556 <secondary>énumération (enum)</secondary> 2557 </indexterm> 2558 2559 <para> 2560 Les types énumérés (enum) sont des types de données qui comprennent un 2561 ensemble statique, prédéfini de valeurs dans un ordre spécifique. Ils sont 2562 équivalents aux types <type>enum</type> dans de nombreux langages de 2563 programmation. Les jours de la semaine ou un ensemble de valeurs de statut 2564 pour un type de données sont de bons exemples de type enum. 2563 2565 </para> 2564 2566 2565 2567 <sect2> 2566 <title>D eclaration of Enumerated Types</title>2567 2568 <para> 2569 Enum types are created using the <xref2570 linkend="sql-createtype" endterm="sql-createtype-title"/> command,2571 for example:2568 <title>Déclaration de types énumérés</title> 2569 2570 <para> 2571 Les types enum sont créés en utilisant la commande <xref 2572 linkend="sql-createtype" endterm="sql-createtype-title"/>. 2573 Par exemple : 2572 2574 2573 2575 <programlisting> … … 2575 2577 </programlisting> 2576 2578 2577 Once created, the enum type can be used in table and function2578 definitions much like any other type:2579 Une fois créé, le type enum peut être utilisé dans des définitions de 2580 table et de fonction, comme tous les autres types : 2579 2581 </para> 2580 2582 2581 2583 <example> 2582 <title> Basic Enum Usage</title>2584 <title>Utilisation basique de enum</title> 2583 2585 <programlisting> 2584 CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');2585 CREATE TABLE person (2586 n ametext,2587 current_mood mood2586 CREATE TYPE humeur AS ENUM ('triste', 'ok', 'heureux'); 2587 CREATE TABLE personne ( 2588 nom text, 2589 humeur_actuelle humeur 2588 2590 ); 2589 INSERT INTO person VALUES ('Moe', 'happy');2590 SELECT * FROM person WHERE current_mood = 'happy';2591 name | current_mood2592 ------+-------------- 2593 Moe | h appy2591 INSERT INTO personne VALUES ('Moe', 'heureux'); 2592 SELECT * FROM personne WHERE humeur_actuelle = 'heureux'; 2593 name | humeur_actuelle 2594 ------+----------------- 2595 Moe | heureux 2594 2596 (1 row) 2595 2597 </programlisting> … … 2598 2600 2599 2601 <sect2> 2600 <title> Ordering</title>2602 <title>Tri</title> 2601 2603 2602 2604 <para> 2603 The ordering of the values in an enum type is the2604 order in which the values were listed when the type was declared.2605 All standard comparison operators and related2606 aggregate functions are supported for enums. For example:2605 L'ordre des valeurs dans un type enum correspond à l'ordre dans lequel 2606 les valeurs sont présentées lors de la déclaration du type. Tous les 2607 opérateurs de comparaison et les fonctions d'agrégats relatives peuvent 2608 être utilisés avec des types enum. Par exemple : 2607 2609 </para> 2608 2610 2609 2611 <example> 2610 <title> Enum Ordering</title>2612 <title>Tri d'un enum</title> 2611 2613 <programlisting> 2612 INSERT INTO person VALUES ('Larry', 'sad');2613 INSERT INTO person VALUES ('Curly', 'ok');2614 SELECT * FROM person WHERE current_mood > 'sad';2615 n ame | current_mood2616 -------+-------------- 2614 INSERT INTO personne VALUES ('Larry', 'triste'); 2615 INSERT INTO personne VALUES ('Curly', 'heureux'); 2616 SELECT * FROM personne WHERE humeur_actuelle > 'triste'; 2617 nom | humeur_actuelle 2618 -------+----------------- 2617 2619 Moe | happy 2618 2620 Curly | ok 2619 2621 (2 rows) 2620 2622 2621 SELECT * FROM person WHERE current_mood > 'sad' ORDER BY current_mood;2622 n ame | current_mood2623 SELECT * FROM personne WHERE humeur_actuelle > 'triste' ORDER BY humeur_actuelle; 2624 nom | humeur_actuelle 2623 2625 -------+-------------- 2624 2626 Curly | ok … … 2626 2628 (2 rows) 2627 2629 2628 SELECT n ame FROM person2629 WHERE current_mood = (SELECT MIN(current_mood) FROM person);2630 n ame2630 SELECT nom FROM personne 2631 WHERE humeur_actuelle = (SELECT MIN(humeur_actuelle) FROM personne); 2632 nom 2631 2633 ------- 2632 2634 Larry … … 2637 2639 2638 2640 <sect2> 2639 <title> Type Safety</title>2640 2641 <para> 2642 Enumerated types are completely separate data types and may not2643 be compared with each other.2641 <title>Surêté du type</title> 2642 2643 <para> 2644 Les types énumérés sont des types de données complètement séparés et 2645 peuvent ne pas être comparables entre eux. 2644 2646 </para> 2645 2647 2646 2648 <example> 2647 <title> Lack of Casting</title>2649 <title>Manque de conversion</title> 2648 2650 <programlisting> 2649 CREATE TYPE happiness AS ENUM ('happy', 'very happy', 'ecstatic');2650 CREATE TABLE holidays (2651 n um_weeks int,2652 happiness happiness2651 CREATE TYPE niveau_de_joie AS ENUM ('heureux', 'très heureux', 'ecstatique'); 2652 CREATE TABLE vacances ( 2653 nombre_de_semaines int, 2654 niveau_de_joie niveau_de_joie 2653 2655 ); 2654 INSERT INTO holidays(num_weeks,happiness) VALUES (4, 'happy');2655 INSERT INTO holidays(num_weeks,happiness) VALUES (6, 'very happy');2656 INSERT INTO holidays(num_weeks,happiness) VALUES (8, 'ecstatic');2657 INSERT INTO holidays(num_weeks,happiness) VALUES (2, 'sad');2658 ERROR: invalid input value for enum happiness: "sad"2659 SELECT person .name, holidays.num_weeks FROM person, holidays2660 WHERE person .current_mood = holidays.happiness;2661 ERROR: operator does not exist: mood = happiness2656 INSERT INTO vacances(nombre_de_semaines,niveau_de_joie) VALUES (4, 'heureux'); 2657 INSERT INTO vacances(nombre_de_semaines,niveau_de_joie) VALUES (6, 'très heureux'); 2658 INSERT INTO vacances(nombre_de_semaines,niveau_de_joie) VALUES (8, 'ecstatique'); 2659 INSERT INTO vacances(nombre_de_semaines,niveau_de_joie) VALUES (2, 'triste'); 2660 ERROR: invalid input value for enum niveau_de_joie: "triste" 2661 SELECT personne.nom, vacances.nombre_de_semaines FROM personne, vacances 2662 WHERE personne.humeur_actuelle = vacances.niveau_de_joie; 2663 ERROR: operator does not exist: humeur = niveau_de_joie 2662 2664 </programlisting> 2663 2665 </example> 2664 2666 2665 2667 <para> 2666 If you really need to do something like that, you can either 2667 write a custom operator or add explicit casts to your query: 2668 Si vous avez vraiment besoin de ce type de conversion, vous pouvez soit 2669 écrire un opérateur personnalisé soit ajouter des conversions explicites 2670 dans votre requête : 2668 2671 </para> 2669 2672 2670 2673 <example> 2671 <title>Compar ing Different Enums by Casting to Text</title>2674 <title>Comparer différent enums en convertissant en texte</title> 2672 2675 <programlisting> 2673 SELECT person .name, holidays.num_weeks FROM person, holidays2674 WHERE person .current_mood::text = holidays.happiness::text;2675 n ame | num_weeks2676 ------+----------- 2676 SELECT personne.nom, vacances.nombre_de_semaines FROM personne, vacances 2677 WHERE personne.humeur_actuelle::text = vacances.niveau_de_joie::text; 2678 nom | nombre_de_semaines 2679 ------+-------------------- 2677 2680 Moe | 4 2678 2681 (1 row) … … 2683 2686 2684 2687 <sect2> 2685 <title> Implementation Details</title>2688 <title>Détails d'implémentation</title> 2686 2689 2687 2690 <para> 2688 An enum value occupies four bytes on disk. The length of an enum2689 value's textual label is limited by the <symbol>NAMEDATALEN</symbol>2690 setting compiled into <productname>PostgreSQL</productname>; in standard2691 builds this means at most 63 bytes.2692 </para> 2693 2694 <para> 2695 Enum labels are case sensitive, so2696 <type>'h appy'</type> is not the same as <type>'HAPPY'</type>.2697 Spaces in the labels are significant, too.2691 Une valeur enum occupe quatre octets sur disque. La longueur du label texte 2692 d'une valeur enum est limité au paramètre <symbol>NAMEDATALEN</symbol> 2693 codé en dur dans <productname>PostgreSQL</productname> ; dans les 2694 constructions standards, cela signifie un maximum de 63 octets. 2695 </para> 2696 2697 <para> 2698 Les labels enum sont sensibles à la casse, donc 2699 <type>'heureux'</type> n'est pas identique à <type>'HEUREUX'</type>. 2700 Les espaces sont aussi significatifs dans les labels. 2698 2701 </para> 2699 2702 … … 3312 3315 3313 3316 <para> 3314 A bit string value requires 1 byte for each group of 8 bits, plus 3315 5 or 8 bytes overhead depending on the length of the string 3316 (but long values may be compressed or moved out-of-line, as explained 3317 in <xref linkend="datatype-character"/> for character strings). 3317 Une valeur pour une chaîne de bit nécessite un octet pour chaque groupe de 3318 huit bits, plus cinq ou huit octets d'en-tête suivant la longueur de la 3319 chaîne (les valeurs longues peuvent être compressées ou déplacées, comme 3320 expliqué dans <xref linkend="datatype-character"/> pour les chaînes de 3321 caractères). 3318 3322 </para> 3319 3323 </sect1> 3320 3324 3321 3325 <sect1 id="datatype-uuid"> 3322 <title> <acronym>UUID</acronym> Type</title>3326 <title>Type <acronym>UUID</acronym></title> 3323 3327 3324 3328 <indexterm zone="datatype-uuid"> … … 3327 3331 3328 3332 <para> 3329 The data type <type>uuid</type> stores Universally Unique 3330 Identifiers (UUID) as per RFC 4122, ISO/IEC 9834-8:2005, and 3331 related standards. (Some systems refer to this data type as 3332 globally unique 3333 identifier/GUID<indexterm><primary>GUID</primary></indexterm> 3334 instead.) Such an identifier is a 128-bit quantity that is 3335 generated by a suitable algorithm so that it is very unlikely to 3336 be generated by anyone else in the known universe using the same 3337 algorithm. Therefore, for distributed systems, these identifiers 3338 provide a better uniqueness guarantee than that which can be 3339 achieved using sequence generators, which are only unique within a 3340 single database. 3341 </para> 3342 3343 <para> 3344 A UUID is written as a sequence of lower-case hexadecimal digits, 3345 in several groups separated by hyphens, specifically a group of 8 3346 digits followed by three groups of 4 digits followed by a group of 3347 12 digits, for a total of 32 digits representing the 128 bits. An 3348 example of a UUID in this standard form is: 3333 Le type de données <type>uuid</type> stocke des identifiants universels 3334 uniques (<acronym>UUID</acronym>, acronyme de <foreignphrase>Universally 3335 Unique Identifiers</foreignphrase>) décrits dans les standards RFC 4122, 3336 ISO/IEC 9834-8:2005, 3337 et d'autres encore. (Certains systèmes font référence à ce type de données 3338 en tant qu'identifiant unique global (ou <acronym>GUID</acronym> 3339 <indexterm><primary>GUID</primary></indexterm>).) Un identifiant de ce type 3340 est une quantité sur 128 bits généré par un algorithme adéquat qui a peu 3341 de chances d'être reproduit par quelqu'un d'autre utilisant le même 3342 algorithme. Du coup, pour les systèmes distribués, ces identifiants 3343 fournissent une meilleure garantie d'unicité que ce que pourrait fournir 3344 une séquence, dont la valeur est unique seulement au sein d'une base 3345 de données. 3346 </para> 3347 3348 <para> 3349 Un <acronym>UUID</acronym> est écrit comme une séquence de chiffres 3350 hexadécimaux en minuscule, répartis en différents groupes séparés par 3351 un tiret. Plus précisément, il s'agit d'un groupe de huit chiffres 3352 suivis de trois groupes de quatre chiffres terminés par un groupe de 3353 douze chiffres, ce qui fait un total de 32 chiffres représentant les 3354 128 bits. Voici un exemple d'<acronym>UUID</acronym> dans sa forme 3355 standard : 3349 3356 <programlisting> 3350 3357 a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 3351 3358 </programlisting> 3352 PostgreSQL a lso accepts the following alternative forms for input:3353 use of upper-case digits, the standard format surrounded by3354 braces, and omitting the hyphens. Examples are:3359 PostgreSQL accepte aussi d'autres formes en entrée : utilisation 3360 des majuscules, de crochets englobant le nombre, suppression des tirets. 3361 Voici quelques exemples : 3355 3362 <programlisting> 3356 3363 A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11 … … 3358 3365 a0eebc999c0b4ef8bb6d6bb9bd380a11 3359 3366 </programlisting> 3360 Output is always in the standard form. 3361 </para> 3362 3363 <para> 3364 To generate UUIDs, the contrib module <literal>uuid-ossp</literal> 3365 provides functions that implement the standard algorithms. 3366 Alternatively, UUIDs could be generated by client applications or 3367 other libraries invoked through a server-side function. 3367 L'affichage est toujours dans la forme standard. 3368 </para> 3369 3370 <para> 3371 Pour générer des <acronym>UUID</acronym>, le module contrib 3372 <literal>uuid-ossp</literal> fournit des fonctions qui implémentent 3373 les algorithmes standards. Sinon, les <acronym>UUID</acronym> 3374 peuvent être générés par des applications clientes ou par d'autres 3375 bibliothèques appelées par une fonction serveur. 3368 3376 </para> 3369 3377 </sect1> 3370 3378 3371 3379 <sect1 id="datatype-textsearch"> 3372 <title> Full Text Search</title>3380 <title>Recherche plein texte</title> 3373 3381 3374 3382 <variablelist> … … 3380 3388 <para> 3381 3389 <type>tsvector</type> 3382 <indexterm><primary>tsvector</primary></indexterm> is a data type3383 that represents a document and is optimized for full text searching.3384 In the simplest case, <type>tsvector</type> is a sorted list of3385 lexemes, so even without indexes full text searches perform better3386 than standard <literal>~</literal> and <literal>LIKE</literal>3387 operations:3390 <indexterm><primary>tsvector</primary></indexterm> est un type de données 3391 qui représente un document et est optimisé pour la recherche plein texte. 3392 Dans le cas le plus simple, <type>tsvector</type> est une liste triée de 3393 lexemes, donc même sans index, les recherches plein texte s'exécutent 3394 plus rapidement que les opérations standards <literal>~</literal> et 3395 <literal>LIKE</literal> : 3388 3396 3389 3397 <programlisting> … … 3403 3411 </programlisting> 3404 3412 3405 E ach lexeme, optionally, can have positional information which is used for3406 <varname>proximity ranking</varname>:3413 En option, chaque lexeme peut avoir des informations de positionnement 3414 à utiliser pour améliorer le <varname>score</varname> : 3407 3415 3408 3416 <programlisting> … … 3413 3421 </programlisting> 3414 3422 3415 Each lexeme position also can be labeled as<literal>A</literal>,3423 Chaque position de lexeme peut aussi utiliser un label <literal>A</literal>, 3416 3424 <literal>B</literal>, <literal>C</literal>, <literal>D</literal>, 3417 where <literal>D</literal> is the default. These labels can be used to group 3418 lexemes into different <emphasis>importance</emphasis> or 3419 <emphasis>rankings</emphasis>, for example to reflect document structure. 3420 Actual values can be assigned at search time and used during the calculation 3421 of the document rank. This is very useful for controlling search results. 3425 avec <literal>D</literal> comme valeur par défaut. Ces labels sont 3426 utilisées pour grouper les lexemes de différentes 3427 <emphasis>importance</emphasis> ou de <emphasis>scores</emphasis> 3428 différents, par exemple pour refléter la structure du document. Des 3429 valeurs réelles peuvent être affectées au moment de la recherche et 3430 utilisées lors du calcul du score du document. Ceci est très utile pour 3431 contrôler les résultats des recherches. 3422 3432 </para> 3423 3433 3424 3434 <para> 3425 The concatenation operator, e.g. <literal>tsvector || tsvector</literal>, 3426 can "construct" a document from several parts. The order is important if 3427 <type>tsvector</type> contains positional information. Of course, 3428 it is also possible to build a document using different tables: 3435 L'opérateur de concaténation operator, c'est-à-dire <literal>tsvector || 3436 tsvector</literal>, peut construire un document à partir de différentes 3437 sources. L'ordre est important si <type>tsvector</type> contient des 3438 informations de position. Bien sûr, il est aussi possible de construire 3439 un document en utilisant différentes tables : 3429 3440 3430 3441 <programlisting> … … 3452 3463 <para> 3453 3464 <type>tsquery</type> 3454 <indexterm><primary>tsquery</primary></indexterm> is a data type3455 for textual queries which supports the boolean operators3456 <literal>&</literal> (AND), <literal>|</literal> (OR), and3457 parentheses. A <type>tsquery</type> consists of lexemes (optionally3458 labeled by letters) with boolean operators in between:3465 <indexterm><primary>tsquery</primary></indexterm> est un type de données 3466 pour les requêtes de recherche plein texte. Ce type supporte les 3467 opérateurs booléens <literal>&</literal> (AND), <literal>|</literal> 3468 (OR) et les parenthèses. Un <type>tsquery</type> consiste en des lexemes 3469 (quelque fois avec des labels) entrecoupés d'opérateurs booléens : 3459 3470 3460 3471 <programlisting> … … 3469 3480 </programlisting> 3470 3481 3471 Labels can be used to restrict the search region, which allows the 3472 development of different search engines using the same full text index. 3482 Les labels sont utilisés pour restreindre la région de la recherche, ce qui 3483 permet le développement de différents moteurs de recherche utilisant le 3484 même index plein texte. 3473 3485 </para> 3474 3486 3475 3487 <para> 3476 <type>tsqueries</type> can be concatenated using <literal>&&</literal> (AND)3477 and <literal>||</literal> (OR) operators:3488 <type>tsqueries</type> peut être concaténé en utilisant les opérateurs 3489 <literal>&&</literal> (AND) et <literal>||</literal> (OR) : 3478 3490 3479 3491 <programlisting> … … 3497 3509 3498 3510 <sect1 id="datatype-xml"> 3499 <title> <acronym>XML</acronym> Type</title>3511 <title>Type <acronym>XML</acronym></title> 3500 3512 3501 3513 <indexterm zone="datatype-xml"> … … 3504 3516 3505 3517 <para> 3506 The data type <type>xml</type> can be used to store XML data. Its 3507 advantage over storing XML data in a <type>text</type> field is that it 3508 checks the input values for well-formedness, and there are support 3509 functions to perform type-safe operations on it; see <xref 3510 linkend="functions-xml"/>. Use of this data type requires the 3511 installation to have been built with <command>configure 3518 Le type de données <type>xml</type> peut être utilisé pour stocker des 3519 données de type XML. Son avantage sur le stockage dans un champ de type 3520 <type>text</type> est qu'il vérifie que les valeurs en entrée sont bien 3521 formées. De plus, il existe des fonctions de support pour réaliser des 3522 opérations saines à partir de ce type ; voir <xref 3523 linkend="functions-xml"/>. L'utilisation de ce type de données requiert 3524 que l'installation se soit faire avec <command>configure 3512 3525 --with-libxml</command>. 3513 3526 </para> 3514 3527 3515 3528 <para> 3516 The <type>xml</type> type can store well-formed3517 <quote>documents</quote>, as defined by the XML standard, as well3518 as <quote>content</quote> fragments, which are defined by the3519 production <literal>XMLDecl? content</literal> in the XML3520 standard. Roughly, this means that content fragments can have3521 more than one top-level element or character node. Theexpression3522 <literal><replaceable> xmlvalue</replaceable> IS DOCUMENT</literal>3523 can be used to evaluate whether a particular <type>xml</type>3524 value is a full document or only a content fragment.3529 Le type <type>xml</type> peut stocker des <quote>documents</quote> bien 3530 formés, suivant la définition du standard XML, ainsi que des fragement 3531 de contenu (<quote>content</quote>), qui sont définis par 3532 <literal>XMLDecl? content</literal> dans le standard XML. Cela signifie 3533 que les fragments de contenu peuvent avoir plus d'un élément racine ou 3534 noeud caractère. L'expression 3535 <literal><replaceable>valeurxml</replaceable> IS DOCUMENT</literal> 3536 peut être utilisé pour évaluer si une valeur <type>xml</type> particulière 3537 est un document complet ou seulement un fragement de contenu. 3525 3538 </para> 3526 3539 3527 3540 <sect2> 3528 <title>Cr eating XML Values</title>3529 <para> 3530 To produce a value of type <type>xml</type> from character data,3531 use the function3541 <title>Créer des valeurs XML</title> 3542 <para> 3543 Pour produire une valeur de type <type>xml</type> à partir de données de 3544 type caractère, utilisez la fonction 3532 3545 <function>xmlparse</function>:<indexterm><primary>xmlparse</primary></indexterm> 3533 3546 <synopsis> 3534 3547 XMLPARSE ( { DOCUMENT | CONTENT } <replaceable>value</replaceable>) 3535 3548 </synopsis> 3536 Examples:3549 Quelques exemples : 3537 3550 <programlisting><![CDATA[ 3538 3551 XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Manual</title><chapter>...</chapter><book>') 3539 3552 XMLPARSE (CONTENT 'abc<foo>bar</foo><bar>foo</bar>') 3540 3553 ]]></programlisting> 3541 While this is the only way to convert character strings into XML3542 values according to the SQL standard, the PostgreSQL-specific3543 s yntaxes:3554 Bien que cela soit la seule façon de convertir des chaînes de 3555 caractère en valeurs XML d'après le standard XML, voici des syntaxes 3556 spécifiques à PostgreSQL : 3544 3557 <programlisting><![CDATA[ 3545 3558 xml '<foo>bar</foo>' 3546 3559 '<foo>bar</foo>'::xml 3547 3560 ]]></programlisting> 3548 can also be used. 3549 </para> 3550 3551 <para> 3552 The <type>xml</type> type does not validate its input values 3553 against a possibly included document type declaration 3561 </para> 3562 3563 <para> 3564 Le type <type>xml</type> ne valide pas les valeurs en entrée par rapport 3565 à une déclaration de type de document inclue 3554 3566 (DTD).<indexterm><primary>DTD</primary></indexterm> 3555 3567 </para> 3556 3568 3557 3569 <para> 3558 The inverse operation, producing character string type values from3559 <type>xml</type>, uses the function3570 L'opération inverse, produisant une chaîne de caractères à partir d'une 3571 valeur au type <type>xml</type>, utilise la fonction 3560 3572 <function>xmlserialize</function>:<indexterm><primary>xmlserialize</primary></indexterm> 3561 3573 <synopsis> 3562 3574 XMLSERIALIZE ( { DOCUMENT | CONTENT } <replaceable>value</replaceable> AS <replaceable>type</replaceable> ) 3563 3575 </synopsis> 3564 <replaceable>type</replaceable> can be one of3565 <type>character</type>, <type>character varying</type> , or3566 <type>text</type> (o r an alias name for those). Again, according3567 to the SQL standard, this is the only way to convert betweentype3568 <type>xml</type> and character types, but PostgreSQL also allows3569 you to simply cast the value.3570 </para> 3571 3572 <para> 3573 When character string values are cast to or from type3574 <type>xml</type> without going through <type>XMLPARSE</type> or3575 <type>XMLSERIALIZE</type>, respective ly, the choice of3576 <literal>DOCUMENT</literal> versus <literal>CONTENT</literal> is3577 d etermined by the <quote>XML option</quote>3578 < indexterm><primary>XML option</primary></indexterm>3579 session configuration parameter, which can be set using the3580 standard command3576 <replaceable>type</replaceable> peut être 3577 <type>character</type>, <type>character varying</type> ou 3578 <type>text</type> (ou un alias de ces derniers). Encore une fois, d'après 3579 le standard SQL, c'est le seul moyen de convertir le type 3580 <type>xml</type> vers les types caractère mais PostgreSQL autorise aussi 3581 la conversion simple de la valeur. 3582 </para> 3583 3584 <para> 3585 Lorsque les valeurs des chaînes de caractère sont converties vers ou à 3586 partir du type <type>xml</type> sans passer par <type>XMLPARSE</type> ou 3587 <type>XMLSERIALIZE</type>, respectivement, le choix de 3588 <literal>DOCUMENT</literal> ou de <literal>CONTENT</literal> est 3589 déterminé par un paramètre de configuation niveau session, 3590 <quote>XML OPTION</quote> 3591 <indexterm><primary>XML OPTION</primary></indexterm>, qui peut être 3592 configuré par la commande habituelle : 3581 3593 <synopsis> 3582 3594 SET XML OPTION { DOCUMENT | CONTENT }; 3583 3595 </synopsis> 3584 o r the more PostgreSQL-like syntax3596 ou la syntaxe PostgreSQL : 3585 3597 <synopsis> 3586 3598 SET xmloption TO { DOCUMENT | CONTENT }; 3587 3599 </synopsis> 3588 The default is <literal>CONTENT</literal>, so all forms of XML3589 d ata are allowed.3600 La valeur par défaut est <literal>CONTENT</literal>, donc toutes les formes 3601 de données XML sont autorisées. 3590 3602 </para> 3591 3603 </sect2> 3592 3604 3593 3605 <sect2> 3594 <title> Encoding Handling</title>3595 <para> 3596 Care must be taken when dealing with multiple character encodings3597 on the client, server, and in the XML data passed through them.3598 When using the text mode to pass queries to the server and query3599 results to the client (which is the normal mode), PostgreSQL3600 converts all character data passed between the client and the3601 server and vice versa to the character encoding of the respective3602 end; see <xref linkend="multibyte"/>. This includes string3603 representations of XML values, such as in the above examples.3604 This would ordinarily mean that encoding declarations contained in3605 XML data might become invalid as the character data is converted3606 to other encodings while travelling between client and server,3607 while the embedded encoding declaration is not changed. To cope3608 with this behavior, an encoding declaration contained in a3609 character string presented for input to the <type>xml</type> type3610 is <emphasis>ignored</emphasis>, and the content is always assumed3611 to be in the current server encoding. Consequently, for correct3612 processing, such character strings of XML data must be sent off3613 from the client in the current client encoding.

