[Trad] [svn:pgfr] r1289 - in traduc/trunk/postgresql: . ref

admin at listes.postgresql.fr admin at listes.postgresql.fr
Dim 12 Avr 00:08:57 CEST 2009


Author: gleu
Date: 2009-04-12 00:08:56 +0200 (Sun, 12 Apr 2009)
New Revision: 1289

Removed:
   traduc/trunk/postgresql/ref/ipcclean.xml
Modified:
   traduc/trunk/postgresql/acronyms.xml
   traduc/trunk/postgresql/advanced.xml
   traduc/trunk/postgresql/array.xml
   traduc/trunk/postgresql/backup.xml
   traduc/trunk/postgresql/charset.xml
   traduc/trunk/postgresql/client-auth.xml
   traduc/trunk/postgresql/contrib.xml
   traduc/trunk/postgresql/datatype.xml
   traduc/trunk/postgresql/datetime.xml
   traduc/trunk/postgresql/dblink.xml
   traduc/trunk/postgresql/ddl.xml
   traduc/trunk/postgresql/docguide.xml
   traduc/trunk/postgresql/ecpg.xml
   traduc/trunk/postgresql/errcodes.xml
   traduc/trunk/postgresql/extend.xml
   traduc/trunk/postgresql/features.xml
   traduc/trunk/postgresql/filelist.xml
   traduc/trunk/postgresql/fuzzystrmatch.xml
   traduc/trunk/postgresql/gin.xml
   traduc/trunk/postgresql/gist.xml
   traduc/trunk/postgresql/high-availability.xml
   traduc/trunk/postgresql/indexam.xml
   traduc/trunk/postgresql/version.xml
Log:
Merge 8.4 : ?\195?\169tape 1.


Modified: traduc/trunk/postgresql/acronyms.xml
===================================================================
--- traduc/trunk/postgresql/acronyms.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/acronyms.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -236,7 +236,7 @@
     <term><acronym>FSM</acronym></term>
     <listitem>
      <para>
-      <link linkend="runtime-config-resource-fsm">Free Space Map</link>,
+      <link linkend="storage-fsm">Free Space Map</link>,
       cartographie de l'espace libre
      </para>
     </listitem>

Modified: traduc/trunk/postgresql/advanced.xml
===================================================================
--- traduc/trunk/postgresql/advanced.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/advanced.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -353,6 +353,249 @@
   </sect1>
 
 
+  <sect1 id="tutorial-window">
+   <title id="tutorial-window-title">Window Functions</title>
+
+   <indexterm zone="tutorial-window">
+    <primary>window function</primary>
+   </indexterm>
+
+   <para>
+    A <firstterm>window function</> performs a calculation across a set of
+    table rows that are somehow related to the current row.  This is comparable
+    to the type of calculation that can be done with an aggregate function.
+    But unlike regular aggregate functions, use of a window function does not
+    cause rows to become grouped into a single output row &mdash; the
+    rows retain their separate identities.  Behind the scenes, the window
+    function is able to access more than just the current row of the query
+    result.
+   </para>
+
+   <para>
+    Here is an example that shows how to compare each employee's salary
+    with the average salary in his or her department:
+
+<programlisting>
+SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;
+</programlisting>
+
+<screen>
+  depname  | empno | salary |          avg          
+-----------+-------+--------+-----------------------
+ develop   |    11 |   5200 | 5020.0000000000000000
+ develop   |     7 |   4200 | 5020.0000000000000000
+ develop   |     9 |   4500 | 5020.0000000000000000
+ develop   |     8 |   6000 | 5020.0000000000000000
+ develop   |    10 |   5200 | 5020.0000000000000000
+ personnel |     5 |   3500 | 3700.0000000000000000
+ personnel |     2 |   3900 | 3700.0000000000000000
+ sales     |     3 |   4800 | 4866.6666666666666667
+ sales     |     1 |   5000 | 4866.6666666666666667
+ sales     |     4 |   4800 | 4866.6666666666666667
+(10 rows)
+</screen>
+
+    The first three output columns come directly from the table
+    <structname>empsalary</>, and there is one output row for each row in the
+    table.  The fourth column represents an average taken across all the table
+    rows that have the same <structfield>depname</> value as the current row.
+    (This actually is the same function as the regular <function>avg</>
+    aggregate function, but the <literal>OVER</> clause causes it to be
+    treated as a window function and computed across an appropriate set of
+    rows.)
+   </para>
+
+   <para>
+    A window function call always contains an <literal>OVER</> clause
+    following the window function's name and argument(s).  This is what
+    syntactically distinguishes it from a regular function or aggregate
+    function.  The <literal>OVER</> clause determines exactly how the
+    rows of the query are split up for processing by the window function.
+    The <literal>PARTITION BY</> list within <literal>OVER</> specifies
+    dividing the rows into groups, or partitions, that share the same
+    values of the <literal>PARTITION BY</> expression(s).  For each row,
+    the window function is computed across the rows that fall into the
+    same partition as the current row.
+   </para>
+
+   <para>
+    Although <function>avg</> will produce the same result no matter
+    what order it processes the partition's rows in, this is not true of all
+    window functions.  When needed, you can control that order using
+    <literal>ORDER BY</> within <literal>OVER</>.  Here is an example:
+
+<programlisting>
+SELECT depname, empno, salary, rank() OVER (PARTITION BY depname ORDER BY salary DESC) FROM empsalary;
+</programlisting>
+
+<screen>
+  depname  | empno | salary | rank 
+-----------+-------+--------+------
+ develop   |     8 |   6000 |    1
+ develop   |    10 |   5200 |    2
+ develop   |    11 |   5200 |    2
+ develop   |     9 |   4500 |    4
+ develop   |     7 |   4200 |    5
+ personnel |     2 |   3900 |    1
+ personnel |     5 |   3500 |    2
+ sales     |     1 |   5000 |    1
+ sales     |     4 |   4800 |    2
+ sales     |     3 |   4800 |    2
+(10 rows)
+</screen>
+
+    As shown here, the <function>rank</> function produces a numerical rank
+    within the current row's partition for each distinct <literal>ORDER BY</>
+    value, in the order defined by the <literal>ORDER BY</> clause.
+    <function>rank</> needs no explicit parameter, because its behavior
+    is entirely determined by the <literal>OVER</> clause.
+   </para>
+
+   <para>
+    The rows considered by a window function are those of the <quote>virtual
+    table</> produced by the query's <literal>FROM</> clause as filtered by its
+    <literal>WHERE</>, <literal>GROUP BY</>, and <literal>HAVING</> clauses
+    if any.  For example, a row removed because it does not meet the
+    <literal>WHERE</> condition is not seen by any window function.
+    A query can contain multiple window functions that slice up the data
+    in different ways by means of different <literal>OVER</> clauses, but
+    they all act on the same collection of rows defined by this virtual table.
+   </para>
+
+   <para>
+    We already saw that <literal>ORDER BY</> can be omitted if the ordering
+    of rows is not important.  It is also possible to omit <literal>PARTITION
+    BY</>, in which case there is just one partition containing all the rows.
+   </para>
+
+   <para>
+    There is another important concept associated with window functions:
+    for each row, there is a set of rows within its partition called its
+    <firstterm>window frame</>.  Many (but not all) window functions act only
+    on the rows of the window frame, rather than of the whole partition.
+    By default, if <literal>ORDER BY</> is supplied then the frame consists of
+    all rows from the start of the partition up through the current row, plus
+    any following rows that are equal to the current row according to the
+    <literal>ORDER BY</> clause.  When <literal>ORDER BY</> is omitted the
+    default frame consists of all rows in the partition.
+     <footnote>
+      <para>
+       There are options to define the window frame in other ways, but
+       this tutorial does not cover them.  See
+       <xref linkend="syntax-window-functions"> for details.
+      </para>
+     </footnote>
+    Here is an example using <function>sum</>:
+   </para>
+
+<programlisting>
+SELECT salary, sum(salary) OVER () FROM empsalary;
+</programlisting>
+
+<screen>
+ salary |  sum  
+--------+-------
+   5200 | 47100
+   5000 | 47100
+   3500 | 47100
+   4800 | 47100
+   3900 | 47100
+   4200 | 47100
+   4500 | 47100
+   4800 | 47100
+   6000 | 47100
+   5200 | 47100
+(10 rows)
+</screen>
+
+   <para>
+    Above, since there is no <literal>ORDER BY</> in the <literal>OVER</>
+    clause, the window frame is the same as the partition, which for lack of
+    <literal>PARTITION BY</> is the whole table; in other words each sum is
+    taken over the whole table and so we get the same result for each output
+    row.  But if we add an <literal>ORDER BY</> clause, we get very different
+    results:
+   </para>
+
+<programlisting>
+SELECT salary, sum(salary) OVER (ORDER BY salary) FROM empsalary;
+</programlisting>
+
+<screen>
+ salary |  sum  
+--------+-------
+   3500 |  3500
+   3900 |  7400
+   4200 | 11600
+   4500 | 16100
+   4800 | 25700
+   4800 | 25700
+   5000 | 30700
+   5200 | 41100
+   5200 | 41100
+   6000 | 47100
+(10 rows)
+</screen>
+
+   <para>
+    Here the sum is taken from the first (lowest) salary up through the
+    current one, including any duplicates of the current one (notice the
+    results for the duplicated salaries).
+   </para>
+
+   <para>
+    Window functions are permitted only in the <literal>SELECT</literal> list
+    and the <literal>ORDER BY</> clause of the query. They are forbidden
+    elsewhere, such as in <literal>GROUP BY</>, <literal>HAVING</>
+    and <literal>WHERE</literal> clauses.  This is because they logically
+    execute after the processing of those clauses.  Also, window functions
+    execute after regular aggregate functions.  This means it is valid to
+    include an aggregate function call in the arguments of a window function,
+    but not vice versa.
+   </para>
+
+   <para>
+    If there is a need to filter or group rows after the window calculations
+    are performed, you can use a sub-select.  For example:
+
+<programlisting>
+SELECT depname, empno, salary, enroll_date
+FROM
+  (SELECT depname, empno, salary, enroll_date,
+          rank() OVER (PARTITION BY depname ORDER BY salary DESC, empno) AS pos
+     FROM empsalary
+  ) AS ss
+WHERE pos &lt; 3;
+</programlisting>
+
+    The above query only shows the rows from the inner query having
+    <literal>rank</> less than <literal>3</>.
+   </para>
+
+   <para>
+    When a query involves multiple window functions, it is possible to write
+    out each one with a separate <literal>OVER</> clause, but this is
+    duplicative and error-prone if the same windowing behavior is wanted
+    for several functions.  Instead, each windowing behavior can be named
+    in a <literal>WINDOW</> clause and then referenced in <literal>OVER</>.
+    For example:
+
+<programlisting>
+SELECT sum(salary) OVER w, avg(salary) OVER w
+  FROM empsalary
+  WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);
+</programlisting>
+   </para>
+
+   <para>
+    More details about window functions can be found in
+    <xref linkend="syntax-window-functions">,
+    <xref linkend="queries-window">, and the
+    <xref linkend="sql-select" endterm="sql-select-title"> reference page.
+   </para>
+  </sect1>
+
+
   <sect1 id="tutorial-inheritance">
    <title>Héritage</title>
 

Modified: traduc/trunk/postgresql/array.xml
===================================================================
--- traduc/trunk/postgresql/array.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/array.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -21,9 +21,14 @@
   encore supportés.
  </para>
 
- <sect2>
+ <sect2 id="arrays-declaration">
   <title>Déclaration des types tableaux</title>
 
+  <indexterm>
+   <primary>array</primary>
+   <secondary>declaration</secondary>
+  </indexterm>
+
  <para>
   La création de la table suivante permet d'illustrer l'utilisation des types
   tableaux&nbsp;:
@@ -70,13 +75,16 @@
   utilisée pour les tableaux à une dimension.
   <structfield>paye_par_semaine</structfield> peut être défini ainsi&nbsp;:
 <programlisting>paye_par_semaine  integer ARRAY[4],</programlisting>
-  Cette syntaxe nécessite une constante de type entier pour indiquer la taille
-  du tableau. Néanmoins, comme indiqué précédemment, <productname>PostgreSQL</productname>
-  n'impose aucune restriction sur la taille.
+  Or, if no array size is to be specified:
+<programlisting>
+    pay_by_quarter  integer ARRAY,
+</programlisting>
+  Néanmoins, comme indiqué précédemment, <productname>PostgreSQL</productname>
+  n'impose aucune restriction sur la taille dans tous les cas.
  </para>
  </sect2>
 
- <sect2>
+ <sect2 id="arrays-input">
   <title>Saisie de valeurs de type tableau</title>
 
   <indexterm>
@@ -187,9 +195,14 @@
  </para>
  </sect2>
 
- <sect2>
+ <sect2 id="arrays-accessing">
   <title>Accès aux tableaux</title>
 
+  <indexterm>
+   <primary>array</primary>
+   <secondary>accessing</secondary>
+  </indexterm>
+
  <para>
   Quelques requêtes lancées sur la table permettent d'éclairer le propos
   précédent. Tout d'abord, l'accès à un seul élément du tableau
@@ -251,6 +264,9 @@
 ---------------------------
  {{rendez-vous,repas},{entrainement,présentation}}
 (1 row)</programlisting>
+
+  To avoid confusion with the non-slice case, it's best to use slice syntax
+  for all dimensions, e.g., <literal>[1:2][1:1]</>, not <literal>[2][1:1]</>.
  </para>
 
  <para>
@@ -270,7 +286,9 @@
   certains cas particuliers comme la sélection d'une partie d'un tableau
   complètement en dehors de la plage de ce dernier, l'expression de
   cette partie est un tableau vide (zéro dimension) et non pas un tableau
-  NULL. Si la partie demandée surcharge partiellement les limites du
+  NULL. (This
+  does not match non-slice behavior and is done for historical reasons.)
+  Si la partie demandée surcharge partiellement les limites du
   tableau, alors elle est réduite silencieusement à la partie surchargée.
  </para>
 
@@ -299,12 +317,29 @@
 -------------
            2
 (1 row)</programlisting>
+
+ <function>array_length</function> will return the length of a specified
+ array dimension:
+
+<programlisting>
+SELECT array_length(schedule, 1) FROM sal_emp WHERE name = 'Carol';
+
+ array_length
+--------------
+            2
+(1 row)
+</programlisting>
  </para>
  </sect2>
 
- <sect2>
+ <sect2 id="arrays-modifying">
   <title>Modification de tableaux</title>
 
+  <indexterm>
+   <primary>array</primary>
+   <secondary>modifying</secondary>
+  </indexterm>
+
  <para>
   La valeur d'un tableau peut être complètement remplacée&nbsp;:
 
@@ -462,9 +497,14 @@
  </para>
  </sect2>
 
- <sect2>
+ <sect2 id="arrays-searching">
   <title>Recherche dans les tableaux</title>
 
+  <indexterm>
+   <primary>array</primary>
+   <secondary>searching</secondary>
+  </indexterm>
+
  <para>
   Pour rechercher une valeur dans un tableau, il faut vérifier chaque valeur
   dans le tableau. Ceci peut se faire à la main lorque la taille du
@@ -489,6 +529,21 @@
 
  </para>
 
+ <para>
+  Alternatively, the <function>generate_subscripts</> function can be used.
+  For example:
+
+<programlisting>
+SELECT * FROM
+   (SELECT pay_by_quarter,
+           generate_subscripts(pay_by_quarter, 1) AS s
+      FROM sal_emp) AS foo
+ WHERE pay_by_quarter[s] = 10000;
+</programlisting>
+
+  This function is described in <xref linkend="functions-srf-subscripts">.
+ </para>
+
  <tip>
   <para>
    Les tableaux ne sont pas toujours initialisés&nbsp;; rechercher des éléments
@@ -501,9 +556,14 @@
  </tip>
  </sect2>
 
- <sect2>
+ <sect2 id="arrays-io">
   <title>Syntaxe d'entrée et de sortie des tableaux</title>
 
+  <indexterm>
+   <primary>array</primary>
+   <secondary>I/O</secondary>
+  </indexterm>
+
   <para>
    La représentation externe du type texte d'une valeur de tableau consiste en
    des éléments interprétés suivant les règles de conversion d'entrées/sorties

Modified: traduc/trunk/postgresql/backup.xml
===================================================================
--- traduc/trunk/postgresql/backup.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/backup.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -408,6 +408,16 @@
   </para>
 
   <para>
+   If simultaneous snapshots are not possible, one option is to shut down
+   the database server long enough to establish all the frozen snapshots.
+   Another option is perform a continuous archiving base backup (<xref
+   linkend="backup-base-backup">) because such backups are immune to file
+   system changes during the backup.  This requires enabling continuous
+   archiving just during the backup process; restore is done using
+   continuous archive recovery (<xref linkend="backup-pitr-recovery">).
+  </para>
+
+  <para>
    Une autre option consiste à utiliser <application>rsync</application> pour réaliser une
    sauvegarde du système de fichiers. Ceci se fait tout d'abord en lançant
    <application>rsync</application> alors que le serveur de bases de données est en cours
@@ -760,7 +770,7 @@
     </para>
 
     <para>
-     <function>pg_start_backup</function> peut prendre beaucoup de temps
+     By default, <function>pg_start_backup</function> peut prendre beaucoup de temps
      pour arriver à son terme. Ceci est dû au fait qu'il réalise un
      point de retournement, et que les entrées/sorties pour l'établissement
      de ce point de retournement seront réparties sur une grande période
@@ -769,11 +779,11 @@
      <xref linkend="guc-checkpoint-completion-target"/>). Habituellement,
      ce comportement est appréciable car il minimise l'impact du traitement
      des requêtes. Pour commencer la sauvegarde aussi rapidement
-     que possible, on exécute la commande <command>CHECKPOINT</command> (qui
-     déclenche un point de vérification dès que possible), puis
-     on exécute immédiatement <function>pg_start_backup</function>. Le point
-     de vérification de <function>pg_start_backup</function> n'a alors plus
-     grand chose à faire, et s'exécute donc rapidement.
+     que possible, use:
+<programlisting>
+SELECT pg_start_backup('label', true);
+</programlisting>
+     This forces the checkpoint to be done as quickly as possible.
     </para>
    </listitem>
    <listitem>
@@ -800,12 +810,20 @@
     <para>
      Une fois que les fichiers des segments WAL utilisés lors de la sauvegarde
      sont archivés, c'est terminé. Le fichier identifié par le résultat de
-     <function>pg_stop_backup</function> est le dernier segment à archiver pour
-     terminer la sauvegarde. L'archivage de ces fichiers intervient automatiquement
-     car <varname>archive_command</varname> est déjà configuré. Dans de
-     nombreux cas, c'est assez rapide mais il est conseillé de
-     surveiller le système d'archivage pour s'assurer que celui-ci s'effectue
-     correctement et que la sauvegarde est complète.
+     <function>pg_stop_backup</function> est le dernier segment that is required
+     to form a complete set of backup files.
+     <function>pg_stop_backup</> does not return until the last segment has
+     been archived.
+     Archiving of these files happens automatically since you have
+     already configured <varname>archive_command</>. In most cases this
+     happens quickly, but you are advised to monitor your archive
+     system to ensure there are no delays.
+     If the archive process has fallen behind
+     because of failures of the archive command, it will keep retrying
+     until the archive succeeds and the backup is complete.
+     If you wish to place a time limit on the execution of
+     <function>pg_stop_backup</>, set an appropriate
+     <varname>statement_timeout</varname> value.
     </para>
    </listitem>
   </orderedlist>
@@ -988,8 +1006,6 @@
      Si <filename>pg_xlog/</filename> n'a pas été archivé, il suffit de 
      recréer ce répertoire en faisant attention à le créer en tant que
      lien symbolique si c'était le cas auparavant.
-     Le sous-répertoire
-     <filename>pg_xlog/archive_status/</filename> doit aussi être créé.
     </para>
    </listitem>
    <listitem>
@@ -1062,10 +1078,12 @@
 
    <para>
     Il est important que la commande retourne un code de sortie différent de
-    zéro en cas d'échec. Des journaux absents de l'archive
+    zéro en cas d'échec. Des fichiers absents de l'archive
     <emphasis>seront</emphasis> demandés à la commande&nbsp;; elle doit
-    renvoyer autre chose que
-    zéro dans ce cas. Ce n'est pas une condition d'erreur. Il faut également
+    renvoyer autre chose que zéro dans ce cas. Ce n'est pas une condition
+    d'erreur. Not all of the requested files will be WAL segment
+    files; you should also expect requests for files with a suffix of
+    <literal>.backup</> or <literal>.history</>. Il faut également
     garder à l'esprit que le nom de base du chemin <literal>%p</literal>
     diffère de <literal>%f</literal>&nbsp;; il ne sont pas interchangeables.
    </para>
@@ -1107,8 +1125,8 @@
    <note>
      <para>
       Le point d'arrêt doit être postérieur à la fin de la sauvegarde
-      de la base (le moment où <function>pg_stop_backup</function> a été
-      exécuté). Une sauvegarde ne peut pas être utilisée pour repartir d'un
+      de la base (le moment où <function>pg_stop_backup</function> se
+      termine). Une sauvegarde ne peut pas être utilisée pour repartir d'un
       instant où elle était encore en cours (pour ce faire,
       il faut récupérer la sauvegarde précédente et rejouer à partir de là).
      </para>
@@ -1247,20 +1265,6 @@
       </listitem>
      </varlistentry>
 
-     <varlistentry id="log-restartpoints" 
-                   xreflabel="log_restartpoints">
-      <term><varname>log_restartpoints</varname> 
-        (<type>boolean</type>)
-      </term>
-      <listitem>
-       <para>
-	Indique si chaque point de redémarrage doit être tracé. Cela peut être
-	utile pour suivre la progression d'une restauration longue.
-	<literal>false</literal> par défaut.
-       </para>
-      </listitem>
-     </varlistentry>
-
    </variablelist>
 
    </sect3>
@@ -1407,7 +1411,25 @@
       de transaction archivés sont ensuite ajoutés à la sauvegarde pour que
       la sauvegarde de base et les journaux requis fassent partie du même
       fichier <application>tar</application>.
+      Please remember to add error handling to your backup scripts.
      </para>
+
+     <para>
+      If archive storage size is a concern, use <application>pg_compresslog</>,
+      <ulink url="http://pglesslog.projects.postgresql.org"></ulink>, to
+      remove unnecessary <xref linkend="guc-full-page-writes"> and trailing
+      space from the WAL files.  You can then use
+      <application>gzip</application> to further compress the output of
+      <application>pg_compresslog</>:
+<programlisting>
+archive_command = 'pg_compresslog %p - | gzip &gt; /var/lib/pgsql/archive/%f'
+</programlisting>
+      You will then need to use <application>gunzip</> and
+      <application>pg_decompresslog</> during recovery:
+<programlisting>
+restore_command = 'gunzip &lt; /mnt/server/archivedir/%f | pg_decompresslog - %p'
+</programlisting>
+     </para>
     </sect3>
 
     <sect3 id="backup-scripts">
@@ -1718,11 +1740,14 @@
     prochain fichier WAL en provenance du serveur principal.
     <varname>restore_command</varname> est indiqué dans le fichier
     <filename>recovery.conf</filename> du serveur de secours.
-    En fonctionnement normal, le processus de récupération attend un fichier
-    dans l'archive WAL, remontant une erreur si le fichier est indisponible.
+    En fonctionnement normal, le processus de récupération attend un journal
+    de transactions dans le répertoire d'archivage des WAL, remontant une erreur
+    si le fichier est indisponible.
     Dans le cas du serveur de secours, il est normal que le fichier suivant
     n'existe pas. Il ne reste donc
-    qu'à attendre son arrivée. Une <varname>restore_command</varname>
+    qu'à attendre son arrivée. For files ending in <literal>.backup</> or
+    <literal>.history</> there is no need to wait, and a non-zero return
+    code must be returned. Une <varname>restore_command</varname>
     d'attente peut être obtenue par l'écriture d'un script personnalisé
     qui boucle sur un test d'apparition du prochain fichier WAL. Il faut
     également définir un moyen de déclencher la bascule
@@ -1751,7 +1776,9 @@
    <para>
     Un exemple fonctionnel de <varname>restore_command</varname> 
     d'attente est fourni dans un module <filename>contrib</filename> appelé
-    <application>pg_standby</application>. Cet exemple peut être étendu
+    <application>pg_standby</application>. It
+    should be used as a reference on how to correctly implement the logic
+    described above. Cet exemple peut être étendu
     si nécessaire pour supporter des configurations ou environnements
     spécifiques.
    </para>
@@ -2015,7 +2042,7 @@
     <application>pg_controldata</application> sur le serveur de secours pour
     inspecter le fichier de contrôle et déterminer
     l'emplacement du point de contrôle WAL courant, ou en utilisant l'option 
-    <varname>log_restartpoints</varname> pour afficher les valeurs sur les
+    <varname>log_checkpoints</varname> pour afficher les valeurs sur les
     traces du serveur.
    </para>
   </sect2>
@@ -2101,13 +2128,6 @@
   </para>
 
   <para>
-   En pratique, on souhaite souvent tester son application sur le
-   nouveau serveur avant de basculer définitivement. C'est une autre raison
-   de configurer des installations concurrentes de l'ancienne et de la nouvelle
-   versions.
-  </para>
-
-  <para>
    Si n'est pas souhaité, ou pas possible, de lancer les deux serveurs en 
    parallèle, il faut réaliser l'étape de sauvegarde avant d'installer la 
    nouvelle version, éteindre le serveur, déplacer l'ancienne version vers un autre
@@ -2149,5 +2169,68 @@
     fonctionné.)
    </para>
   </note>
+
+  <para>
+   In practice you probably want to test your client applications on the
+   new version before switching over completely.  This is another reason
+   for setting up concurrent installations of old and new versions.  When
+   testing a <productname>PostgreSQL</> major upgrade, consider the
+   following categories of possible changes:
+  </para>
+
+  <variablelist>
+
+   <varlistentry>
+    <term>Administration</term>
+    <listitem>
+     <para>
+      The capabilities available for administrators to monitor and control
+      the server often change and improve in each major release.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>SQL</term>
+    <listitem>
+     <para>
+      Typically this includes new SQL command capabilities and not changes
+      in behavior, unless specifically mentioned in the release notes.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Library API</term>
+    <listitem>
+     <para>
+      Typically libraries like <application>libpq</> only add new
+      functionality, again unless mentioned in the release notes.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>System Catalogs</term>
+    <listitem>
+     <para>
+      System catalog changes usually only affect database management tools.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Server C-language API</term>
+    <listitem>
+     <para>
+      This involved changes in the backend function API, which is written
+      in the C programming language.  Such changes effect code that
+      references backend functions deep inside the server.
+     </para>
+    </listitem>
+   </varlistentry>
+
+  </variablelist>
+
  </sect1>
 </chapter>

Modified: traduc/trunk/postgresql/charset.xml
===================================================================
--- traduc/trunk/postgresql/charset.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/charset.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -67,15 +67,17 @@
    </para>
 
    <para>
-    Cet exemple positionne la locale au suédois (<literal>sv</literal>) tel que parlé en
+    Cet exemple for Unix systems positionne la locale au suédois (<literal>sv</literal>) tel que parlé en
     Suède (<literal>SE</literal>). Parmi les autres possibilités, on peut
     envisager <literal>en_US</literal> (l'anglais américain) ou
     <literal>fr_CA</literal> (français canadien). Si plusieurs encodages
     s'avèrent utiles pour une même locale, alors l'indication peut
     ressembler à&nbsp;: <literal>cs_CZ.ISO8859-2</literal>. Les locales
     disponibles et leurs noms dépendent de l'éditeur du système d'exploitation
-    et de ce qui est installé (sur la plupart des systèmes, la commande
-    <literal>locale -a</literal> fournit la liste des locales disponibles).
+    et de ce qui est installé. Sur la plupart des systèmes Unix, la commande
+    <literal>locale -a</literal> fournit la liste des locales disponibles.
+    Windows uses more verbose names, such as <literal>German_Germany</>
+    or <literal>Swedish_Sweden.1252</>.
    </para>
 
    <para>
@@ -133,22 +135,22 @@
    </para>
 
    <para>
-    La nature de certaines catégories de locales oblige à les fixer pour la
-    durée de vie d'un cluster. C'est-à-dire qu'une fois 
-    qu'<command>initdb</command> à été lancé, elles ne peuvent plus être
-    modifiées. <literal>LC_COLLATE</literal> et <literal>LC_CTYPE</literal>
+    La nature de certaines catégories de locales oblige à les fixer
+    when the database is created. You can use different settings
+    for different databases, but once a database is created, elles ne peuvent plus être
+    modifiées for that database. <literal>LC_COLLATE</literal> et <literal>LC_CTYPE</literal>
     sont de
     cette catégorie. Elles affectent l'ordre de tri des index et doivent donc
     rester inchangées, les index sur les colonnes de texte risquant d'être
-    corrompus dans le cas contraire. <productname>PostgreSQL</productname>
-    s'en assure en enregistrant les valeurs de <envar>LC_COLLATE</envar> et
-    <envar>LC_CTYPE</envar> vues par <command>initdb</command>. Le serveur
-    adopte automatiquement ces deux valeurs au démarrage.
+    corrompus dans le cas contraire. The default values for these
+    categories are determined when <command>initdb</command> is run, and
+    those values are used when new databases are created, unless
+    specified otherwise in the <command>CREATE DATABASE</command> command.
    </para>
 
    <para>
-    Les autres catégories de locale peuvent être modifiées au démarrage du
-    serveur en fixant les variables d'environnement de même nom (voir la
+    Les autres catégories de locale peuvent être modifiées à n'importe quel
+    moment en configurant les variables d'environnement de même nom (voir la
     <xref linkend="runtime-config-client-format"/> pour de plus amples
     détails). Les valeurs par défaut choisies par
     <command>initdb</command> sont en fait écrites dans le fichier de
@@ -206,8 +208,8 @@
     <itemizedlist>
      <listitem>
       <para>
-       l'ordre de tri dans les requêtes utilisant <literal>ORDER BY</literal> sur des
-       données de type texte&nbsp;;
+       l'ordre de tri dans les requêtes utilisant <literal>ORDER BY</literal>
+       or the standard comparison operators  sur des données de type texte&nbsp;;
        <indexterm><primary>ORDER BY</primary><secondary>et locales</secondary></indexterm>
       </para>
      </listitem>
@@ -273,8 +275,8 @@
    <para>
     Il faut vérifier que <productname>PostgreSQL</productname> utilise
     effectivement la locale supposée. Les paramètres <envar>LC_COLLATE</envar> et
-    <envar>LC_CTYPE</envar> sont déterminés lors de l'<command>initdb</command>
-    et ne peuvent pas être modifiés sans répéter <command>initdb</command>.
+    <envar>LC_CTYPE</envar> sont déterminés when a database is created, and cannot be
+    changed except by creating a new database.
     D'autres paramètres de locale, y compris <envar>LC_MESSAGES</envar> et
     <envar>LC_MONETARY</envar>, sont déterminés initialement par
     l'environnement dans lequel le serveur est lancé mais peuvent être
@@ -330,18 +332,12 @@
   </para>
 
   <para>
-   Il existe, cependant une importante restriction&nbsp;: le jeu de caractère de la base de données 
-   doit être compatible avec la variable d'environnement <envar>LC_CTYPE</envar> coté serveur.
-   Quand <envar>LC_CTYPE</envar> est <literal>C</literal> ou <literal>POSIX</literal>, tous
-   les jeux de caractères sont autorisés, mais pour les autres valeurs de <envar>LC_CTYPE</envar>
+   Il existe, cependant une importante restriction&nbsp;: le jeu de caractère
+   de la base de données doit être compatible avec les variables
+   d'environnement <envar>LC_CTYPE</envar> et <envar>LC_COLLATE</> de la base
+   de données. Pour les locales <literal>C</literal> ou <literal>POSIX</literal>, tous
+   les jeux de caractères sont autorisés, mais pour les locales,
    il n'y a qu'un seul jeux de caractères qui fonctionne correctement.
-   Puisque la variable LC_TYPE est figée par la commmande <command>initdb</command>, 
-   l'apparente flexibilité apportée par l'utilisation d'encodages différents
-   dans différentes bases de données est plus théorique que réelle, sauf à
-   choisir la locale <literal>C</literal> or <literal>POSIX</literal> 
-   (ce qui a pour conséquence de désactiver la gestion des paramètres régionaux).
-   Il est probable que ces mécanismes soient revisités dans une prochaine version 
-   de <productname>PostgreSQL</productname>.
   </para>
 
    <sect2 id="multibyte-charset-supported">
@@ -489,6 +485,22 @@
          <entry><literal>KOI8R</literal></entry>
         </row>
         <row>
+         <entry><literal>KOI8R</literal></entry>
+         <entry><acronym>KOI</acronym>8-R</entry>
+         <entry>Cyrillic (Russian)</entry>
+         <entry>Yes</entry>
+         <entry>1</entry>
+         <entry><literal>KOI8</></entry>
+        </row>
+        <row>
+         <entry><literal>KOI8U</literal></entry>
+         <entry><acronym>KOI</acronym>8-U</entry>
+         <entry>Cyrillic (Ukrainian)</entry>
+         <entry>Yes</entry>
+         <entry>1</entry>
+         <entry></entry>
+        </row>
+        <row>
          <entry><literal>LATIN1</literal></entry>
          <entry>ISO 8859-1, <acronym>ECMA</acronym> 94</entry>
          <entry>Europe de l'ouest</entry>
@@ -751,17 +763,17 @@
     </para>
 
     <para>
-     Si la locale <literal>C</literal> ou la locale
-     <literal>POSIX</literal> est sélectionnée, il est possible de créer une base de
-     données avec un jeu de caractère différent&nbsp;:
+     You can specify a non-default encoding at database creation time,
+     provided that the encoding is compatible with the selected locale:
 
-<screen>createdb -E EUC_KR korean</screen>
+<screen>createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean</screen>
 
      Cela crée une base de données appelée <literal>korean</literal> qui
-     utilise le jeu de caractères <literal>EUC_KR</literal>. Un autre moyen de
+     utilise le jeu de caractères <literal>EUC_KR</literal>, and locale <literal>ko_KR</literal>. Un autre moyen de
      réaliser cela est d'utiliser la commande SQL suivante&nbsp;:
 
-<programlisting>CREATE DATABASE korean WITH ENCODING 'EUC_KR';</programlisting>
+<programlisting>CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
+</programlisting>
 
      L'encodage de la base de données est conservé dans le catalogue système
      <literal>pg_database</literal>.  Cela est visible à l'aide de 
@@ -769,20 +781,17 @@
      <command>psql</command>.
 
 <screen>$ <userinput>psql -l</userinput>
-            List of databases
-   Database    |  Owner  |   Encoding    
----------------+---------+---------------
- euc_cn        | t-ishii | EUC_CN
- euc_jp        | t-ishii | EUC_JP
- euc_kr        | t-ishii | EUC_KR
- euc_tw        | t-ishii | EUC_TW
- mule_internal | t-ishii | MULE_INTERNAL
- postgres      | t-ishii | EUC_JP
- regression    | t-ishii | SQL_ASCII
- template1     | t-ishii | EUC_JP
- test          | t-ishii | EUC_JP
- utf8          | t-ishii | UTF8
-(9 rows)</screen>
+                                         List of databases
+   Name    |  Owner   | Encoding  |  Collation  |    Ctype    |          Access Privileges          
+-----------+----------+-----------+-------------+-------------+-------------------------------------
+ clocaledb | hlinnaka | SQL_ASCII | C           | C           | 
+ englishdb | hlinnaka | UTF8      | en_GB.UTF8  | en_GB.UTF8  | 
+ japanese  | hlinnaka | UTF8      | ja_JP.UTF8  | ja_JP.UTF8  | 
+ korean    | hlinnaka | EUC_KR    | ko_KR.euckr | ko_KR.euckr | 
+ postgres  | hlinnaka | UTF8      | fi_FI.UTF8  | fi_FI.UTF8  | 
+ template0 | hlinnaka | UTF8      | fi_FI.UTF8  | fi_FI.UTF8  | {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
+ template1 | hlinnaka | UTF8      | fi_FI.UTF8  | fi_FI.UTF8  | {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
+(7 rows)</screen>
     </para>
 
     <important>

Modified: traduc/trunk/postgresql/client-auth.xml
===================================================================
--- traduc/trunk/postgresql/client-auth.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/client-auth.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -92,13 +92,13 @@
    enregistrement ne correspond, l'accès est refusé.</para>
 
   <para>Un enregistrement peut avoir l'un des sept formats suivants.
-<synopsis>local      <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional>
-host       <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>CIDR-address</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional>
-hostssl    <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>CIDR-address</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional>
-hostnossl  <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>CIDR-address</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional>
-host       <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>IP-address</replaceable>  <replaceable>IP-mask</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional>
-hostssl    <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>IP-address</replaceable>  <replaceable>IP-mask</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional>
-hostnossl  <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>IP-address</replaceable>  <replaceable>IP-mask</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-option</replaceable></optional></synopsis>
+<synopsis>local      <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional>
+host       <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>CIDR-address</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional>
+hostssl    <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>CIDR-address</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional>
+hostnossl  <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>CIDR-address</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional>
+host       <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>IP-address</replaceable>  <replaceable>IP-mask</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional>
+hostssl    <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>IP-address</replaceable>  <replaceable>IP-mask</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional>
+hostnossl  <replaceable>database</replaceable>  <replaceable>user</replaceable>  <replaceable>IP-address</replaceable>  <replaceable>IP-mask</replaceable>  <replaceable>auth-method</replaceable>  <optional><replaceable>auth-options</replaceable></optional></synopsis>
 
 
    La signification des champs est la suivante&nbsp;: 
@@ -309,24 +309,6 @@
        </varlistentry>
 
        <varlistentry>
-        <term><literal>crypt</literal></term>
-	<listitem>
-         <note>
-         <para>
-          Cette option est uniquement recommandée pour communiquer avec
-	  les clients de version antérieure à la 7.2.
-         </para>
-         </note>
-	 <para>
-          Requiert que le client fournisse un mot de passe chiffré avec
-	  <function>crypt()</function> pour l'authentification. <literal>md5</literal>
-	  est maintenant recommandé à la place de <literal>crypt</literal>. Voir
-	  la <xref linkend="auth-password"/> pour les détails.
-	 </para>
-	</listitem>
-       </varlistentry>
-
-       <varlistentry>
         <term><literal>password</literal></term>
 	<listitem>
 	 <para>
@@ -400,6 +382,16 @@
        </varlistentry>
 
        <varlistentry>
+        <term><literal>cert</></term>
+        <listitem>
+         <para>
+          Authenticate using SSL client certificates. See
+          <xref linkend="auth-cert"> for details.
+         </para>
+        </listitem>
+       </varlistentry>
+
+       <varlistentry>
         <term><literal>pam</literal></term>
 	<listitem>
 	 <para>
@@ -415,11 +407,13 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable>auth-option</replaceable></term>
+    <term><replaceable>auth-options</replaceable></term>
      <listitem>
       <para>
-       La signification de ce champ optionnel dépend de la méthode
-       d'authentification choisie. Les détails sont disponibles ci-dessous.
+       This field contains zero or more name-value pairs with
+       extra options passed to this authentication method. Details
+       about which options are available for which authentication
+       method appear below.
       </para>
      </listitem>
     </varlistentry>
@@ -503,7 +497,7 @@
 # nom utilisateur Unix).
 # 
 # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
-host    postgres    all         192.168.93.0/24       ident sameuser
+host    postgres    all         192.168.93.0/24       ident
 
 # Permet à un utilisateur de l'hôte 192.168.12.10 de se connecter à la base de
 # données "postgres" si le mot de passe de l'utilisateur est correctement fourni.
@@ -530,7 +524,7 @@
 # tant que "guest1".
 #
 # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
-host    all         all         192.168.0.0/16        ident omicron
+host    all         all         192.168.0.0/16        ident map=omicron
 
 # Si ces trois lignes traitent seules les connexions locales, elles
 # n'autorisent les utilisateurs locaux qu'à se connecter à leur propre
@@ -549,8 +543,110 @@
 local   all         @admins,+support                  md5
 
 # La colonne database peut aussi utiliser des listes et des noms de fichiers :
-local   db1,db2, at demodbs  all                         md5</programlisting> </example> </sect1>
+local   db1,db2, at demodbs  all                         md5</programlisting>
+</example>
 
+ </sect1>
+
+ <sect1 id="auth-username-maps">
+  <title>Username maps</title>
+
+  <indexterm zone="auth-username-maps">
+   <primary>Username maps</primary>
+  </indexterm>
+
+  <para>
+   When using an external authentication system like Ident or GSSAPI,
+   the name of the operating system user that initiated the connection may
+   not be the same as the database user he is requesting to connect as.
+   In this case, a user name map can be applied to map the operating system
+   username to a database user, using the <filename>pg_ident.conf</filename>
+   file. In order to use username mapping, specify
+   <literal>map</literal>=<replaceable>map-name</replaceable>
+   in the options field in <filename>pg_hba.conf</filename>. This option is
+   supported for all authentication methods that receive external usernames.
+   Since the <filename>pg_ident.conf</filename> file can contain multiple maps,
+   the name of the map to be used is specified in the
+   <replaceable>map-name</replaceable> parameter in <filename>pg_hba.conf</filename>
+   to indicate which map to use for each individual connection.
+  </para>
+
+  <para>
+   Ident maps are defined in the ident map file, which by default is named
+   <filename>pg_ident.conf</><indexterm><primary>pg_ident.conf</primary></indexterm>
+   and is stored in the
+   cluster's data directory.  (It is possible to place the map file
+   elsewhere, however; see the <xref linkend="guc-ident-file">
+   configuration parameter.)
+   The ident map file contains lines of the general form:
+<synopsis>
+<replaceable>map-name</> <replaceable>system-username</> <replaceable>database-username</>
+</synopsis>
+   Comments and whitespace are handled in the same way as in
+   <filename>pg_hba.conf</>.  The
+   <replaceable>map-name</> is an arbitrary name that will be used to
+   refer to this mapping in <filename>pg_hba.conf</filename>. The other
+   two fields specify which operating system user is allowed to connect
+   as which database user. The same <replaceable>map-name</> can be
+   used repeatedly to specify more user-mappings within a single map.
+   There is no restriction regarding how many database users a given
+   operating system user can correspond to, nor vice versa.
+  </para>
+  <para>
+   If the <replaceable>system-username</> field starts with a slash (<literal>/</>),
+   the contents of the field is treated as a regular expression. This regular
+   expression supports a single capture, which can be back-referenced as
+   <literal>\1</> (backslash-one). This allows the mapping of different syntax
+   names with a single line.
+   <programlisting>
+mymap   /(.*)@mydomain.com   \1
+mymap   /(.*)@otherdomain.com guest
+   </programlisting>
+   will "remove" the domain part for users with system usernames @mydomain.com, and
+   allow all users from @otherdomain.com to log in as guest.
+  </para>
+
+  <para>
+   The <filename>pg_ident.conf</filename> file is read on start-up and
+   when the main server process receives a
+   <systemitem>SIGHUP</systemitem><indexterm><primary>SIGHUP</primary></indexterm>
+   signal. If you edit the file on an
+   active system, you will need to signal the server
+   (using <literal>pg_ctl reload</> or <literal>kill -HUP</>) to make it
+   re-read the file.
+  </para>
+
+  <para>
+   A <filename>pg_ident.conf</filename> file that could be used in
+   conjunction with the <filename>pg_hba.conf</> file in <xref
+   linkend="example-pg-hba.conf"> is shown in <xref
+   linkend="example-pg-ident.conf">. In this example setup, anyone
+   logged in to a machine on the 192.168 network that does not have the
+   Unix user name <literal>bryanh</>, <literal>ann</>, or
+   <literal>robert</> would not be granted access. Unix user
+   <literal>robert</> would only be allowed access when he tries to
+   connect as <productname>PostgreSQL</> user <literal>bob</>, not
+   as <literal>robert</> or anyone else. <literal>ann</> would
+   only be allowed to connect as <literal>ann</>. User
+   <literal>bryanh</> would be allowed to connect as either
+   <literal>bryanh</> himself or as <literal>guest1</>.
+  </para>
+
+  <example id="example-pg-ident.conf">
+   <title>An example <filename>pg_ident.conf</> file</title>
+<programlisting>
+# MAPNAME     IDENT-USERNAME    PG-USERNAME
+
+omicron       bryanh            bryanh
+omicron       ann               ann
+# bob has user name robert on these machines
+omicron       robert            bob
+# bryanh can also connect as guest1
+omicron       bryanh            guest1
+</programlisting>
+  </example>
+ </sect1>
+
  <sect1 id="auth-methods">
  <title>Méthodes d'authentification</title>
  <para>
@@ -616,9 +712,6 @@
    </indexterm>
 
    <indexterm>
-     <primary>crypt</primary>
-   </indexterm>
-   <indexterm>
      <primary>password</primary>
      <secondary>authentification</secondary>
    </indexterm>
@@ -629,23 +722,18 @@
 
    <para>
     Les méthodes fondées sur une authentification par mot de passe sont
-    <literal>md5</literal>, <literal>crypt</literal> et
+    <literal>md5</literal> et
     <literal>password</literal>. Ces méthodes
     fonctionnent de façon analogue à l'exception du mode d'envoi du mot de passe
-    à travers la connexion&nbsp;: respectivement, hachage MD5, chiffrement via
-    crypt et texte en clair. Une limitation de la méthode <literal>crypt</literal> est
-    qu'elle ne fonctionne pas avec les mots de passe chiffrés dans
-    <structname>pg_authid</structname>.
+    à travers la connexion&nbsp;: respectivement, hachage MD5 et texte en clair.
    </para>
 
    <para>
     S'il existe un risque d'attaque par <quote>interception (sniffing)</quote>
-    des mots de passe, il est préférable d'utiliser <literal>md5</literal>,
-    <literal>crypt</literal> devant être limité aux client pré-7.2.
-    L'utilisation de <literal>password</literal>, en clair, est tout
-    particulièrement à éviter lors de connexions ouvertes sur l'Internet
-    (à moins d'utiliser <acronym>SSL</acronym>, <acronym>SSH</acronym> ou
-    tout autre système de sécurisation par encapsulation de la connexion).
+    des mots de passe, il est préférable d'utiliser <literal>md5</literal>.
+    L'utilisation de <literal>password</literal>, en clair, est toujours à
+    éviter quand c'est possible. <literal>md5</> cannot be used with <xref
+    linkend="guc-db-user-namespace">.
    </para>
 
    <para>
@@ -694,6 +782,43 @@
     <productname>PostgreSQL</productname>&nbsp;; voir
     <xref linkend="installation"/> pour plus d'informations.
    </para>
+
+   <para>
+    The following configuration options are supported for <productname>GSSAPI</productname>:
+    <variablelist>
+     <varlistentry>
+      <term>map</term>
+      <listitem>
+       <para>
+        Allows for mapping between system and database usernames. See
+        <xref linkend="auth-username-maps"> for details.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>include_realm</term>
+      <listitem>
+       <para>
+        Include the realm name from the authenticated user principal. This is useful
+        in combination with Username maps (See <xref linkend="auth-username-maps">
+        for details), especially with regular expressions, to map users from
+        multiple realms.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>krb_realm</term>
+      <listitem>
+       <para>
+        Sets the realm to match user principal names against. If this parameter
+        is not set, the realm of the user will be ignored.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
    
   </sect2>
 
@@ -722,7 +847,43 @@
     <productname>GSSAPI</productname>.
     Voir <xref linkend="gssapi-auth"/> pour les détails.
    </para>
+   <para>
+    The following configuration options are supported for <productname>SSPI</productname>:
+    <variablelist>
+     <varlistentry>
+      <term>map</term>
+      <listitem>
+       <para>
+        Allows for mapping between system and database usernames. See
+        <xref linkend="auth-username-maps"> for details.
+       </para>
+      </listitem>
+     </varlistentry>
 
+     <varlistentry>
+      <term>include_realm</term>
+      <listitem>
+       <para>
+        Include the realm name from the authenticated user principal. This is useful
+        in combination with Username maps (See <xref linkend="auth-username-maps">
+        for details), especially with regular expressions, to map users from
+        multiple realms.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>krb_realm</term>
+      <listitem>
+       <para>
+        Sets the realm to match user principal names against. If this parameter
+        is not set, the realm of the user will be ignored.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+
   </sect2>
 
   <sect2 id="kerberos-auth"> <title>Authentification Kerberos</title>
@@ -799,7 +960,7 @@
     Par défaut, le domaine du client n'est pas vérifié par
     <productname>PostgreSQL</productname>. Si l'authentification inter-domaine
     (<foreignphrase>cross-realm</foreignphrase>) est activée, on utilise le
-    paramètre <xref linkend="guc-krb-realm"/>.
+    paramètre krb_realm in <filename>pg_hba.conf</>.
    </para>
 
    <para>
@@ -841,7 +1002,56 @@
     avec un script <application>mod_perl</application>. Cela fournit un accès
     sûr aux bases de données, sans demander de mot de passe supplémentaire.
    </para>
+   <para>
+    The following configuration options are supported for <productname>Kerberos</productname>:
+    <variablelist>
+     <varlistentry>
+      <term>map</term>
+      <listitem>
+       <para>
+        Allows for mapping between system and database usernames. See
+        <xref linkend="auth-username-maps"> for details.
+       </para>
+      </listitem>
+     </varlistentry>
 
+     <varlistentry>
+      <term>include_realm</term>
+      <listitem>
+       <para>
+        Include the realm name from the authenticated user principal. This is useful
+        in combination with Username maps (See <xref linkend="auth-username-maps">
+        for details), especially with regular expressions, to map users from
+        multiple realms.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>krb_realm</term>
+      <listitem>
+       <para>
+        Sets the realm to match user principal names against. If this parameter
+        is not set, the realm of the user will be ignored.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>krb_server_hostname</term>
+      <listitem>
+       <para>
+        Sets the host name part of the service principal.
+        This, combined with <varname>krb_srvname</>, is used to generate
+        the complete service principal, that is
+        <varname>krb_srvname</><literal>/</><varname>krb_server_hostname</><literal>@</>REALM.
+        If not set, the default is the server host name.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+
   </sect2>
 
   <sect2 id="auth-ident"> <title>Authentification fondée sur ident</title>
@@ -850,13 +1060,29 @@
 
    <para>
     La méthode d'authentification par ident fonctionne en obtenant les noms
-    des utilisateurs du système d'exploitation, puis en déterminant les noms
+    des utilisateurs du système d'exploitation, puis en déterminant de façon
+    optionnelle les noms
     des utilisateurs de bases de données autorisés à l'aide d'un fichier
     de correspondance qui liste les paires autorisées de concordance de
     noms. La résolution du nom d'utilisateur du client est le point de sécurité
     critique. Elle fonctionne différemment selon le type de connexion.
    </para>
 
+   <para>
+    The following configuration options are supported for <productname>ident</productname>:
+    <variablelist>
+     <varlistentry>
+      <term>map</term>
+      <listitem>
+       <para>
+        Allows for mapping between system and database usernames. See
+        <xref linkend="auth-username-maps"> for details.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+
    <sect3> <title>Authentification par ident en TCP/IP</title>
 
    <para>
@@ -916,8 +1142,8 @@
     <systemitem class="osname">Linux</systemitem>,
     <systemitem class="osname">FreeBSD</systemitem>,
     <systemitem class="osname">NetBSD</systemitem>,
-    <systemitem class="osname">OpenBSD</systemitem> et
-    <systemitem class="osname">BSD/OS</systemitem>), l'authentification par
+    <systemitem class="osname">OpenBSD</systemitem>,
+    <systemitem class="osname">BSD/OS</systemitem> et <systemitem class="osname">Solaris</systemitem>), l'authentification par
     ident peut aussi être appliquée aux connexions locales. Dans ce cas,
     l'utilisation de l'authentification par ident n'ajoute aucun risque de
     sécurité&nbsp; en fait, c'est même un choix préférable sur ce genre de
@@ -934,86 +1160,6 @@
      confiance, alors cette méthode l'est aussi.
     </para>
    </sect3>
-
-   <sect3 id="auth-ident-maps">
-    <title>Correspondances d'identité</title>
-
-   <para>
-    Lorsque l'authentification par ident est utilisée, après avoir déterminé
-    le nom de l'utilisateur du système d'exploitation qui a initié la
-    connexion, <productname>PostgreSQL</productname> vérifie si cet utilisateur
-    est autorisé à se connecter avec le nom d'utilisateur de bases de données
-    souhaité. Ceci est contrôlé par l'argument ident map qui suit le mot clé
-    <literal>ident</literal> dans le fichier <filename>pg_hba.conf</filename>.
-    Il existe une correspondance d'identité prédéfinie,
-    <literal>sameuser</literal>, qui permet à n'importe quel utilisateur du
-    système d'exploitation de se connecter en tant qu'utilisateur de même nom
-    au serveur de bases de données (si ce dernier existe). Les autres correspondances
-    doivent être créées manuellement.
-   </para> 
-
-   <para>
-    Les correspondances d'identité autres que <literal>sameuser</literal>
-    sont définies dans le fichier de concordance, par défaut nommé
-    <filename>pg_ident.conf</filename>
-    <indexterm><primary>pg_ident.conf</primary></indexterm> et stocké
-    dans le répertoire data (il est possible de placer ce fichier
-    ailleurs&nbsp;; voir le paramètre de configuration
-    <xref linkend="guc-ident-file"/>). Ce fichier contient des lignes de
-    la forme&nbsp;:
-<synopsis><replaceable>nom-correspondance</replaceable> <replaceable>nomutilisateur-ident</replaceable> <replaceable>base-donnee-utilisateur</replaceable></synopsis>
-    Les commentaires et les espaces sont gérés comme dans le
-    fichier <filename>pg_hba.conf</filename>. Le
-    <replaceable>nom-correspondance</replaceable> est un
-    nom arbitraire utilisé pour se référer à cette correspondance dans
-    <filename>pg_hba.conf</filename>. Les deux autres champs indiquent le
-    nom de l'utilisateur du système d'exploitation et le nom de
-    l'utilisateur de base avec lequel il
-    est autorisé à se connecter. Le même <replaceable>nom-correspondance</replaceable>
-    peut être répété pour indiquer plusieurs correspondances d'utilisateur au sein
-    d'une même table de correspondance. Il n'y a pas de restriction sur le nombre
-    d'utilisateurs de bases de données auxquels un utilisateur de système
-    d'exploitation donné peut correspondre et vice-versa.
-   </para>
-
-   <para>
-    Le fichier <filename>pg_ident.conf</filename> est lu au démarrage et
-    à chaque fois que le processus serveur principal reçoit un signal
-    <systemitem>SIGHUP</systemitem><indexterm><primary>SIGHUP</primary></indexterm>.
-    Si le fichier est édité sur un système actif, il est nécessaire de signaler
-    au serveur (à l'aide de la commande <literal>pg_ctl reload</literal>
-    ou <literal>kill -HUP</literal>) qu'il doit relire le fichier.
-   </para>
- 
-   <para>
-    L'<xref linkend="example-pg-ident.conf"/> présente un fichier
-    <filename>pg_ident.conf</filename> utilisable conjointement avec
-    le fichier <filename>pg_hba.conf</filename> de
-    l'<xref linkend="example-pg-hba.conf"/>. Dans cette configuration,
-    quiconque est connecté sur une machine du réseau 192.168 et n'a pas pour nom
-    d'utilisateur Unix <literal>bryanh</literal>, <literal>ann</literal> ou
-    <literal>robert</literal> ne peut obtenir d'accès. L'utilisateur Unix
-    <literal>robert</literal> n'est autorisé à se connecter que sous
-    l'utilisateur <productname>PostgreSQL</productname>
-    <literal>bob</literal> et non <literal>robert</literal> ou n'importe
-    quel autre utilisateur. <literal>ann</literal> n'est autorisée à se
-    connecter qu'en tant que <literal>ann</literal>. L'utilisateur
-    <literal>bryanh</literal> n'est autorisé à se connecter qu'en tant que
-    <literal>bryanh</literal> lui-même ou <literal>guest1</literal>.
-   </para>
-
-   <example id="example-pg-ident.conf">
-   <title>Un fichier d'exemple <filename>pg_ident.conf</filename></title>
-<programlisting># CORRESPONDANCE     NOMUTILISATEUR-IDENT    NOMUTILISATEUR-PG
-
-omicron              bryanh                  bryanh
-omicron              ann                     ann
-# bob a le nom d'utilisateur robert sur ces machines
-omicron              robert                  bob
-# bryanh peut aussi se connecter en tant que guest1
-omicron              bryanh                  guest1 </programlisting>
-    </example>
-   </sect3>
   </sect2>
 
   <sect2 id="auth-ldap">
@@ -1026,50 +1172,103 @@
    <para>
     Ce mécanisme d'authentification opère de façon similaire à
     <literal>password</literal> à ceci près qu'il utilise LDAP comme
-    méthode
-    d'authentification. LDAP n'est utilisé que pour valider les paires
+    méthode de vérification des mots de passe.
+    LDAP n'est utilisé que pour valider les paires
     nom d'utilisateur/mot de passe. De ce fait, pour pouvoir utiliser LDAP
     comme méthode d'authentification, l'utilisateur doit préalablement exister
-    dans la base. Le serveur et les paramètres utilisés sont indiqués après le mot clé
-    <literal>ldap</literal> dans le fichier <filename>pg_hba.conf</filename>.
-    Le format de ce paramètre est&nbsp;:
-    <synopsis>ldap[<replaceable>s</replaceable>]://<replaceable>nom_serveur</replaceable>[:<replaceable>port</replaceable>]/<replaceable>base dn</replaceable>[;<replaceable>préfixe</replaceable>[;<replaceable>suffixe</replaceable>]]
-    </synopsis>
-    Les virgules sont utilisées pour préciser plusieurs éléments dans un
-    composant <literal>ldap</literal>. Néanmoins, comme les virgules sans
-    guillemets sont traités comme des séparateurs d'éléments dans
-    <filename>pg_hba.conf</filename>, il est conseillé de mettre entre
-    guillemets doubles l'URL <literal>ldap</literal> pour préserver les
-    virgules présentes. Par exemple&nbsp;:
-    <synopsis>
-"ldap://ldap.example.net/dc=example,dc=net;EXAMPLE\"
-    </synopsis>
+    dans la base. 
+   </para>
 
-   </para>
    <para>
-    Si <literal>ldaps</literal> est indiqué à la place de <literal>ldap</literal>,
-    le chiffrement TLS est activé pour la connexion. Seule la
-    connexion entre le serveur PostgreSQL et le serveur LDAP est chiffrée. La
-    connexion entre le client et le serveur PostgreSQL n'est pas affectée par
-    cette configuration. Pour pouvoir utiliser le chiffrement TLS, 
-    la bibliothèque LDAP doit être configurée préalablement à la
-    configuration de <productname>PostgreSQL</productname>. Le chiffrement
-    de LDAP n'est disponible que si la bibliothèque LDAP de la
-    plateforme le supporte.
+    The server will bind to the distinguished name constructed as
+    <replaceable>prefix</> <replaceable>username</> <replaceable>suffix</>.
+    before the bind. Typically, the prefix parameter is used to specify
+    <replaceable>cn=</>, or <replaceable>DOMAIN\</> in an Active
+    Directory environment, and suffix is used to specify the remaining part
+    of the DN in a non-Active Directory environment.
    </para>
+
    <para>
-    Si aucun port n'est indiqué, le port par défaut tel que configuré au niveau de la
-    bibliothèque LDAP est utilisé.
+    The following configuration options are supported for LDAP:
+    <variablelist>
+     <varlistentry>
+      <term>ldapserver</term>
+      <listitem>
+       <para>
+        Name or IP of LDAP server to connect to.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term>ldapprefix</term>
+      <listitem>
+       <para>
+        String to prepend to the username when building the base DN to
+        bind as.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term>ldapsuffix</term>
+      <listitem>
+       <para>
+        String to append to the username when building the base DN to
+        bind as.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term>ldapport</term>
+      <listitem>
+       <para>
+        Port number on LDAP server to connect to. If no port is specified,
+        the default port in the LDAP library will be used.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term>ldaptls</term>
+      <listitem>
+       <para>
+        Set to 1 to make the connection between PostgreSQL and the
+        LDAP server use TLS encryption. Note that this only encrypts
+        the traffic to the LDAP server - the connection to the client
+        may still be unencrypted unless TLS is used there as well.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
    </para>
+
+   <note>
+    <para>
+     Since LDAP often uses commas and spaces to separate the different
+     parts of a DN, it is advised to always use double-quoted parameter
+     values when configuring LDAP options, such as:
+    </para>
+   </note>
+    <synopsis>
+ldapserver=ldap.example.net prefix="cn=" suffix="dc=example, dc=net"
+    </synopsis>
+
+  </sect2>
+
+  <sect2 id="auth-cert">
+   <title>Certificate authentication</title>
+
+   <indexterm zone="auth-cert">
+    <primary>Certificate</primary>
+   </indexterm>
+
    <para>
-    Le serveur se lie au nom distingué indiqué comme
-    <replaceable>base dn</replaceable> avec le nom d'utilisateur fourni
-    par le client. Si <replaceable>préfixe</replaceable> et
-    <replaceable>suffixe</replaceable> sont indiqués, ils sont ajoutés au nom
-    de l'utilisateur avant la création du lien. Le paramètre
-    <replaceable>préfixe</replaceable>
-    est utilisé pour préciser un <replaceable>cn=</replaceable> ou un
-    <replaceable>DOMAIN\</replaceable> dans un environnement Active Directory.
+    This authentication method uses SSL client certificates to perform
+    authentication. It is therefore only available for SSL connections.
+    When using this authentication method, the server will require that
+    the client provide a certificate. No password prompt will be sent
+    to the client. The <literal>cn</literal> attribute of the certificate
+    will be matched with the login username, and if they match the
+    login will be allowed. Username mapping can be used if the usernames
+    don't match.
    </para>
    
   </sect2>
@@ -1084,9 +1283,7 @@
     Ce mécanisme d'authentification fonctionne de façon similaire à
     <literal>password</literal> à ceci près qu'il utilise PAM (Pluggable
     Authentication Modules) comme méthode d'authentification. Le nom du
-    service PAM par défaut est <literal>postgresql</literal>. Le nom de
-    service personnel peut être fourni grâce au mot clé <literal>pam</literal>
-    du <filename>pg_hba.conf</filename>. PAM n'est utilisé que pour valider
+    service PAM par défaut est <literal>postgresql</literal>. PAM n'est utilisé que pour valider
     des paires nom utilisateur/mot de passe. De ce fait, avant de pouvoir
     utiliser PAM pour l'authentification, l'utilisateur doit préalablement
     exister dans la base de données. Pour plus d'informations sur PAM,
@@ -1097,6 +1294,20 @@
     <systemitem class="osname">Solaris</systemitem></ulink>.
    </para>
 
+   <para>
+    The following configuration options are supported for PAM:
+    <variablelist>
+     <varlistentry>
+      <term>pamservice</term>
+      <listitem>
+       <para>
+        PAM service name.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+
    <note>
     <para>
      Si PAM est configuré pour lire <filename>/etc/shadow</filename>,

Modified: traduc/trunk/postgresql/contrib.xml
===================================================================
--- traduc/trunk/postgresql/contrib.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/contrib.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -88,8 +88,11 @@
  </para>
 
  &adminpack;
+ &auto-explain;
+ &btree-gin;
  &btree-gist;
  &chkpass;
+ &citext;
  &cube;
  &dblink;
  &dict-int;
@@ -110,6 +113,7 @@
  &pgfreespacemap;
  &pgrowlocks;
  &pgstandby;
+ &pgstatstatements;
  &pgstattuple;
  &pgtrgm;
  &seg;

Modified: traduc/trunk/postgresql/datatype.xml
===================================================================
--- traduc/trunk/postgresql/datatype.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/datatype.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -141,7 +141,7 @@
       </row>
 
       <row>
-       <entry><type>interval [ (<replaceable>p</replaceable>) ]</type></entry>
+       <entry><type>interval [ <replaceable>fields</replaceable> ] [ (<replaceable>p</replaceable>) ]</type></entry>
        <entry></entry>
        <entry>Intervalle de temps</entry>
       </row>
@@ -1456,7 +1456,7 @@
         <entry>8 octets</entry>
         <entry>date et heure</entry>
         <entry>4713 avant JC</entry>
-        <entry>5874897 après JC</entry>
+        <entry>294276 après JC</entry>
         <entry>1 microseconde / 14 chiffres</entry>
        </row>
        <row>
@@ -1464,18 +1464,10 @@
         <entry>8 octets</entry>
         <entry>date et heure, avec fuseau horaire</entry>
         <entry>4713 avant JC</entry>
-        <entry>5874897 après JC</entry>
+        <entry>294276 après JC</entry>
         <entry>1 microseconde / 14 chiffres</entry>
        </row>
        <row>
-        <entry><type>interval [ (<replaceable>p</replaceable>) ]</type></entry>
-        <entry>12 octets</entry>
-        <entry>intervalle de temps</entry>
-        <entry>-178000000 années</entry>
-        <entry>178000000 années</entry>
-	<entry>1 microseconde / 14 chiffres</entry>
-       </row>
-       <row>
         <entry><type>date</type></entry>
         <entry>4 octets</entry>
         <entry>date seule</entry>
@@ -1499,6 +1491,14 @@
         <entry>24:00:00-1459</entry>
 	<entry>1 microseconde / 14 chiffres</entry>
        </row>
+       <row>
+        <entry><type>interval [ <replaceable>fields</replaceable> ] [ (<replaceable>p</replaceable>) ]</type></entry>
+        <entry>12 bytes</entry>
+        <entry>time intervals</entry>
+        <entry>-178000000 years</entry>
+        <entry>178000000 years</entry>
+        <entry>1 microsecond / 14 digits</entry>
+       </row>
       </tbody>
      </tgroup>
     </table>
@@ -1529,26 +1529,29 @@
 des références au 1er janvier 2000 ? 
 -->
    <note>
-    <para>
-     Quand les valeurs <type>timestamp</type> sont stockées en tant que nombre à
-     virgule flottante de précision double (par défaut à l'heure actuelle), la limite réelle de la
-     précision peut être inférieure à 6. Les valeurs 
-     <type>timestamp</type> sont stockées comme un nombre de secondes avant
-     ou après le 1er janvier 2000 à minuit. La précision à la microseconde est
-     obtenue pour les dates proches du 1er janvier 2000, mais elle se
-     dégrade pour les dates plus éloignées. Quand les valeurs 
-     <type>timestamp</type> sont stockées sur des entiers de huit octets
-     (une option de compilation), la précision en microseconde
-     est disponible sur toute l'étendue de valeurs. Néanmoins, les valeurs
-     de type timestamp codées sur des entiers de huit octets ont une
-     échelle de date plus restreinte que celle indiquée ci-dessus&nbsp;: de
-     4713 avant Jésus-Christ à 294276 après Jésus-Christ. La même option
-     de compilation détermine si les valeurs <type>time</type> et
-     <type>interval</type> sont stockées comme nombres à virgule
-     flottante ou comme entiers sur huit octets. Dans le cas de la
-     virgule flottante, la précision des grandes valeurs <type>interval</type>
-     se dégradent à mesure que l'intervalle croît.
-    </para>
+   <para>
+    When <type>timestamp</> values are stored as eight-byte integers
+    (currently the default), microsecond precision is available over
+    the full range of values. When <type>timestamp</> values are
+    stored as double precision floating-point numbers instead (a
+    deprecated compile-time option), the effective limit of precision
+    might be less than 6. <type>timestamp</type> values are stored as
+    seconds before or after midnight 2000-01-01.  When
+    <type>timestamp</type> values are implemented using floating-point
+    numbers, microsecond precision is achieved for dates within a few
+    years of 2000-01-01, but the precision degrades for dates further
+    away. Note that using floating-point datetimes allows a larger
+    range of <type>timestamp</type> values to be represented than
+    shown above: from 4713 BC up to 5874897 AD.
+   </para>
+
+   <para>
+    The same compile-time option also determines whether
+    <type>time</type> and <type>interval</type> values are stored as
+    floating-point numbers or eight-byte integers.  In the
+    floating-point case, large <type>interval</type> values degrade in
+    precision as the size of the interval increases.
+   </para>
    </note>
 
    <para>
@@ -1558,6 +1561,30 @@
    </para>
 
    <para>
+    The <type>interval</type> type has an additional option, which is
+    to restrict the set of stored fields by writing one of these phrases:
+<programlisting>
+    YEAR
+    MONTH
+    DAY
+    HOUR
+    MINUTE
+    SECOND
+    YEAR TO MONTH
+    DAY TO HOUR
+    DAY TO MINUTE
+    DAY TO SECOND
+    HOUR TO MINUTE
+    MINUTE TO SECOND
+</programlisting>
+    Input falling outside the specified set of fields is silently discarded.
+    Note that if both <replaceable>fields</replaceable> and
+    <replaceable>precision</replaceable> are specified, the
+    <replaceable>fields</replaceable> must include <literal>SECOND</>,
+    since the precision applies only to the seconds.
+   </para>
+   
+   <para>
     Le type <type>time with time zone</type> est défini dans le standard
     SQL mais sa définition lui prête des propriétés qui font douter de son
     utilité. Dans la plupart des cas, une combinaison de <type>date</type>,
@@ -1976,60 +2003,6 @@
     </sect3>
 
     <sect3>
-     <title>Intervalles</title>
-
-     <indexterm>
-      <primary>interval</primary>
-     </indexterm>
-
-      <para>
-       Les valeurs de type <type>interval</type> utilisent la syntaxe
-       suivante&nbsp;:
-
-<programlisting><optional>@</optional> <replaceable>quantité</replaceable> <replaceable>unité</replaceable> <optional><replaceable>quantité</replaceable> <replaceable>unité</replaceable>...</optional> <optional><replaceable>direction</replaceable></optional></programlisting>
-
-      où&nbsp;: <replaceable>quantité</replaceable> est un nombre (éventuellement
-      signé)&nbsp;; <replaceable>unité</replaceable> est
-      <literal>microsecond</literal>, <literal>millisecond</literal>,
-      <literal>second</literal>,
-      <literal>minute</literal>, <literal>hour</literal>, <literal>day</literal>,
-      <literal>week</literal>, <literal>month</literal>, <literal>year</literal>,
-      <literal>decade</literal>, <literal>century</literal>, <literal>millennium</literal>,
-      une abbréviation ou un pluriel de ces unités&nbsp;;
-      <replaceable>direction</replaceable> peut être <literal>ago</literal> ou
-      vide. L'arobase (<literal>@</literal>) est optionnel. Les valeurs
-      des différentes unités sont implicitement ajoutées en utilisant le signe
-      approprié.
-     </para>
-
-     <para>
-      Les nombres de jours, heures, minutes et secondes peuvent être précisées
-      sans unité explicite. Par exemple <literal>'1 12:59:10'</literal> est
-      compris de la même façon que
-      <literal>'1 day 12 hours 59 min 10 sec'</literal> (1 jour, 12 heures,
-      59 minutes, 10 secondes).
-     </para>
-
-     <para>
-      La précision optionnelle, en dessous de la seconde, doit être
-      comprise entre 0 et
-      6, et prend la précision du libellé saisi comme valeur par défaut.
-     </para>
-
-     <para>
-      En interne, les valeurs <type>interval</type> sont enregistrées comme des mois,
-      jours et secondes. Ceci parce que le nombre de jours d'un mois varie et
-      qu'un jour peut avoir 23 ou 25 heures si un changement d'heure s'applique.
-      Comme les intervalles sont habituellement créés à partir de chaînes de
-      caractères constantes ou de soustraction de <type>timestamp</type>,
-      cette méthode de stockage fonctionne bien dans la majorité des cas. Les
-      fonctions <function>justify_days</function> et <function>justify_hours</function> sont
-      disponibles pour ajuster les jours et les heures qui dépassent leurs
-      périodes habituelles.
-     </para>
-    </sect3>
-
-    <sect3>
      <title>Valeurs spéciales</title>
 
      <indexterm>
@@ -2076,12 +2049,12 @@
          </row>
          <row>
           <entry><literal>infinity</literal></entry>
-          <entry><type>timestamp</type></entry>
+          <entry><type>date</type>, <type>timestamp</type></entry>
           <entry>plus tard que toutes les autres dates</entry>
          </row>
          <row>
           <entry><literal>-infinity</literal></entry>
-          <entry><type>timestamp</type></entry>
+          <entry><type>date</type>, <type>timestamp</type></entry>
           <entry>plus tôt que toutes les autres dates</entry>
          </row>
          <row>
@@ -2241,15 +2214,6 @@
      </table>
 
     <para>
-     L'affichage du type <type>interval</type> ressemble au format de saisie,
-     à ceci près que les unités comme <literal>century</literal> ou
-     <literal>week</literal> sont converties en années et jours, et que
-     <literal>ago</literal> est converti en un signe approprié. En mode ISO,
-     l'affichage ressemble à&nbsp;:
-<programlisting><optional> <replaceable>quantité</replaceable> <replaceable>unité</replaceable> <optional> ... </optional> </optional> <optional> <replaceable>jours</replaceable> </optional> <optional> <replaceable>heures</replaceable>:<replaceable>minutes</replaceable>:<replaceable>secondes</replaceable> </optional></programlisting>
-    </para>
-
-    <para>
      Les styles de date/heure peuvent être sélectionnés à l'aide de la
      commande <command>SET datestyle</command>, du paramètre
      <xref linkend="guc-datestyle"/> du fichier de configuration
@@ -2275,12 +2239,11 @@
      vingtième siècle mais continuent à être soumis à des changements
      arbitraires, particulièrement en respect des règles de changement
      d'heure (heure d'été/heure d'hiver).
-     <productname>PostgreSQL</productname> gère actuellement les règles de
-     changement d'heure pour la période de 1902 à 2038 (qui correspond à
-     l'intégralité de l'échelle du temps système Unix). Les heures en dehors de
-     cette échelle sont prises dans le <quote>temps standard</quote> du
-     fuseau horaire sélectionné, quelque soit la partie de l'année où elles
-     tombent.
+     <productname>PostgreSQL</productname>  uses the widely-used
+    <literal>zoneinfo</> time zone database for information about
+    historical time zone rules.  For times in the future, the assumption
+    is that the latest known rules for a given time zone will
+    continue to be observed indefinitely far into the future.
     </para>
 
     <para>
@@ -2344,7 +2307,7 @@
         <literal>pg_timezone_names</literal> (voir <xref
         linkend="view-pg-timezone-names"/>).
         <productname>PostgreSQL</productname> utilise les données
-        <literal>zic</literal> pour cela, les mêmes noms sont donc
+        <literal>zoneinfo</literal> pour cela, les mêmes noms sont donc
 	reconnus par de nombreux autres logiciels&nbsp;;
        </para>
       </listitem>
@@ -2379,7 +2342,7 @@
 	USA. Si un nom de changement d'heure est présent, il
 	est interprété selon les règles régissant les changements d'heure
 	utilisées dans l'entrée <filename>posixrules</filename> de la base
-	de données des fuseaux horaires, <literal>zic</literal>. Dans une
+	de données des fuseaux horaires, <literal>zoneinfo</literal>. Dans une
 	installation <productname>PostgreSQL</productname> standard,
         <filename>posixrules</filename> est identique à <literal>US/Eastern</literal>,
         pour que les spécifications POSIX des fuseaux horaires correspondent
@@ -2475,6 +2438,298 @@
 
    </sect2>
 
+   <sect2 id="datatype-interval-input">
+    <title>Interval Input</title>
+
+    <indexterm>
+     <primary>interval</primary>
+    </indexterm>
+
+     <para>
+      <type>interval</type> values can be written with the following
+      verbose syntax:
+
+<synopsis>
+<optional>@</> <replaceable>quantity</> <replaceable>unit</> <optional><replaceable>quantity</> <replaceable>unit</>...</> <optional><replaceable>direction</></optional>
+</synopsis>
+
+     where <replaceable>quantity</> is a number (possibly signed);
+     <replaceable>unit</> is <literal>microsecond</literal>,
+     <literal>millisecond</literal>, <literal>second</literal>,
+     <literal>minute</literal>, <literal>hour</literal>, <literal>day</literal>,
+     <literal>week</literal>, <literal>month</literal>, <literal>year</literal>,
+     <literal>decade</literal>, <literal>century</literal>, <literal>millennium</literal>,
+     or abbreviations or plurals of these units;
+     <replaceable>direction</> can be <literal>ago</literal> or
+     empty.  The at sign (<literal>@</>) is optional noise.  The amounts
+     of different units are implicitly added up with appropriate
+     sign accounting.  <literal>ago</literal> negates all the fields.
+     This syntax is also used for interval output, if
+     <xref linkend="guc-intervalstyle"> is set to
+     <literal>postgres_verbose</>.
+    </para>
+
+    <para>
+     Quantities of days, hours, minutes, and seconds can be specified without
+     explicit unit markings.  For example, <literal>'1 12:59:10'</> is read
+     the same as <literal>'1 day 12 hours 59 min 10 sec'</>.  Also,
+     a combination of years and months can be specified with a dash;
+     for example <literal>'200-10'</> is read the same as <literal>'200 years
+     10 months'</>.  (These shorter forms are in fact the only ones allowed
+     by the <acronym>SQL</acronym> standard, and are used for output when
+     <varname>IntervalStyle</> is set to <literal>sql_standard</literal>.)
+    </para>
+
+    <para>
+     Interval values can also be written as ISO 8601 time intervals, using
+     either the <quote>format with designators</> of the standard's section
+     4.4.3.2 or the <quote>alternative format</> of section 4.4.3.3.  The
+     format with designators looks like this:
+<synopsis>
+P <replaceable>quantity</> <replaceable>unit</> <optional> <replaceable>quantity</> <replaceable>unit</> ...</optional> <optional> T <optional> <replaceable>quantity</> <replaceable>unit</> ...</optional></optional>
+</synopsis>
+      The string must start with a <literal>P</>, and may include a
+      <literal>T</> that introduces the time-of-day units.  The
+      available unit abbreviations are given in <xref
+      linkend="datatype-interval-iso8601-units">.  Units may be
+      omitted, and may be specified in any order, but units smaller than
+      a day must appear after <literal>T</>.  In particular, the meaning of
+      <literal>M</> depends on whether it is before or after
+      <literal>T</>.
+     </para>
+
+     <table id="datatype-interval-iso8601-units">
+      <title>ISO 8601 interval unit abbreviations</title>
+     <tgroup cols="2">
+       <thead>
+        <row>
+         <entry>Abbreviation</entry>
+         <entry>Meaning</entry>
+        </row>
+       </thead>
+       <tbody>
+        <row>
+         <entry>Y</entry>
+         <entry>Years</entry>
+        </row>
+        <row>
+         <entry>M</entry>
+         <entry>Months (in the date part)</entry>
+        </row>
+        <row>
+         <entry>W</entry>
+         <entry>Weeks</entry>
+        </row>
+        <row>
+         <entry>D</entry>
+         <entry>Days</entry>
+        </row>
+        <row>
+         <entry>H</entry>
+         <entry>Hours</entry>
+        </row>
+        <row>
+         <entry>M</entry>
+         <entry>Minutes (in the time part)</entry>
+        </row>
+        <row>
+         <entry>S</entry>
+         <entry>Seconds</entry>
+        </row>
+       </tbody>
+      </tgroup>
+     </table>
+
+     <para>
+      In the alternative format:
+<synopsis>
+P <optional> <replaceable>years</>-<replaceable>months</>-<replaceable>days</> </optional> <optional> T <replaceable>hours</>:<replaceable>minutes</>:<replaceable>seconds</> </optional>
+</synopsis>
+      the string must begin with <literal>P</literal>, and a
+      <literal>T</> separates the date and time parts of the interval.
+      The values are given as numbers similar to ISO 8601 dates.
+    </para>
+
+    <para>
+     When writing an interval constant with a <replaceable>fields</>
+     specification, or when assigning to an interval column that was defined
+     with a <replaceable>fields</> specification, the interpretation of
+     unmarked quantities depends on the <replaceable>fields</>.  For
+     example <literal>INTERVAL '1' YEAR</> is read as 1 year, whereas
+     <literal>INTERVAL '1'</> means 1 second.
+    </para>
+
+    <para>
+     According to the <acronym>SQL</> standard all fields of an interval
+     value must have the same sign, so a leading negative sign applies to all
+     fields; for example the negative sign in the interval literal
+     <literal>'-1 2:03:04'</> applies to both the days and hour/minute/second
+     parts.  <productname>PostgreSQL</> allows the fields to have different
+     signs, and traditionally treats each field in the textual representation
+     as independently signed, so that the hour/minute/second part is
+     considered positive in this example.  If <varname>IntervalStyle</> is
+     set to <literal>sql_standard</literal> then a leading sign is considered
+     to apply to all fields (but only if no additional signs appear).
+     Otherwise the traditional <productname>PostgreSQL</> interpretation is
+     used.  To avoid ambiguity, it's recommended to attach an explicit sign
+     to each field if any field is negative.
+    </para>
+
+    <para>
+     Internally <type>interval</> values are stored as months, days,
+     and seconds. This is done because the number of days in a month
+     varies, and a day can have 23 or 25 hours if a daylight savings
+     time adjustment is involved.  The months and days fields are integers
+     while the seconds field can store fractions.  Because intervals are
+     usually created from constant strings or <type>timestamp</> subtraction,
+     this storage method works well in most cases. Functions
+     <function>justify_days</> and <function>justify_hours</> are
+     available for adjusting days and hours that overflow their normal
+     ranges.
+    </para>
+
+    <para>
+     In the verbose input format, and in some fields of the more compact
+     input formats, field values can have fractional parts; for example
+     <literal>'1.5 week'</> or <literal>'01:02:03.45'</>.  Such input is
+     converted to the appropriate number of months, days, and seconds
+     for storage.  When this would result in a fractional number of
+     months or days, the fraction is added to the lower-order fields
+     using the conversion factors 1 month = 30 days and 1 day = 24 hours.
+     For example, <literal>'1.5 month'</> becomes 1 month and 15 days.
+     Only seconds will ever be shown as fractional on output.
+    </para>
+
+    <para>
+     <xref linkend="datatype-interval-input-examples"> shows some examples
+     of valid <type>interval</> input.
+    </para>
+
+     <table id="datatype-interval-input-examples">
+      <title>Interval Input</title>
+      <tgroup cols="2">
+       <thead>
+        <row>
+         <entry>Example</entry>
+         <entry>Description</entry>
+        </row>
+       </thead>
+       <tbody>
+        <row>
+         <entry>1-2</entry>
+         <entry>SQL standard format: 1 year 2 months</entry>
+        </row>
+        <row>
+         <entry>3 4:05:06</entry>
+         <entry>SQL standard format: 3 days 4 hours 5 minutes 6 seconds</entry>
+        </row>
+        <row>
+         <entry>1 year 2 months 3 days 4 hours 5 minutes 6 seconds</entry>
+         <entry>Traditional Postgres format: 1 year 2 months 3 days 4 hours 5 minutes 6 seconds</entry>
+        </row>
+        <row>
+         <entry>P1Y2M3DT4H5M6S</entry>
+         <entry>ISO 8601 <quote>format with designators</>: same meaning as above</entry>
+        </row>
+        <row>
+         <entry>P0001-02-03T04:05:06</entry>
+         <entry>ISO 8601 <quote>alternative format</>: same meaning as above</entry>
+        </row>
+       </tbody>
+      </tgroup>
+     </table>
+
+   </sect2>
+
+   <sect2 id="datatype-interval-output">
+    <title>Interval Output</title>
+
+    <indexterm>
+     <primary>interval</primary>
+     <secondary>output format</secondary>
+     <seealso>formatting</seealso>
+    </indexterm>
+
+    <para>
+     The output format of the interval type can be set to one of the
+     four styles <literal>sql_standard</>, <literal>postgres</>,
+     <literal>postgres_verbose</>, or <literal>iso_8601</>,
+     using the command <literal>SET intervalstyle</literal>.
+     The default is the <literal>postgres</> format.
+     <xref linkend="interval-style-output-table"> shows examples of each
+     output style.
+    </para>
+
+    <para>
+     The <literal>sql_standard</> style produces output that conforms to
+     the SQL standard's specification for interval literal strings, if
+     the interval value meets the standard's restrictions (either year-month
+     only or day-time only, with no mixing of positive
+     and negative components).  Otherwise the output looks like a standard
+     year-month literal string followed by a day-time literal string,
+     with explicit signs added to disambiguate mixed-sign intervals.
+    </para>
+
+    <para>
+     The output of the <literal>postgres</> style matches the output of
+     <productname>PostgreSQL</> releases prior to 8.4 when the
+     <xref linkend="guc-datestyle"> parameter was set to <literal>ISO</>.
+    </para>
+
+    <para>
+     The output of the <literal>postgres_verbose</> style matches the output of
+     <productname>PostgreSQL</> releases prior to 8.4 when the
+     <varname>DateStyle</> parameter was set to non-<literal>ISO</> output.
+    </para>
+
+    <para>
+     The output of the <literal>iso_8601</> style matches the <quote>format
+     with designators</> described in section 4.4.3.2 of the
+     ISO 8601 standard.
+    </para>
+
+     <table id="interval-style-output-table">
+       <title>Interval Output Style Examples</title>
+       <tgroup cols="4">
+        <thead>
+         <row>
+          <entry>Style Specification</entry>
+          <entry>Year-Month Interval</entry>
+          <entry>Day-Time Interval</entry>
+          <entry>Mixed Interval</entry>
+         </row>
+        </thead>
+        <tbody>
+         <row>
+          <entry><literal>sql_standard</></entry>
+          <entry>1-2</entry>
+          <entry>3 4:05:06</entry>
+          <entry>-1-2 +3 -4:05:06</entry>
+         </row>
+         <row>
+          <entry><literal>postgres</></entry>
+          <entry>1 year 2 mons</entry>
+          <entry>3 days 04:05:06</entry>
+          <entry>-1 year -2 mons +3 days -04:05:06</entry>
+         </row>
+         <row>
+          <entry><literal>postgres_verbose</></entry>
+          <entry>@ 1 year 2 mons</entry>
+          <entry>@ 3 days 4 hours 5 mins 6 secs</entry>
+          <entry>@ 1 year 2 mons -3 days 4 hours 5 mins 6 secs ago</entry>
+         </row>
+         <row>
+          <entry><literal>iso_8601</></entry>
+          <entry>P1Y2M</entry>
+          <entry>P3DT4H5M6S</entry>
+          <entry>P-1Y-2M3DT-4H-5M-6S</entry>
+         </row>
+        </tbody>
+       </tgroup>
+    </table>
+
+   </sect2>
+
    <sect2 id="datatype-datetime-internals">
     <title>Types internes</title>
 
@@ -2526,6 +2781,7 @@
      <member><literal>'true'</literal></member>
      <member><literal>'y'</literal></member>
      <member><literal>'yes'</literal></member>
+     <member><literal>'on'</literal></member>
      <member><literal>'1'</literal></member>
     </simplelist>
     Pour l'état <quote>faux</quote>, il s'agit de&nbsp;:
@@ -2535,6 +2791,7 @@
      <member><literal>'false'</literal></member>
      <member><literal>'n'</literal></member>
      <member><literal>'no'</literal></member>
+     <member><literal>'off'</literal></member>
      <member><literal>'0'</literal></member>
     </simplelist>
     Les espaces avant et après sont ignorés.
@@ -2580,6 +2837,10 @@
     <secondary>énumération (enum)</secondary>
    </indexterm>
 
+   <indexterm zone="datatype-enum">
+    <primary>enumerated types</primary>
+   </indexterm>
+
    <para>
     Les types énumérés (enum) sont des types de données qui comprennent un
     ensemble statique, prédéfini de valeurs dans un ordre spécifique. Ils sont
@@ -2724,6 +2985,13 @@
      Les espaces sont aussi significatifs dans les labels.
     </para>
 
+    <para>
+     The translations from internal enum values to textual labels are
+     kept in the system catalog
+     <link linkend="catalog-pg-enum"><structname>pg_enum</structname></link>.
+     Querying this catalog directly can be useful.
+    </para>
+
    </sect2>
   </sect1>
 
@@ -3247,24 +3515,41 @@
     </indexterm>
 
     <para>
-     Le type <type>macaddr</type> stocke des adresses MAC, c'est-à-dire
-     des adresses de cartes réseau Ethernet (mais les adresses MAC sont
-     aussi utilisées dans d'autres cas). Les saisies sont acceptées dans
-     de nombreux formats, dont&nbsp;:
+     Le type <type>macaddr</type> stocke des adresses MAC, connues par exemple
+     à partir des adresses de cartes réseau Ethernet (mais les adresses MAC sont
+     aussi utilisées dans d'autres cas). Les saisies sont acceptées dans les
+     formats suivants&nbsp;:
 
      <simplelist>
+      <member><literal>'08:00:2b:01:02:03'</literal></member>
+      <member><literal>'08-00-2b-01-02-03'</literal></member>
       <member><literal>'08002b:010203'</literal></member>
       <member><literal>'08002b-010203'</literal></member>
       <member><literal>'0800.2b01.0203'</literal></member>
-      <member><literal>'08-00-2b-01-02-03'</literal></member>
-      <member><literal>'08:00:2b:01:02:03'</literal></member>
+      <member><literal>'08002b010203'</literal></member>
      </simplelist>
 
-     qui indiquent tous la même adresse. Les majuscules et les minuscules sont
-     acceptées pour les chiffres <literal>a</literal> à <literal>f</literal>.
-     L'affichage se fait toujours selon le dernier format.
+     Ces exemples indiquent tous la même adresse. Les majuscules et les
+     minuscules sont acceptées pour les chiffres <literal>a</literal> à
+     <literal>f</literal>. L'affichage se fait toujours selon le premier
+     des formats ci-dessus.
     </para>
 
+    <para>
+     IEEE Std 802-2001 specifies the second shown form (with hyphens)
+     as the canonical form for MAC addresses, and specifies the first
+     form (with colons) as the bit-reversed notation, so that
+     08-00-2b-01-02-03 = 01:00:4D:08:04:0C.  This convention is widely
+     ignored nowadays, and it is only relevant for obsolete network
+     protocols (such as Token Ring).  PostgreSQL makes no provisions
+     for bit reversal, and all accepted formats use the canonical LSB
+     order.
+    </para>
+
+    <para>
+     The remaining four input formats are not part of any standard.
+    </para>
+    
    </sect2>
 
   </sect1>
@@ -3391,11 +3676,9 @@
 SELECT 'a fat cat sat on a mat and ate a fat rat'::tsvector;
                       tsvector
 ----------------------------------------------------
- 'a' 'on' 'and' 'ate' 'cat' 'fat' 'mat' 'rat' 'sat'
+ 'a' 'and' 'ate' 'cat' 'fat' 'mat' 'on' 'rat' 'sat'
 </programlisting>
 
-     (Comme le montre l'exemple, le tri se fait en premier sur la longueur
-     puis alphabétiquement, mais ce détail n'est pas fréquemment important.)
      Pour représenter des lexemes contenant des espaces blancs ou des signes
 	 de ponctuation, entourez-les avec des guillemets simples&nbsp;:
 
@@ -3403,7 +3686,7 @@
 SELECT $$the lexeme '    ' contains spaces$$::tsvector;
                  tsvector                  
 -------------------------------------------
- 'the' '    ' 'lexeme' 'spaces' 'contains'
+ '    ' 'contains' 'lexeme' 'spaces' 'the'
 </programlisting>
 
      (Nous utilisons les valeurs litérales entre guillemets simples dans cet
@@ -3415,7 +3698,7 @@
 SELECT $$the lexeme 'Joe''s' contains a quote$$::tsvector;
                     tsvector                    
 ------------------------------------------------
- 'a' 'the' 'Joe''s' 'quote' 'lexeme' 'contains'
+ 'Joe''s' 'a' 'contains' 'lexeme' 'quote' 'the'
 </programlisting>
 
      En option, les <firstterm>positions</firstterm> peuvent être attachées
@@ -3425,7 +3708,7 @@
 SELECT 'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12'::tsvector;
                                   tsvector
 -------------------------------------------------------------------------------
- 'a':1,6,10 'on':5 'and':8 'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4
+ 'a':1,6,10 'and':8 'ate':9 'cat':3 'fat':2,11 'mat':7 'on':5 'rat':12 'sat':4
 </programlisting>
 
      Une position indique normalement l'emplacement du mot source dans le
@@ -3466,7 +3749,7 @@
 select 'The Fat Rats'::tsvector;
       tsvector      
 --------------------
- 'Fat' 'The' 'Rats'
+ 'Fat' 'Rats' 'The'
 </programlisting>
 
      Pour la plupart des applications de recherche en anglais, les mots ci-dessus
@@ -3537,6 +3820,19 @@
     </para>
 
     <para>
+     Also, lexemes in a <type>tsquery</type> can be labeled with <literal>*</>
+     to specify prefix matching:
+<programlisting>
+SELECT 'super:*'::tsquery;
+  tsquery  
+-----------
+ 'super':*
+</programlisting>
+     This query will match any word in a <type>tsvector</> that begins
+     with <quote>super</>.
+    </para>
+
+    <para>
      Les règles de guillemets pour les lexemes sont identiques à celles décrites
      ci-dessus pour les lexemes de <type>tsvector</type>&nbsp;; et, comme avec
      <type>tsvector</type>, toute normalisation requise des mots doit se faire
@@ -3591,12 +3887,16 @@
 a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
 </programlisting>
     PostgreSQL accepte aussi d'autres formes en entrée&nbsp;: utilisation
-    des majuscules, de crochets englobant le nombre, suppression des tirets.
+    des majuscules, de crochets englobant le nombre, suppression d'une partie
+    ou de tous les tirets, adding a hyphen after any
+    group of four digits.
     Voici quelques exemples&nbsp;:
 <programlisting>
 A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
 {a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
 a0eebc999c0b4ef8bb6d6bb9bd380a11
+a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
+{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
 </programlisting>
     L'affichage est toujours dans la forme standard.
    </para>

Modified: traduc/trunk/postgresql/datetime.xml
===================================================================
--- traduc/trunk/postgresql/datetime.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/datetime.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -332,10 +332,6 @@
       </thead>
       <tbody>
        <row>
-	<entry><literal>ABSTIME</literal></entry>
-	<entry>Ignoré</entry>
-       </row>
-       <row>
 	<entry><literal>AM</literal></entry>
 	<entry>L'heure précède 12:00</entry>
        </row>
@@ -363,15 +359,6 @@
      </tgroup>
     </table>
 
-   <para>
-    Le mot clé <literal>ABSTIME</literal> est ignoré pour des raisons
-    historiques&nbsp;: dans les très vieilles versions de
-    <productname>PostgreSQL</productname>, les valeurs invalides de type
-    <type>abstime</type> étaient émises en tant que <literal>Invalid Abstime</literal>.
-    Ce n'est plus le cas aujourd'hui. Il est donc fort probable que ce mot clé
-    soit abandonné dans une version future.
-   </para>
-
   </sect1>
 
   <sect1 id="datetime-config-files">
@@ -458,7 +445,7 @@
     des fichiers <filename>Africa.txt</filename>, <filename>America.txt</filename>,
     etc. qui contiennent des informations sur les abréviations connues et
     utilisées en accord avec la base de données de fuseaux horaires
-    <literal>zic</literal>. Les définitions des noms de zone trouvées dans ces
+    <literal>zoneinfo</literal>. Les définitions des noms de zone trouvées dans ces
     fichiers peuvent être copiées et collées dans un fichier de configuration
     personnalisé si nécessaire. Il ne peut pas être fait directement référence
     à ces fichiers dans le paramètre

Modified: traduc/trunk/postgresql/dblink.xml
===================================================================
--- traduc/trunk/postgresql/dblink.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/dblink.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -18,6 +18,10 @@
  </para>
 
  <refentry id="CONTRIB-DBLINK-CONNECT">
+  <refmeta>
+   <refentrytitle>dblink_connect</refentrytitle>
+  </refmeta>
+
   <refnamediv>
    <refname>dblink_connect</refname>
    <refpurpose>ouvre une connexion persistante vers une base de données
@@ -125,6 +129,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-CONNECT-U">
+  <refmeta>
+   <refentrytitle>dblink_connect_u</refentrytitle>
+  </refmeta>
+
   <refnamediv>
    <refname>dblink_connect_u</refname>
    <refpurpose>ouvre une connexion distante à une base de données de
@@ -153,6 +161,11 @@
     n'implique pas de mot de passe, une impersonnalisation et une escalade
     de droits peut survenir car la session semble émaner de l'utilisateur
     qui exécute le serveur <productname>PostgreSQL</productname> local.
+    Also, even if the remote server does demand a password,
+    it is possible for the password to be supplied from the server
+    environment, such as a <filename>~/.pgpass</> file belonging to the
+    server's user.  This opens not only a risk of impersonation, but the
+    possibility of exposing a password to an untrustworthy remote server.
     C'est pourquoi,
     <function>dblink_connect_u()</function> est installé initialement sans
     aucun droit pour <literal>PUBLIC</literal>, ce qui restreint son
@@ -160,7 +173,9 @@
     le droit <literal>EXECUTE</literal> sur
     <function>dblink_connect_u()</function> peut être accordé à quelque utilisateur
     spécifique digne de confiance, mais cela doit se faire
-    avec une extrême prudence.
+    avec une extrême prudence.It is also recommended
+    that any <filename>~/.pgpass</> file belonging to the server's user
+    <emphasis>not</> contain any records specifying a wildcard host name.
    </para>
 
    <para>
@@ -170,6 +185,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-DISCONNECT">
+  <refmeta>
+   <refentrytitle>dblink_disconnect</refentrytitle>
+  </refmeta>
+
   <refnamediv>
    <refname>dblink_disconnect</refname>
    <refpurpose>ferme une connexion persistante vers une base de données
@@ -237,6 +256,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK">
+  <refmeta>
+   <refentrytitle>dblink</refentrytitle>
+  </refmeta>
+
   <refnamediv>
    <refname>dblink</refname>
    <refpurpose>exécute une requête sur une base de données
@@ -460,6 +483,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-EXEC">
+  <refmeta>
+   <refentrytitle>dblink_exec</refentrytitle>
+  </refmeta>
+
   <refnamediv>
    <refname>dblink_exec</refname>
    <refpurpose>exécute une commande sur une base de données
@@ -594,6 +621,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-OPEN">
+  <refmeta>
+   <refentrytitle>dblink_open</refentrytitle>
+  </refmeta>
+
   <refnamediv>
    <refname>dblink_open</refname>
    <refpurpose>ouvre un curseur sur une base de données distante</refpurpose>
@@ -712,6 +743,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-FETCH">
+  <refmeta>
+   <refentrytitle>dblink_fetch</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_fetch</refname>
    <refpurpose>renvoie des lignes à partir d'un curseur ouvert sur une
@@ -861,6 +896,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-CLOSE">
+  <refmeta>
+   <refentrytitle>dblink_close</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_close</refname>
    <refpurpose>ferme un curseur sur une base de données distante</refpurpose>
@@ -966,6 +1005,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-GET-CONNECTIONS">
+  <refmeta>
+   <refentrytitle>dblink_get_connections</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_get_connections</refname>
    <refpurpose>renvoie les noms de toutes les connexions nommées
@@ -1005,6 +1048,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-ERROR-MESSAGE">
+  <refmeta>
+   <refentrytitle>dblink_error_message</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_error_message</refname>
    <refpurpose>récupère le dernier message d'erreur sur la connexion
@@ -1060,6 +1107,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-SEND-QUERY">
+  <refmeta>
+   <refentrytitle>dblink_send_query</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_send_query</refname>
    <refpurpose>envoie une requête asynchrone à une base de données
@@ -1135,6 +1186,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-IS-BUSY">
+  <refmeta>
+   <refentrytitle>dblink_is_busy</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_is_busy</refname>
    <refpurpose>vérifie si la connexion est occupée par le traitement d'une requête
@@ -1191,6 +1246,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-GET-RESULT">
+  <refmeta>
+   <refentrytitle>dblink_get_result</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_get_result</refname>
    <refpurpose>récupère le résultat d'une requête asynchrone</refpurpose>
@@ -1334,6 +1393,10 @@
  </refentry>
 <!-- JCA::TAG RELECTURE -->
  <refentry id="CONTRIB-DBLINK-CANCEL-QUERY">
+  <refmeta>
+   <refentrytitle>dblink_cancel_query</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_cancel_query</refname>
    <refpurpose>annule toute requête en cours d'exécution sur la connexion
@@ -1393,50 +1456,11 @@
   </refsect1>
  </refentry>
 
- <refentry id="CONTRIB-DBLINK-CURRENT-QUERY">
-  <refnamediv>
-   <refname>dblink_current_query</refname>
-   <refpurpose>renvoie la requête en cours</refpurpose>
-  </refnamediv>
-
-  <refsynopsisdiv>
-   <synopsis>
-    dblink_current_query() returns text
-   </synopsis>
-  </refsynopsisdiv>
-
-  <refsect1>
-   <title>Description</title>
-
-   <para>
-    Renvoie la commande en cours d'exécution sur la session locale, ou
-    NULL si elle ne peut être déterminée. Cette fonction n'est pas liée
-    aux autres fonctionnalités de <filename>dblink</filename>.
-    Elle est fournie car il est parfois utile de produire des requêtes à
-    transmettre à des bases distantes.
-   </para>
-  </refsect1>
-
-  <refsect1>
-   <title>Valeur de retour</title>
-
-   <para>Renvoie une copie de la requête en cours d'exécution.</para>
-  </refsect1>
-
-  <refsect1>
-   <title>Exemple</title>
-
-   <programlisting>
-select dblink_current_query();
-      dblink_current_query
---------------------------------
- select dblink_current_query();
-(1 row)
-   </programlisting>
-  </refsect1>
- </refentry>
-
  <refentry id="CONTRIB-DBLINK-GET-PKEY">
+  <refmeta>
+   <refentrytitle>dblink_get_pkey</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_get_pkey</refname>
    <refpurpose>renvoie la position et le nom des champs de clé primaire
@@ -1512,6 +1536,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-BUILD-SQL-INSERT">
+  <refmeta>
+   <refentrytitle>dblink_build_sql_insert</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_build_sql_insert</refname>
    <refpurpose>
@@ -1626,6 +1654,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-BUILD-SQL-DELETE">
+  <refmeta>
+   <refentrytitle>dblink_build_sql_delete</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_build_sql_delete</refname>
    <refpurpose>construit une instruction de suppression en utilisant 
@@ -1722,6 +1754,10 @@
  </refentry>
 
  <refentry id="CONTRIB-DBLINK-BUILD-SQL-UPDATE">
+  <refmeta>
+   <refentrytitle>dblink_build_sql_update</refentrytitle>
+  </refmeta>
+  
   <refnamediv>
    <refname>dblink_build_sql_update</refname>
    <refpurpose>construit une instruction de mise à jour à partir d'un tuple

Modified: traduc/trunk/postgresql/ddl.xml
===================================================================
--- traduc/trunk/postgresql/ddl.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/ddl.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -1330,7 +1330,7 @@
   <para>
    Il existe un certain nombre de droits différents&nbsp;: <literal>SELECT</literal>,
    <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>,
-   <literal>REFERENCES</literal>, <literal>TRIGGER</literal>,
+   <literal>TRUNCATE</literal>, <literal>REFERENCES</literal>, <literal>TRIGGER</literal>,
    <literal>CREATE</literal>, <literal>CONNECT</literal>, <literal>TEMPORARY</literal>,
    <literal>EXECUTE</literal> et <literal>USAGE</literal>.
    Les droits applicables à un objet particulier varient
@@ -2054,7 +2054,7 @@
 
   <para>
    Une table mère ne peut pas être supprimée tant qu'elle a des enfants.
-   Pas plus que les colonnes de tables enfants ne peuvent être supprimées ou
+   Pas plus que les colonnes or check constraints de tables enfants ne peuvent être supprimées ou
    modifiées si elles sont héritées.
    La suppression d'une table et de tous ces descendants peut être aisément
    obtenue en supprimant la table mère avec l'option
@@ -2065,7 +2065,7 @@
    <xref linkend="sql-altertable" endterm="sql-altertable-title"/>
    propage toute modification dans les définitions des colonnes et 
    contraintes de vérification à travers la hiérarchie d'héritage. Là encore,
-   supprimer des colonnes ou des contraintes sur des tables mèrees n'est possible
+   supprimer des colonnes that are depended on by other tables mères n'est possible
    qu'avec l'option <literal>CASCADE</literal>. <command>ALTER TABLE</command>
    suit les mêmes règles d'assemblage de colonnes dupliquées et de rejet que 
    l'instruction <command>CREATE TABLE</command>.
@@ -2086,6 +2086,23 @@
   </para>
 
   <para>
+   More generally, note that not all SQL commands are able to work on
+   inheritance hierarchies.  Commands that are used for data querying,
+   data modification, or schema modification
+   (e.g., <literal>SELECT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>,
+   most variants of <literal>ALTER TABLE</literal>, but
+   not <literal>INSERT</literal> and <literal>ALTER TABLE ...
+   RENAME</literal>) typically default to including child tables and
+   support the <literal>ONLY</literal> notation to exclude them.
+   Commands that do database maintenance and tuning
+   (e.g., <literal>REINDEX</literal>, <literal>VACUUM</literal>)
+   typically only work on individual, physical tables and do no
+   support recursing over inheritance hierarchies.  The respective
+   behavior of each individual command is documented in the reference
+   part (<xref linkend="sql-commands">).
+  </para>
+  
+  <para>
     Il existe une réelle limitation à la fonctionnalité d'héritage&nbsp;: les index
     (dont les contraintes d'unicité) et les contraintes de clés étrangères
     ne s'appliquent qu'aux tables mères, pas à leurs héritiers. Cela
@@ -2355,9 +2372,9 @@
 
       <listitem>
        <para>
-        S'assurer que le paramètre de configuration
-	<xref linkend="guc-constraint-exclusion"/> est activé dans
-	<filename>postgresql.conf</filename>. Dans le cas contraire, les requêtes ne sont
+        S'assurer que le paramètre de configuration <xref
+	linkend="guc-constraint-exclusion"/> n'est pas désactivé dans
+	<filename>postgresql.conf</filename>. S'il l'est, les requêtes ne sont
 	pas optimisées.
        </para>
       </listitem>
@@ -2649,7 +2666,7 @@
     La commande <command>EXPLAIN</command> permet d'afficher la
     différence entre un plan avec <varname>constraint_exclusion</varname>
     activé (<foreignphrase>on</foreignphrase>) et un plan avec ce paramètre désactivé
-    (<foreignphrase>off</foreignphrase>). Un plan typique par défaut pour ce type de
+    (<foreignphrase>off</foreignphrase>). Un plan typique non optimisé pour ce type de
     table est&nbsp;:
 
 <programlisting>SET constraint_exclusion = off;
@@ -2676,7 +2693,7 @@
     à la place des parcours séquentiels de la table complète mais le fait est
     qu'il n'est pas besoin de parcourir les anciennes partitions pour répondre
     à cette requête. Lorsque l'exclusion de contrainte est activée, 
-    un plan significativement réduit est obtenu, qui délivre la même
+    un plan significativement moins coûteux est obtenu, qui délivre la même
     réponse&nbsp;:
 
 <programlisting>SET constraint_exclusion = on;
@@ -2699,6 +2716,17 @@
     parcourent la partition parcourent en général une grande partie de la partition
     ou seulement une petite partie. Un index est utile dans le dernier cas, pas dans le premier.
    </para>
+
+   <para>
+    The default (and recommended) setting of
+    <xref linkend="guc-constraint-exclusion"> is actually neither
+    <literal>on</> nor <literal>off</>, but an intermediate setting
+    called <literal>partition</>, which causes the technique to be
+    applied only to queries that are likely to be working on partitioned
+    tables.  The <literal>on</> setting causes the planner to examine
+    <literal>CHECK</> constraints in all queries, even simple ones that
+    are unlikely to benefit.
+   </para>
    </sect2>
 
    <sect2 id="ddl-partitioning-alternatives">

Modified: traduc/trunk/postgresql/docguide.xml
===================================================================
--- traduc/trunk/postgresql/docguide.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/docguide.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -133,7 +133,7 @@
 
     <varlistentry>
      <term><ulink
-     url="http://docbook.sourceforge.net/projects/dsssl/index.html">Feuilles
+     url="http://wiki.docbook.org/topic/DocBookDssslStylesheets">Feuilles
      de styles DocBook DSSSL</ulink></term>
      <listitem>
       <para>
@@ -145,17 +145,26 @@
     </varlistentry>
 
     <varlistentry>
-     <term><ulink url="http://docbook2x.sourceforge.net">Les outils DocBook2X</ulink></term>
+     <term><ulink url="http://search.cpan.org/dist/SGMLSpm/">SGMLSpm</ulink></term>
      <listitem>
       <para>
-      Ce paquetage est utilisé pour créer les pages de manuel. Un
-      certain nombre d'autres paquetages sont nécessaires pour le
-      faire fonctionner. Pour plus d'informations, vérifier sur le site web.
+      Ce paquetage est utilisé pour créer les pages de manuel.
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
+     <term><ulink url="http://docbook2x.sourceforge.net">DocBook2X</ulink></term>
+     <listitem>
+      <para>
+       This optional package is also used to create man pages.  You
+       want the <literal>docbook2man-sgmlspl</literal> package, not
+       the main <literal>docbook2x</literal> package.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
      <term><ulink url="http://jadetex.sourceforge.net">JadeTeX</ulink></term>
      <listitem>
       <para>
@@ -277,6 +286,7 @@
 <programlisting>apt-get install openjade1.3
 apt-get install docbook
 apt-get install docbook-dsssl
+apt-get install sgmlspl   # for the man pages
 </programlisting>
     (Le package <literal>openjade</literal> installe
     OpenJade 1.4 qui semble ne pas fonctionner.)
@@ -590,26 +600,44 @@
   <title>Pages man (de manuel)</title>
 
   <para>
-   <application>docbook2man</application> est utilisé pour convertir les pages
+   <application>docbook2man-sgmlspl</application> from the <productname>DocBook2X</productname> project
+   est utilisé pour convertir les pages
    de références <productname>DocBook</productname> dans un format
    *roff compatible avec les pages man. Les pages man sont également distribuées
    sous la forme d'une archive tar, à l'instar de la version
-   <acronym>HTML</acronym>. Pour créer le paquetage de pages man,
+   <acronym>HTML</acronym>. Pour créer les pages man,
    utiliser les commandes&nbsp;:
+<programlisting>
+cd doc/src/sgml
+gmake man D2MDIR=<replaceable>directory</replaceable>
+</programlisting>
+   Use the <varname>D2MDIR</varname> variable to specify the name of
+   the directory where the
+   file <filename>docbook2man-spec.pl</filename> from
+   the <application>docbook2man-sgmlspl</application> package resides.
+   There is no default for that.  Since that package is not available
+   or outdated in many packaging systems, you might want to just
+   download the source code tarball and unpack it.  No building is
+   required.  Then the path is something
+   like <literal>D2MDIR=/home/you/somewhere/docbook2man-sgmlspl-1.0/perl</literal>.
+   You may get warnings like this:
+<screen>
+Warning: unrecognized SDATA '[scaron]': please add definition to docbook2man-spec.pl
+Warning: unrecognized SDATA '[ouml  ]': please add definition to docbook2man-spec.pl
+</screen>
+   which can ignore if (and only if) you are using the latest version
+   of <filename>docbook2man-spec.pl</filename>
+   and you are not seeing any other SDATA warnings besides those.
+  </para>
+
+  <para>
+   To create the man page package for a release, use the following commands:
 <programlisting>cd doc/src
-gmake man.tar.gz
+gmake man.tar.gz D2MDIR=<replaceable>directory</replaceable>
 </programlisting>
    qui produisent un fichier tar placé dans le
    répertoire <filename>doc/src</filename>.
   </para>
-
-  <para>
-   Afin de produire des pages man de qualité, il peut
-   être nécessaire d'utiliser une version modifiée de
-   l'utilitaire de conversion ou de faire des modifications manuelles
-   post-production. L'ensemble des pages man doit être manuellement
-   vérifié avant toute distribution.
-  </para>
  </sect2>
 
   <sect2>

Modified: traduc/trunk/postgresql/ecpg.xml
===================================================================
--- traduc/trunk/postgresql/ecpg.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/ecpg.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -723,8 +723,8 @@
 </programlisting>
    Si l'instruction exécutée retourne des valeurs, il est nécessaire d'ajouter une
    clause <literal>INTO</literal>&nbsp;:
-<programlisting>EXEC SQL BEGIN DECLARE SECTION;
-const char *stmt = "SELECT a, b, c FROM test1 WHERE a &gt; ?";
+<programlisting><![CDATA[EXEC SQL BEGIN DECLARE SECTION;
+const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?";
 int v1, v2;
 VARCHAR v3;
 EXEC SQL END DECLARE SECTION;
@@ -732,7 +732,7 @@
 EXEC SQL PREPARE mystmt FROM :stmt;
  ...
 EXEC SQL EXECUTE mystmt INTO v1, v2, v3 USING 37;
-</programlisting>
+]]></programlisting>
    Une commande <command>EXECUTE</command> peut avoir une clause
    <literal>INTO</literal>, une clause <literal>USING</literal>, les deux ou
    aucune.
@@ -755,20 +755,20 @@
    aussi des fonctions permettant des calculs simples sur ces types en C,
    c'est-à-dire sans l'aide du serveur <productname>PostgreSQL</productname>.
    Par exemple&nbsp;:
-<programlisting>EXEC SQL BEGIN DECLARE SECTION;
+<programlisting><![CDATA[EXEC SQL BEGIN DECLARE SECTION;
    date date1;
    timestamp ts1, tsout;
    interval iv1;
    char *out;
 EXEC SQL END DECLARE SECTION;
 
-PGTYPESdate_today(&amp;date1);
+PGTYPESdate_today(&date1);
 EXEC SQL SELECT started, duration INTO :ts1, :iv1 FROM datetbl WHERE d=:date1;
-PGTYPEStimestamp_add_interval(&amp;ts1, &amp;iv1, &amp;tsout);
-out = PGTYPEStimestamp_to_asc(&amp;tsout);
+PGTYPEStimestamp_add_interval(&ts1, &iv1, &tsout);
+out = PGTYPEStimestamp_to_asc(&tsout);
 printf("Started + duration: %s\n", out);
 free(out);
-</programlisting>
+]]></programlisting>
   </para>
 
   <sect2>
@@ -3561,14 +3561,14 @@
 
        <para>
         Exemple d'appel de la fonction&nbsp;:
-<programlisting>$char c[] = "abc       ";
+<programlisting><![CDATA[$char c[] = "abc       ";
 $short s = 17;
 $int i = -74874;
 
 rsetnull(CCHARTYPE, (char *) c);
-rsetnull(CSHORTTYPE, (char *) &amp;s);
-rsetnull(CINTTYPE, (char *) &amp;i);
-</programlisting>
+rsetnull(CSHORTTYPE, (char *) &s);
+rsetnull(CINTTYPE, (char *) &i);
+]]></programlisting>
        </para>
       </listitem>
      </varlistentry>
@@ -3588,14 +3588,14 @@
        </para>
        <para>
         Exemple d'utilisation de la fonction&nbsp;:
-<programlisting>$char c[] = "abc       ";
+<programlisting><![CDATA[$char c[] = "abc       ";
 $short s = 17;
 $int i = -74874;
 
 risnull(CCHARTYPE, (char *) c);
-risnull(CSHORTTYPE, (char *) &amp;s);
-risnull(CINTTYPE, (char *) &amp;i);
-</programlisting>
+risnull(CSHORTTYPE, (char *) &s);
+risnull(CINTTYPE, (char *) &i);
+]]></programlisting>
        </para>
       </listitem>
      </varlistentry>
@@ -4180,7 +4180,7 @@
     struct
     {
         int sqlerrml;
-        char sqlerrmc[70];
+        char sqlerrmcSQLERRMC_LEN;
     } sqlerrm;
     char sqlerrp[8];
     long sqlerrd[6];
@@ -5070,10 +5070,10 @@
 EXEC SQL SELECT res INTO :resultat FROM matable WHERE index = :index;
 </programlisting>
     est traduit en&nbsp;:
-<programlisting>/* Processed by ecpg (2.6.0) */
+<programlisting><![CDATA[/* Processed by ecpg (2.6.0) */
 /* These two include files are added by the preprocessor */
-#include &lt;ecpgtype.h&gt;;
-#include &lt;ecpglib.h&gt;;
+#include <ecpgtype.h>;
+#include <ecpglib.h>;
 
 /* exec sql begin declare section */
 
@@ -5084,12 +5084,12 @@
 /* exec sql end declare section */
 ...
 ECPGdo(__LINE__, NULL, "SELECT res FROM matable WHERE index = ?     ",
-        ECPGt_int,&amp;(index),1L,1L,sizeof(int),
+        ECPGt_int,&(index),1L,1L,sizeof(int),
         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
-        ECPGt_int,&amp;(resultat),1L,1L,sizeof(int),
+        ECPGt_int,&(resultat),1L,1L,sizeof(int),
         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
 #line 147 "foo.pgc"
-</programlisting>
+]]></programlisting>
     (L'indentation a été ajoutée ici pour des raisons de lisibilité et n'est pas
     réalisée par le préprocesseur)
    </para>

Modified: traduc/trunk/postgresql/errcodes.xml
===================================================================
--- traduc/trunk/postgresql/errcodes.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/errcodes.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -69,14 +69,14 @@
  <tgroup cols="3">
   <colspec colnum="1" colwidth="0.5*" colname="errorcode"/>
   <colspec colnum="2" colwidth="1.2*"/>
-  <colspec colnum="3" colwidth="1.3*" colname="constant"/>
-  <spanspec namest="errorcode" nameend="constant" spanname="span13"/>
+  <colspec colnum="3" colwidth="1.3*" colname="condname"/>
+  <spanspec namest="errorcode" nameend="condname" spanname="span13"/>
 
   <thead>
    <row>
     <entry>Code erreur</entry>
     <entry>Signification</entry>
-    <entry>Constante</entry>
+    <entry>Nom de condition</entry>
    </row>
   </thead>
 
@@ -311,6 +311,17 @@
 
 
 <row>
+<entry spanname="span13"><emphasis role="bold">Class 20 &mdash; Case Not Found</></entry>
+</row>
+
+<row>
+<entry><literal>20000</literal></entry>
+<entry>CASE NOT FOUND</entry>
+<entry>case_not_found</entry>
+</row>
+
+
+<row>
 <entry spanname="span13"><emphasis role="bold">Class 21 &mdash; Violation de
 cardinalité</emphasis></entry>
 </row>
@@ -388,6 +399,18 @@
 </row>
 
 <row>
+<entry><literal>22014</literal></entry>
+<entry>INVALID ARGUMENT FOR NTILE FUNCTION</entry>
+<entry>invalid_argument_for_ntile_function</entry>
+</row>
+
+<row>
+<entry><literal>22016</literal></entry>
+<entry>INVALID ARGUMENT FOR NTH_VALUE FUNCTION</entry>
+<entry>invalid_argument_for_nth_value_function</entry>
+</row>
+
+<row>
 <entry><literal>2201F</literal></entry>
 <entry>INVALID ARGUMENT FOR POWER FUNCTION</entry>
 <entry>invalid_argument_for_power_function</entry>
@@ -442,12 +465,6 @@
 </row>
 
 <row>
-<entry><literal>22020</literal></entry>
-<entry>INVALID LIMIT VALUE</entry>
-<entry>invalid_limit_value</entry>
-</row>
-
-<row>
 <entry><literal>22023</literal></entry>
 <entry>INVALID PARAMETER VALUE</entry>
 <entry>invalid_parameter_value</entry>
@@ -460,6 +477,18 @@
 </row>
 
 <row>
+<entry><literal>2201W</literal></entry>
+<entry>INVALID ROW COUNT IN LIMIT CLAUSE</entry>
+<entry>invalid_row_count_in_limit_clause</entry>
+</row>
+
+<row>
+<entry><literal>2201X</literal></entry>
+<entry>INVALID ROW COUNT IN RESULT OFFSET CLAUSE</entry>
+<entry>invalid_row_count_in_result_offset_clause</entry>
+</row>
+
+<row>
 <entry><literal>22009</literal></entry>
 <entry>INVALID TIME ZONE DISPLACEMENT VALUE</entry>
 <entry>invalid_time_zone_displacement_value</entry>
@@ -1018,6 +1047,18 @@
 </row>
 
 <row>
+<entry><literal>42P20</literal></entry>
+<entry>WINDOWING ERROR</entry>
+<entry>windowing_error</entry>
+</row>
+
+<row>
+<entry><literal>42P19</literal></entry>
+<entry>INVALID RECURSION</entry>
+<entry>invalid_recursion</entry>
+</row>
+
+<row>
 <entry><literal>42830</literal></entry>
 <entry>INVALID FOREIGN KEY</entry>
 <entry>invalid_foreign_key</entry>

Modified: traduc/trunk/postgresql/extend.xml
===================================================================
--- traduc/trunk/postgresql/extend.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/extend.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -263,6 +263,16 @@
      est équivalent à la déclarer <literal>f(anyenum, anyenum)</literal>&nbsp;:
      les deux arguments réels doivent être du même type enum.
     </para>
+
+    <para>
+     A variadic function (one taking a variable number of arguments, as in
+     <xref linkend="xfunc-sql-variadic-functions">) can be
+     polymorphic: this is accomplished by declaring its last parameter as
+     <literal>VARIADIC</> <type>anyarray</>.  For purposes of argument
+     matching and determining the actual result type, such a function behaves
+     the same as if you had written the appropriate number of
+     <type>anynonarray</> parameters.
+    </para>
   </sect2>
  </sect1>
 

Modified: traduc/trunk/postgresql/features.xml
===================================================================
--- traduc/trunk/postgresql/features.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/features.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -17,9 +17,9 @@
  <para>
   Le nom complet du standard SQL est ISO/IEC 9075 <quote>Database Language
   SQL</quote>. Le standard est modifié de temps en temps. La mise à jour
-  complète la plus récente apparaît en 2003, avec une mise à jour partielle
-  en 2006. La version 2003 est référencée ISO/IEC 9075:2003, ou plus simplement
-  SQL:2003. Les versions antérieures étaient SQL:1999 et SQL-92.
+  la plus récente apparaît en 2008. La version 2008 est référencée ISO/IEC
+  9075:2008, ou plus simplement SQL:2008. Les versions antérieures étaient
+  SQL:2003, SQL:1999 et SQL-92.
   Chaque version remplace la précédente. Il n'y a donc aucun mérite à revendiquer
   une compatibilité avec une version antérieure du standard.
  </para>
@@ -60,45 +60,48 @@
  </para>
 
  <para>
-  Le standard <acronym>SQL:2003</acronym> est également divisé en parties. 
+  Les standards <acronym>SQL:2008</acronym> et <acronym>SQL:2003</acronym> sont
+  également divisé en parties. 
   Chacune est connue par un pseudonyme. Leur numérotation n'est pas
   consécutive&nbsp;:
 
   <itemizedlist>
-   <listitem><para>ISO/IEC 9075-1 Framework (SQL/Framework)</para></listitem>
-   <listitem><para>ISO/IEC 9075-2 Foundation (SQL/Foundation)</para></listitem>
-   <listitem><para>ISO/IEC 9075-3 Call Level Interface (SQL/CLI)</para></listitem>
-   <listitem><para>ISO/IEC 9075-4 Persistent Stored Modules (SQL/PSM)</para></listitem>
-   <listitem><para>ISO/IEC 9075-9 Management of External Data (SQL/MED)</para></listitem>
-   <listitem><para>ISO/IEC 9075-10 Object Language Bindings (SQL/OLB)</para></listitem>
-   <listitem><para>ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata)</para></listitem>
-   <listitem><para>ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT)</para></listitem>
-   <listitem><para>ISO/IEC 9075-14 XML-related specifications (SQL/XML)</para></listitem>
+   <listitem><para>ISO/IEC 9075-1 Framework (SQL/Framework)</para><indexterm><primary>SQL/Framework</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-2 Foundation (SQL/Foundation)</para><indexterm><primary>SQL/Foundation</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-3 Call Level Interface (SQL/CLI)</para><indexterm><primary>SQL/CLI</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-4 Persistent Stored Modules (SQL/PSM)</para><indexterm><primary>SQL/PSM</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-9 Management of External Data (SQL/MED)</para><indexterm><primary>SQL/MED</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-10 Object Language Bindings (SQL/OLB)</para><indexterm><primary>SQL/OLB</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata)</para><indexterm><primary>SQL/Schemata</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT)</para><indexterm><primary>SQL/JRT</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-14 XML-related specifications (SQL/XML)</para><indexterm><primary>SQL/XML</primary></indexterm></listitem>
   </itemizedlist>
  </para>
 
  <para>
-  <productname>PostgreSQL</productname> couvre les parties 1, 2, 11 et 14. La
-  partie 3 est similaire à l'interface ODBC et la partie 4 au
-  langage de programmation <application>PL/pgSQL</application>. Une conformité
-  exacte n'est pas spécifiquement voulue ou vérifiée pour ces parties.
+  <productname>PostgreSQL</productname> couvre les parties 1, 2, 9, 11 et 14. La
+  partie 3 est couverte par l'interface ODBC, and part 13 is
+  covered by the PL/Java plug-in, but exact conformance is currently
+  not being verified for these components.  There are currently no
+  implementations of parts 4 and 10
+  for <productname>PostgreSQL</productname>.
  </para>
 
  <para>
-  PostgreSQL supporte la plupart des fonctionnalités majeures de SQL:2003. Sur
-  les 164 fonctionnalités requises pour une conformité 
+  PostgreSQL supporte la plupart des fonctionnalités majeures de SQL:2008. Sur
+  les 179 fonctionnalités requises pour une conformité 
   &laquo;&nbsp;centrale&nbsp;&raquo; complète (<foreignphrase>full Core
   conformance</foreignphrase>), PostgreSQL se conforme à plus de
-  150. De plus, il existe une longue liste de
+  160. De plus, il existe une longue liste de
   fonctionnalités optionelles supportées. À la date de rédaction de ce
   document, aucune version de quelque système de gestion de bases de
-  données que ce soit n'affiche une totale conformité à SQL:2003 &laquo;&nbsp;centrale&nbsp;&raquo;.
+  données que ce soit n'affiche une totale conformité au c½ur de SQL:2008.
  </para>
 
  <para>
   Les deux sections qui suivent présentent la liste des 
   fonctionnalités supportées par <productname>PostgreSQL</productname> et
-  celle des fonctionnalités définies dans <acronym>SQL:2003</acronym> qui
+  celle des fonctionnalités définies dans <acronym>SQL:2008</acronym> qui
   ne sont pas encore prises en compte. Ces deux listes sont
   approximatives&nbsp;: certains détails d'une fonctionnalité présentée comme
   supportée peuvent ne pas être conformes, alors que de grandes parties d'une
@@ -146,7 +149,7 @@
    <title>Fonctionnalités non supportées</title>
 
    <para>
-   Les fonctionnalités suivantes définies dans <acronym>SQL:2003</acronym> ne
+   Les fonctionnalités suivantes définies dans <acronym>SQL:2008</acronym> ne
    sont pas implantées dans cette version de
    <productname>PostgreSQL</productname>. Dans certains cas, des fonctionnalités
    similaires sont disponibles.

Modified: traduc/trunk/postgresql/filelist.xml
===================================================================
--- traduc/trunk/postgresql/filelist.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/filelist.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -96,8 +96,11 @@
 <!-- contrib information -->
 <!ENTITY contrib         SYSTEM "contrib.xml">
 <!ENTITY adminpack       SYSTEM "adminpack.xml">
+<!entity auto-explain    SYSTEM "auto-explain.sgml">
+<!entity btree-gin       SYSTEM "btree-gin.sgml">
 <!ENTITY btree-gist      SYSTEM "btree-gist.xml">
 <!ENTITY chkpass         SYSTEM "chkpass.xml">
+<!entity citext          SYSTEM "citext.sgml">
 <!ENTITY cube            SYSTEM "cube.xml">
 <!ENTITY dblink          SYSTEM "dblink.xml">
 <!ENTITY dict-int        SYSTEM "dict-int.xml">
@@ -118,6 +121,7 @@
 <!ENTITY pgfreespacemap  SYSTEM "pgfreespacemap.xml">
 <!ENTITY pgrowlocks      SYSTEM "pgrowlocks.xml">
 <!ENTITY pgstandby       SYSTEM "pgstandby.xml">
+<!entity pgstatstatements SYSTEM "pgstatstatements.sgml">
 <!ENTITY pgstattuple     SYSTEM "pgstattuple.xml">
 <!ENTITY pgtrgm          SYSTEM "pgtrgm.xml">
 <!ENTITY seg             SYSTEM "seg.xml">

Modified: traduc/trunk/postgresql/fuzzystrmatch.xml
===================================================================
--- traduc/trunk/postgresql/fuzzystrmatch.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/fuzzystrmatch.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -16,6 +16,13 @@
   permettent de déterminer les similarités et la distance entre des chaînes.
  </para>
 
+ <caution>
+  <para>
+   At present, <filename>fuzzystrmatch</> does not work well with
+   multi-byte encodings (such as UTF-8).
+  </para>
+ </caution>
+
  <sect2>
   <title>Soundex</title>
   <para>
@@ -74,14 +81,18 @@
    Cette fonction calcule la distance de Levenshtein entre deux chaînes&nbsp;:
   </para>
   <programlisting>
+   levenshtein(text source, text target, int ins_cost, int del_cost, int sub_cost) returns int
    levenshtein(text source, text target) returns int
   </programlisting>
   <para>
    La <literal>source</literal> et la cible (<literal>target</literal>)
-   sont des chaînes quelconques non NULL de 255 caractères au maximum.
+   sont des chaînes quelconques non NULL de 255 bytes.  The cost parameters
+   specify how much to charge for a character insertion, deletion, or
+   substitution, respectively.  You can omit the cost parameters, as in
+   the second version of the function; in that case they all default to 1.
   </para>
   <para>
-   Exemple&nbsp;:
+   Exemples&nbsp;:
   </para>
   <programlisting>
 test=# SELECT levenshtein('GUMBO', 'GAMBOL');
@@ -89,6 +100,12 @@
 -------------
            2
 (1 row)
+
+test=# SELECT levenshtein('GUMBO', 'GAMBOL', 2,1,1);
+ levenshtein
+-------------
+           3
+(1 row)
   </programlisting>
  </sect2>
 

Modified: traduc/trunk/postgresql/gin.xml
===================================================================
--- traduc/trunk/postgresql/gin.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/gin.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -63,7 +63,7 @@
 
  <para>
    Pour obtenir une méthode d'accès <acronym>GIN</acronym>
-   fonctionnelle, il suffit d'implanter quatre méthodes utilisateur. Celles-ci
+   fonctionnelle, il suffit d'implanter quatre (ou cinq) méthodes utilisateur. Celles-ci
    définissent le comportement des clés dans l'arbre
    et les relations entre clés, valeurs indexées et requêtes
    indexables. En résumé, <acronym>GIN</acronym> combine extensibilité,
@@ -72,7 +72,7 @@
  </para>
 
  <para>
-   Les quatre méthodes qu'une classe d'opérateur d'index
+   Les quatre méthodes qu'une classe d'opérateur
    <acronym>GIN</acronym> doit fournir sont&nbsp;:
  </para>
 
@@ -89,7 +89,7 @@
     </varlistentry>
 
     <varlistentry>
-     <term>Datum* extractValue(Datum inputValue, int32 *nkeys)</term>
+     <term>Datum *extractValue(Datum inputValue, int32 *nkeys)</term>
      <listitem>
       <para>
 	   Renvoie un tableau de clés à partir d'une valeur à indexer. Le nombre
@@ -99,8 +99,8 @@
     </varlistentry>
 
     <varlistentry>
-     <term>Datum* extractQuery(Datum query, int32 *nkeys,
-		StrategyNumber n)</term>
+     <term>Datum *extractQuery(Datum query, int32 *nkeys,
+		StrategyNumber n, bool **pmatch, Pointer **extra_data)</term>
      <listitem>
       <para>
        Renvoie un tableau de clés en fonction de la valeur à requêter&nbsp;; c'est-à-dire
@@ -113,39 +113,101 @@
        <literal>query</literal> et les valeurs de clés à extraire.
        Le nombre de clés renvoyées doit être stocké dans
        <literal>*nkeys</literal>.
-       Si le nombre de clés est égal à zéro, alors <function>extractQuery</function>
-       doit enregistrer 0 ou -1 dans <literal>*nkeys</literal>. 0 signifie que
-       toutes les lignes répondent à la <literal>requête</literal> et qu'un
-       parcours séquentiel doit être lancé. -1 signifie que rien ne satisfait
-       la requête (<literal>query</literal>). Le choix de la valeur est basé
-       sur la signification sémantique de l'opération correspondant au numéro de
-       stratégie indiqué.
+       If the query contains no keys then <function>extractQuery</>
+       should store 0 or -1 into <literal>*nkeys</>, depending on the
+       semantics of the operator.  0 means that every
+       value matches the <literal>query</> and a full-index scan should be
+       performed (but see <xref linkend="gin-limit">).
+       -1 means that nothing can match the <literal>query</>, and
+       so the index scan can be skipped entirely.
+       <literal>pmatch</> is an output argument for use when partial match
+       is supported.  To use it, <function>extractQuery</> must allocate
+       an array of <literal>*nkeys</> booleans and store its address at
+       <literal>*pmatch</>.  Each element of the array should be set to TRUE
+       if the corresponding key requires partial match, FALSE if not.
+       If <literal>*pmatch</> is set to NULL then GIN assumes partial match
+       is not required.  The variable is initialized to NULL before call,
+       so this argument can simply be ignored by operator classes that do
+       not support partial match.
+       <literal>extra_data</> is an output argument that allows
+       <function>extractQuery</> to pass additional data to the
+       <function>consistent</> and <function>comparePartial</> methods.
+       To use it, <function>extractQuery</> must allocate
+       an array of <literal>*nkeys</> Pointers and store its address at
+       <literal>*extra_data</>, then store whatever it wants to into the
+       individual pointers.  The variable is initialized to NULL before
+       call, so this argument can simply be ignored by operator classes that
+       do not require extra data.  If <literal>*extra_data</> is set, the
+       whole array is passed to the <function>consistent</> method, and
+       the appropriate element to the <function>comparePartial</> method.
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term>bool consistent(bool check[], StrategyNumber n, Datum query)</term>
+     <term>bool consistent(bool check[], StrategyNumber n, Datum query,
+                           int32 nkeys, Pointer extra_data[], bool *recheck)</term>
      <listitem>
       <para>
-       Renvoie TRUE si la valeur indexée satisfait l'opérateur de la requête
-       pour le numéro de stratégie <literal>n</literal> (ou peut satisfaire
-       si l'opérateur est marqué RECHECK dans la classe d'opérateur).
-       Le tableau <literal>check</literal> a la même longueur que le nombre de
-       clés précédemment renvoyées par <function>extractQuery</function> pour
-       cette requête. Chaque élément du tableau <literal>check</literal> est
+       Returns TRUE if the indexed value satisfies the query operator with
+       strategy number <literal>n</> (or might satisfy, if the recheck
+       indication is returned).  The <literal>check</> array has length
+       <literal>nkeys</>, which is the same as the number of keys previously
+       returned by <function>extractQuery</> for this <literal>query</> datum.
+       Chaque élément du tableau <literal>check</literal> est
        TRUE si la valeur indexée contient la clé correspondante de la requête,
        c'est-à-dire que si (check[i] == TRUE), la i-ème clé du tableau résultant
        d'<function>extractQuery</function> est présente dans la valeur indexée.
        Le datum <literal>query</literal> d'origine (pas le tableau de clés
        extrait&nbsp;!) est passé au cas où la méthode
        <function>consistent</function> a besoin de le consulter.
+       <literal>extra_data</> is the extra-data array returned by
+       <function>extractQuery</>, or NULL if none.
+       On success, <literal>*recheck</> should be set to TRUE if the heap
+       tuple needs to be rechecked against the query operator, or FALSE if
+       the index test is exact.
       </para>
      </listitem>
     </varlistentry>
 
   </variablelist>
 
+
+ <para>
+  Optionally, an operator class for
+  <acronym>GIN</acronym> can supply a fifth method:
+ </para>
+
+  <variablelist>
+
+    <varlistentry>
+     <term>int comparePartial(Datum partial_key, Datum key, StrategyNumber n,
+                              Pointer extra_data)</term>
+     <listitem>
+      <para>
+       Compare a partial-match query to an index key.  Returns an integer
+       whose sign indicates the result: less than zero means the index key
+       does not match the query, but the index scan should continue; zero
+       means that the index key does match the query; greater than zero
+       indicates that the index scan should stop because no more matches
+       are possible.  The strategy number <literal>n</> of the operator
+       that generated the partial match query is provided, in case its
+       semantics are needed to determine when to end the scan.  Also,
+       <literal>extra_data</> is the corresponding element of the extra-data
+       array made by <function>extractQuery</>, or NULL if none.
+      </para>
+     </listitem>
+    </varlistentry>
+
+  </variablelist>
+
+ <para>
+  To support <quote>partial match</> queries, an operator class must
+  provide the <function>comparePartial</> method, and its
+  <function>extractQuery</> method must set the <literal>pmatch</>
+  parameter when a partial-match query is encountered.  See
+  <xref linkend="gin-partial-match"> for details.
+ </para>
 </sect1>
 
 <sect1 id="gin-implementation">
@@ -159,6 +221,63 @@
   pointeurs heap (PL, posting list) si la liste est suffisamment petite.
  </para>
 
+ <sect2 id="gin-fast-update">
+  <title>GIN fast update technique</title>
+
+  <para>
+   Updating a <acronym>GIN</acronym> index tends to be slow because of the
+   intrinsic nature of inverted indexes: inserting or updating one heap row
+   can cause many inserts into the index (one for each key extracted
+   from the indexed value). As of <productname>PostgreSQL</productname> 8.4,
+   <acronym>GIN</> is capable of postponing much of this work by inserting
+   new tuples into a temporary, unsorted list of pending entries.
+   When the table is vacuumed, or if the pending list becomes too large
+   (larger than <xref linkend="guc-work-mem">), the entries are moved to the
+   main <acronym>GIN</acronym> data structure using the same bulk insert
+   techniques used during initial index creation.  This greatly improves
+   <acronym>GIN</acronym> index update speed, even counting the additional
+   vacuum overhead.  Moreover the overhead can be done by a background
+   process instead of in foreground query processing.
+  </para>
+
+  <para>
+   The main disadvantage of this approach is that searches must scan the list
+   of pending entries in addition to searching the regular index, and so
+   a large list of pending entries will slow searches significantly.
+   Another disadvantage is that, while most updates are fast, an update
+   that causes the pending list to become <quote>too large</> will incur an
+   immediate cleanup cycle and thus be much slower than other updates.
+   Proper use of autovacuum can minimize both of these problems.
+  </para>
+
+  <para>
+   If consistent response time is more important than update speed,
+   use of pending entries can be disabled by turning off the
+   <literal>FASTUPDATE</literal> storage parameter for a
+   <acronym>GIN</acronym> index.  See <xref linkend="sql-createindex"
+   endterm="sql-createindex-title"> for details.
+  </para>
+ </sect2>
+
+ <sect2 id="gin-partial-match">
+  <title>Partial match algorithm</title>
+
+  <para>
+   GIN can support <quote>partial match</> queries, in which the query
+   does not determine an exact match for one or more keys, but the possible
+   matches fall within a reasonably narrow range of key values (within the
+   key sorting order determined by the <function>compare</> support method).
+   The <function>extractQuery</> method, instead of returning a key value
+   to be matched exactly, returns a key value that is the lower bound of
+   the range to be searched, and sets the <literal>pmatch</> flag true.
+   The key range is then searched using the <function>comparePartial</>
+   method.  <function>comparePartial</> must return zero for an actual
+   match, less than zero for a non-match that is still within the range
+   to be searched, or greater than zero if the index key is past the range
+   that could match.
+  </para>
+ </sect2>
+
 </sect1>
 
 <sect1 id="gin-tips">
@@ -169,12 +288,19 @@
    <term>Création vs insertion</term>
    <listitem>
 	<para>
-	 Dans la plupart des cas, l'insertion dans un index <acronym>GIN</acronym>
-	 est lente du fait de la probabilité d'insertion de nombreuses clés pour
+	 L'insertion dans un index <acronym>GIN</acronym> peut être
+	 lente du fait de la probabilité d'insertion de nombreuses clés pour
 	 chaque valeur. C'est pourquoi, pour les chargements massifs dans une table, il
 	 est conseillé de supprimer l'index GIN et de le re-créer après
 	 le chargement.
 	</para>
+
+    <para>
+     As of <productname>PostgreSQL</productname> 8.4, this advice is less
+     necessary since delayed indexing is used (see <xref
+     linkend="gin-fast-update"> for details).  But for very large updates
+     it may still be best to drop and recreate the index.
+    </para>
    </listitem>
   </varlistentry>
 
@@ -191,6 +317,23 @@
   </varlistentry>
 
   <varlistentry>
+   <term><xref linkend="guc-work-mem"></term>
+   <listitem>
+    <para>
+     During a series of insertions into an existing <acronym>GIN</acronym>
+     index that has <literal>FASTUPDATE</> enabled, the system will clean up
+     the pending-entry list whenever it grows larger than
+     <varname>work_mem</>.  To avoid fluctuations in observed response time,
+     it's desirable to have pending-list cleanup occur in the background
+     (i.e., via autovacuum).  Foreground cleanup operations can be avoided by
+     increasing <varname>work_mem</> or making autovacuum more aggressive.
+     However, enlarging <varname>work_mem</> means that if a foreground
+     cleanup does occur, it will take even longer.
+    </para>
+   </listitem>
+  </varlistentry>
+
+  <varlistentry>
    <term><xref linkend="guc-gin-fuzzy-search-limit"/></term>
    <listitem>
 	<para>
@@ -229,33 +372,45 @@
  <title>Limitations</title>
 
  <para>
-  <acronym>GIN</acronym> ne supporte pas les parcours d'index complets&nbsp;:
-  comme il y a souvent de nombreuses clés par valeur, chaque pointeur de pile
-  serait renvoyé plusieurs fois, or il n'existe pas de moyen simple d'empêcher
-  cela.
+  <acronym>GIN</acronym> doesn't support full index scans.  The reason for
+  this is that <function>extractValue</> is allowed to return zero keys,
+  as for example might happen with an empty string or empty array.  In such
+  a case the indexed value will be unrepresented in the index.  It is
+  therefore impossible for <acronym>GIN</acronym> to guarantee that a
+  scan of the index can find every row in the table.
  </para>
 
  <para>
-  Quand <function>extractQuery</function> ne renvoie aucune clé,
-  <acronym>GIN</acronym> émet une erreur. En fonction de l'opérateur, une requête
-  vide peut correspondre à toutes, quelques, ou aucune des valeurs indexées (par
-  exemple, tout tableau contient le tableau vide mais ne recouvre pas le
-  tableau vide). <acronym>GIN</acronym> ne peut alors pas déterminer la bonne
-  réponse, pas plus qu'il ne peut fournir un résultat de parcours d'index
-  complet en déterminant la justesse de cette opération.
+  Because of this limitation, when <function>extractQuery</function> returns
+  <literal>nkeys = 0</> to indicate that all values match the query,
+  <acronym>GIN</acronym> will emit an error.  (If there are multiple ANDed
+  indexable operators in the query, this happens only if they all return zero
+  for <literal>nkeys</>.)
  </para>
 
  <para>
-  Qu'<function>extractValue</function> ne retourne aucune clé n'est pas une
-  erreur, mais dans ce cas, la valeur indexée n'est pas représentée dans l'index. C'est une
-  autre raison pour laquelle le parcours d'index complet est inutile &mdash;
-  il manquerait ce type de lignes.
+  It is possible for an operator class to circumvent the restriction against
+  full index scan.  To do that, <function>extractValue</> must return at least
+  one (possibly dummy) key for every indexed value, and
+  <function>extractQuery</function> must convert an unrestricted search into
+  a partial-match query that will scan the whole index.  This is inefficient
+  but might be necessary to avoid corner-case failures with operators such
+  as <literal>LIKE</> or subset inclusion.
  </para>
 
  <para>
-  <acronym>GIN</acronym> ne recherche les clés que par égalité. Cela doit être
-  amélioré.
+  <acronym>GIN</acronym> assumes that indexable operators are strict.
+  This means that <function>extractValue</> will not be called at all on
+  a NULL value (so the value will go unindexed), and
+  <function>extractQuery</function> will not be called on a NULL comparison
+  value either (instead, the query is presumed to be unmatchable).
  </para>
+
+ <para>
+  A possibly more serious limitation is that <acronym>GIN</acronym> cannot
+  handle NULL keys &mdash; for example, an array containing a NULL cannot
+  be handled except by ignoring the NULL.
+ </para>
 </sect1>
 
 <sect1 id="gin-examples">
@@ -265,12 +420,21 @@
   Les sources de <productname>PostgreSQL</productname> incluent
   des classes d'opérateur <acronym>GIN</acronym> pour <type>tsvector</type> et
   pour les tableaux unidimensionnel de tous
-  les types internes. Les modules <filename>contrib</filename> suivants
+  les types internes. Prefix searching in
+  <type>tsvector</> is implemented using the <acronym>GIN</> partial match
+  feature. Les modules <filename>contrib</filename> suivants
   contiennent aussi des classes d'opérateurs <acronym>GIN</acronym>&nbsp;:
  </para>
  
  <variablelist>
   <varlistentry>
+   <term>btree-gin</term>
+   <listitem>
+    <para>B-Tree equivalent functionality for several data types</para>
+   </listitem>
+  </varlistentry>
+
+  <varlistentry>
    <term>hstore</term>
    <listitem>
     <para>Module pour le stockage des paires (clé, valeur)</para>

Modified: traduc/trunk/postgresql/gist.xml
===================================================================
--- traduc/trunk/postgresql/gist.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/gist.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -120,7 +120,10 @@
        requête utilisateur <literal>q</literal> données, cette méthode retourne
        faux si <literal>p</literal> et <literal>q</literal> ne peuvent pas
        être simultanément vrais pour un élément de
-       données particulier.
+       données particulier. For a true result, a
+       <literal>recheck</> flag must also be returned; this indicates whether
+       the predicate implies the query (<literal>recheck</> = false) or
+       not (<literal>recheck</> = true).
       </para>
      </listitem>
     </varlistentry>

Modified: traduc/trunk/postgresql/high-availability.xml
===================================================================
--- traduc/trunk/postgresql/high-availability.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/high-availability.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -239,6 +239,7 @@
     communique alors périodiquement avec les autres serveurs pour identifier les transactions
     conflictuelles. La gestion des conflits est alors confiée aux utilisateurs
     ou à un système de règles de résolution.
+     Bucardo is an example of this type of replication.
    </para>
   </listitem>
  </varlistentry>
@@ -334,8 +335,30 @@
    <tbody>
 
     <row>
-     <entry>Ne requiert aucun matériel spécial</entry>
+     <entry>Most Common Implementation</entry>
+     <entry align="center">NAS</entry>
+     <entry align="center">DRBD</entry>
+     <entry align="center">PITR</entry>
+     <entry align="center">Slony</entry>
+     <entry align="center">pgpool-II</entry>
+     <entry align="center">Bucardo</entry>
      <entry align="center"></entry>
+    </row>
+
+    <row>
+     <entry>Méthode de communication</entry>
+     <entry align="center">Disque partagé</entry>
+     <entry align="center">Blocs disque</entry>
+     <entry align="center">WAL</entry>
+     <entry align="center">Lignes de tables</entry>
+     <entry align="center">SQL</entry>
+     <entry align="center">Lignes de tables</entry>
+     <entry align="center">Lignes de tables et verrous de ligne</entry>
+    </row>
+
+    <row>
+     <entry>No special hardware required</entry>
+     <entry align="center"></entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
@@ -345,7 +368,7 @@
     </row>
 
     <row>
-     <entry>Autorise plusieurs serveurs maîtres</entry>
+     <entry>Allows multiple master servers</entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
@@ -356,7 +379,7 @@
     </row>
 
     <row>
-     <entry>Pas de surcharge sur le serveur maître</entry>
+     <entry>No master server overhead</entry>
      <entry align="center">&bull;</entry>
      <entry align="center"></entry>
      <entry align="center">&bull;</entry>
@@ -367,7 +390,7 @@
     </row>
 
     <row>
-     <entry>Pas d'attente entre serveurs</entry>
+     <entry>No waiting for multiple servers</entry>
      <entry align="center">&bull;</entry>
      <entry align="center"></entry>
      <entry align="center">&bull;</entry>
@@ -378,7 +401,7 @@
     </row>
 
     <row>
-     <entry>Pas de perte de données en cas de panne du maître</entry>
+     <entry>Master failure will never lose data</entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
      <entry align="center"></entry>
@@ -389,7 +412,7 @@
     </row>
 
     <row>
-     <entry>Les esclaves acceptent les requêtes en lecture seule</entry>
+     <entry>Slaves accept read-only queries</entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
@@ -400,7 +423,7 @@
     </row>
 
     <row>
-     <entry>Granularité de niveau table</entry>
+     <entry>Per-table granularity</entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
@@ -411,7 +434,7 @@
     </row>
 
     <row>
-     <entry>Ne nécessite pas de résolution de conflit</entry>
+     <entry>No conflict resolution necessary</entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
@@ -421,17 +444,6 @@
      <entry align="center">&bull;</entry>
     </row>
 
-    <row>
-     <entry>Méthode de communication</entry>
-     <entry align="center">Disque partagé</entry>
-     <entry align="center">Blocs disque</entry>
-     <entry align="center">WAL</entry>
-     <entry align="center">Lignes de tables</entry>
-     <entry align="center">SQL</entry>
-     <entry align="center">Lignes de tables</entry>
-     <entry align="center">Lignes de tables et verrous de ligne</entry>
-    </row>
-
    </tbody>
   </tgroup>
  </table>

Modified: traduc/trunk/postgresql/indexam.xml
===================================================================
--- traduc/trunk/postgresql/indexam.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/indexam.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -45,7 +45,9 @@
    de plusieurs versions de la même ligne logique&nbsp;; pour un index, chaque ligne
    est un objet indépendant qui a besoin de sa propre entrée dans l'index. Du
    coup, la mise à jour d'une ligne crée toujours toutes les nouvelles entrées
-   d'index pour la ligne, même si les valeurs de la clé ne changent pas. Les
+   d'index pour la ligne, même si les valeurs de la clé ne changent pas.
+   (HOT tuples are an exception to this
+   statement; but indexes do not deal with those, either.) Les
    entrées d'index pour les lignes mortes sont réclamées (par le VACUUM) lorsque
    les lignes mortes elles-même sont réclamées.
   </para>
@@ -192,8 +194,8 @@
    <literal>heapRelation</literal> est nécessaire dans la méthode d'accès.
    Voir <xref linkend="index-unique-checks"/> pour les détails. Le résultat vaut
    TRUE si une entrée de l'index a été insérée, FALSE sinon. (Un résultat FALSE
-   n'indique pas une erreur, car il est utilisé dans divers cas, dont l'index AM
-   qui refuse d'indexer une valeur NULL.)
+   n'indique pas une erreur, car il est utilisé dans divers cas, dont la méthode
+   d'indexage qui refuse d'indexer une valeur NULL.)
   </para>
 
   <para>
@@ -250,6 +252,16 @@
   </para>
 
   <para>
+   As of <productname>PostgreSQL</productname> 8.4,
+   <function>amvacuumcleanup</> will also be called at completion of an
+   <command>ANALYZE</> operation.  In this case <literal>stats</> is always
+   NULL and any return value will be ignored.  This case can be distinguished
+   by checking <literal>info-&gt;analyze_only</literal>.  It is recommended
+   that the access method do nothing except post-insert cleanup in such a
+   call, and that only in an autovacuum worker process.
+  </para>
+
+  <para>
 <programlisting>
 void
 amcostestimate (PlannerInfo *root,
@@ -279,8 +291,8 @@
    La fonction construit une valeur de type <type>bytea</type> à
    copier dans le champ <structfield>rd_options</structfield> de l'entrée relcache
    de l'index. Les données contenues dans la valeur <type>bytea</type> sont
-   définies par la méthode d'accès, mais les méthodes d'accès standard utilisent actuellement
-   toutes la structure <structname>StdRdOptions</structname>.
+   définies par la méthode d'accès. La plupart des méthodes d'accès standard utilisent
+   la structure <structname>StdRdOptions</structname>.
    Lorsque <parameter>validate</parameter> est true, la fonction remonte
    un message d'erreur clair si une option n'est pas reconnue ou a des
    valeurs invalides&nbsp;; quand <parameter>validate</parameter> est false, les
@@ -299,8 +311,9 @@
    (<foreignphrase>qualifier</foreignphrase>) ou <firstterm>clé de
    parcours</firstterm> (<foreignphrase>scan key</foreignphrase>). La sémantique
    du parcours d'index est décrite plus complètement dans <xref linkend="index-scanning"/>,
-   ci-dessous. Les fonctions liées au parcours qu'une méthode d'accès à
-   l'index doit fournir sont&nbsp;:
+   ci-dessous. An index access method can support <quote>plain</> index scans,
+   <quote>bitmap</> index scans, or both. Les fonctions liées au parcours qu'une méthode d'accès à
+   l'index doit ou devrait fournir sont&nbsp;:
   </para>
 
   <para>
@@ -331,32 +344,56 @@
    <literal>scan</literal>. <quote>success</quote> signifie uniquement que
    l'index contient une entrée qui correspond aux clés de parcours, pas que
    la ligne existe toujours dans la pile ou qu'elle peut réussir le test
-   d'instantané de l'appelant.
+   d'instantané de l'appelant.On success, <function>amgettuple</>
+   must also set <literal>scan-&gt;xs_recheck</> to TRUE or FALSE.
+   FALSE means it is certain that the index entry matches the scan keys.
+   TRUE means this is not certain, and the conditions represented by the
+   scan keys must be rechecked against the heap tuple after fetching it.
+   This provision supports <quote>lossy</> index operators.
+   Note that rechecking will extend only to the scan conditions; a partial
+   index predicate (if any) is never rechecked by <function>amgettuple</>
+   callers.
   </para>
 
   <para>
-<programlisting>boolean
-amgetmulti (IndexScanDesc scan,
-            ItemPointer tids,
-            int32 max_tids,
-            int32 *returned_tids);
+   The <function>amgettuple</> function need only be provided if the access
+   method supports <quote>plain</> index scans.  If it doesn't, the
+   <structfield>amgettuple</> field in its <structname>pg_am</> row must
+   be set to zero.
+  </para>
+
+  <para>
+<programlisting>
+int64
+amgetbitmap (IndexScanDesc scan,
+             TIDBitmap *tbm);
 </programlisting>
-   Récupérer plusieurs lignes d'un parcours donné. Renvoie TRUE si le parcours
-   peut continuer, FALSE s'il ne subsiste plus aucune ligne.
-   <literal>tids</literal> pointe sur un tableau fournit par l'appelant de
-   <literal>max_tids</literal> enregistrements <structname>ItemPointerData</structname>,
-   remplit, à l'appel, des TID des lignes correspondantes. <literal>*returned_tids</literal> est
-   initialisé au nombre de TID réellement renvoyés. Il peut y en avoir moins
-   que <literal>max_tids</literal>, voire zéro, même si la valeur de retour vaut
-   TRUE. (Cette provision permet à la méthode d'accès de choisir les points d'arrêt les
-   plus efficaces dans son parcours, par exemple les limites de la page d'index).
-   <function>amgetmulti</function> et <function>amgettuple</function> ne peuvent pas être utilisés
-   dans le même parcours d'index&nbsp;; l'utilisation de
-   <function>amgetmulti</function> est soumise à d'autres restrictions, comme expliqué dans <xref
-   linkend="index-scanning"/>.
+   Fetch all tuples in the given scan and add them to the caller-supplied
+   TIDBitmap (that is, OR the set of tuple IDs into whatever set is already
+   in the bitmap).  The number of tuples fetched is returned (this might be
+   just an approximate count, for instance some AMs do not detect duplicates).
+   While inserting tuple IDs into the bitmap, <function>amgetbitmap</> can
+   indicate that rechecking of the scan conditions is required for specific
+   tuple IDs.  This is analogous to the <literal>xs_recheck</> output parameter
+   of <function>amgettuple</>.  Note: in the current implementation, support
+   for this feature is conflated with support for lossy storage of the bitmap
+   itself, and therefore callers recheck both the scan conditions and the
+   partial index predicate (if any) for recheckable tuples.  That might not
+   always be true, however.
+   <function>amgetbitmap</> and
+   <function>amgettuple</> cannot be used in the same index scan; there
+   are other restrictions too when using <function>amgetbitmap</>, as explained
+   in <xref linkend="index-scanning">.
   </para>
 
   <para>
+   The <function>amgetbitmap</> function need only be provided if the access
+   method supports <quote>bitmap</> index scans.  If it doesn't, the
+   <structfield>amgetbitmap</> field in its <structname>pg_am</> row must
+   be set to zero.
+  </para>
+
+  <para>
 <programlisting>void
 amrescan (IndexScanDesc scan,
           ScanKey key);
@@ -440,14 +477,15 @@
 <!-- lossy: à pertes ? c'est valable quand on parle de compression, qui
 supprime des données, mais dans le cas de l'index ? -->
   <para>
-   La famille d'opérateur peut indiquer que l'index est <firstterm>à perte</firstterm>
-   pour un opérateur particulier&nbsp;; ceci implique que le parcours d'index
+   La méthode d'accès peut indiquer que l'index est <firstterm>à perte</firstterm>
+   or requires rechecks, for a particular query&nbsp;; ceci implique que le parcours d'index
    renvoie toutes les entrées qui correspondent à la clé de parcours, avec
    éventuellement des entrées supplémentaires qui ne correspondent pas. La machinerie du
-   parcours d'index du système principal applique alors cet opérateur au tuple
-   pour vérifier s'il doit bien effectivement être retenu. Pour les opérateurs sans perte,
+   parcours d'index du système principal applique alors les conditions de l'index au tuple
+   pour vérifier s'il doit bien effectivement être retenu. If the recheck option is not
+   specified,
    le parcours d'index doit renvoyer exactement l'ensemble d'entrées
-   correspondantes, car il n'y a pas de revérification.
+   correspondantes.
   </para>
 
   <para>
@@ -489,15 +527,20 @@
    d'accès qui indiquent qu'elles supportent les parcours ordonnés.) Après
    le premier appel, <function>amgettuple</function>
    doit être préparé pour continuer le parcours dans la direction adaptée à partir de
-   l'entrée la plus récemment renvoyée.
+   l'entrée la plus récemment renvoyée.(But if
+   <structname>pg_am</>.<structfield>amcanbackward</> is false, all subsequent
+   calls will have the same direction as the first one.)
   </para>
 
   <para>
-   La méthode d'accès doit supporter le <quote>marquage</quote> d'une position dans
-   un parcours et le renvoi ultérieur à une position marquée. La même position
-   peut être restaurée plusieurs fois. Néanmoins, seule une position doit
-   être mémorisée par parcours&nbsp;; tout nouvel appel à <function>ammarkpos</function>
-   surcharge la position précédemment marquée.
+   Access methods that support ordered scans must support <quote>marking</> a
+   position in a scan and later returning to the marked position.  The same
+   position might be restored multiple times.  However, only one position need
+   be remembered per scan; a new <function>ammarkpos</> call overrides the
+   previously marked position.  An access method that does not support
+   ordered scans should still provide mark and restore functions in
+   <structname>pg_am</>, but it is sufficient to have them throw errors if
+   called.
   </para>
 
   <para>
@@ -515,28 +558,30 @@
   </para>
 
   <para>
-   <function>amgetmulti</function> peut être utilisé à la place de 
+   <function>amgetbitmap</function> peut être utilisé à la place de 
    <function>amgettuple</function> pour un parcours d'index. Cela permet de
-   récupérer plusieurs lignes par appel. Cette méthode peut s'avérer 
+   récupérer toutes les lignes en un appel. Cette méthode peut s'avérer 
    notablement plus efficace que <function>amgettuple</function> parce qu'elle
    permet d'éviter les cycles de verrouillage/déverrouillage à l'intérieur de la
-   méthode d'accès. En principe, <function>amgetmulti</function> a les mêmes
+   méthode d'accès. En principe, <function>amgetbitmap</function> a les mêmes
    effets que des appels répétés à <function>amgettuple</function>, mais 
    plusieurs restrictions ont été imposées pour simplifier la procédure. En premier lieu,
-   <function>amgetmulti</function> ne prend pas d'argument
-   <literal>direction</literal>, et de ce fait, ne supporte ni parcours inverse
-   ni changement de direction au sein d'un parcours.
-   La méthode d'accès n'a pas non plus à supporter le marquage et la
-   restauration des positions de parcours lors d'un parcours
-   <function>amgetmulti</function>. (Ces restrictions sont minimes, car
-   l'utilisation de ces fonctionnalités lors d'un parcours
-   <function>amgetmulti</function> s'avère difficile&nbsp;: l'ajustement du
-   tampon de la liste des TIDs de l'appelant est complexe). Enfin,
+   <function>amgetbitmap</function> returns all
+   tuples at once and marking or restoring scan positions isn't
+   supported. Secondly, the tuples are returned in a bitmap which doesn't
+   have any specific ordering, which is why <function>amgetbitmap</> doesn't
+   take a <literal>direction</> argument. Enfin,
    <function>amgetmulti</function> ne garantit pas le verrouillage
    des lignes renvoyées, avec les implications précisées dans <xref
    linkend="index-locking"/>.
   </para>
 
+  <para>
+   Note that it is permitted for an access method to implement only
+   <function>amgetbitmap</> and not <function>amgettuple</>, or vice versa,
+   if its internal implementation is unsuited to one API or the other.
+  </para>
+  
  </sect1>
 
  <sect1 id="index-locking">
@@ -641,10 +686,9 @@
   </para>
 
   <para>
-   Dans un parcours d'index <function>amgetmulti</function>, la méthode d'accès n'a pas
-   besoin de garantir la conservation d'un lien à l'index sur quelque ligne
-   renvoyée. (Il est de toute façon impossible de lier autre chose que la
-   dernière.) C'est pourquoi, il est préférable d'utiliser de tels parcours
+   Dans un parcours d'index <function>amgetbitmap</function>, la méthode d'accès
+   ne conserve pas de lien à l'index sur quelque ligne
+   renvoyée. C'est pourquoi, il est préférable d'utiliser de tels parcours
    avec les instantanés compatibles MVCC.
   </para>
 
@@ -894,7 +938,7 @@
   <para>
    indexSelectivity doit être initialisé à la fraction estimée des lignes
    de la table parent qui sera récupérée lors du parcours d'index. Dans le cas
-   d'un index à perte, c'est typiquement plus élevé que la
+   d'une requête à perte, c'est typiquement plus élevé que la
    fraction des lignes qui satisfont les conditions de qualification données.
   </para>
 
@@ -924,7 +968,8 @@
      de l'optimiseur standard <function>clauselist_selectivity()</function>:
 
 <programlisting>*indexSelectivity = clauselist_selectivity(root, indexQuals,
-                                           index-&gt;rel-&gt;relid, JOIN_INNER);
+                                           index-&gt;rel-&gt;relid,
+                                           JOIN_INNER, NULL);
 </programlisting>
     </para>
    </step>

Deleted: traduc/trunk/postgresql/ref/ipcclean.xml
===================================================================
--- traduc/trunk/postgresql/ref/ipcclean.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/ref/ipcclean.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-15"?>
-<!-- Dernière modification
-     le       $Date$
-     par      $Author$
-     révision $Revision$ -->
-<!-- SAS 20060622 -->
-
-<refentry id="app-ipcclean">
- <refmeta>
-  <refentrytitle id="app-ipcclean-title"><application>ipcclean</application></refentrytitle>
-  <manvolnum>1</manvolnum>
-  <refmiscinfo>Application</refmiscinfo>
- </refmeta>
-
- <refnamediv>
-  <refname>ipcclean</refname>
-  <refpurpose>Supprimer la mémoire partagée et les sémaphores d'un serveur
-  <productname>PostgreSQL</productname> victime d'un arrêt brutal</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
-  <cmdsynopsis>
-   <command>ipcclean</command>
-  </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1 id="r1-app-ipcclean-1">
-  <title>Description</title>
-  <indexterm zone="app-ipcclean">
-   <primary>ipcclean</primary>
-  </indexterm>
-
-  <para>
-   <command>ipcclean</command> supprime tous les segments de mémoire partagée
-   et les ensembles de sémaphores détenus par l'utilisateur courant. Cette commande
-   permet de nettoyer le système après l'arrêt brutal d'un serveur
-   <productname>PostgreSQL</productname> (<xref linkend="app-postgres"/>).
-  </para>
-  <para>
-   Comme le redémarrage immédiat du serveur nettoie également la mémoire partagée et les sémaphores,
-   cette commande n'a réellement que peu d'utilité.
-  </para>
-
-  <para>
-   Seul l'administrateur de base de données peut exécuter ce
-   programme. En effet, s'il est lancé en exécution multi-utilisateur,
-   il peut être la cause d'un comportement bizarre du serveur (des plantages
-   brutaux, par exemple). S'il est exécuté alors que le serveur est en cours d'exécution, la
-   mémoire partagée et les sémaphores alloués par ce serveur sont supprimés,
-   ce qui peut engendrer de graves conséquences pour le serveur.
-  </para>
- </refsect1>
-
- <refsect1>
-  <title>Notes</title>
-
-  <para>
-   Ce script est une astuce assez sale mais, depuis qu'il a été écrit (il y
-   a bien longtemps), personne n'a proposé une solution aussi efficace et
-   portable. Comme, dorénavant, le <command>postgres</command> effectue
-   lui-même ce nettoyage, il est peu probable que <command>ipcclean</command> soit
-   amélioré dans le futur.
-  </para>
-
-  <para>
-   Le script fait des suppositions sur le format de sortie de l'outil 
-   <command>ipcs</command>. Suppositions qui peuvent s'avérer erronées en fonction du système
-   d'exploitation. Il est, de ce fait, possible qu'il ne fonctionne pas sur un système particulier.
-   Il est toujours conseillé de lire le script avant de l'essayer.
-  </para>
- </refsect1>
-
-</refentry>

Modified: traduc/trunk/postgresql/version.xml
===================================================================
--- traduc/trunk/postgresql/version.xml	2009-04-11 07:01:06 UTC (rev 1288)
+++ traduc/trunk/postgresql/version.xml	2009-04-11 22:08:56 UTC (rev 1289)
@@ -1,2 +1,2 @@
-<!ENTITY version "8.3.7">
-<!ENTITY majorversion "8.3">
+<!ENTITY version "8.4beta1">
+<!ENTITY majorversion "8.4">



More information about the Trad mailing list