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

admin at listes.postgresql.fr admin at listes.postgresql.fr
Dim 30 Mai 19:31:14 CEST 2010


Author: gleu
Date: 2010-05-30 19:31:13 +0200 (Sun, 30 May 2010)
New Revision: 1515

Added:
   traduc/trunk/postgresql/passwordcheck.xml
   traduc/trunk/postgresql/pgupgrade.xml
   traduc/trunk/postgresql/recovery-config.xml
   traduc/trunk/postgresql/ref/alter_default_privileges.xml
   traduc/trunk/postgresql/ref/alter_large_object.xml
   traduc/trunk/postgresql/ref/do.xml
   traduc/trunk/postgresql/release-9.0.xml
   traduc/trunk/postgresql/release-alpha.xml
   traduc/trunk/postgresql/unaccent.xml
Modified:
   traduc/trunk/postgresql/acronyms.xml
   traduc/trunk/postgresql/advanced.xml
   traduc/trunk/postgresql/arch-dev.xml
   traduc/trunk/postgresql/auto-explain.xml
   traduc/trunk/postgresql/backup.xml
   traduc/trunk/postgresql/biblio.xml
   traduc/trunk/postgresql/bki.xml
   traduc/trunk/postgresql/catalogs.xml
   traduc/trunk/postgresql/charset.xml
   traduc/trunk/postgresql/client-auth.xml
   traduc/trunk/postgresql/config.xml
   traduc/trunk/postgresql/contrib.xml
   traduc/trunk/postgresql/datatype.xml
   traduc/trunk/postgresql/dblink.xml
   traduc/trunk/postgresql/ddl.xml
   traduc/trunk/postgresql/dfunc.xml
   traduc/trunk/postgresql/dict-xsyn.xml
   traduc/trunk/postgresql/diskusage.xml
   traduc/trunk/postgresql/dml.xml
   traduc/trunk/postgresql/docguide.xml
   traduc/trunk/postgresql/ecpg.xml
   traduc/trunk/postgresql/errcodes.xml
   traduc/trunk/postgresql/extend.xml
   traduc/trunk/postgresql/filelist.xml
   traduc/trunk/postgresql/func.xml
   traduc/trunk/postgresql/geqo.xml
   traduc/trunk/postgresql/gin.xml
   traduc/trunk/postgresql/high-availability.xml
   traduc/trunk/postgresql/hstore.xml
   traduc/trunk/postgresql/indexam.xml
   traduc/trunk/postgresql/indices.xml
   traduc/trunk/postgresql/information_schema.xml
   traduc/trunk/postgresql/install-win32.xml
   traduc/trunk/postgresql/installation.xml
   traduc/trunk/postgresql/intro.xml
   traduc/trunk/postgresql/jdbc.xml
   traduc/trunk/postgresql/keywords.xml
   traduc/trunk/postgresql/legal.xml
   traduc/trunk/postgresql/libpq.xml
   traduc/trunk/postgresql/lobj.xml
   traduc/trunk/postgresql/maintenance.xml
   traduc/trunk/postgresql/manage-ag.xml
   traduc/trunk/postgresql/monitoring.xml
   traduc/trunk/postgresql/mvcc.xml
   traduc/trunk/postgresql/nls.xml
   traduc/trunk/postgresql/oid2name.xml
   traduc/trunk/postgresql/perform.xml
   traduc/trunk/postgresql/pgbench.xml
   traduc/trunk/postgresql/pgbuffercache.xml
   traduc/trunk/postgresql/pgstatstatements.xml
   traduc/trunk/postgresql/plhandler.xml
   traduc/trunk/postgresql/plperl.xml
   traduc/trunk/postgresql/plpgsql.xml
   traduc/trunk/postgresql/plpython.xml
   traduc/trunk/postgresql/pltcl.xml
   traduc/trunk/postgresql/postgres.xml
   traduc/trunk/postgresql/protocol.xml
   traduc/trunk/postgresql/queries.xml
   traduc/trunk/postgresql/query.xml
   traduc/trunk/postgresql/ref/abort.xml
   traduc/trunk/postgresql/ref/allfiles.xml
   traduc/trunk/postgresql/ref/alter_aggregate.xml
   traduc/trunk/postgresql/ref/alter_conversion.xml
   traduc/trunk/postgresql/ref/alter_database.xml
   traduc/trunk/postgresql/ref/alter_domain.xml
   traduc/trunk/postgresql/ref/alter_foreign_data_wrapper.xml
   traduc/trunk/postgresql/ref/alter_function.xml
   traduc/trunk/postgresql/ref/alter_group.xml
   traduc/trunk/postgresql/ref/alter_index.xml
   traduc/trunk/postgresql/ref/alter_language.xml
   traduc/trunk/postgresql/ref/alter_opclass.xml
   traduc/trunk/postgresql/ref/alter_operator.xml
   traduc/trunk/postgresql/ref/alter_opfamily.xml
   traduc/trunk/postgresql/ref/alter_role.xml
   traduc/trunk/postgresql/ref/alter_schema.xml
   traduc/trunk/postgresql/ref/alter_sequence.xml
   traduc/trunk/postgresql/ref/alter_server.xml
   traduc/trunk/postgresql/ref/alter_table.xml
   traduc/trunk/postgresql/ref/alter_tablespace.xml
   traduc/trunk/postgresql/ref/alter_trigger.xml
   traduc/trunk/postgresql/ref/alter_tsconfig.xml
   traduc/trunk/postgresql/ref/alter_tsdictionary.xml
   traduc/trunk/postgresql/ref/alter_tsparser.xml
   traduc/trunk/postgresql/ref/alter_tstemplate.xml
   traduc/trunk/postgresql/ref/alter_type.xml
   traduc/trunk/postgresql/ref/alter_user.xml
   traduc/trunk/postgresql/ref/alter_user_mapping.xml
   traduc/trunk/postgresql/ref/alter_view.xml
   traduc/trunk/postgresql/ref/analyze.xml
   traduc/trunk/postgresql/ref/begin.xml
   traduc/trunk/postgresql/ref/checkpoint.xml
   traduc/trunk/postgresql/ref/close.xml
   traduc/trunk/postgresql/ref/cluster.xml
   traduc/trunk/postgresql/ref/clusterdb.xml
   traduc/trunk/postgresql/ref/comment.xml
   traduc/trunk/postgresql/ref/commit.xml
   traduc/trunk/postgresql/ref/commit_prepared.xml
   traduc/trunk/postgresql/ref/copy.xml
   traduc/trunk/postgresql/ref/create_aggregate.xml
   traduc/trunk/postgresql/ref/create_cast.xml
   traduc/trunk/postgresql/ref/create_constraint.xml
   traduc/trunk/postgresql/ref/create_conversion.xml
   traduc/trunk/postgresql/ref/create_database.xml
   traduc/trunk/postgresql/ref/create_domain.xml
   traduc/trunk/postgresql/ref/create_foreign_data_wrapper.xml
   traduc/trunk/postgresql/ref/create_function.xml
   traduc/trunk/postgresql/ref/create_group.xml
   traduc/trunk/postgresql/ref/create_index.xml
   traduc/trunk/postgresql/ref/create_language.xml
   traduc/trunk/postgresql/ref/create_opclass.xml
   traduc/trunk/postgresql/ref/create_operator.xml
   traduc/trunk/postgresql/ref/create_opfamily.xml
   traduc/trunk/postgresql/ref/create_role.xml
   traduc/trunk/postgresql/ref/create_rule.xml
   traduc/trunk/postgresql/ref/create_schema.xml
   traduc/trunk/postgresql/ref/create_sequence.xml
   traduc/trunk/postgresql/ref/create_server.xml
   traduc/trunk/postgresql/ref/create_table.xml
   traduc/trunk/postgresql/ref/create_table_as.xml
   traduc/trunk/postgresql/ref/create_tablespace.xml
   traduc/trunk/postgresql/ref/create_trigger.xml
   traduc/trunk/postgresql/ref/create_tsconfig.xml
   traduc/trunk/postgresql/ref/create_tsdictionary.xml
   traduc/trunk/postgresql/ref/create_tsparser.xml
   traduc/trunk/postgresql/ref/create_tstemplate.xml
   traduc/trunk/postgresql/ref/create_type.xml
   traduc/trunk/postgresql/ref/create_user.xml
   traduc/trunk/postgresql/ref/create_user_mapping.xml
   traduc/trunk/postgresql/ref/create_view.xml
   traduc/trunk/postgresql/ref/createdb.xml
   traduc/trunk/postgresql/ref/createlang.xml
   traduc/trunk/postgresql/ref/createuser.xml
   traduc/trunk/postgresql/ref/deallocate.xml
   traduc/trunk/postgresql/ref/declare.xml
   traduc/trunk/postgresql/ref/delete.xml
   traduc/trunk/postgresql/ref/discard.xml
   traduc/trunk/postgresql/ref/drop_aggregate.xml
   traduc/trunk/postgresql/ref/drop_cast.xml
   traduc/trunk/postgresql/ref/drop_conversion.xml
   traduc/trunk/postgresql/ref/drop_database.xml
   traduc/trunk/postgresql/ref/drop_domain.xml
   traduc/trunk/postgresql/ref/drop_foreign_data_wrapper.xml
   traduc/trunk/postgresql/ref/drop_function.xml
   traduc/trunk/postgresql/ref/drop_group.xml
   traduc/trunk/postgresql/ref/drop_index.xml
   traduc/trunk/postgresql/ref/drop_language.xml
   traduc/trunk/postgresql/ref/drop_opclass.xml
   traduc/trunk/postgresql/ref/drop_operator.xml
   traduc/trunk/postgresql/ref/drop_opfamily.xml
   traduc/trunk/postgresql/ref/drop_owned.xml
   traduc/trunk/postgresql/ref/drop_role.xml
   traduc/trunk/postgresql/ref/drop_rule.xml
   traduc/trunk/postgresql/ref/drop_schema.xml
   traduc/trunk/postgresql/ref/drop_sequence.xml
   traduc/trunk/postgresql/ref/drop_server.xml
   traduc/trunk/postgresql/ref/drop_table.xml
   traduc/trunk/postgresql/ref/drop_tablespace.xml
   traduc/trunk/postgresql/ref/drop_trigger.xml
   traduc/trunk/postgresql/ref/drop_tsconfig.xml
   traduc/trunk/postgresql/ref/drop_tsdictionary.xml
   traduc/trunk/postgresql/ref/drop_tsparser.xml
   traduc/trunk/postgresql/ref/drop_tstemplate.xml
   traduc/trunk/postgresql/ref/drop_type.xml
   traduc/trunk/postgresql/ref/drop_user.xml
   traduc/trunk/postgresql/ref/drop_user_mapping.xml
   traduc/trunk/postgresql/ref/drop_view.xml
   traduc/trunk/postgresql/ref/dropdb.xml
   traduc/trunk/postgresql/ref/droplang.xml
   traduc/trunk/postgresql/ref/dropuser.xml
   traduc/trunk/postgresql/ref/ecpg-ref.xml
   traduc/trunk/postgresql/ref/end.xml
   traduc/trunk/postgresql/ref/execute.xml
   traduc/trunk/postgresql/ref/explain.xml
   traduc/trunk/postgresql/ref/fetch.xml
   traduc/trunk/postgresql/ref/grant.xml
   traduc/trunk/postgresql/ref/initdb.xml
   traduc/trunk/postgresql/ref/insert.xml
   traduc/trunk/postgresql/ref/listen.xml
   traduc/trunk/postgresql/ref/load.xml
   traduc/trunk/postgresql/ref/lock.xml
   traduc/trunk/postgresql/ref/move.xml
   traduc/trunk/postgresql/ref/notify.xml
   traduc/trunk/postgresql/ref/pg_config-ref.xml
   traduc/trunk/postgresql/ref/pg_controldata.xml
   traduc/trunk/postgresql/ref/pg_ctl-ref.xml
   traduc/trunk/postgresql/ref/pg_dump.xml
   traduc/trunk/postgresql/ref/pg_dumpall.xml
   traduc/trunk/postgresql/ref/pg_resetxlog.xml
   traduc/trunk/postgresql/ref/pg_restore.xml
   traduc/trunk/postgresql/ref/postgres-ref.xml
   traduc/trunk/postgresql/ref/postmaster.xml
   traduc/trunk/postgresql/ref/prepare.xml
   traduc/trunk/postgresql/ref/prepare_transaction.xml
   traduc/trunk/postgresql/ref/psql-ref.xml
   traduc/trunk/postgresql/ref/reassign_owned.xml
   traduc/trunk/postgresql/ref/reindex.xml
   traduc/trunk/postgresql/ref/reindexdb.xml
   traduc/trunk/postgresql/ref/release_savepoint.xml
   traduc/trunk/postgresql/ref/reset.xml
   traduc/trunk/postgresql/ref/revoke.xml
   traduc/trunk/postgresql/ref/rollback.xml
   traduc/trunk/postgresql/ref/rollback_prepared.xml
   traduc/trunk/postgresql/ref/rollback_to.xml
   traduc/trunk/postgresql/ref/savepoint.xml
   traduc/trunk/postgresql/ref/select.xml
   traduc/trunk/postgresql/ref/select_into.xml
   traduc/trunk/postgresql/ref/set.xml
   traduc/trunk/postgresql/ref/set_constraints.xml
   traduc/trunk/postgresql/ref/set_role.xml
   traduc/trunk/postgresql/ref/set_session_auth.xml
   traduc/trunk/postgresql/ref/set_transaction.xml
   traduc/trunk/postgresql/ref/show.xml
   traduc/trunk/postgresql/ref/start_transaction.xml
   traduc/trunk/postgresql/ref/truncate.xml
   traduc/trunk/postgresql/ref/unlisten.xml
   traduc/trunk/postgresql/ref/update.xml
   traduc/trunk/postgresql/ref/vacuum.xml
   traduc/trunk/postgresql/ref/vacuumdb.xml
   traduc/trunk/postgresql/ref/values.xml
   traduc/trunk/postgresql/reference.xml
   traduc/trunk/postgresql/regress.xml
   traduc/trunk/postgresql/release.xml
   traduc/trunk/postgresql/rules.xml
   traduc/trunk/postgresql/runtime.xml
   traduc/trunk/postgresql/sources.xml
   traduc/trunk/postgresql/spi.xml
   traduc/trunk/postgresql/start.xml
   traduc/trunk/postgresql/storage.xml
   traduc/trunk/postgresql/syntax.xml
   traduc/trunk/postgresql/textsearch.xml
   traduc/trunk/postgresql/trigger.xml
   traduc/trunk/postgresql/typeconv.xml
   traduc/trunk/postgresql/user-manag.xml
   traduc/trunk/postgresql/version.xml
   traduc/trunk/postgresql/wal.xml
   traduc/trunk/postgresql/xaggr.xml
   traduc/trunk/postgresql/xfunc.xml
   traduc/trunk/postgresql/xplang.xml
   traduc/trunk/postgresql/xtypes.xml
Log:
Merge 9.0 beta1+.


Modified: traduc/trunk/postgresql/acronyms.xml
===================================================================
--- traduc/trunk/postgresql/acronyms.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/acronyms.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -365,8 +365,8 @@
     <term><acronym>ISO</acronym></term>
     <listitem>
      <para>
-      <ulink url="http://www.iso.org/iso/home.htm">International Standards
-      Organization</ulink>, Organisation de standardisation internationale
+      <ulink url="http://www.iso.org/iso/home.htm">International Organization for
+      Standardization</ulink>, Organisation de standardisation internationale
      </para>
     </listitem>
    </varlistentry>
@@ -641,8 +641,8 @@
     <term><acronym>SSPI</acronym></term>
     <listitem>
      <para>
-      <ulink url="http://msdn2.microsoft.com/en-us/library/aa380493.aspx">Security
-      Support Provider Interface</ulink>
+      <ulink url="http://msdn.microsoft.com/en-us/library/aa380493%28VS.85%29.aspx">
+      Security Support Provider Interface</ulink>
      </para>
     </listitem>
    </varlistentry>

Modified: traduc/trunk/postgresql/advanced.xml
===================================================================
--- traduc/trunk/postgresql/advanced.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/advanced.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -354,7 +354,7 @@
 
 
   <sect1 id="tutorial-window">
-   <title id="tutorial-window-title">Fonctions window</title>
+   <title>Fonctions window</title>
 
    <indexterm zone="tutorial-window">
     <primary>fonction window</primary>
@@ -625,7 +625,7 @@
     
     <xref linkend="syntax-window-functions"/>,
     <xref linkend="queries-window"/>, et la page de référence
-    <xref linkend="sql-select" endterm="sql-select-title"/>.
+    <xref linkend="sql-select"/>.
    </para>
   </sect1>
 

Modified: traduc/trunk/postgresql/arch-dev.xml
===================================================================
--- traduc/trunk/postgresql/arch-dev.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/arch-dev.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -162,8 +162,8 @@
       <para>
        l'<firstterm>analyseur</firstterm>, défini dans
        <filename>gram.y</filename> et <filename>scan.l</filename>, est construit
-       en utilisant les outils Unix <application>yacc</application> et
-       <application>lex</application>&nbsp;;
+       en utilisant les outils Unix <application>bison</application> et
+       <application>flex</application>&nbsp;;
       </para>
      </listitem>
      <listitem>
@@ -185,7 +185,7 @@
      <firstterm>arbre d'analyse</firstterm> est construit et renvoyé, sinon
      une erreur est retournée. Les analyseur et vérificateur syntaxiques sont
      développés à l'aide des outils Unix bien connus
-     <application>lex</application> et <application>yacc</application>.
+     <application>bison</application> et <application>flex</application>.
     </para>
 
     <para>
@@ -207,13 +207,13 @@
     <para>
      Le fichier <filename>scan.l</filename> est transformé en fichier source C
      <filename>scan.c</filename> en utilisant le programme
-     <application>lex</application> et <filename>gram.y</filename> est
+     <application>flex</application> et <filename>gram.y</filename> est
      transformé en <filename>gram.c</filename> en utilisant
-     <application>yacc</application>. Après avoir réalisé ces transformations,
+     <application>bison</application>. Après avoir réalisé ces transformations,
      un compilateur C normal peut être utilisé pour créer l'analyseur. Il
      est inutile de modifier les fichiers C engendrés car ils sont écrasés
-     à l'appel suivant de <application>lex</application> ou
-     <application>yacc</application>.
+     à l'appel suivant de <application>flex</application> ou
+     <application>bison</application>.
 
      <note>
       <para>
@@ -226,12 +226,12 @@
     </para>
 
     <para>
-     La description détaillée de <application>yacc</application> ou des règles
+     La description détaillée de <application>bison</application> ou des règles
      de grammaire données dans <filename>gram.y</filename> dépasse le cadre
      de ce document. Il existe de nombreux livres et documentations en
-     relation avec <application>lex</application> et
-     <application>yacc</application>. Il est préférable d'être familier avec
-     <application>yacc</application> avant de commencer à étudier la grammaire
+     relation avec <application>flex</application> et
+     <application>bison</application>. Il est préférable d'être familier avec
+     <application>bison</application> avant de commencer à étudier la grammaire
      donnée dans <filename>gram.y</filename>, au risque de ne rien y
      comprendre.
     </para>
@@ -352,7 +352,8 @@
      de l'exécution de requêtes impliquant un grand nombre de jointures. Pour
      déterminer un plan de requête raisonnable (mais pas forcément optimal) en
      un temps raisonnable, <productname>PostgreSQL</productname> utilise un
-     <xref linkend="geqo" endterm="geqo-title"/> dès lors que le nombre de jointures
+     <firstterm>Genetic
+     Query Optimizer</firstterm> (see <xref linkend="geqo"/>) dès lors que le nombre de jointures
      dépasse une certaine limite (voir <xref linkend="guc-geqo-threshold"/>).
     </para>
    </note>
@@ -494,7 +495,7 @@
    <title>Exécuteur</title>
 
    <para>
-    L'<firstterm>exécuteur</firstterm> prend le plan envoyé par le
+    L'<firstterm>exécuteur</firstterm> prend le plan créé par le
     planificateur/optimiseur et l'exécute récursivement pour extraire
     l'ensemble requis de lignes. Il s'agit principalement d'un mécanisme de
     pipeline en demande-envoi. Chaque fois qu'un n&oelig;ud du plan est appelé,
@@ -553,19 +554,19 @@
     de l'exécuteur de plus haut niveau a uniquement besoin d'envoyer chaque ligne
     retournée par l'arbre plan de la requête vers le client. Pour
     <command>INSERT</command>, chaque ligne renvoyée est insérée dans la table cible
-    indiquée par <command>INSERT</command>. (Une simple commande
+    indiquée par <command>INSERT</command>. This is
+    done in a special top-level plan node called <literal>ModifyTable</literal>. (Une simple commande
     <command>INSERT ... VALUES</command> crée un arbre plan trivial
     constitué d'un seul n&oelig;ud, <literal>Result</literal>, calculant une
-    seule ligne de résultat.
+    seule ligne de résultat, and <literal>ModifyTable</literal> above it to perform the insertion.
     Mais <command>INSERT ... SELECT</command> peut demander la pleine puissance du
     mécanisme de l'exécuteur.) Pour <command>UPDATE</command>, le planificateur
     s'arrange pour que chaque ligne calculée inclue toutes les valeurs mises à
     jour des colonnes, plus le <firstterm>TID</firstterm> (tuple ID ou l'identifiant de
-    la ligne) de la ligne de la cible originale&nbsp;; l'exécuteur de plus haut
-    niveau utilise cette information pour créer une nouvelle ligne mise à jour
-    et pour marquer la suppression de l'ancienne ligne. Pour <command>DELETE</command>,
-    la seule colonne renvoyée par le plan est le TID, et l'exécuteur de plus
-    haut niveau utilise simplement le TID pour visiter chaque ligne cible et la
+    la ligne) de la ligne de la cible originale&nbsp;; this data is fed into a <literal>ModifyTable</literal> node, which uses the
+    information to create a new updated row and mark the old row deleted. Pour <command>DELETE</command>,
+    la seule colonne renvoyée par le plan est le TID, et <literal>ModifyTable</literal>
+    node utilise simplement le TID pour visiter chaque ligne cible et la
     marquer comme supprimée.
    </para>
 

Modified: traduc/trunk/postgresql/auto-explain.xml
===================================================================
--- traduc/trunk/postgresql/auto-explain.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/auto-explain.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -14,8 +14,7 @@
  <para>
   Le module <filename>auto_explain</filename> fournit un moyen de tracer les
   plans d'exécution des requêtes lentes automatiquement, sans qu'il soit
-  nécessaire de lancer
-  <xref linkend="sql-explain" endterm="sql-explain-title"/>
+  nécessaire de lancer <xref linkend="sql-explain"/>
   manuellement. C'est particulièrement utile pour repérer les requêtes
   non optimisées sur de grosses applications.
  </para>
@@ -114,6 +113,43 @@
    </listitem>
   </varlistentry>
   
+   <varlistentry>
+    <term>
+     <varname>auto_explain.log_buffers</varname> (<type>boolean</type>)
+    </term>
+    <indexterm>
+     <primary><varname>auto_explain.log_buffers</varname> configuration parameter</primary>
+    </indexterm>
+    <listitem>
+     <para>
+      <varname>auto_explain.log_buffers</varname> causes <command>EXPLAIN
+      (ANALYZE, BUFFERS)</command> output, rather than just <command>EXPLAIN</command> 
+      output, to be printed when an execution plan is logged. This parameter is 
+      off by default. Only superusers can change this setting. This
+      parameter has no effect unless <varname>auto_explain.log_analyze</varname>
+      parameter is set.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     <varname>auto_explain.log_format</varname> (<type>enum</type>)
+    </term>
+    <indexterm>
+     <primary><varname>auto_explain.log_format</varname> configuration parameter</primary>
+    </indexterm>
+    <listitem>
+     <para>
+      <varname>auto_explain.log_format</varname> selects the
+      <command>EXPLAIN</command> output format to be used.
+      The allowed values are <literal>text</literal>, <literal>xml</literal>,
+      <literal>json</literal>, and <literal>yaml</literal>.  The default is text.
+      Only superusers can change this setting.
+     </para>
+    </listitem>
+   </varlistentry>
+
   <varlistentry>
    <term>
     <varname>auto_explain.log_nested_statements</varname> (<type>boolean</type>)
@@ -165,17 +201,20 @@
   Ceci devrait produire un résultat de ce style dans les journaux applicatifs&nbsp;:
  </para>
 	
- <programlisting><![CDATA[  LOG:  duration: 0.986 ms  plan:
-          Aggregate  (cost=14.90..14.91 rows=1 width=0)
-            ->  Hash Join  (cost=3.91..14.70 rows=81 width=0)
-                  Hash Cond: (pg_class.oid = pg_index.indrelid)
-                  ->  Seq Scan on pg_class  (cost=0.00..8.27 rows=227 width=4)
-                  ->  Hash  (cost=2.90..2.90 rows=81 width=4)
-                        ->  Seq Scan on pg_index  (cost=0.00..2.90 rows=81 width=4)
-                              Filter: indisunique
-  STATEMENT:  SELECT count(*)
-            FROM pg_class, pg_index
-           WHERE oid = indrelid AND indisunique;]]>
+  <programlisting><![CDATA[
+  LOG:  duration: 3.651 ms  plan:
+    Query Text: SELECT count(*)
+                FROM pg_class, pg_index
+               WHERE oid = indrelid AND indisunique;
+    Aggregate  (cost=16.79..16.80 rows=1 width=0) (actual time=3.626..3.627 rows=1 loops=1)
+      ->  Hash Join  (cost=4.17..16.55 rows=92 width=0) (actual time=3.349..3.594 rows=92 loops=1)
+            Hash Cond: (pg_class.oid = pg_index.indrelid)
+            ->  Seq Scan on pg_class  (cost=0.00..9.55 rows=255 width=4) (actual time=0.016..0.140 rows=255 loops=1)
+            ->  Hash  (cost=3.02..3.02 rows=92 width=4) (actual time=3.238..3.238 rows=92 loops=1)
+                  Buckets: 1024  Batches: 1  Memory Usage: 4kB
+                  ->  Seq Scan on pg_index  (cost=0.00..3.02 rows=92 width=4) (actual time=0.008..3.187 rows=92 loops=1)
+                        Filter: indisunique
+]]>
  </programlisting>
 </sect2>
 	

Modified: traduc/trunk/postgresql/backup.xml
===================================================================
--- traduc/trunk/postgresql/backup.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/backup.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -110,8 +110,7 @@
     d'une commande de restauration est
 <synopsis>psql <replaceable class="parameter">base_de_donnees</replaceable> &lt; <replaceable class="parameter">fichier_d_entree</replaceable></synopsis>
     où <replaceable class="parameter">fichier_d_entree</replaceable> est
-    celui précisé comme <replaceable class="parameter">fichier_de_sortie</replaceable>
-    à la commande <application>pg_dump</application>. La base de données 
+    le fichier en sortie de la commande <application>pg_dump</application>. La base de données 
     <replaceable class="parameter">base_de_donnees</replaceable> n'est pas créée par cette 
     commande. Elle doit être créée à partir de <literal>template0</literal>
     avant d'exécuter <application>psql</application> (par exemple avec <literal>createdb -T
@@ -134,11 +133,12 @@
 
    <para>
     Par défaut, le script <application>psql</application> continue de
-    s'exécuter après la détection d'une erreur SQL. La commande suivante
-    peut être placée au début du script pour modifier ce comportement.
+    s'exécuter après la détection d'une erreur SQL. You might wish to run
+    <application>psql</application> with
+    the <literal>ON_ERROR_STOP</literal> variable set pour modifier ce comportement.
     <application>psql</application> quitte alors avec un
     code d'erreur 3 si une erreur SQL survient&nbsp;:
-<programlisting>\set ON_ERROR_STOP
+<programlisting>psql --set ON_ERROR_STOP=on dbname &lt; infile
 </programlisting>
     Dans tous les cas, une sauvegarde partiellement restaurée est obtenue.
     Si cela n'est pas souhaitable, il est possible d'indiquer que la sauvegarde
@@ -175,11 +175,11 @@
 
    <para>
     Après la restauration d'une sauvegarde, il est conseillé d'exécuter
-    <xref linkend="sql-analyze" endterm="sql-analyze-title"/> sur chaque base
+    <xref linkend="sql-analyze"/> sur chaque base
     de données pour que l'optimiseur de requêtes dispose de statistiques
     utiles&nbsp;; voir <xref
-    linkend="vacuum-for-statistics" endterm="vacuum-for-statistics-title"/> et
-    <xref linkend="autovacuum" endterm="autovacuum-title"/> pour plus
+    linkend="vacuum-for-statistics"/> et
+    <xref linkend="autovacuum"/> pour plus
     d'informations.
     Pour plus de conseils sur le chargement efficace de grosses quantités de
     données dans <productname>PostgreSQL</productname>, on peut se référer à la
@@ -232,13 +232,11 @@
    <title>Gérer les grosses bases de données</title>
 
    <para>
-    Comme <productname>PostgreSQL</productname> autorise des tables plus
-    volumineuses que la taille maximale d'un fichier sur le système de fichiers,
-    sauvegarder une telle table en fichier peut poser des problèmes. 
-    Puisque <application>pg_dump</application> peut écrire sur la sortie
-    standard, les outils standard d'Unix peuvent être utilisés pour contourner
-    ce problème éventuel.
-    Il existe plusieurs façon de procéder&nbsp;:
+    Some operating systems have maximum file size limits that cause
+    problems when creating large <application>pg_dump</application> output files.
+    Fortunately, <application>pg_dump</application> can write to the standard
+    output, so you can use standard Unix tools to work around this
+    potential problem.  There are several possible methods:
    </para>
 
    <formalpara>
@@ -263,7 +261,7 @@
     <title>Couper le fichier avec <command>split</command></title>
     <para>
      La commande <command>split</command> permet de découper le fichier en
-     morceaux de taille acceptable par le système de fichiers sous-jacent.
+     fichiers plus petits, de taille acceptable par le système de fichiers sous-jacent.
      Par exemple, pour faire des morceaux de 1&nbsp;Mo&nbsp;:
  
 <programlisting>pg_dump <replaceable class="parameter">base_de_donnees</replaceable> | split -b 1m - <replaceable class="parameter">nom_fichier</replaceable></programlisting>
@@ -321,8 +319,7 @@
    Une autre stratégie de sauvegarde consiste à copier les fichiers
    utilisés par <productname>PostgreSQL</productname> pour le stockage des données.
    Dans la <xref linkend="creating-cluster"/>, l'emplacement de ces
-   fichiers est précisé mais quiconque s'intéresse à cette méthode les a
-   probablement déjà localisés. N'importe quelle
+   fichiers est précisé. N'importe quelle
    méthode de sauvegarde peut être utilisée, par exemple&nbsp;:
  
 <programlisting>tar -cf sauvegarde.tar /usr/local/pgsql/data</programlisting>
@@ -355,9 +352,8 @@
       Quiconque s'est aventuré dans les détails de l'organisation de la 
       base de données peut être tenté de ne sauvegarder et 
       restaurer que certaines tables ou bases de données particulières. 
-      Cela ne fonctionne <emphasis>pas</emphasis> parce que les informations
-      contenues dans ces fichiers ne représentent que la moitité de la
-      vérité. L'autre moitié est dans les fichiers journaux de validation
+      Cela ne fonctionne <emphasis>pas</emphasis> is not usable without
+      les fichiers journaux de validation
       <filename>pg_clog/*</filename> qui 
       contiennent l'état de la validation de chaque transaction. Un fichier de 
       table n'est utilisable qu'avec cette information. Bien entendu, il est 
@@ -434,9 +430,8 @@
   </para>
 
   <para>
-   Une sauvegarde des fichiers de données n'est pas forcément
-   moins volumineuse qu'une sauvegarde SQL. Au contraire, elle l'est très
-   certainement plus (<application>pg_dump</application> ne sauvegarde pas le
+   Une sauvegarde des fichiers de données va être généralement plus
+   volumineuse qu'une sauvegarde SQL. (<application>pg_dump</application> ne sauvegarde pas le
    contenu des index, mais la commande pour les recréer). Cependant, une
    sauvegarde des fichiers de données peut être plus rapide.
   </para>
@@ -462,7 +457,7 @@
    <productname>PostgreSQL</productname> maintient en permanence des journaux WAL
    (<firstterm>write ahead log</firstterm>) dans le sous-répertoire
    <filename>pg_xlog/</filename> du répertoire de données du cluster. Ces journaux
-   décrivent chaque modification effectuée sur les fichiers de données des
+   enregistrent chaque modification effectuée sur les fichiers de données des
    bases. Ils existent principalement pour se prémunir des suites d'un
    arrêt brutal&nbsp;: si le système s'arrête brutalement, la base de données
    peut être restaurée dans un état cohérent en
@@ -471,14 +466,14 @@
    l'utilisation d'une troisième stratégie pour la sauvegarde des bases de
    données&nbsp;: la combinaison d'une sauvegarde de niveau système de
    fichiers avec la sauvegarde des fichiers WAL. Si la récupération est
-   nécessaire, la sauvegarde est restaurée, puis les fichiers WAL sauvegardés
+   nécessaire, la sauvegarde des fichiers est restaurée, puis les fichiers WAL sauvegardés
    sont rejoués pour amener la sauvegarde jusqu'à la date
    actuelle. Cette approche est plus complexe à administrer que toutes les
    autres approches mais elle apporte des bénéfices significatifs&nbsp;:
   <itemizedlist>
    <listitem>
     <para>
-     Il n'est pas nécessaire de disposer d'une sauvegarde parfaitement cohérente
+     Il n'est pas nécessaire de disposer d'une sauvegarde des fichiers parfaitement cohérente
      comme point de départ. Toute incohérence dans la sauvegarde est corrigée
      par la ré-exécution des journaux (ceci n'est pas significativement
      différent de ce qu'il se passe lors d'une récupération après un arrêt
@@ -520,6 +515,16 @@
   </itemizedlist>
   </para>
 
+  <note>
+   <para>
+    <application>pg_dump</application> and
+    <application>pg_dumpall</application> do not produce file-system-level
+    backups and cannot be used as part of a continuous-archiving solution.
+    Such dumps are <emphasis>logical</emphasis> and do not contain enough
+    information to used by WAL reply.
+   </para>
+  </note>
+
   <para>
    Tout comme la technique de sauvegarde standard du système de fichiers,
    cette méthode ne supporte que la restauration d'un cluster de bases de données
@@ -580,7 +585,9 @@
 
    <para>
     Pour activer l'archivage des journaux de transaction, on positionne le
-    paramètre <xref linkend="guc-archive-mode"/> à <literal>on</literal>,
+    paramètre <xref linkend="guc-wal-level"/>
+    configuration parameter to <literal>archive</literal> (or <literal>hot_standby</literal>),
+    <xref linkend="guc-archive-mode"/> à <literal>on</literal>,
     et on précise la commande shell à utiliser dans le paramètre
     <xref linkend="guc-archive-command"/> de la configuration. En fait, ces
     paramètres seront toujours placés dans le fichier
@@ -633,12 +640,12 @@
     conseillé de tester la commande d'archivage proposée pour
     s'assurer, qu'en effet, elle n'écrase pas un fichier existant, <emphasis>et
     qu'elle retourne un statut différent de zéro dans ce cas</emphasis>.
-    Il a été découvert
-    que <literal>cp -i</literal> travaille correctement sur certaines plateformes,
-    mais pas sur toutes. Si la commande choisie ne gère pas elle-même ce
-    cas, il convient d'ajouter une commande pour tester l'existence du fichier
+    On many Unix platforms, <command>cp
+    -i</command> causes copy to prompt before overwriting a file, and
+    <literal>&lt; /dev/null</literal> causes the prompt (and overwriting) to
+    fail.  If your platform does not support this behavior, il convient d'ajouter une commande pour tester l'existence du fichier
     d'archivage. Par exemple, quelque chose comme&nbsp;:
-<programlisting>archive_command = 'test ! -f .../%f &amp;&amp; cp %p .../%f'</programlisting>
+<programlisting>archive_command = 'test ! -f /mnt/server/archivedir/%f &amp;&amp; cp %p /mnt/server/archivedir/%f'</programlisting>
     fonctionne correctement sur la plupart des variantes Unix.
    </para>
 
@@ -656,8 +663,8 @@
     de fichiers de segment WAL jusqu'à la résolution de la situation.
     (Si le système de fichiers contenant <filename>pg_xlog/</filename> se
     remplit, <productname>PostgreSQL</productname> s'arrête en mode PANIC.
-    Aucune transaction antérieure n'est perdue mais la base de données est
-    indisponible tant que de l'espace n'a pas été libéré.)
+    Aucune transaction validée n'est perdue mais la base de données est
+    inaccessible tant que de l'espace n'a pas été libéré.)
    </para>
 
    <para>
@@ -677,8 +684,8 @@
     Lors de l'écriture de la commande d'archivage, il faut garder à l'esprit que les
     noms de fichier à archiver peuvent contenir jusqu'à 64 caractères et 
     être composés de toute combinaison de lettres ASCII, de chiffres et de points.
-    Il n'est pas nécessaire de retenir le chemin relatif original
-    (<literal>%p</literal>) mais il est nécessaire de rappeler le nom du fichier
+    Il n'est pas nécessaire de conserver le chemin relatif original
+    (<literal>%p</literal>) mais il est nécessaire de se rappeler du nom du fichier
     (<literal>%f</literal>).
    </para>
 
@@ -719,14 +726,14 @@
    </para>
 
    <para>
-    Quand <varname>archive_mode</varname> est désactivé
-    (<literal>off</literal>), certaines commandes SQL sont optimisées pour
+    Quand <varname>wal_level</varname> est configuré à
+    <literal>minimal</literal>, certaines commandes SQL sont optimisées pour
     éviter la journalisation des transactions, de la façon décrite dans
-    <xref linkend="populate-pitr"/>. Si l'archivage est activé lors de
+    <xref linkend="populate-pitr"/>. Si l'archivage or streaming replication est activé lors de
     l'exécution d'une de ces instructions, les journaux de transaction ne
     contiennent pas suffisamment d'informations pour une récupération via les
     archives. (La récupération après un arrêt brutal n'est pas affectée.)
-    Pour cette raison, <varname>archive_mode</varname> ne peut être
+    Pour cette raison, <varname>wal_level</varname> ne peut être
     modifié qu'au lancement du serveur. Néanmoins,
     <varname>archive_command</varname> peut être modifié par
     rechargement du fichier de configuration. Pour arrêter
@@ -761,7 +768,8 @@
      fichier de sauvegarde). <function>pg_start_backup</function> crée un fichier
      <firstterm>de label de sauvegarde</firstterm> nommé
      <filename>backup_label</filename> dans
-     le répertoire du cluster. Ce fichier contient les informations de la sauvegarde.
+     le répertoire du cluster. Ce fichier contient les informations de la sauvegarde, including the start time and label
+     string.
     </para>
 
     <para>
@@ -774,7 +782,7 @@
     <para>
      Par défaut, <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 vérification (<foreignphrase>chackpoint</foreignphrase>),
+     point de vérification (<foreignphrase>checkpoint</foreignphrase>),
      et que les entrées/sorties pour l'établissement
      de ce point de vérification seront réparties sur une grande durée, 
      par défaut la moitié de l'intervalle entre deux points de
@@ -793,7 +801,9 @@
     <para>
      Effectuer la sauvegarde à l'aide de tout outil de sauvegarde du
      système de fichiers, tel <application>tar</application> ou
-     <application>cpio</application>. Il
+     <application>cpio</application> (not
+     <application>pg_dump</application> or
+     <application>pg_dumpall</application>). Il
      n'est ni nécessaire ni désirable de stopper les opérations normales de
      la base de données pour cela.
     </para>
@@ -815,6 +825,7 @@
      sont archivés, c'est terminé. Le fichier identifié par le résultat de
      <function>pg_stop_backup</function> est le dernier segment nécessaire pour produire
      un jeu complet de fichiers de backup.
+     If <varname>archive_mode</varname> is enabled,
      <function>pg_stop_backup</function> ne rend pas la main avant que le dernier segment
      n'ait été archivé. L'archivage de ces fichiers est automatique puisque
      <varname>archive_command</varname> est configuré. Dans la plupart des
@@ -831,7 +842,7 @@
    </para>
 
    <para>
-    Certains outils de sauvegarde émettent des
+    Certains outils de sauvegarde de fichiers émettent des
     messages d'avertissement ou d'erreur si les fichiers qu'ils essaient de
     copier sont modifiés au cours de la copie. Cette situation, normale lors
     de la sauvegarde d'une base active, ne doit pas être considérée comme 
@@ -874,15 +885,15 @@
     <foreignphrase>tablespaces</foreignphrase> 
     qui ne se trouvent pas dans ce répertoire sont utilisés, il ne faut pas
     oublier de les inclure (et s'assurer également que la sauvegarde archive les liens
-    symboliques comme des liens, sans quoi la restauration des
-    <foreignphrase>tablespaces</foreignphrase> sera problématique).
+    symboliques comme des liens, sans quoi la restauration va corrompre les
+    <foreignphrase>tablespaces</foreignphrase>).
    </para>
 
    <para>
     Néanmoins, les fichiers du sous-répertoire
     <filename>pg_xlog/</filename>,
-    contenu dans le répertoire du cluster, peuvent être omis. Cette petite
-    complication permet de réduire le risque d'erreurs lors de la restauration.
+    contenu dans le répertoire du cluster, peuvent être omis. Ce léger
+    ajustement permet de réduire le risque d'erreurs lors de la restauration.
     C'est facile à réaliser si <filename>pg_xlog/</filename> est un lien
     symbolique vers quelque endroit extérieur au répertoire du cluster, 
     ce qui est toutefois une configuration courante, pour des raisons de performance.
@@ -991,7 +1002,7 @@
    <listitem>
     <para>
      Restaurer les fichiers de la base de données à partir de la
-     sauvegarde. Il faut veiller à ce qu'ils soient restaurés avec le bon
+     sauvegarde des fichiers. Il faut veiller à ce qu'ils soient restaurés avec le bon
      propriétaire (l'utilisateur système de la base de données, et non pas
      <literal>root</literal>&nbsp;!) et avec les bons droits. Si des
      <foreignphrase>tablespaces</foreignphrase> sont utilisés, il faut
@@ -1021,7 +1032,7 @@
     <para>
      Créer un fichier de commandes de récupération 
      <filename>recovery.conf</filename> dans le répertoire des données du
-     cluster (voir <xref linkend="recovery-config-settings"/>). Il peut, de
+     cluster (voir <xref linkend="recovery-config"/>). Il peut, de
      plus, être judicieux de modifier temporairement le fichier 
      <filename>pg_hba.conf</filename> pour empêcher les utilisateurs
      ordinaires de se connecter tant qu'il n'est pas certain que la
@@ -1036,8 +1047,7 @@
      simplement être relancé. Il continue alors la récupération. À la
      fin du processus de récupération, le serveur renomme
      <filename>recovery.conf</filename> en <filename>recovery.done</filename>
-     (pour empêcher de retourner accidentellement en mode de récupération en
-     cas de nouvel arrêt brutal ultérieur), puis passe en mode de
+     (pour éviter de retourner accidentellement en mode de récupération), puis passe en mode de
      fonctionnement normal.
     </para>
    </listitem>
@@ -1054,7 +1064,7 @@
 
 <!-- SAS -->
    <para>
-    Le point clé de tout ceci est l'écriture d'un fichier de commandes de
+    Le point clé de tout ceci est l'écriture d'un fichier de configuration de
     récupération qui décrit comment et jusqu'où récupérer. Le fichier 
     <filename>recovery.conf.sample</filename> (normalement présent dans le
     répertoire d'installation <filename>share/</filename>) peut être utilisé
@@ -1148,156 +1158,6 @@
     <filename>pg_control</filename> pour indiquer que les données WAL déjà
     traitées n'ont plus à être parcourues.
    </para>
-
-    <sect3 id="recovery-config-settings" xreflabel="Configuration de la récupération">
-     <title>Configuration de la récupération</title>
-
-     <para>
-      Ces paramètres de configuration ne peuvent être placées que dans le fichier
-      <filename>recovery.conf</filename> et s'appliquent uniquement pour la durée de la
-      récupération. Ils doivent être réinitialisés avant toute récupération
-      ultérieure. Ils ne peuvent pas être modifiés après le démarrage de la récupération.
-     </para>
-
-     <variablelist>
-
-     <varlistentry id="restore-command" xreflabel="restore_command">
-      <term><varname>restore_command</varname> (<type>string</type>)</term>
-      <listitem>
-       <para>
-        La commande shell à exécuter pour récupérer un segment archivé de la
-        série de fichiers WAL. Ce paramètre est requis. Tout <literal>%f</literal>
-        dans la chaîne est remplacé par le nom du fichier à récupérer à
-        partir de l'archive. Tout <literal>%p</literal> est remplacé par le
-        chemin vers le répertoire de copie sur le serveur. (Le nom du chemin
-        est relatif au répertoire de travail du serveur, c'est-à-dire le
-        répertoire des données du cluster.)
-        Tout <literal>%r</literal> est remplacé par le nom du fichier contenant
-	le dernier point de redémarrage valide. C'est le premier fichier à
-	conserver pour permettre à une restauration d'être redémarrable, donc
-	cette information peut être utilisée pour tronquer l'archive au
-	minimum nécessaire pour supporter le redémarrage de la restauration
-	en cours. <literal>%r</literal> n'est typiquement utilisé que dans le cas
-	d'une configuration avec un serveur de secours (voir <xref
-        linkend="warm-standby"/>).
-        <literal>%%</literal> est utilisé pour écrire le
-        caractère <literal>%</literal> dans la commande.
-       </para>
-       <para>
-        Il est impératif que la commande ne renvoie un code de sortie zéro
-	que si, et seulement si, elle a réussi. Des noms de fichiers absents
-	de l'archive <emphasis>seront demandés</emphasis> à la commande&nbsp;; elle
-        doit renvoyer une valeur différente de zéro dans ce cas.
-        Exemples&nbsp;:
-<programlisting>restore_command = 'cp /mnt/serveur/reparchives/%f "%p"'
-restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows</programlisting>
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry id="recovery-end-command" xreflabel="recovery_end_command">
-      <term><varname>recovery_end_command</varname> (<type>string</type>)</term>
-      <listitem>
-       <para>
-         Ce paramètre indique  une commande shell à exécuter une fois à la fin
-	 de la restauration. Ce paramètre est optionnel. Le but de ce paramètre
-	 est de fournir un mécanisme de nettoyage après la réplication ou la
-	 restauration. Tout <literal>%r</literal> est remplacé par le nom du
-	 fichier contenant le dernier point de redémarrage valide. C'est donc
-	 le premier fichier à conserver pour permettre à une installation
-	 restaurée d'être utilisable. Cette information est importante pour
-	 savoir comment tronquer l'archive au maximum tout en permettant le
-	 redémarrage. <literal>%r</literal> sera typiquement utilisé dans le
-	 cas d'une configuration en <foreignphrase>warm-standby</foreignphrase>
-	 (voir <xref linkend="warm-standby"/>). Écrivez <literal>%%</literal>
-	 pour embarquer un vrai caractère <literal>%</literal> dans la
-	 commande.
-       </para>
-       
-       <para>
-         Si la commande renvoie un code de sortie différent de zéro,
-	 alors un message WARNING sera écrit et la base de données tentera
-	 malgré tout un démarrage, sauf dans le cas où la commande a été
-	 terminée par un signal.
-       </para>
-      </listitem>
-     </varlistentry>
-     
-     <varlistentry id="recovery-target-time" xreflabel="recovery_target_time">
-      <term><varname>recovery_target_time</varname> (<type>timestamp</type>)
-      </term>
-      <listitem>
-       <para>
-        L'estampille temporelle au-delà de laquelle arrêter
-        la récupération. Seul un des deux paramètres
-        <varname>recovery_target_time</varname> et
-	<xref linkend="recovery-target-xid"/> peut être précisé. Par défaut, la
-        récupération court jusqu'à la fin du journal WAL. Le point
-        d'arrêt précis est aussi influencé par
-	<xref linkend="recovery-target-inclusive"/>.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry id="recovery-target-xid" xreflabel="recovery_target_xid">
-      <term><varname>recovery_target_xid</varname> (<type>string</type>)</term>
-      <listitem>
-       <para>
-        L'ID de la transaction à laquelle arrêter la récupération.
-        Alors que les ID de transactions sont affectés
-        séquentiellement au début de la transaction, les transactions peuvent
-        se terminer dans un ordre numérique différent. Les transactions qui
-        sont récupérées sont celles qui ont été validées avant celle
-        indiquée (quelques fois en l'incluant). Seul un des deux
-	paramètres <varname>recovery_target_xid</varname> et
-	<xref linkend="recovery-target-time"/> peut être indiqué. Par
-        défaut, la récupération court jusqu'à la fin du journal WAL. Le point
-        d'arrêt précis est aussi influencé par
-        <xref linkend="recovery-target-inclusive"/>.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry id="recovery-target-inclusive" xreflabel="recovery_target_inclusive">
-      <term><varname>recovery_target_inclusive</varname> (<type>boolean</type>)
-      </term>
-      <listitem>
-       <para>
-        Ce paramètre indique si la récupération doit s'arrêter immédiatement
-	après la cible de récupération précisée (<literal>true</literal>)
-	ou juste avant (<literal>false</literal>). Il s'applique à
-	<xref linkend="recovery-target-time"/> et
-	<xref linkend="recovery-target-xid"/>, en fonction de celui qui est
-	indiqué pour cette récupération. Il indique si les transactions
-	d'instant ou ID cible de validation exact, respectivement,
-        sont incluses dans la récupération. La valeur par défaut est
-        <literal>true</literal>.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry id="recovery-target-timeline" xreflabel="recovery_target_timeline">
-      <term><varname>recovery_target_timeline</varname> (<type>string</type>)
-      </term>
-      <listitem>
-       <para>
-        La ligne temporelle 
-	(<foreignphrase>timeline</foreignphrase>) à utiliser pour la
-	récupération. Par défaut, la récupération s'effectue en utilisant la
-	ligne temporelle en cours au moment de la sauvegarde. Ce paramètre
-	ne doit être configuré que
-	pour les situations de récupération complexes, dans lesquelles
-	il est nécessaire de retourner à un état postérieur à une récupération
-	d'instantané. Voir la <xref linkend="backup-timelines"/> pour plus
-	d'informations.
-       </para>
-      </listitem>
-     </varlistentry>
-
-   </variablelist>
-
-   </sect3>
-
   </sect2>
 
 <!-- ICI -->
@@ -1318,8 +1178,8 @@
     du voyage dans le temps et des univers parallèles.
    </para>
    <para>
-    Dans l'historique
-    original de la base de données, une table critique a peut-être été
+    Par exemple, dans l'historique
+    original de la base de données, supposez qu'une table critique ait été
     supprimée à 17h15 mardi soir, mais personne n'a réalisé cette erreur
     avant mercredi midi. Sans stress, la sauvegarde est récupérée
     et restaurée dans l'état où elle se trouvait à 17h14 mardi soir. La base
@@ -1406,9 +1266,11 @@
 
      <para>
       En vue d'effectuer des sauvegardes à chaud autonomes, on positionne
+      <varname>wal_level</varname> to
+      <literal>archive</literal> (or <literal>hot_standby</literal>),
       <varname>archive_mode</varname> à <literal>on</literal>, et on configure
       <varname>archive_command</varname> de telle sorte que l'archivage ne soit
-      réalisé que lorsqu'un <quote>fichier de bascule</quote> existe. Par
+      réalisé que lorsqu'un <emphasis>fichier de bascule</emphasis> existe. Par
       exemple&nbsp;:
 <programlisting>
 archive_command = 'test ! -f /var/lib/pgsql/backup_in_progress || cp -i %p /var/lib/pgsql/archive/%f &lt; /dev/null'
@@ -1526,9 +1388,12 @@
     <para>
      Les opérations sur les index de hachage
      ne sont pas tracées dans les WAL. Ces index
-     ne sont donc pas actualisés lorsque la sauvegarde est rejouée. Pour
-     cela, il est recommandé d'utiliser la commande 
-     <xref linkend="sql-reindex" endterm="sql-reindex-title"/> sur chacun
+     ne sont donc pas actualisés lorsque la sauvegarde est rejouée. This will mean that any new inserts
+     will be ignored by the index, updated rows will apparently disappear and
+     deleted rows will still retain pointers. In other words, if you modify a
+     table with a hash index on it then you will get incorrect query results
+     on a standby server.  When recovery completes it is recommended that you
+     manually <xref linkend="sql-reindex"/> sur chacun
      des index à la fin de la récupération.
     </para>
    </listitem>
@@ -1536,7 +1401,7 @@
    <listitem>
     <para>
      Si une commande
-     <xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/>
+     <xref linkend="sql-createdatabase"/>
      est exécutée alors qu'une sauvegarde est en cours, et que la base de données
      modèle utilisée par l'instruction <command>CREATE DATABASE</command>
      est à son tour modifiée pendant la sauvegarde, il est
@@ -1549,7 +1414,7 @@
    <listitem>
     <para>
      Les commandes
-     <xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/>
+     <xref linkend="sql-createtablespace"/>
      sont tracées dans les WAL avec le chemin absolu et sont donc rejouées
      en tant que créations de <foreignphrase>tablespace</foreignphrase>
      suivant le même chemin absolu. Cela n'est pas forcément souhaitable si
@@ -1588,496 +1453,6 @@
   </sect2>
  </sect1>
 
-<!-- Hot Standby : secours automatique ou reprise immédiate
-     Warm standby : secours semi-automatique ou reprise intermédiaire-->
- <sect1 id="warm-standby">
-  <title>Serveurs de secours semi-automatique (<foreignphrase>Warm Standby</foreignphrase>) pour la haute disponibilité</title>
-
-  <indexterm zone="backup">
-   <primary>warm standby</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>secours semi-automatique</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>reprise intermédiaire</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>PITR standby</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>reprise PITR</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>standby server</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>serveur de secours</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>log shipping</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>witness server</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>STONITH</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>high availability</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>haute disponibilité</primary>
-  </indexterm>
-
-  <para>
-   L'archivage continu peut être utilisé pour créer une configuration de cluster
-   de <firstterm>haute disponibilité</firstterm> (HA) avec un (ou plusieurs)
-   <firstterm>serveur(s) de secours</firstterm>, prêt(s) à prendre en main les
-   opérations en cas de défaillance du serveur principal. Cette fonctionnalité
-   est surtout connue sous le nom de
-   <firstterm><foreignphrase>Warm Standby</foreignphrase></firstterm> ou
-   <firstterm><foreignphrase>Log Shipping</foreignphrase></firstterm>.
-  </para>
-
-  <para>
-   Le serveur principal et le serveur de secours travaillent ensemble pour
-   fournir cette capacité, bien que les serveurs soient très faiblement couplés.
-   Le serveur principal opère en mode d'archivage continu alors que chaque
-   serveur de secours opère en mode de récupération continue en lisant
-   les fichiers WAL du serveur primaire. Aucune modification des tables
-   de la base n'est requise pour activer cette capacité. Elle a de ce fait
-   un coût modique en terme d'administration supplémentaire en comparaison avec
-   d'autres approches de réplication. Cette configuration a également un impact
-   relativement faible sur les performances du serveur principal.
-  </para>
-
-  <para>
-   Le déplacement direct des enregistrements des WAL d'une base à
-   une autre est généralement appelé <quote>transfert de journaux</quote>
-   (<foreignphrase>log shipping</foreignphrase>).
-   Sous <productname>PostgreSQL</productname>, c'est un transfert de
-   fichiers, de sorte que les enregistrements
-   WAL sont transférés fichier par fichier. Les fichiers WAL peuvent être envoyés
-   facilement et sans surcoût quelque soit la distance, que ce soit sur un
-   système adjacent, sur un autre système du même site ou sur un autre système
-   de l'autre côté du globe. La bande passante requise par cette technique
-   varie en fonction du taux de transaction du serveur principal.
-   Le transfert de journaux par enregistrement 
-   (<foreignphrase>record-based log shipping</foreignphrase>) est également
-   réalisable, à l'aide de procédures personnalisées, discutées dans
-   <xref linkend="warm-standby-record"/>.
-  </para>
-
-  <para>
-   L'envoi des journaux est asynchrone, ce qui signifie que les enregistrements
-   WAL sont envoyés après validation de la transaction. De ce fait, il y a un
-   léger risque de perte de données si le serveur principal est l'objet d'une
-   panne catastrophique&nbsp;: les transactions qui ne sont pas encore
-   transmises sont perdues. La taille de la fenêtre des données perdues peut
-   être réduite par l'utilisation du paramètre
-   <varname>archive_timeout</varname>. Celui-ci peut être positionné à une
-   valeur de quelques secondes seulement, si nécessaire. Toutefois, une
-   valeur aussi faible augmente considérablement les besoins en bande
-   passante du transfert de fichiers. Si une valeur aussi basse est
-   nécessaire, il peut être préférable de s'intéresser au transfert de
-   journaux par enregistrement. 
-  </para>
-
-  <para>
-   Le serveur de secours n'est pas accessible, car il est en permanence
-   occupé par la récupération. Les performances de récupération
-   sont suffisamment bonnes pour que l'attente soit réduite 
-   avant d'obtenir une disponibilité complète une fois le serveur de secours
-   activé. En conséquence, on appelle cela une configuration de reprise
-   intermédiaire ou de secours semi-automatique
-   (<foreignphrase>warm standby</foreignphrase>), qui permet d'atteindre la
-   haute disponibilité.
-   La restauration d'un serveur à partir d'une sauvegarde archivée de la
-   base et de la relecture des journaux prend considérablement plus de temps.
-   Cette technique n'offre qu'une solution de récupération suite à une panne,
-   mais pas de la haute disponibilité.
-  </para>
-
-  <sect2 id="warm-standby-planning">
-   <title>Planification</title>
-
-   <para>
-    Il est généralement préférable de créer des serveurs primaire et de
-    secours aussi semblables que possible, au moins du point de
-    vue du serveur de bases de données. En particulier, les noms des chemins
-    associés aux <foreignphrase>tablespaces</foreignphrase> sont passés tels
-    quels. Les serveurs doivent donc, tous, posséder les mêmes chemins de
-    montage des <foreignphrase>tablespaces</foreignphrase> si cette fonctionnalité
-    est utilisée. Si
-    <xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/>
-    est exécuté sur le serveur principal, tout nouveau point de montage
-    nécessaire doit être créé à la fois sur le serveur principal et sur tous les
-    serveurs de secours, avant l'exécution de la commande.
-    Le matériel ne doit pas obligatoirement être identique mais l'expérience
-    prouve qu'il est plus facile de maintenir deux systèmes identiques
-    sur la durée de vie de l'application et du système. Dans tous les cas,
-    l'architecture du matériel doit être identique
-    &mdash; le transfert d'un système 32 bits à un 64 bits ne fonctionne pas.
-   </para>
-
-  <para>
-   En général, il n'est pas possible d'effectuer le transfert de journaux
-   entre serveurs <productname>PostgreSQL</productname> de versions majeures différentes. La politique des
-   développeurs du
-   <quote>PostgreSQL Global Development Group</quote> consiste à ne pas
-   modifier les formats disque lors de mises à jour mineures. De ce fait, il
-   est possible d'utiliser des serveurs principal et de secours de versions
-   mineures différentes. Toutefois, aucune garantie formelle n'est offerte à
-   ce sujet. Il est préférable, dans la mesure du possible, de conserver les
-   serveurs
-   primaire et de secours au même niveau de version. Lors de la mise à jour
-   vers une nouvelle version mineure, la meilleure politique est de mettre
-   à jour les serveurs de secours en premier &mdash; il y a plus de chances
-   qu'une version mineure sache lire les fichiers WAL d'une version mineure
-   précédente que le contraire.
-  </para>
-
-  <para>
-    Il n'y a pas de mode particulier requis pour activer un serveur de
-    secours.
-    Les seules opérations sur les serveurs principal et de secours
-    sont des tâches normales d'archivage continu et de récupération.
-    Le seul point de contact entre les deux serveurs est
-    l'archive de fichiers WAL qu'ils partagent&nbsp;: le principal les
-    écrit, le serveur de secours les lit. Il est impératif que des
-    archives WAL de serveurs primaires différents ne soient pas mélangées.
-    L'archive n'est pas nécessairement large, si elle ne sert qu'à
-    l'opération de standby.
-   </para>
-
-   <para>
-    La magie qui permet à deux serveurs faiblement liés de travailler
-    ensemble réside dans une simple <varname>restore_command</varname>
-    utilisée sur le serveur de secours qui attend la disponibilité du
-    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 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. Pour les fichiers se terminant en 
-    <literal>.backup</literal> ou <literal>.history</literal>, il n'est pas besoin
-    d'attendre, et un code retour différent de zéro doit être retourné. 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
-    (<foreignphrase>failover</foreignphrase>), ce qui interrompt la
-    <varname>restore_command</varname>, sort de la boucle et retourne une
-    erreur au serveur de secours indiquant que le fichier n'a pas été
-    trouvé. Cela arrête alors la récupération et le serveur de secours devient
-    un serveur normal.
-   </para>
-   
-   <para>
-    Un exemple de pseudocode de <varname>restore_command</varname>
-    peut être&nbsp;:
-<programlisting>triggered = false;
-while (!NextWALFileReady() &amp;&amp; !triggered)
-{
-    sleep(100000L);         /* wait for ~0.1 sec */
-    if (CheckForExternalTrigger())
-        triggered = true;
-}
-if (!triggered)
-        CopyWALFileForRecovery();
-</programlisting>
-   </para>
-
-   <para>
-    Un exemple fonctionnel de <varname>restore_command</varname> 
-    d'attente est fourni dans un module <filename>contrib</filename> appelé
-    <application>pg_standby</application>. Il devrait être utilisé comme 
-    référence sur la façon d'implémenter correctement la logique décrite
-    ci-dessus. Cet exemple peut être étendu
-    si nécessaire pour supporter des configurations ou environnements
-    spécifiques.
-   </para>
-
-   <para>
-    <productname>PostgreSQL</productname> ne fournit pas de logiciel 
-    système qui permette d'identifier une panne du serveur principal et d'en
-    notifier le système et le serveur de bases de données de secours.
-    De nombreux outils de ce type existent et sont bien intégrés incluant d'autres
-    aspects nécessaires à la réussite du
-    <foreignphrase>failover</foreignphrase>, comme la migration d'adresse IP.
-   </para>
-
-   <para>
-    Le déclenchement du <foreignphrase>failover</foreignphrase> est une partie
-    importante de la planification et de la conception.
-    <varname>restore_command</varname> est
-    exécutée complètement pour chaque fichier WAL. Le processus
-    exécutant <varname>restore_command</varname> est du coup créé et meurt
-    pour chaque fichier. Il n'y a, de ce fait, pas de démon ou de processus
-    serveur. Il n'est donc pas possible d'utiliser les signaux et un
-    gestionnaire de signal. Une notification plus permanente est requise pour
-    le déclenchement du <foreignphrase>failover</foreignphrase>. Il est
-    possible d'utiliser un simple dépassement de temps d'attente,
-    spécialement en conjonction avec un paramètre
-    <varname>archive_timeout</varname> défini sur le serveur principal et
-    connu. Cela peut toutefois induire des erreurs, car un problème réseau ou
-    l'occupation du serveur principal peuvent suffire à provoquer
-    un <foreignphrase>failover</foreignphrase>. Un mécanisme de notification
-    tel que la création explicite d'un fichier déclencheur, quand cela est
-    possible, présente moins de risques d'erreur.
-   </para>
-
-   <para>
-    La taille de l'archive des journaux de transaction peut être minimisée en passant l'option
-    <literal>%r</literal> à <varname>restore_command</varname>. Cette option
-    indique le dernier fichier archive à conserver pour permettre un démarrage
-    correct de la restauration. Cela peut être utilisé pour tronquer l'archive
-    lorsque les fichiers ne sont plus nécessaires, s'il est possible d'écrire
-    sur l'archive depuis le serveur de secours.
-   </para>
-  </sect2>
-
-  <sect2 id="warm-standby-config">
-   <title>Mise en place</title>
-
-   <para>
-    Une procédure courte de configuration d'un serveur de secours est
-    indiquée dans la suite du document. Pour
-    les détails complets de chaque étape, on peut se référer aux sections précédentes.
-    <orderedlist>
-     <listitem>
-      <para>
-       Préaparer des configurations des serveurs principal et de secours
-       aussi proches que possible, 
-       ce qui inclut deux copies identiques de <productname>PostgreSQL</productname>,
-       dans la même version.
-      </para>
-     </listitem>
-     <listitem>
-      <para>
-       Configurer l'archivage continu sur le serveur principal vers une archive locale
-       située dans un répertoire du serveur de secours. S'assurer que les
-       paramètres <xref linkend="guc-archive-mode"/>, 
-       <xref linkend="guc-archive-command"/> et
-       <xref linkend="guc-archive-timeout"/> sont correctement configurés
-       sur le serveur principal (voir <xref linkend="backup-archiving-wal"/>).
-      </para>
-     </listitem>
-     <listitem>
-      <para>
-       Faire une sauvegarde des bases du serveur principal (voir <xref
-       linkend="backup-base-backup"/>) et charger ces données sur le serveur
-       de secours.
-      </para>
-     </listitem>
-     <listitem>
-      <para>
-       Commencer la récupération sur le serveur de secours à partir de l'archive
-       WAL locale en utilisant un fichier <filename>recovery.conf</filename>
-       qui utilise une <varname>restore_command</varname> d'attente (voir
-       <xref linkend="backup-pitr-recovery"/>).
-      </para>
-     </listitem>
-    </orderedlist>
-   </para>
-
-   <para>
-    La récupération traite l'archive WAL en lecture seule. Ainsi, dès lors
-    qu'un fichier WAL est copié sur le système de secours, il peut être
-    copié sur une cassette en même temps qu'il est lu pour la
-    récupération. De ce fait, un serveur de secours 
-    de haute disponibilité peut tourner en parallèle du
-    stockage des fichiers en vue de besoins de reprise sur panne à plus long
-    terme.
-   </para>
-
-   <para>
-    Pour les tests, il est possible d'exécuter le serveur principal
-    et celui de secours sur le même système. Cela n'apporte aucune amélioration
-    à la robustesse du système, et ne peut pas être présenté comme
-    de la haute disponibilité.
-   </para>
-  </sect2>
-
-  <sect2 id="warm-standby-failover">
-   <title>Bascule (<foreignphrase>Failover</foreignphrase>)</title>
-
-   <para>
-    Si le serveur principal rencontre un problème, le serveur de secours doit commencer
-    la procédure de <foreignphrase>failover</foreignphrase>.
-   </para>
-
-   <para>
-    Si le serveur de secours échoue, alors le 
-    <foreignphrase>failover</foreignphrase> n'est plus nécessaire.
-    S'il peut être redémarré, même quelque temps après, alors le
-    processus de récupération peut être immédiatement relancé en tirant
-    parti de la restauration réactivable (<foreignphrase>Restartable
-    Recovery</foreignphrase>). Enfin, s'il ne peut être redémarré, un
-    nouveau serveur de secours doit être créé.
-   </para>
-
-   <para>
-    Si le serveur principal tombe et redémarre immédiatement, il faut
-    disposer d'un mécanisme l'informant qu'il n'est plus le serveur
-    principal. Ce mécanisme, connu sous l'acronyme <acronym>STONITH</acronym>
-    (<foreignphrase>Shoot The Other Node In The Head</foreignphrase>), 
-    permet d'éviter les situations où les deux systèmes pensent qu'ils sont
-    le serveur principal, ce qui engendrerait une certaine confusion et
-    conduirait à des pertes irrémédiables de données.
-   </para>
-
-   <para>
-    Un grand nombre de systèmes de <foreignphrase>failover</foreignphrase>
-    utilisent simplement deux systèmes, le principal et celui de secours,
-    connectés par un mécanisme appelé <quote>heartbeat</quote> qui vérifie
-    en permanence la connectivité entre les deux systèmes et la viabilité
-    du principal. Il est aussi possible d'utiliser un troisième système,
-    appelé serveur témoin pour éviter tout problème de
-    <foreignphrase>failover</foreignphrase> inapproprié. Cependant, 
-    la complexité supplémentaire peut s'avérer inutile sauf s'il
-    est configuré avec une attention suffisante et des tests rigoureux.
-   </para>
-
-   <para>
-    Au moment où le <foreignphrase>failover</foreignphrase> est mis en place sur le
-    serveur de secours, un seul serveur est opérationnel. On parle alors
-    d'état dégénéré. L'ancien serveur de secours est
-    devenu serveur principal, mais l'ancien serveur principal est arrêté
-    et peut le rester. Pour revenir au fonctionnement normal, il faut
-    désormais recréer intégralement un serveur de secours, soit
-    sur l'ancien système principal, s'il peut redémarrer, soit sur un
-    troisième système, de préférence nouveau. Cela réalisé, on
-    peut considérer que les deux serveurs ont échangé leurs rôles.
-   </para>
-   <para>
-    Certains administrateurs choisissent d'utiliser un troisième serveur
-    pour servir de sauvegarde au nouveau serveur principal le temps que le
-    serveur de secours devienne opérationnel. Toutefois, cela complique
-    la configuration du système et des processus opérationnels.
-   </para>
-
-   <para>
-    La bascule entre le serveur principal et celui de secours peut être
-    rapide, mais nécessite quelque temps pour repréparer le cluster de 
-    <foreignphrase>failover</foreignphrase>. Une bascule régulière
-    est utile car elle permet l'arrêt régulier de chaque système pour
-    maintenance.
-    Cela permet également de tester les mécanismes de
-    <foreignphrase>failover</foreignphrase> pour s'assurer que cela
-    fonctionnera toujours en cas de besoin. Il est judicieux de rédiger ces
-    procédures.
-   </para>
-  </sect2>
-
-  <sect2 id="warm-standby-record">
-   <title>Transfert de journaux d'après les enregistrements
-   (<foreignphrase>Record-based Log Shipping</foreignphrase>)</title>
-
-   <para>
-    <productname>PostgreSQL</productname> supporte directement le transfert
-    de journaux d'après fichiers (<foreignphrase>file-based
-    log shipping</foreignphrase>) tel que décrit plus haut. Il est
-    également possible d'implanter le transfert de journaux d'après
-    enregistrements, mais cela demande un développement adapté.
-   </para>
-
-   <para>
-    Un programme externe peut faire appel à la fonction 
-    <function>pg_xlogfile_name_offset()</function> (voir à ce propos la
-    <xref linkend="functions-admin"/>) pour trouver le nom du fichier et
-    l'exact décalage en octets de la fin courante du WAL à l'intérieur de
-    celui-ci. Il
-    peut alors accéder directement au fichier WAL et copier les données
-    depuis la dernière fin connue des WAL jusqu'à l'actuelle vers le(s)
-    serveur(s) de secours. Par cette approche, la fenêtre de perte de
-    données correspond au temps du cycle d'interrogation du programme
-    de copie. Elle peut alors être très courte. Il n'y a, de plus, pas de
-    surconsommation de la bande passante du fait de l'archivage de fichiers
-    segment partiellement utilisés. Les scripts
-    <varname>restore_command</varname> du serveur de secours continuent de
-    traiter avec l'ensemble des fichiers WAL. De ce fait, les serveurs de
-    secours ne peuvent pas, en fonctionnement normal, disposer des données
-    copiées par incréments. Elles n'ont d'intérêt que lorsque le
-    serveur principal subit une panne &mdash; le dernier fichier WAL partiel
-    est alors chargé dans le serveur de secours avant qu'il puisse démarrer.
-    Un codage correct de cette procédure nécessite une réelle coopération
-    entre le script de <varname>restore_command</varname> et le programme de
-    copie des donneés.
-   </para>
-  </sect2>
-
-  <sect2 id="backup-incremental-updated">
-   <title>Sauvegardes incrémentales</title>
-
-  <indexterm zone="backup">
-   <primary>incrementally updated backups</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>sauvegarde incrémentale</primary>
-  </indexterm>
-
-  <indexterm zone="backup">
-   <primary>accumulation des modifications</primary>
-  </indexterm>
-
-<!-- Le terme accumulation des modifications ne me semble pas très heureux.
--->
-   <para>
-    Dans une configuration de reprise intermédiaire (<foreignphrase>warm
-    standby</foreignphrase>), il est possible de décharger le serveur
-    principal du coût des sauvegardes régulières des bases. Les sauvegardes
-    des bases peuvent, pour cela, être effectuées en sauvegardant les fichiers
-    d'un serveur de secours. Ce concept prend le nom de sauvegardes
-    incrémentales, accumulation des journaux de modifications ou
-    accumulation des modifications.
-   </para>
-
-   <para>
-    Si une sauvegarde du répertoire des données du serveur de secours est
-    effectuée alors
-    qu'il traite les journaux transférés du serveur principal, il est
-    possible de recharger ces données et de redémarrer le processus de
-    restauration sur le serveur de secours à partir du dernier point de
-    redémarrage. Il n'est alors plus nécessaire de conserver les fichiers
-    WAL précédant le point de redémarrage. Si une restauration s'avère
-    nécessaire, elle est plus rapide si elle est effectuée à partir d'une
-    sauvegarde incrémentale qu'à partir de la
-    sauvegarde originale.
-   </para>
-
-   <para>
-    Puisque le serveur de secours n'est pas <quote>actif</quote>, il n'est
-    pas possible d'utiliser <function>pg_start_backup()</function> et
-    <function>pg_stop_backup()</function> pour gérer le processus de
-    sauvegarde&nbsp;; c'est à l'utilisateur de déterminer le nombre de fichiers
-    de segment WAL à conserver pour avoir une sauvegarde
-    récupérable. Cela peut se faire en exécutant 
-    <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_checkpoints</varname> pour afficher les valeurs sur les
-    traces du serveur.
-   </para>
-  </sect2>
- </sect1>
-
  <sect1 id="migration">
   <title>Migration entre versions</title>
 
@@ -2099,27 +1474,32 @@
   </para>
 
   <para>
-   En règle générale, le format interne des données est sujet à modification d'une
-   version majeure à l'autre (quand le nombre après le premier point change).
-   Ce qui n'est pas le cas pour les versions mineures à l'intérieur d'une
-   même version majeure (quand seul le nombre après le deuxième point change)&nbsp;;
-   elles ont toujours un format de stockage compatible.
-   Par exemple, les versions 8.1.1, 8.2.3 et 8.3 ne sont pas compatibles, alors
-   que les versions 8.2.3 et 8.2.4 le sont. Lorsque la mise à jour concerne
-   des versions compatibles, les exécutables peuvent simplement être
-   remplacés et le répertoire des données sur le disque réutilisé. 
-   Dans le cas contraire, il faut sauvegarder les données et les restaurer sur
-   le nouveau serveur. <application>pg_dump</application> doit être utilisé
-   pour cela&nbsp;; les méthodes de
-   sauvegarde au niveau système de fichiers ne fonctionnent évidemment pas.
-   Un certain nombre de vérifications est automatiquement effectué pour
-   interdire l'utilisation d'un répertoire de données d'une version
-   incompatible. Il n'y a donc pas grand risque à lancer une mauvaise
-   version de <productname>PostgreSQL</productname> sur un répertoire de
-   données.
+   <productname>PostgreSQL</productname> major versions are represented by the
+   first two digit groups of the version number, e.g. 8.4.
+   <productname>PostgreSQL</productname> minor versions are represented by the
+   the third group of version digits, i.e., 8.4.2 is the second minor
+   release of 8.4.  Minor releases never change the internal storage
+   format and are always compatible with earlier and later minor
+   releases of the same major version number, i.e. 8.4.2 is compatible
+   with 8.4, 8.4.1 and 8.4.6.  To update between compatible versions,
+   you simply replace the executables while the server is down and
+   restart the server.  The data directory remains unchanged &mdash;
+   minor upgrades are that simple.
   </para>
 
   <para>
+   For <emphasis>major</emphasis> releases of <productname>PostgreSQL</productname>, the
+   internal data storage format is subject to change.  When migrating
+   data from one major version of <productname>PostgreSQL</productname> to another,
+   you need to back up your data and restore it on the new server.
+   This must be done using <application>pg_dump</application>; file system level
+   backup methods will not work. There are checks in place that prevent
+   you from using a data directory with an incompatible version of
+   <productname>PostgreSQL</productname>, so no great harm can be done
+   by trying to start the wrong server version on a data directory.
+  </para>
+
+  <para>
    Il est recommandé d'utiliser les programmes <application>pg_dump</application> et
    <application>pg_dumpall</application> issus de la nouvelle version de
    <productname>PostgreSQL</productname>. Ceci permet de tirer parti
@@ -2160,13 +1540,14 @@
   <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
+   nouvelle version, éteindre l'ancien serveur, déplacer l'ancienne version vers un autre
    endroit, installer la nouvelle, la démarrer et enfin restaurer les données. Par
    exemple&nbsp;:
    
 <programlisting>pg_dumpall &gt; sauvegarde.sql
 pg_ctl stop
 mv /usr/local/pgsql /usr/local/pgsql.old
+# Rename any tablespace directories as well
 cd ~/postgresql-&version;
 gmake install
 initdb -D /usr/local/pgsql/data

Modified: traduc/trunk/postgresql/biblio.xml
===================================================================
--- traduc/trunk/postgresql/biblio.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/biblio.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -17,8 +17,8 @@
    Quelques livres blancs et rapports techniques réalisés par l'équipe d'origine de
    développement de <productname>POSTGRES</productname> sont
    disponibles sur le
-   <ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/">
-    site web</ulink> du département des sciences informatiques de l'université
+   <ulink url="http://db.cs.berkeley.edu/papers/">
+   site web</ulink> du département des sciences informatiques de l'université
    de Californie.
   </para>
 
@@ -247,8 +247,7 @@
    </biblioentry>
 
   <biblioentry id="fong">
-   <title><ulink
-   url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/UCB-MS-zfong.pdf">The
+   <title><ulink url="http://db.cs.berkeley.edu/papers/UCB-MS-zfong.pdf">The
    design and implementation of the
    <productname>POSTGRES</productname> query optimizer</ulink></title>
    <author>
@@ -311,7 +310,7 @@
 
    <biblioentry>
    <biblioset id="rowe87" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M87-13.pdf">The <productname>POSTGRES</productname> data model</ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M87-13.pdf">The <productname>POSTGRES</productname> data model</ulink></title>
     <titleabbrev>Rowe and Stonebraker, 1987</titleabbrev>
     <authorgroup>
      <author>
@@ -368,7 +367,7 @@
 
    <biblioentry>
    <biblioset id="ston86" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M85-95.pdf">The design of <productname>POSTGRES</productname></ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M85-95.pdf">The design of <productname>POSTGRES</productname></ulink></title>
     <titleabbrev>Stonebraker and Rowe, 1986</titleabbrev>
     <authorgroup>
      <author>
@@ -416,7 +415,7 @@
 
    <biblioentry>
    <biblioset id="ston87b" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M87-06.pdf">The design of the <productname>POSTGRES</productname> storage system</ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M87-06.pdf">The design of the <productname>POSTGRES</productname> storage system</ulink></title>
     <titleabbrev>Stonebraker, 1987</titleabbrev>
     <authorgroup>
      <author>
@@ -434,7 +433,7 @@
 
    <biblioentry>
    <biblioset id="ston89" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M89-82.pdf">A commentary on the <productname>POSTGRES</productname> rules system</ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M89-82.pdf">A commentary on the <productname>POSTGRES</productname> rules system</ulink></title>
     <titleabbrev>Stonebraker et al, 1989</titleabbrev>
     <authorgroup>
      <author>
@@ -459,7 +458,7 @@
 
    <biblioentry>
    <biblioset id="ston89b" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M89-17.pdf">The case for partial indexes</ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M89-17.pdf">The case for partial indexes</ulink></title>
     <titleabbrev>Stonebraker, M, 1989b</titleabbrev>
     <authorgroup>
      <author>
@@ -477,7 +476,7 @@
 
    <biblioentry>
    <biblioset id="ston90a" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M90-34.pdf">The implementation of <productname>POSTGRES</productname></ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M90-34.pdf">The implementation of <productname>POSTGRES</productname></ulink></title>
     <titleabbrev>Stonebraker, Rowe, Hirohama, 1990</titleabbrev>
     <authorgroup>
      <author>
@@ -505,7 +504,7 @@
 
    <biblioentry>
    <biblioset id="ston90b" relation="article">
-    <title><ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/papers/ERL-M90-36.pdf">On Rules, Procedures, Caching and Views in Database Systems</ulink></title>
+    <title><ulink url="http://db.cs.berkeley.edu/papers/ERL-M90-36.pdf">On Rules, Procedures, Caching and Views in Database Systems</ulink></title>
     <titleabbrev>Stonebraker et al, ACM, 1990</titleabbrev>
     <authorgroup>
      <author>

Modified: traduc/trunk/postgresql/bki.xml
===================================================================
--- traduc/trunk/postgresql/bki.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/bki.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -27,7 +27,7 @@
   cluster de bases de données. Le fichier d'entrée utilisé par
   <application>initdb</application> est créé, lors de la construction et de
   l'installation de <productname>PostgreSQL</productname>, par un programme
-  nommé <filename>genbki.sh</filename> qui lit différents fichiers d'en-têtes
+  nommé <filename>genbki.pl</filename> qui lit différents fichiers d'en-têtes
   C spécialement formatés à partir du répertoire
   <filename>src/include/catalog</filename> des sources. Le fichier
   <acronym>BKI</acronym> créé est appelé <filename>postgres.bki</filename> et
@@ -78,11 +78,12 @@
    <varlistentry>
     <term>
      <literal>create</literal>
+     <replaceable class="parameter">tablename</replaceable>
+     <replaceable class="parameter">tableoid</replaceable>
      <optional><literal>bootstrap</literal></optional>
      <optional><literal>shared_relation</literal></optional>
      <optional><literal>without_oids</literal></optional>
-     <replaceable class="parameter">tablename</replaceable>
-     <replaceable class="parameter">tableoid</replaceable>
+     <optional><literal>rowtype_oid</literal> <replaceable>oid</replaceable></optional>
      (<replaceable class="parameter">name1</replaceable> =
      <replaceable class="parameter">type1</replaceable>
      <optional>, <replaceable class="parameter">name2</replaceable> =
@@ -132,6 +133,11 @@
       La table est créée partagée si <literal>shared_relation</literal> est
       indiqué. Elle possède des OID à moins que
       <literal>without_oids</literal> ne soit précisé.
+      The table's rowtype OID (<structname>pg_type</structname> OID) can optionally
+      be specified via the <literal>rowtype_oid</literal> clause; if not specified,
+      an OID is automatically generated for it.  (The <literal>rowtype_oid</literal>
+      clause is useless if <literal>bootstrap</literal> is specified, but it can be
+      provided anyway for documentation.)
      </para>
     </listitem>
    </varlistentry>

Modified: traduc/trunk/postgresql/catalogs.xml
===================================================================
--- traduc/trunk/postgresql/catalogs.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/catalogs.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -125,6 +125,11 @@
      </row>
 
      <row>
+      <entry><link linkend="catalog-pg-default-acl"><structname>pg_default_acl</structname></link></entry>
+      <entry>default privileges for object types</entry>
+     </row>
+
+     <row>
       <entry><link linkend="catalog-pg-depend"><structname>pg_depend</structname></link></entry>
       <entry>dépendances entre objets de la base de données</entry>
      </row>
@@ -166,12 +171,12 @@
 
      <row>
       <entry><link linkend="catalog-pg-largeobject"><structname>pg_largeobject</structname></link></entry>
-      <entry>gros objets</entry>
+      <entry>data pages for gros objets</entry>
      </row>
 
      <row>
-      <entry><link linkend="catalog-pg-listener"><structname>pg_listener</structname></link></entry>
-      <entry>support de notification asynchrone</entry>
+      <entry><link linkend="catalog-pg-largeobject-metadata"><structname>pg_largeobject_metadata</structname></link></entry>
+      <entry>metadata for large objects</entry>
      </row>
 
      <row>
@@ -210,6 +215,11 @@
      </row>
 
      <row>
+      <entry><link linkend="catalog-pg-db-role-setting"><structname>pg_db_role_setting</structname></link></entry>
+      <entry>per-role and per-database settings</entry>
+     </row>
+
+     <row>
       <entry><link linkend="catalog-pg-shdepend"><structname>pg_shdepend</structname></link></entry>
       <entry>dépendances sur les objets partagés</entry>
      </row>
@@ -361,7 +371,7 @@
 
   <para>
    Les nouvelles fonctions d'agrégat sont enregistrées avec la commande
-   <xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"/>.
+   <xref linkend="sql-createaggregate"/>.
    La <xref linkend="xaggr"/>  fournit de plus amples informations sur
    l'écriture des fonctions d'agrégat et sur
    la signification des fonctions de transition.
@@ -476,7 +486,7 @@
       <entry><type>bool</type></entry>
       <entry></entry>
       <entry>La méthode d'accès supporte-t-elle les recherches
-       IS NULL&nbsp;?</entry>
+       IS NULL/NOT NULL&nbsp;?</entry>
      </row>
 
      <row>
@@ -925,7 +935,7 @@
       <entry>
        Contrôle le niveau de détail des
        statistiques accumulées pour la colonne par
-       <xref linkend="sql-analyze" endterm="sql-analyze-title"/>.
+       <xref linkend="sql-analyze"/>.
        Une valeur 0 indique qu'aucune statistique ne doit être collectée.
        Une valeur négative indique d'utiliser l'objectif de statistiques 
        par défaut.
@@ -1088,6 +1098,15 @@
        accordés à cette colonne
       </entry>
      </row>
+
+     <row>
+      <entry><structfield>attoptions</structfield></entry>
+      <entry><type>text[]</type></entry>
+      <entry></entry>
+      <entry>
+       Attribute-level options, as <quote>keyword=value</quote> strings
+      </entry>
+     </row>
     </tbody>
    </tgroup>
   </table>
@@ -1235,12 +1254,6 @@
        valable
        </entry>
      </row>
-
-     <row>
-      <entry><structfield>rolconfig</structfield></entry>
-      <entry><type>text[]</type></entry>
-      <entry>Valeurs par défaut des variables de configuration de session</entry>
-     </row>
     </tbody>
    </tgroup>
   </table>
@@ -1333,8 +1346,7 @@
   <para>
    Le catalogue <structname>pg_cast</structname> stocke les chemins de 
    conversion de type de donnée, qu'il s'agisse de ceux par défaut ou ceux 
-   définis avec la commande <xref linkend="sql-createcast"
-   endterm="sql-createcast-title"/>.
+   définis avec la commande <xref linkend="sql-createcast"/>.
   </para>
 
   <para>
@@ -1545,8 +1557,9 @@
       <entry><structfield>relfilenode</structfield></entry>
       <entry><type>oid</type></entry>
       <entry></entry>
-      <entry>Nom du fichier disque de la relation&nbsp;; 0 s'il n'y en a
-       pas.</entry>
+      <entry>Nom du fichier disque de la relation&nbsp;;zero means this
+       is a <quote>mapped</quote> relation whose disk file name is determined
+       by low-level state.</entry>
      </row>
 
      <row>
@@ -1616,10 +1629,6 @@
       <entry>
        Vrai si c'est une table et qu'elle possède (ou possédait encore
        récemment) quelque index.
-       Ce champ est mis à jour par <command>CREATE INDEX</command>, mais pas
-       réinitialisé immédiatement après <command>DROP INDEX</command>.
-       <command>VACUUM</command> réinitialise <structfield>relhasindex</structfield>
-       s'il s'aperçoit que la table n'a pas d'index.
       </entry>
      </row>
 
@@ -1694,6 +1703,17 @@
      </row>
 
      <row>
+      <entry><structfield>relhasexclusion</structfield></entry>
+      <entry><type>bool</type></entry>
+      <entry></entry>
+      <entry>
+       For a table, true if the table has (or once had) any exclusion
+       constraints; for an index, true if the index supports an exclusion
+       constraint
+      </entry>
+     </row>
+
+     <row>
       <entry><structfield>relhasrules</structfield></entry>
       <entry><type>bool</type></entry>
       <entry></entry>
@@ -1741,10 +1761,8 @@
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
       <entry>
-       Droits d'accès&nbsp;; voir
-       <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-       <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour plus de
-       détails.
+       Droits d'accès&nbsp;; voir <xref linkend="sql-grant"/> et <xref
+       linkend="sql-revoke"/> pour plus de détails.
       </entry>
      </row>
 
@@ -1760,6 +1778,17 @@
     </tbody>
    </tgroup>
   </table>
+
+  <para>
+   Several of the boolean flags in <structname>pg_class</structname> are maintained
+   lazily: they are guaranteed to be true if that's the correct state, but
+   may not be reset to false immediately when the condition is no longer
+   true.  For example, <structfield>relhasindex</structfield> is set by
+   <command>CREATE INDEX</command>, but it is never cleared by
+   <command>DROP INDEX</command>.  Instead, <command>VACUUM</command> clears
+   <structfield>relhasindex</structfield> if it finds the table has no indexes.  This
+   arrangement avoids race conditions and improves concurrency.
+  </para>
  </sect1>
 
  <sect1 id="catalog-pg-constraint">
@@ -1771,13 +1800,18 @@
 
   <para>
    Le catalogue <structname>pg_constraint</structname> stocke les vérifications,
-   clés primaires, clés uniques et étrangères des tables. (Les contraintes de
+   clés primaires, clés uniques, étrangères, and exclusion des tables. (Les contraintes de
    colonnes ne sont pas traitées de manière particulière. Elles sont 
    équivalentes à des contraintes de tables.) Les contraintes NOT NULL sont
-   représentées dans le catalogue <structname>pg_attribute</structname>.
+   représentées dans le catalogue <structname>pg_attribute</structname>, pas ici.
   </para>
 
   <para>
+   User-defined constraint triggers (created with <command>CREATE CONSTRAINT
+   TRIGGER</command>) also give rise to an entry in this table.
+  </para>
+
+  <para>
    Les contraintes de vérification de domaine sont également stockées dans
    ce catalogue.
   </para>
@@ -1824,7 +1858,9 @@
         <literal>c</literal> = contrainte de vérification,
         <literal>f</literal> = contrainte de clé étrangère,
         <literal>p</literal> = contrainte de clé primaire,
-        <literal>u</literal> = contrainte d'unicité
+        <literal>u</literal> = contrainte d'unicité,
+        <literal>t</literal> = constraint trigger,
+        <literal>x</literal> = exclusion constraint
       </entry>
      </row>
 
@@ -1862,6 +1898,14 @@
      </row>
 
      <row>
+      <entry><structfield>conindid</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry>
+      <entry>The index supporting this constraint, if it's a unique, primary
+       key, foreign key, or exclusion constraint; else 0</entry>
+     </row>
+
+     <row>
       <entry><structfield>confrelid</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry>
@@ -1921,7 +1965,7 @@
       <entry><type>int4</type></entry>
       <entry></entry>
       <entry>
-       Le nombre d'ancêtres directs que cette contraite possède. Une contrainte
+       Le nombre d'ancêtres d'héritage directs que cette contraite possède. Une contrainte
        avec un nombre non nul d'ancêtres ne peut être ni supprimée ni renommée.
       </entry>
      </row>
@@ -1930,7 +1974,8 @@
       <entry><structfield>conkey</structfield></entry>
       <entry><type>int2[]</type></entry>
       <entry><literal><link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.attnum</literal></entry>
-      <entry>S'il s'agit d'une contrainte de table (incluant une clé étrangère),
+      <entry>S'il s'agit d'une contrainte de table (incluant les clés étrangères,
+      but not constraint triggers),
        liste des colonnes contraintes</entry>
      </row>
 
@@ -1966,6 +2011,13 @@
      </row>
 
      <row>
+      <entry><structfield>conexclop</structfield></entry>
+      <entry><type>oid[]</type></entry>
+      <entry><literal><link linkend="catalog-pg-operator"><structname>pg_operator</structname></link>.oid</literal></entry>
+      <entry>If an exclusion constraint, list of the per-column exclusion operators</entry>
+     </row>
+
+     <row>
       <entry><structfield>conbin</structfield></entry>
       <entry><type>text</type></entry>
       <entry></entry>
@@ -1984,6 +2036,16 @@
    </tgroup>
   </table>
 
+  <para>
+   In the case of an exclusion constraint, <structfield>conkey</structfield>
+   is only useful for constraint elements that are simple column references.
+   For other cases, a zero appears in <structfield>conkey</structfield>
+   and the associated index must be consulted to discover the expression
+   that is constrained.  (<structfield>conkey</structfield> thus has the
+   same contents as <structname>pg_index</structname>.<structfield>indkey</structfield> for the
+   index.)
+  </para>
+
   <note>
    <para>
     <structfield>consrc</structfield> n'est pas actualisé lors de la modification
@@ -1997,66 +2059,13 @@
   <note>
    <para>
     <literal>pg_class.relchecks</literal> doit accepter le même nombre de 
-    contraintes de vérification pour chaque relation.
+    contraintes de vérification pour chaque relation. Also, <literal>pg_class.relhasexclusion</literal> must
+    be true if there are any exclusion-constraint entries for the relation.
    </para>
   </note>
 
  </sect1>
 
- <sect1 id="catalog-pg-enum">
-  <title><structname>pg_enum</structname></title>
-
-  <indexterm zone="catalog-pg-enum">
-   <primary>pg_enum</primary>
-  </indexterm>
-
-  <para>
-   Le catalogue système <structname>pg_enum</structname> contient des entrées
-   qui correspondent aux types enum précisant les valeurs et labels associés. La
-   représentation interne d'une valeur enum donnée est en fait l'OID de sa ligne
-   associée dans <structname>pg_enum</structname>. Les OID pour un type enum
-   particulier précisent aussi l'ordre du tri. Il n'y a toutefois aucune
-   garantie quant au tri des OID de types enum non relatifs.
-  </para>
-
-  <table>
-   <title>Colonnes de <structname>pg_enum</structname></title>
-
-    <tgroup cols="4">
-    <colspec colnum="1" colwidth="1.0*"/>
-    <colspec colnum="2" colwidth="0.7*"/>
-    <colspec colnum="3" colwidth="0.7*"/>
-    <colspec colnum="4" colwidth="1.6*"/>
-    <thead>
-     <row>
-      <entry>Nom</entry>
-      <entry>Type</entry>
-      <entry>Références</entry>
-      <entry>Description</entry>
-     </row>
-    </thead>
-
-    <tbody>
-     <row>
-      <entry><structfield>enumtypid</structfield></entry>
-      <entry><type>oid</type></entry>
-      <entry><literal><link linkend="catalog-pg-type"><structname>pg_type</structname></link>.oid</literal></entry>
-      <entry>OID de l'entrée <structname>pg_type</structname> correspondant à
-       cette valeur d'enum</entry>
-     </row>
-
-     <row>
-      <entry><structfield>enumlabel</structfield></entry>
-      <entry><type>name</type></entry>
-      <entry></entry>
-      <entry>Le label texte pour cette valeur d'enum</entry>
-     </row>
-    </tbody>
-   </tgroup>
-  </table>
- </sect1>
-
-
  <sect1 id="catalog-pg-conversion">
   <title><structname>pg_conversion</structname></title>
 
@@ -2067,8 +2076,7 @@
   <para>
    Le catalogue <structname>pg_conversion</structname> décrit les procédures
    de conversion de codage disponibles. Voir la commande
-   <xref linkend="sql-createconversion" endterm="sql-createconversion-title"/> pour
-   plus d'information.
+   <xref linkend="sql-createconversion"/> pour plus d'informations.
   </para>
 
   <table>
@@ -2159,7 +2167,7 @@
    Le catalogue <structname>pg_database</structname> stocke les informations
    concernant
    les bases de données disponibles. Celles-ci sont créées avec la
-   commande <xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/>. Consulter le
+   commande <xref linkend="sql-createdatabase"/>. Consulter le
    <xref linkend="managing-databases"/> pour les détails sur la signification de
    certains paramètres.
   </para>
@@ -2301,26 +2309,102 @@
      </row>
 
      <row>
-      <entry><structfield>datconfig</structfield></entry>
-      <entry><type>text[]</type></entry>
+      <entry><structfield>datacl</structfield></entry>
+      <entry><type>aclitem[]</type></entry>
       <entry></entry>
-      <entry>Valeurs de session par défaut des variables modifiables en 
-       cours de fonctionnement.
+      <entry>Droits d'accès&nbsp;; voir <xref linkend="sql-grant"/> et <xref
+        linkend="sql-revoke"/> pour les détails.
       </entry>
      </row>
+    </tbody>
+   </tgroup>
+  </table>
+ </sect1>
 
+ <sect1 id="catalog-pg-default-acl">
+  <title><structname>pg_default_acl</structname></title>
+
+  <indexterm zone="catalog-pg-default-acl">
+   <primary>pg_default_acl</primary>
+  </indexterm>
+
+  <para>
+   The catalog <structname>pg_default_acl</structname> stores initial
+   privileges to be assigned to newly created objects.
+  </para>
+
+  <table>
+   <title><structname>pg_default_acl</structname> Columns</title>
+
+   <tgroup cols="4">
+    <thead>
      <row>
-      <entry><structfield>datacl</structfield></entry>
+      <entry>Name</entry>
+      <entry>Type</entry>
+      <entry>References</entry>
+      <entry>Description</entry>
+     </row>
+    </thead>
+
+    <tbody>
+     <row>
+      <entry><structfield>defaclrole</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
+      <entry>The OID of the role associated with this entry</entry>
+     </row>
+
+     <row>
+      <entry><structfield>defaclnamespace</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-namespace"><structname>pg_namespace</structname></link>.oid</literal></entry>
+      <entry>The OID of the namespace associated with this entry,
+       or 0 if none</entry>
+     </row>
+
+     <row>
+      <entry><structfield>defaclobjtype</structfield></entry>
+      <entry><type>char</type></entry>
+      <entry></entry>
+      <entry>
+       Type of object this entry is for:
+       <literal>r</literal> = relation (table, view),
+       <literal>S</literal> = sequence,
+       <literal>f</literal> = function
+      </entry>
+     </row>
+
+     <row>
+      <entry><structfield>defaclacl</structfield></entry>
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
-      <entry>Droits d'accès&nbsp;; voir
-       <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-       <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour les détails.
+      <entry>
+       Access privileges that this type of object should have on creation
       </entry>
      </row>
     </tbody>
    </tgroup>
   </table>
+
+  <para>
+   A <structname>pg_default_acl</structname> entry shows the initial privileges to
+   be assigned to an object belonging to the indicated user.  There are
+   currently two types of entry: <quote>global</quote> entries with
+   <structfield>defaclnamespace</structfield> = 0, and <quote>per-schema</quote> entries
+   that reference a particular schema.  If a global entry is present then
+   it <emphasis>overrides</emphasis> the normal hard-wired default privileges
+   for the object type.  A per-schema entry, if present, represents privileges
+   to be <emphasis>added to</emphasis> the global or hard-wired default privileges.
+  </para>
+
+  <para>
+   Note that when an ACL entry in another catalog is NULL, it is taken
+   to represent the hard-wired default privileges for its object,
+   <emphasis>not</emphasis> whatever might be in <structname>pg_default_acl</structname>
+   at the moment.  <structname>pg_default_acl</structname> is only consulted during
+   object creation.
+  </para>
+
  </sect1>
 
  <sect1 id="catalog-pg-depend">
@@ -2514,8 +2598,8 @@
   <para>
    Le catalogue <structname>pg_description</structname> stocke les descriptions 
    (commentaires) optionnelles de chaque objet de la base de données. Les
-   descriptions sont manipulées avec la commande <xref linkend="sql-comment"
-   endterm="sql-comment-title"/> et lues avec les commandes <literal>\d</literal>
+   descriptions sont manipulées avec la commande <xref linkend="sql-comment"/>
+   et lues avec les commandes <literal>\d</literal>
    de <application>psql</application>. <structname>pg_description</structname>
    contient les descriptions prédifinies de nombreux objets internes.
   </para>
@@ -2585,7 +2669,60 @@
 
  </sect1>
 
+ <sect1 id="catalog-pg-enum">
+  <title><structname>pg_enum</structname></title>
 
+  <indexterm zone="catalog-pg-enum">
+   <primary>pg_enum</primary>
+  </indexterm>
+
+  <para>
+   Le catalogue système <structname>pg_enum</structname> contient des entrées
+   qui correspondent aux types enum précisant les valeurs et labels associés. La
+   représentation interne d'une valeur enum donnée est en fait l'OID de sa ligne
+   associée dans <structname>pg_enum</structname>. Les OID pour un type enum
+   particulier précisent aussi l'ordre du tri. Il n'y a toutefois aucune
+   garantie quant au tri des OID de types enum non relatifs.
+  </para>
+
+  <table>
+   <title>Colonnes de <structname>pg_enum</structname></title>
+
+    <tgroup cols="4">
+    <colspec colnum="1" colwidth="1.0*"/>
+    <colspec colnum="2" colwidth="0.7*"/>
+    <colspec colnum="3" colwidth="0.7*"/>
+    <colspec colnum="4" colwidth="1.6*"/>
+    <thead>
+     <row>
+      <entry>Nom</entry>
+      <entry>Type</entry>
+      <entry>Références</entry>
+      <entry>Description</entry>
+     </row>
+    </thead>
+
+    <tbody>
+     <row>
+      <entry><structfield>enumtypid</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-type"><structname>pg_type</structname></link>.oid</literal></entry>
+      <entry>OID de l'entrée <structname>pg_type</structname> correspondant à
+       cette valeur d'enum</entry>
+     </row>
+
+     <row>
+      <entry><structfield>enumlabel</structfield></entry>
+      <entry><type>name</type></entry>
+      <entry></entry>
+      <entry>Le label texte pour cette valeur d'enum</entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </table>
+ </sect1>
+
+
  <sect1 id="catalog-pg-foreign-data-wrapper">
   <title><structname>pg_foreign_data_wrapper</structname></title>
 
@@ -2645,10 +2782,8 @@
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
       <entry>
-       Droits d'accès&nbsp;; voir
-       <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-       <xref linkend="sql-revoke" endterm="sql-revoke-title"/>
-       pour plus de détails
+       Droits d'accès&nbsp;; voir <xref linkend="sql-grant"/> et <xref
+       linkend="sql-revoke"/> pour plus de détails
       </entry>
      </row>
 
@@ -2735,10 +2870,8 @@
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
       <entry>
-       Droits d'accès&nbsp;; voir
-       <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-       <xref linkend="sql-revoke" endterm="sql-revoke-title"/>
-       pour les détails
+       Droits d'accès&nbsp;; voir <xref linkend="sql-grant"/> et <xref
+       linkend="sql-revoke"/> pour les détails
       </entry>
      </row>
 
@@ -2830,6 +2963,14 @@
      </row>
 
      <row>
+      <entry><structfield>indimmediate</structfield></entry>
+      <entry><type>bool</type></entry>
+      <entry></entry>
+      <entry>If true, the uniqueness check is enforced immediately on insertion
+      (<structfield>indisunique</structfield> should always be true when this is true)</entry>
+     </row>
+
+     <row>
       <entry><structfield>indisclustered</structfield></entry>
       <entry><type>bool</type></entry>
       <entry></entry>
@@ -3014,8 +3155,7 @@
   <para>
    Le catalogue <structname>pg_language</structname> enregistre les langages
    utilisables pour l'écriture de fonctions ou 
-   procédures stockées. Voir 
-   <xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"/> et dans le
+   procédures stockées. Voir <xref linkend="sql-createlanguage"/> et dans le
    <xref linkend="xplang"/> pour plus d'information sur les gestionnaires
    de langages.
   </para>
@@ -3091,6 +3231,18 @@
      </row>
 
      <row>
+      <entry><structfield>laninline</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry>
+      <entry>
+       This references a function that is responsible for executing
+       <quote>inline</quote> anonymous code blocks
+       (<xref linkend="sql-do"/> blocks).
+       Zero if inline blocks are not supported
+      </entry>
+     </row>
+
+     <row>
       <entry><structfield>lanvalidator</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal><link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.oid</literal></entry>
@@ -3105,9 +3257,8 @@
       <entry><structfield>lanacl</structfield></entry>
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
-      <entry>Droits d'accès&nbsp;;; voir
-      <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-      <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour les détails.</entry>
+      <entry>Droits d'accès&nbsp;;; voir <xref linkend="sql-grant"/> et
+      <xref linkend="sql-revoke"/> pour les détails.</entry>
      </row>
     </tbody>
    </tgroup>
@@ -3135,10 +3286,20 @@
    actuellement <literal>BLCKSZ/4</literal>, soit habituellement 2&nbsp;Ko).
   </para>
 
+  <para>
+   Prior to <productname>PostgreSQL</productname> 9.0, there was no permission structure
+   associated with large objects.  As a result,
+   <structname>pg_largeobject</structname> was publicly readable and could be
+   used to obtain the OIDs (and contents) of all large objects in the system.
+   This is no longer the case; use
+   <link linkend="catalog-pg-largeobject-metadata">pg_largeobject_metadata</link>
+   to obtain a list of large object OIDs.
+  </para>
+
   <table>
    <title>Colonnes de <structname>pg_largeobject</structname></title>
 
-   <tgroup cols="3">
+   <tgroup cols="4">
     <colspec colnum="1" colwidth="1.0*"/>
     <colspec colnum="2" colwidth="0.7*"/>
     <colspec colnum="3" colwidth="1.6*"/>
@@ -3146,6 +3307,7 @@
      <row>
       <entry>Nom</entry>
       <entry>Type</entry>
+      <entry>References</entry>
       <entry>Description</entry>
      </row>
     </thead>
@@ -3154,12 +3316,14 @@
      <row>
       <entry><structfield>loid</structfield></entry>
       <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-largeobject-metadata"><structname>pg_largeobject_metadata</structname></link>.oid</literal></entry>
       <entry>Identifiant de l'objet volumineux qui contient la page</entry>
      </row>
 
      <row>
       <entry><structfield>pageno</structfield></entry>
       <entry><type>int4</type></entry>
+      <entry></entry>
       <entry>Numéro de la page au sein de l'objet volumineux, en partant
        de 0</entry>
      </row>
@@ -3167,7 +3331,8 @@
      <row>
       <entry><structfield>data</structfield></entry>
       <entry><type>bytea</type></entry>
-      <entry>
+      <entry></entry>
+     <entry>
        Données effectivement stockées dans l'objet volumineux. Il ne fait
        jamais plus de <symbol>LOBLKSIZE</symbol> mais peut faire moins.
       </entry>
@@ -3188,32 +3353,22 @@
  </sect1>
 
 
- <sect1 id="catalog-pg-listener">
-  <title><structname>pg_listener</structname></title>
+ <sect1 id="catalog-pg-largeobject-metadata">
+  <title><structname>pg_largeobject_metadata</structname></title>
 
-  <indexterm zone="catalog-pg-listener">
-   <primary>pg_listener</primary>
+  <indexterm zone="catalog-pg-largeobject-metadata">
+   <primary>pg_largeobject_metadata</primary>
   </indexterm>
 
-<!-- 
-notifieur est proprement affreux !
-notifié <-> notifiant est certainement une mauvaise traduction, mais je
-n'en vois pas de meilleure -->
-<!-- SAS 20070315 : notifiant/écoutant ?-->
   <para>
-   Le catalogue <structname>pg_listener</structname> supporte les commandes
-   <xref linkend="sql-listen" endterm="sql-listen-title"/> et
-   <xref linkend="sql-notify" endterm="sql-notify-title"/>. Un notifié
-   (<foreignphrase>listener</foreignphrase>) crée une entrée dans
-   <structname>pg_listener</structname> pour le nom de chaque notification qu'il
-   surveille. Un notifiant (<foreignphrase>notifier</foreignphrase>) parcourt <structname>pg_listener</structname>
-   et actualise toute entrée concordante pour signaler une notification arrivée.
-   Le notifiant envoie aussi un signal (en utilisant le numéro de processus
-   PID) enregistré dans la table pour réveiller le notifié.
+   The catalog <structname>pg_largeobject_metadata</structname>
+   holds metadata associated with large objects.  The actual large object
+   data is stored in
+   <link linkend="catalog-pg-largeobject">pg_largeobject</link>.
   </para>
 
   <table>
-   <title>Colonnes de <structname>pg_listener</structname></title>
+   <title><structname>pg_largeobject_metadata</structname> Columns</title>
 
    <tgroup cols="3">
     <colspec colnum="1" colwidth="1.0*"/>
@@ -3229,29 +3384,24 @@
 
     <tbody>
      <row>
-      <entry><structfield>relname</structfield></entry>
-      <entry><type>name</type></entry>
-      <entry>Nom de la notification. (Il ne doit pas nécessairement correspondre
-      à un nom de relation dans la base. Le nom <structfield>relname</structfield>
-      est historique.)
-      </entry>
+      <entry><structfield>lomowner</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
+      <entry>Owner of the largeobject</entry>
      </row>
 
      <row>
-      <entry><structfield>listenerpid</structfield></entry>
-      <entry><type>int4</type></entry>
-      <entry>PID du processus serveur qui a créé l'entrée</entry>
-     </row>
-
-     <row>
-      <entry><structfield>notification</structfield></entry>
-      <entry><type>int4</type></entry>
+      <entry><structfield>lomacl</structfield></entry>
+      <entry><type>aclitem[]</type></entry>
+      <entry></entry>
       <entry>
-       0 si aucun événement n'est en attente pour le notifié. Si un 
-       événement est en attente, ce champ contient le PID du processus serveur
-       qui a envoyé la notification.
+       Access privileges; see
+       <xref linkend="sql-grant"/> and
+       <xref linkend="sql-revoke"/>
+       for details
       </entry>
      </row>
+
     </tbody>
    </tgroup>
   </table>
@@ -3266,8 +3416,6 @@
    <primary>pg_namespace</primary>
   </indexterm>
 
-<!-- espace de nom, c'est comme espace de table, ca ne signifie pas
-grand-chose -->
   <para>
    Le catalogue <structname>pg_namespace</structname> stocke les
    <foreignphrase>namespace</foreignphrase>. Un
@@ -3313,9 +3461,8 @@
       <entry><structfield>nspacl</structfield></entry>
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
-      <entry>Droits d'accès&nbsp;; voir
-      <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-      <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour les détails.</entry>
+      <entry>Droits d'accès&nbsp;; voir <xref linkend="sql-grant"/> et <xref
+        linkend="sql-revoke"/> pour les détails.</entry>
      </row>
     </tbody>
    </tgroup>
@@ -3449,9 +3596,9 @@
 
   <para>
    Le catalogue <structname>pg_operator</structname> stocke les informations
-   concernant les opérateurs. Voir la commande
-   <xref linkend="sql-createoperator" endterm="sql-createoperator-title"/> et la
-   <xref linkend="xoper"/> pour plus d'informations.
+   concernant les opérateurs. Voir la commande <xref
+   linkend="sql-createoperator"/> et la <xref linkend="xoper"/> pour plus
+   d'informations.
   </para>
 
   <table>
@@ -3741,6 +3888,12 @@
      </row>
 
      <row>
+      <entry><structfield>tmplinline</structfield></entry>
+      <entry><type>text</type></entry>
+      <entry>Name of anonymous-block handler function, or NULL if none</entry>
+     </row>
+
+     <row>
       <entry><structfield>tmplvalidator</structfield></entry>
       <entry><type>text</type></entry>
       <entry>Nom de la fonction de validation, ou NULL si aucune</entry>
@@ -3793,7 +3946,7 @@
   <para>
    Le catalogue <structname>pg_proc</structname> stocke les informations
    concernant les fonctions (ou procédures). Voir
-   <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>
+   <xref linkend="sql-createfunction"/>
    et <xref linkend="xfunc"/> pour plus
    d'informations.
   </para>
@@ -4048,7 +4201,7 @@
 
      <row>
       <entry><structfield>probin</structfield></entry>
-      <entry><type>bytea</type></entry>
+      <entry><type>text</type></entry>
       <entry></entry>
       <entry>Information supplémentaire sur la façon d'invoquer la fonction.
        Encore une fois, l'interprétation dépend du langage.
@@ -4068,8 +4221,8 @@
       <entry><type>aclitem[]</type></entry>
       <entry></entry>
       <entry>Droits d'accès&nbsp;; voir
-       <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-       <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour plus de détails.</entry>
+       <xref linkend="sql-grant"/> et
+       <xref linkend="sql-revoke"/> pour plus de détails.</entry>
      </row>
     </tbody>
    </tgroup>
@@ -4213,6 +4366,66 @@
  </sect1>
 
 
+ <sect1 id="catalog-pg-db-role-setting">
+  <title><structname>pg_db_role_setting</structname></title>
+
+  <indexterm zone="catalog-pg-db-role-setting">
+   <primary>pg_db_role_setting</primary>
+  </indexterm>
+
+  <para>
+   The catalog <structname>pg_db_role_setting</structname> records the default
+   values that have been set for run-time configuration variables,
+   for each role and database combination.
+  </para>
+
+  <para>
+   Unlike most system catalogs, <structname>pg_db_role_setting</structname>
+   is shared across all databases of a cluster: there is only one
+   copy of <structname>pg_db_role_setting</structname> per cluster, not
+   one per database.
+  </para>
+
+  <table>
+   <title><structname>pg_db_role_setting</structname> Columns</title>
+
+   <tgroup cols="4">
+    <thead>
+     <row>
+      <entry>Name</entry>
+      <entry>Type</entry>
+      <entry>References</entry>
+      <entry>Description</entry>
+     </row>
+    </thead>
+
+    <tbody>
+     <row>
+      <entry><structfield>setdatabase</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-database"><structname>pg_database</structname></link>.oid</literal></entry>
+      <entry>The OID of the database the setting is applicable to, or zero if not database-specific</entry>
+     </row>
+
+     <row>
+      <entry><structfield>setrole</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
+      <entry>The OID of the role the setting is applicable to, or zero if not role-specific</entry>
+     </row>
+
+     <row>
+      <entry><structfield>setconfig</structfield></entry>
+      <entry><type>text[]</type></entry>
+      <entry></entry>
+      <entry>Defaults for run-time configuration variables</entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </table>
+ </sect1>
+
+
  <sect1 id="catalog-pg-shdepend">
   <title><structname>pg_shdepend</structname></title>
 
@@ -4387,8 +4600,8 @@
   <para>
    Le catalogue <structname>pg_shdescription</structname> stocke les descriptions
    optionelles (commentaires) des objets partagés de la base. Les
-   descriptions peuvent être manipulées avec la commande <xref linkend="sql-comment"
-   endterm="sql-comment-title"/> et visualisées avec les commandes
+   descriptions peuvent être manipulées avec la commande <xref
+   linkend="sql-comment"/> et visualisées avec les commandes
    <literal>\d</literal> de <application>psql</application>.
   </para>
 
@@ -4456,21 +4669,34 @@
   <para>
    Le catalogue <structname>pg_statistic</structname> stocke des données
    statistiques sur le contenu de la base de données. Les entrées sont créées
-   par <xref linkend="sql-analyze" endterm="sql-analyze-title"/>, puis
+   par <xref linkend="sql-analyze"/>, puis
    utilisées par le planificateur de requêtes.
-   Il y a une entrée pour chaque colonne de table qui a été analysée.
    Les données statistiques sont, par définition des approximations, 
    même si elles sont à jour.
   </para>
 
   <para>
+   Normally there is one entry, with <structfield>stainherit</structfield> =
+   <literal>false</literal>, for each table column that has been analyzed.
+   If the table has inheritance children, a second entry with
+   <structfield>stainherit</structfield> = <literal>true</literal> is also created.  This row
+   represents the column's statistics over the inheritance tree, i.e.,
+   statistics for the data you'd see with
+   <literal>SELECT <replaceable>column</replaceable> FROM <replaceable>table</replaceable>*</literal>,
+   whereas the <structfield>stainherit</structfield> = <literal>false</literal> row represents
+   the results of
+   <literal>SELECT <replaceable>column</replaceable> FROM ONLY <replaceable>table</replaceable></literal>.
+  </para>
+
+  <para>
    <structname>pg_statistic</structname> stocke aussi les données
    statistiques des valeurs des expressions d'index. Elles sont décrites
    comme si elles étaient de vraies colonnes&nbsp;; en particulier,
    <structfield>starelid</structfield> référence l'index. Néanmoins, aucune
    entrée n'est effectuée pour une colonne d'index ordinaire sans expression
    car cela est redondant avec l'entrée correspondant à la colonne sous-jacente de la
-   table.
+   table. Currently, entries for index expressions
+   always have <structfield>stainherit</structfield> = <literal>false</literal>.
   </para>
 
   <para>
@@ -4530,6 +4756,14 @@
      </row>
 
      <row>
+      <entry><structfield>stainherit</structfield></entry>
+      <entry><type>bool</type></entry>
+      <entry></entry>
+      <entry>If true, the stats include inheritance child columns, not just the
+       values in the specified relation</entry>
+     </row>
+
+     <row>
       <entry><structfield>stanullfrac</structfield></entry>
       <entry><type>float4</type></entry>
       <entry></entry>
@@ -4551,10 +4785,11 @@
       <entry> 
        Nombre de valeurs distinctes non NULL dans la colonne. Une 
        valeurs positive est le nombre réel de valeurs distinctes. Une valeur
-       négative est le négatif d'une fraction du nombre de lignes dans la table
-       (par exemple, une colonne dans laquelle les valeurs apparaissent environ
+       négative est le négatif d'un multiplier for the number
+       of rows in the table;
+       par exemple, une colonne dans laquelle les valeurs apparaissent environ
        deux fois en moyenne peut être représentée par 
-       <structfield>stadistinct</structfield> = -0.5). 0 indique que le
+       <structfield>stadistinct</structfield> = -0.5. 0 indique que le
        nombre de valeurs distinctes est inconnu.
       </entry>
      </row>
@@ -4683,11 +4918,20 @@
          <entry></entry>
          <entry>
            Droits d'accès&nbsp;; voir
-           <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-           <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour les
+           <xref linkend="sql-grant"/> et
+           <xref linkend="sql-revoke"/> pour les
            détails.
            </entry>
            </row>
+
+     <row>
+      <entry><structfield>spcoptions</structfield></entry>
+      <entry><type>text[]</type></entry>
+      <entry></entry>
+      <entry>
+       Tablespace-level options, as <quote>keyword=value</quote> strings
+      </entry>
+     </row>
          </tbody>
        </tgroup>
      </table>
@@ -4704,7 +4948,7 @@
   <para>
    Le catalogue <structname>pg_trigger</structname> stocke les informations
    concernant les déclencheurs des tables. Voir la commande
-   <xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"/>
+   <xref linkend="sql-createtrigger"/>
    pour plus d'informations.
   </para>
 
@@ -4773,21 +5017,13 @@
      </row>
 
      <row>
-      <entry><structfield>tgisconstraint</structfield></entry>
+      <entry><structfield>tgisinternal</structfield></entry>
       <entry><type>bool</type></entry>
       <entry></entry>
-      <entry>Vrai si le déclencheur est un <quote>trigger de
-       contrainte</quote>
-      </entry>
+      <entry>True if trigger is internally generated (usually, to enforce
+       the constraint identified by <structfield>tgconstraint</structfield>)</entry>
      </row>
 
-     <row>
-      <entry><structfield>tgconstrname</structfield></entry>
-      <entry><type>name</type></entry>
-      <entry></entry>
-      <entry>Nom de la contrainte s'il s'agit d'un <quote>trigger
-       de contrainte</quote></entry>
-     </row>
 
      <row>
       <entry><structfield>tgconstrrelid</structfield></entry>
@@ -4798,11 +5034,18 @@
      </row>
 
      <row>
+      <entry><structfield>tgconstrindid</structfield></entry>
+      <entry><type>oid</type></entry>
+      <entry><literal><link linkend="catalog-pg-class"><structname>pg_class</structname></link>.oid</literal></entry>
+      <entry>The index supporting a unique, primary key, or referential integrity constraint</entry>
+     </row>
+
+     <row>
       <entry><structfield>tgconstraint</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal><link linkend="catalog-pg-constraint"><structname>pg_constraint</structname></link>.oid</literal></entry>
-      <entry>L'entrée <structname>pg_constraint</structname> possédant le
-       trigger, si elle existe</entry>
+      <entry>L'entrée <structname>pg_constraint</structname> associé au trigger,
+      si elle existe</entry>
      </row>
 
      <row>
@@ -4830,8 +5073,9 @@
      <row>
       <entry><structfield>tgattr</structfield></entry>
       <entry><type>int2vector</type></entry>
-      <entry></entry>
-      <entry>Actuellement inutilisé</entry>
+      <entry><literal><link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.attnum</literal></entry>
+      <entry>column numbers, if trigger is column-specific; otherwise an
+       empty array</entry>
      </row>
 
      <row>
@@ -4843,22 +5087,36 @@
        NULL
       </entry>
      </row>
+
+     <row>
+      <entry><structfield>tgqual</structfield></entry>
+      <entry><type>text</type></entry>
+      <entry></entry>
+      <entry>Expression tree (in <function>nodeToString()</function>
+       representation) for the trigger's <literal>WHEN</literal> condition, or NULL
+       if none</entry>
+     </row>
     </tbody>
    </tgroup>
   </table>
 
+  <para>
+   Currently, column-specific triggering is supported only for
+   <literal>UPDATE</literal> events, and so <structfield>tgattr</structfield> is relevant
+   only for that event type.  <structfield>tgtype</structfield> might
+   contain bits for other event types as well, but those are presumed
+   to be table-wide regardless of what is in <structfield>tgattr</structfield>.
+  </para>
+
   <note>
    <para>
     Quand <structfield>tgconstraint</structfield> est différent de zéro,
-    <structfield>tgisconstraint</structfield> doit valoir true et
-    <structfield>tgconstrname</structfield>,
-    <structfield>tgconstrrelid</structfield>,
-    <structfield>tgdeferrable</structfield>,
-    <structfield>tginitdeferred</structfield> sont redondants
-    avec l'entrée <structname>pg_constraint</structname> référencée.
-    Ces champs sont conservés parce que les
-    déclencheurs de contraintes <quote>autonomes</quote> sans entrée
-    <structname>pg_constraint</structname> correspondante sont supportés.
+    <structfield>tgconstrrelid</structfield>, <structfield>tgconstrindid</structfield>,
+    <structfield>tgdeferrable</structfield>, and <structfield>tginitdeferred</structfield> are
+    largely redundant with the referenced <structname>pg_constraint</structname> entry.
+    However, it is possible for a non-deferrable trigger to be associated
+    with a deferrable constraint: foreign key constraints can have some
+    deferrable and some non-deferrable triggers.
    </para>
   </note>
 
@@ -5290,9 +5548,8 @@
    Le catalogue <structname>pg_type</structname> stocke les informations
    concernant les
    types de données. Les types basiques et d'énumération (types scalaires) sont créés avec la 
-   commande <xref linkend="sql-createtype" endterm="sql-createtype-title"/> et
-   les domaines avec
-   <xref linkend="sql-createdomain" endterm="sql-createdomain-title"/>.
+   commande <xref linkend="sql-createtype"/> et les domaines avec
+   <xref linkend="sql-createdomain"/>.
    Un type composite est créé automatiquement pour chaque table de la base
    pour représenter la structure des lignes de la table. Il est aussi possible
    de créer des types composites avec <command>CREATE TYPE AS</command>.
@@ -5978,7 +6235,7 @@
     <listitem>
      <para>
       via l'instruction SQL
-      <xref linkend="sql-declare" endterm="sql-declare-title"/>&nbsp;;
+      <xref linkend="sql-declare"/>&nbsp;;
      </para>
     </listitem>
 
@@ -6500,7 +6757,7 @@
   <para>
    La vue <structname>pg_prepared_statements</structname> affiche toutes les
    instructions préparées disponibles pour la session en cours. Voir
-   <xref linkend="sql-prepare" endterm="sql-prepare-title"/> pour de plus
+   <xref linkend="sql-prepare"/> pour de plus
    amples informations sur les instructions préparées.
   </para>
 
@@ -6509,7 +6766,7 @@
    chaque instruction préparée. Les lignes sont ajoutées à la vue quand une
    nouvelle instruction préparée est créée et supprimée quand une instruction
    préparée est abandonnée (par exemple, via la commande
-   <xref linkend="sql-deallocate" endterm="sql-deallocate-title"/>).
+   <xref linkend="sql-deallocate"/>).
   </para>
 
   <table>
@@ -6590,7 +6847,7 @@
    La vue <structname>pg_prepared_xacts</structname> affiche les informations
    concernant les transactions actuellement préparées pour une validation en deux
    phases (voir
-   <xref linkend="sql-prepare-transaction" endterm="sql-prepare-transaction-title"/>
+   <xref linkend="sql-prepare-transaction"/>
    pour les détails).
   </para>
 
@@ -6798,13 +7055,6 @@
      </row>
 
      <row>
-      <entry><structfield>rolconfig</structfield></entry>
-      <entry><type>text[]</type></entry>
-      <entry></entry>
-      <entry>Valeurs de session par défaut des variables de configuration</entry>
-     </row>
-
-     <row>
       <entry><structfield>oid</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal><link linkend="catalog-pg-authid"><structname>pg_authid</structname></link>.oid</literal></entry>
@@ -6890,8 +7140,7 @@
   <para>
    La vue <structname>pg_settings</structname> fournit un accès aux paramètres
    d'exécution du serveur. C'est essentiellement une interface alternative aux
-   commandes <xref linkend="sql-show" endterm="sql-show-title"/>
-   et <xref linkend="sql-set" endterm="sql-set-title"/>. Elle fournit
+   commandes <xref linkend="sql-show"/> et <xref linkend="sql-set"/>. Elle fournit
    aussi un accès à certaines informations des paramètres qui ne sont pas directement
    accessibles avec <command>SHOW</command>, telles que les valeurs minimales et maximales.
   </para>
@@ -7016,7 +7265,7 @@
    suppression mais peut être actualisée. Une requête <command>UPDATE</command>
    appliquée
    à une ligne de <structname>pg_settings</structname> est équivalente à
-   exécuter la commande <xref linkend="sql-set" endterm="sql-set-title"/>
+   exécuter la commande <xref linkend="sql-set"/>
    sur ce paramètre. Le changement affecte uniquement la valeur utilisée
    par la session en cours. Si un <command>UPDATE</command> est lancé à
    l'intérieur d'une transaction annulée par la suite, les effets de la
@@ -7198,6 +7447,14 @@
      </row>
 
      <row>
+      <entry><structfield>inherited</structfield></entry>
+      <entry><type>bool</type></entry>
+      <entry></entry>
+      <entry>If true, this row includes inheritance child columns, not just the
+       values in the specified table</entry>
+     </row>
+
+     <row>
       <entry><structfield>null_frac</structfield></entry>
       <entry><type>real</type></entry>
       <entry></entry>

Modified: traduc/trunk/postgresql/charset.xml
===================================================================
--- traduc/trunk/postgresql/charset.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/charset.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -69,9 +69,16 @@
     (<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
+    <literal>fr_CA</literal> (français canadien). If more than one character set can be used for a
+    locale then the specifications can take the form
+    <replaceable>language_territory.codeset</replaceable>.  For example,
+    <literal>fr_BE.UTF-8</literal> represents the French language (fr) as
+    spoken in Belgium (BE), with a <acronym>UTF-8</acronym> character set 
+    encoding.
+   </para>
+
+   <para>
+    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 Unix, la commande
     <literal>locale -a</literal> fournit la liste des locales disponibles.
@@ -84,7 +91,7 @@
     Il est parfois utile de mélanger les règles de plusieurs
     locales, par exemple d'utiliser les règles de tri anglais avec des messages en
     espagnol. Pour cela, des sous-catégories de locales existent
-    qui ne contrôlent qu'un aspect particulier des règles de localisation&nbsp;:
+    qui ne contrôlent que certains aspects des règles de localisation&nbsp;:
 
     <informaltable>
      <tgroup cols="2">
@@ -135,12 +142,12 @@
    </para>
 
    <para>
-    La nature de certaines catégories de locales oblige à les fixer lors de la
+    Certaines catégories de locales doivent fixer leur valeurs lors de la
     création de la base de données. Vous pouvez utiliser des paramétrages
     différents pour chaque bases de données. Par contre, une fois que la base
     est créée, les paramétrages de locales ne peuvent plus être modifiés.
     <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
+    ces types de 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. La valeur par défaut pour ces catégories
     est déterminée lors de l'exécution d'<command>initdb</command>. Ces valeurs
@@ -157,7 +164,7 @@
     <command>initdb</command> sont en fait écrites dans le fichier de
     configuration <filename>postgresql.conf</filename> pour servir de
     valeurs par défaut au démarrage du serveur. Si ces déclarations sont
-    supprimées du fichier <filename>postgresql.conf</filename>, le serveur
+    désactivées du fichier <filename>postgresql.conf</filename>, le serveur
     hérite des paramètres de son environnement d'exécution.
    </para>
 
@@ -338,7 +345,8 @@
   <para>
    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</envar> de la base
+   d'environnement <envar>LC_CTYPE</envar> (character
+   classification) et <envar>LC_COLLATE</envar> (string sort order) 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.
@@ -573,7 +581,7 @@
         <row>
          <entry><literal>LATIN9</literal></entry>
          <entry>ISO 8859-15</entry>
-         <entry>LATIN1 avec l'Euro et les accents</entry>
+         <entry><literal>ISO885915</literal> avec l'Euro et les accents</entry>
          <entry>Oui</entry>
          <entry>1</entry>
          <entry>ISO885915</entry>
@@ -727,7 +735,8 @@
      </table>
 
      <para>
-      Toutes les <acronym>API</acronym> ne supportent pas tous les jeux de caractères de
+      Toutes les <acronym>API</acronym> clients ne supportent pas tous les jeux
+      de caractères de
       la liste. Le pilote JDBC de <productname>PostgreSQL</productname>, par
       exemple, ne supporte pas <literal>MULE_INTERNAL</literal>,
       <literal>LATIN6</literal>, <literal>LATIN8</literal> et
@@ -754,12 +763,12 @@
     <title>Choisir le jeu de caractères</title>
 
     <para>
-     <command>initdb</command> définit le jeu de caractères par défaut
+     <command>initdb</command> définit le jeu de caractères par défaut (encodage)
      pour un cluster. Par exemple,
 
 <screen>initdb -E EUC_JP</screen>
 
-     paramètre le jeu de caractères (encodage) à
+     paramètre le jeu de caractères à
      <literal>EUC_JP</literal> (Extended Unix Code for Japanese). 
      L'option <option>--encoding</option> peut aussi être utilisée à la
      place de <option>-E</option> (options longues). Si aucune option
@@ -1217,8 +1226,8 @@
     <para>
      Si la conversion d'un caractère particulier n'est pas possible &mdash;
      dans le cas d'encodages <literal>EUC_JP</literal> pour le serveur 
-     et <literal>LATIN1</literal> pour le client, par exemple, certains caractères
-     japonais n'ont pas de représentation en <literal>LATIN1</literal>
+     et <literal>LATIN1</literal> pour le client, et que certains caractères
+     japonais renvoyés n'ont pas de représentation en <literal>LATIN1</literal>
      &mdash; une erreur est remontée.
     </para>
 
@@ -1251,13 +1260,13 @@
       </varlistentry>
 
       <varlistentry>
-       <term><ulink url="ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf"></ulink></term>
+       <term><citetitle>CJKV Information Processing: Chinese, Japanese, Korean &amp; Vietnamese Computing</citetitle></term>
 
        <listitem>
         <para>
-         Des explications détaillées de <literal>EUC_JP</literal>,
+         Contient des explications détaillées de <literal>EUC_JP</literal>,
          <literal>EUC_CN</literal>, <literal>EUC_KR</literal>,
-         <literal>EUC_TW</literal> apparaissent dans la section 3.2.
+         <literal>EUC_TW</literal>.
         </para>
        </listitem>
       </varlistentry>
@@ -1277,7 +1286,8 @@
 
        <listitem>
         <para>
-         <acronym>UTF</acronym>-8 est défini ici.
+         <acronym>UTF</acronym>-8 (8-bit UCS/Unicode Transformation
+         Format) est défini ici.
         </para>
        </listitem>
       </varlistentry>

Modified: traduc/trunk/postgresql/client-auth.xml
===================================================================
--- traduc/trunk/postgresql/client-auth.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/client-auth.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -75,9 +75,14 @@
    ensemble d'enregistrements, un par ligne. Les lignes vides sont ignorées tout
    comme n'importe quel texte placé après le caractère de commentaire
    <literal>#</literal>. Un enregistrement est constitué d'un certain nombre de
-   champs séparés par des espace et/ou des tabulations. Les champs peuvent contenir
-   des espaces si la valeur du champ est mise entre guillemets. Un enregistrement
-   ne peut pas s'étendre sur plusieurs lignes.</para>
+   champs séparés par des espace et/ou des tabulations.
+   Records cannot be continued across lines.
+   Les champs peuvent contenir
+   des espaces si la valeur du champ est mise entre guillemets.
+   Quoting one of the keywords in a database or username field (e.g.,
+   <literal>all</literal> or <literal>replication</literal>) makes the word lose its special
+   character, and just match a database or user with that name.
+  </para>
 
   <para>
    Chaque enregistrement précise un type de connexion, une plage
@@ -153,7 +158,7 @@
      <term><literal>hostnossl</literal></term>
      <listitem>
       <para>
-       Cet enregistrement a une logique opposée à <literal>hostssl</literal>&nbsp;: il
+       Cet enregistrement a un comportement opposé à <literal>hostssl</literal>&nbsp;: il
        n'intercepte que les tentatives de connexion qui n'utilisent pas
        <acronym>SSL</acronym>.
       </para>
@@ -173,8 +178,11 @@
        Le terme <literal>samerole</literal> indique que l'utilisateur demandé doit
        être membre du rôle portant le même nom que la base de données demandée
        (<literal>samegroup</literal> est obsolète bien qu'il soit toujours accepté
-       comme écriture alternative de <literal>samerole</literal>.). Dans
-       tous les autres cas,
+       comme écriture alternative de <literal>samerole</literal>.).
+       The value <literal>replication</literal> specifies that the record
+       matches if a replication connection is requested (note that
+       replication connections do not specify any particular database).
+       Dans tous les autres cas,
        c'est le nom d'une base de données particulière. Plusieurs noms de base de
        données peuvent être fournis en les séparant par des virgules. Un fichier contenant
        des noms de base de données peut être indiqué en faisant précéder le
@@ -211,7 +219,7 @@
       <para>
       Indique la plage d'adresses IP client à laquelle correspond cet
       enregistrement. Ce champ contient une adresse IP dans la notation décimale
-      standard et une longueur de masque CIDR (les adresses IP
+      standard et une longueur de masque <acronym>CIDR</acronym> (les adresses IP
       ne peuvent qu'être indiquées numériquement, pas en tant que
       nom d'hôte ou de domaine). La longueur du masque indique le nombre de
       bits forts pour lesquels une correspondance doit être trouvée avec l'adresse
@@ -221,10 +229,19 @@
       </para>
 
       <para>
+       Instead of a <replaceable>CIDR-address</replaceable>, you can write
+       <literal>samehost</literal> to match any of the server's own IP
+       addresses, or <literal>samenet</literal> to match any address in any
+       subnet that the server is directly connected to.
+      </para>
+
+      <para>
       Une adresse CIDR (<replaceable>CIDR-address</replaceable>) est typiquement
       <literal>172.20.143.89/32</literal> pour un hôte seul,
       <literal>172.20.143.0/24</literal> pour un petit réseau ou
-      <literal>10.6.0.0/16</literal> pour un réseau plus grand. Pour
+      <literal>10.6.0.0/16</literal> pour un réseau plus grand.
+      <literal>0.0.0.0/0</literal> (<quote>all balls</quote>) represents all addresses.
+      Pour
       n'indiquer qu'un seul hôte, on utilise un masque de 32 pour IPv4 ou 128 pour
       IPv6. Dans une adresse réseau, ne pas oublier les zéros finaux.
       </para>
@@ -282,7 +299,7 @@
 	    quiconque peut se connecter au serveur de bases de données
 	    de s'enregistrer sous n'importe quel utilisateur
 	    <productname>PostgreSQL</productname> de son choix sans 
-	    mot de passe. Voir la <xref linkend="auth-trust"/> pour les détails.
+	    mot de passe or any other authentication. Voir la <xref linkend="auth-trust"/> pour les détails.
 	   </para>
 	  </listitem>
 	 </varlistentry>
@@ -292,7 +309,10 @@
 	 <listitem>
 	  <para>
 	   Rejette la connexion sans condition. Ce cas est utile
-	   pour <quote>filtrer</quote> certains hôtes d'un groupe.
+	   pour <quote>filtrer</quote> certains hôtes d'un groupe, e.g. a
+          <literal>reject</literal> line blocks a specific host from connecting,
+          but a later line allows the remaining hosts in a specific
+          network to connect.
 	  </para>
 	 </listitem>
 	</varlistentry>
@@ -372,13 +392,23 @@
         <term><literal>ldap</literal></term>
         <listitem>
          <para>
-          Authentification par un serveur LDAP. Voir la
+          Authentification par un serveur <acronym>LDAP</acronym>. Voir la
 	  <xref linkend="auth-ldap"/> pour les détails.
          </para>
         </listitem>
        </varlistentry>
 
        <varlistentry>
+        <term><literal>radius</literal></term>
+        <listitem>
+         <para>
+          Authenticate using a RADIUS server. See <xref
+          linkend="auth-radius"/> for details.
+         </para>
+        </listitem>
+       </varlistentry>
+
+       <varlistentry>
         <term><literal>cert</literal></term>
         <listitem>
          <para>
@@ -450,7 +480,7 @@
    lorsque 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, on peut signaler au
-   serveur (en utilisant <literal>pg_ctl reload</literal> ou 
+   postmaster (en utilisant <literal>pg_ctl reload</literal> ou 
    <literal>kill -HUP</literal>) de relire le fichier.
   </para>
 
@@ -493,7 +523,7 @@
 # Permettre à n'importe quel utilisateur de n'importe quel hôte d'adresse IP
 # 192.168.93.x de se connecter à la base de données "postgres" sous le nom
 # d'utilisateur qu'ident signale à la connexion (généralement le
-# nom utilisateur Unix).
+# nom utilisateur du système d'exploitation).
 # 
 # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 host    postgres    all         192.168.93.0/24       ident
@@ -643,7 +673,7 @@
    quand le processus principal du serveur reçoit un signal
    <systemitem>SIGHUP</systemitem><indexterm><primary>SIGHUP</primary></indexterm>.
    Si vous éditez le fichier sur un système en cours d'utilisation, vous devez
-   notifier le serveur (en utilisant<literal>pg_ctl reload</literal> ou
+   notifier le postmaster (en utilisant<literal>pg_ctl reload</literal> ou
    <literal>kill -HUP</literal>) pour lui faire relire le fichier.
   </para>
 
@@ -651,16 +681,16 @@
    Un fichier <filename>pg_ident.conf</filename> qui pourrait être utilisé
    avec le fichier <filename>pg_hba.conf</filename> de
    <xref linkend="example-pg-hba.conf"/> est montré en
-   <xref linkend="example-pg-ident.conf"/>. Dans ce paramétrage d'exemple,
+   <xref linkend="example-pg-ident.conf"/>. Dans cet exemple,
    toute personne connectée sur une machine du réseau 192.168 qui n'a pas
-   le nom d'utilisateur Unix <literal>bryanh</literal>, <literal>ann</literal>,
+   le nom d'utilisateur du système d'exploitation <literal>bryanh</literal>, <literal>ann</literal>,
    ou <literal>robert</literal> verrait son accès refusé. L'utilisateur Unix
    <literal>robert</literal> ne verrait son accès autorisé que lorsqu'il essaye
    de se connecter en tant qu'utilisateur <productname>PostgreSQL</productname>
    <literal>bob</literal>, pas en tant que <literal>robert</literal> ou
    qui que ce soit d'autre. <literal>ann</literal> ne serait autorisée à se connecter
    qu'en tant que <literal>ann</literal>. L'utilisateur <literal>bryanh</literal>
-   aurait le droit de se connecter soit en tant que <literal>bryanh</literal> lui-même,
+   aurait le droit de se connecter soit en tant que <literal>bryanh</literal>,
    soit en tant que <literal>guest1</literal>.
   </para>
 
@@ -778,10 +808,10 @@
     sont distincts des mots de passe du système d'exploitation. Le mot de passe
     de chaque utilisateur est enregistré dans le catalogue système
     <literal>pg_authid</literal>. Ils peuvent être gérés avec les
-    commandes SQL <xref linkend="sql-createuser" endterm="sql-createuser-title"/>
-    et <xref linkend="sql-alteruser" endterm="sql-alteruser-title"/>. Ainsi, par
-    exemple, <userinput>CREATE USER foo WITH PASSWORD 'secret';</userinput>. Par
-    défaut, c'est à dire si aucun mot de passe n'est indiqué, le mot de passe enregistré
+    commandes SQL <xref linkend="sql-createuser"/>
+    et <xref linkend="sql-alteruser"/>. Ainsi, par
+    exemple, <userinput>CREATE USER foo WITH PASSWORD 'secret';</userinput>. Si
+    aucun mot de passe n'est enregistré pour un utilisateur, le mot de passe enregistré
     est nul et l'authentification par mot de passe échoue systématiquement pour
     cet utilisateur.
    </para>
@@ -825,24 +855,29 @@
     <productname>GSSAPI</productname>&nbsp;:
    <variablelist>
      <varlistentry>
-      <term><literal>map</literal></term>
+      <term><literal>include_realm</literal></term>
       <listitem>
        <para>
-        Permet la mise en correspondance entre les noms système et base de données.
-        Voir <xref linkend="auth-username-maps"/> pour plus de détails.
+        Si configuré à <literal>1</literal>, le nom du royaume provenant du
+	principal de l'utilisateur authentifié est inclus dans le nom de
+	l'utilisateur système qui est passé au système de correspondance
+	d'utilisateur (<xref linkend="auth-username-maps"/>). Ceci est utile
+	pour gérer des utilisateurs provenant de plusieurs royaumes.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><literal>include_realm</literal></term>
+      <term><literal>map</literal></term>
       <listitem>
        <para>
-        Si configuré à <literal>1</literal>, le nom du royaume provenant du
-	principal de l'utilisateur authentifié est inclus dans le nom de
-	l'utilisateur système qui est passé au système de correspondance
-	d'utilisateur (<xref linkend="auth-username-maps"/>). Ceci est utile
-	pour gérer des utilisateurs provenant de plusieurs royaumes.
+        Permet la mise en correspondance entre les noms système et base de données.
+        Voir <xref linkend="auth-username-maps"/> pour plus de détails. For a Kerboros
+        principal <literal>username/hostbased at EXAMPLE.COM</literal>, the
+        username used for mapping is <literal>username/hostbased</literal>
+        if <literal>include_realm</literal> is disabled, and
+        <literal>username/hostbased at EXAMPLE.COM</literal> if
+        <literal>include_realm</literal> is enabled.
        </para>
       </listitem>
      </varlistentry>
@@ -895,24 +930,24 @@
     <productname>SSPI</productname>&nbsp;:
     <variablelist>
      <varlistentry>
-      <term><literal>map</literal></term>
+      <term><literal>include_realm</literal></term>
       <listitem>
        <para>
-        Permet la mise en correspondance entre les noms système et base de données.
-        Voir <xref linkend="auth-username-maps"/> pour plus de détails.
+        Si configuré à <literal>1</literal>, le nom du royaume provenant du
+	principal de l'utilisateur authentifié est inclus dans le nom de
+	l'utilisateur système qui est passé au système de correspondance
+	d'utilisateur (<xref linkend="auth-username-maps"/>). Ceci est utile
+	pour gérer des utilisateurs provenant de plusieurs royaumes.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><literal>include_realm</literal></term>
+      <term><literal>map</literal></term>
       <listitem>
        <para>
-        Si configuré à <literal>1</literal>, le nom du royaume provenant du
-	principal de l'utilisateur authentifié est inclus dans le nom de
-	l'utilisateur système qui est passé au système de correspondance
-	d'utilisateur (<xref linkend="auth-username-maps"/>). Ceci est utile
-	pour gérer des utilisateurs provenant de plusieurs royaumes.
+        Permet la mise en correspondance entre les noms système et base de données.
+        Voir <xref linkend="auth-username-maps"/> pour plus de détails.
        </para>
       </listitem>
      </varlistentry>
@@ -953,9 +988,9 @@
     <productname>Kerberos</productname> est un système d'authentification
     sécurisée de standard industriel destiné à l'informatique distribuée sur un
     réseau public. La description de <productname>Kerberos</productname>
-    dépasse largement les objectifs de ce document&nbsp; même dans les
+    dépasse les objectifs de ce document&nbsp; même dans les
     généralités, c'est assez complexe (bien que puissant). La
-    <ulink url="http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html">
+    <ulink url="http://www.cmf.navy.mil/CCS/people/kenh/kerberos-faq.html">
     <acronym>FAQ</acronym> Kerberos</ulink> ou la
     <ulink url="http://web.mit.edu/kerberos/www/">page Kerberos du
     MIT</ulink> sont un bon point de départ à l'exploration. Il existe plusieurs
@@ -986,9 +1021,9 @@
     de la construction avec
     <literal>./configure --with-krb-srvnam=</literal><replaceable>quelquechose</replaceable>. Dans la
     plupart des environnements, il est inutile de modifier cette valeur.
-    Néanmoins, pour supporter
-    plusieurs installations de <productname>PostgreSQL</productname> sur le même hôte,
-    cela devient nécessaire. Quelques implantations de Kerberos peuvent
+    Néanmoins, cela devient nécessaire pour supporter plusieurs installations
+    de <productname>PostgreSQL</productname> sur le même hôte.
+    Quelques implantations de Kerberos peuvent
     imposer un nom de service différent, comme Microsoft Active
     Directory qui réclame un nom du service en majuscules
     (<literal>POSTGRES</literal>).
@@ -1039,11 +1074,11 @@
    <para>
     Lors de la connexion à la base de données, il faut s'assurer de posséder
     un ticket pour le principal correspondant au nom d'utilisateur de base
-    de données souhaité. Par exemple, pour le nom d'utilisateur
-    <literal>fred</literal>, les deux
-    principaux <literal>fred at EXAMPLE.COM</literal>
-    et <literal>fred/users.exemple.com at EXAMPLE.COM</literal> peuvent être utilisés
-    pour authentifier le serveur de bases de données.
+    de données souhaité. For example, for
+    database user name <literal>fred</literal>, principal
+    <literal>fred at EXAMPLE.COM</literal> would be able to connect. To also allow
+    principle <literal>fred/users.example.com at EXAMPLE.COM</literal>, use a username
+    map, as described in <xref linkend="auth-username-maps"/>.
    </para>
 
    <para>
@@ -1238,7 +1273,8 @@
    </para>
 
    <para>
-    Le serveur fera un « bind » sur le nom distingué comme
+    LDAP authentication can operate in two modes. In the first mode,
+    le serveur fera un « bind » sur le nom distingué comme
     <replaceable>préfixe</replaceable> <replaceable>nom_utilisateur</replaceable>
     <replaceable>suffixe</replaceable>.
     Typiquement, le paramètre <replaceable>prefix</replaceable> est utilisé pour spécifier
@@ -1248,6 +1284,23 @@
    </para>
 
    <para>
+    In the second mode, the server first binds to the LDAP directory with
+    a fixed username and password, specified with <replaceable>ldapbinduser</replaceable>
+    and <replaceable>ldapbinddn</replaceable>, and performs a search for the user trying
+    to log in to the database. If no user and password is configured, an
+    anonymous bind will be attempted to the directory. The search will be
+    performed over the subtree at <replaceable>ldapbasedn</replaceable>, and will try to
+    do an exact match of the attribute specified in
+    <replaceable>ldapsearchattribute</replaceable>. If no attribute is specified, the
+    <literal>uid</literal> attribute will be used. Once the user has been found in
+    this search, the server disconnects and re-binds to the directory as
+    this user, using the password specified by the client, to verify that the
+    login is correct. This method allows for significantly more flexibility
+    in where the user objects are located in the directory, but will cause
+    two separate connections to the LDAP server to be made.
+   </para>
+
+	<para>
     Les options de configuration suivantes sont supportées pour LDAP&nbsp;:
     <variablelist>
      <varlistentry>
@@ -1259,11 +1312,31 @@
       </listitem>
      </varlistentry>
      <varlistentry>
+      <term><literal>ldapport</literal></term>
+      <listitem>
+       <para>
+        Numéro de port du serveur LDAP auquel se connecter. Si aucun port
+        n'est spécifié, le port par défaut de la bibliothèque LDAP sera utilisé.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>ldaptls</literal></term>
+      <listitem>
+       <para>
+        Positionnez à <literal>1</literal> pour que la connexion entre PostgreSQL et le serveur
+        LDAP utilise du chiffrage TLS. Notez que ceci ne chiffre que le trafic
+        jusqu'au serveur LDAP &mdash; la connexion vers le client peut toujours ne
+        pas être chiffrée sauf si SSL est utilisé.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
       <term><literal>ldapprefix</literal></term>
       <listitem>
        <para>
-        Chaîne à ajouter devant le nom de l'utilisateur à la génération
-        du DN avec lequel faire le « bind ».
+        String to prepend to the username when forming the DN to bind as,
+        when doing simple bind authentication.
        </para>
       </listitem>
      </varlistentry>
@@ -1271,31 +1344,47 @@
       <term><literal>ldapsuffix</literal></term>
       <listitem>
        <para>
-        Chaîne à ajouter derrière le nom de l'utilisateur à la génération
-        du DN avec lequel faire le « bind ».
+        String to append to the username when forming the DN to bind as,
+        when doing simple bind authentication.
        </para>
       </listitem>
      </varlistentry>
      <varlistentry>
-      <term><literal>ldapport</literal></term>
+      <term><literal>ldapbasedn</literal></term>
       <listitem>
        <para>
-        Numéro de port du serveur LDAP auquel se connecter. Si aucun port
-        n'est spécifié, le port par défaut de la bibliothèque LDAP sera utilisé.
+        DN to root the search for the user in, when doing search+bind
+        authentication.
        </para>
       </listitem>
      </varlistentry>
      <varlistentry>
-      <term><literal>ldaptls</literal></term>
+      <term><literal>ldapbinddn</literal></term>
       <listitem>
        <para>
-        Positionnez à <literal>1</literal> pour que la connexion entre PostgreSQL et le serveur
-        LDAP utilise du chiffrage TLS. Notez que ceci ne chiffre que le trafic
-        jusqu'au serveur LDAP &mdash; la connexion vers le client peut toujours ne
-        pas être chiffrée sauf si SSL est utilisé.
+        DN of user to bind to the directory with to perform the search when
+        doing search+bind authentication.
        </para>
       </listitem>
      </varlistentry>
+     <varlistentry>
+      <term><literal>ldapbindpasswd</literal></term>
+      <listitem>
+       <para>
+        Password for user to bind to the directory with to perform the search
+        when doing search+bind authentication.
+       </para>
+      </listitem>
+      </varlistentry>
+      <varlistentry>
+       <term><literal>ldapsearchattribute</literal></term>
+       <listitem>
+        <para>
+         Attribute to match against the username in the search when doing
+         search+bind authentication.
+        </para>
+       </listitem>
+      </varlistentry>
     </variablelist>
    </para>
 
@@ -1313,6 +1402,95 @@
 
   </sect2>
 
+  <sect2 id="auth-radius">
+   <title>RADIUS authentication</title>
+
+   <indexterm zone="auth-radius">
+    <primary>RADIUS</primary>
+   </indexterm>
+
+   <para>
+    This authentication method operates similarly to
+    <literal>password</literal> except that it uses RADIUS
+    as the password verification method. RADIUS is used only to validate
+    the user name/password pairs. Therefore the user must already
+    exist in the database before RADIUS can be used for
+    authentication.
+   </para>
+
+   <para>
+    When using RADIUS authentication, an Access Request message will be sent
+    to the configured RADIUS server. This request will be of type
+    <literal>Authenticate Only</literal>, and include parameters for
+    <literal>user name</literal>, <literal>password</literal> (encrypted) and
+    <literal>NAS Identifier</literal>. The request will be encrypted using
+    a secret shared with the server. The RADIUS server will respond to
+    this server with either <literal>Access Accept</literal> or
+    <literal>Access Reject</literal>. There is no support for RADIUS accounting.
+   </para>
+
+   <para>
+    The following configuration options are supported for RADIUS:
+     <variablelist>
+      <varlistentry>
+       <term><literal>radiusserver</literal></term>
+       <listitem>
+        <para>
+         The name or IP address of the RADIUS server to connect to.
+         This parameter is required.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
+       <term><literal>radiussecret</literal></term>
+       <listitem>
+        <para>
+         The shared secret used when talking securely to the RADIUS
+         server. This must have exactly the same value on the PostgreSQL
+         and RADIUS servers. It is recommended that this is a string of
+         at least 16 characters. This parameter is required.
+         <note>
+         <para>
+          The encryption vector used will only be cryptographically
+          strong if <productname>PostgreSQL</productname> is built with support for
+          <productname>OpenSSL</productname>. In other cases, the transmission to the
+          RADIUS server should only be considered obfuscated, not secured, and
+          external security measures should be applied if necessary.
+         </para>
+         </note>
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
+       <term><literal>radiusport</literal></term>
+       <listitem>
+        <para>
+         The port number on the RADIUS server to connect to. If no port
+         is specified, the default port <literal>1812</literal> will be used.
+        </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
+       <term><literal>radiusidentifier</literal></term>
+       <listitem>
+        <para>
+         The string used as <literal>NAS Identifier</literal> in the RADIUS
+         requests. This parameter can be used as a second parameter
+         identifying for example which database the user is attempting
+         to authenticate as, which can be used for policy matching on
+         the RADIUS server. If no identifier is specified, the default
+         <literal>postgresql</literal> will be used.
+        </para>
+       </listitem>
+      </varlistentry>
+
+     </variablelist>
+   </para>
+  </sect2>
+
   <sect2 id="auth-cert">
    <title>Authentification de certificat</title>
 

Modified: traduc/trunk/postgresql/config.xml
===================================================================
--- traduc/trunk/postgresql/config.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/config.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -28,9 +28,9 @@
     paramètre prend une valeur d'un de ces cinq types&nbsp;: booléen, entier,
     nombre à virgule flottante, chaîne de caractères ou énumération. Les unités par défaut
     peuvent être récupérées en référençant <literal>pg_settings.unit</literal>.
-    Les valeurs booléennes peuvent être <literal>ON</literal>, <literal>OFF</literal>,
-    <literal>TRUE</literal>, <literal>FALSE</literal>, <literal>YES</literal>,
-    <literal>NO</literal>, <literal>1</literal>, <literal>0</literal>
+    Les valeurs booléennes peuvent être <literal>on</literal>, <literal>off</literal>,
+    <literal>true</literal>, <literal>false</literal>, <literal>yes</literal>,
+    <literal>no</literal>, <literal>1</literal>, <literal>0</literal>
     ou tout préfixe non ambigü de celles-ci (toutes ces écritures sont
     insensibles à la casse).
    </para>
@@ -65,7 +65,9 @@
     <filename>postgresql.conf</filename>
     <indexterm><primary>postgresql.conf</primary></indexterm>
     qui est normalement placé dans le répertoire data
-    (<application>initdb</application> y installe une copie par défaut).
+    (A default copy is
+    installed there when the database cluster directory is
+    initialized.).
     Un exemple de contenu peut être&nbsp;:
 <programlisting># Ceci est un commentaire
 log_connections = yes
@@ -75,7 +77,8 @@
     Un paramètre est indiqué par ligne. Le signe égal entre le nom et la
     valeur est optionnel. Les espaces n'ont pas de signification et les
     lignes vides sont ignorées. Les marques de hachage (<literal>#</literal>)
-    introduisent des commentaires. Les valeurs des paramètres qui ne
+    designate the rest of the
+    line as a comment. Les valeurs des paramètres qui ne
     sont pas des identificateurs simples ou des nombres doivent être placées entre
     guillemets simples. Pour intégrer un guillemet simple dans la valeur d'un
     paramètre, on écrit soit deux guillemets (c'est la méthode préférée) soit
@@ -147,8 +150,8 @@
     utilisateur ou à une base de données. Quand une session est lancée, les
     paramètres par défaut de l'utilisateur et de la base de données
     impliqués sont chargés. Les commandes
-    <xref linkend="sql-alteruser" endterm="sql-alteruser-title"/> et
-    <xref linkend="sql-alterdatabase" endterm="sql-alterdatabase-title"/>
+    <xref linkend="sql-alteruser"/> et
+    <xref linkend="sql-alterdatabase"/>
     sont respectivement utilisées pour configurer ces paramètres. Les
     paramètres par base de données surchargent
     ceux passés sur la ligne de commande de <command>postgres</command> ou
@@ -159,7 +162,7 @@
    <para>
     Quelques paramètres peuvent être modifiés dans les sessions
     <acronym>SQL</acronym> individuelles avec la commande
-    <xref linkend="sql-set" endterm="sql-set-title"/>, par exemple&nbsp;:
+    <xref linkend="sql-set"/>, par exemple&nbsp;:
 <screen>SET ENABLE_SEQSCAN TO OFF;</screen>
     Si <command>SET</command> est autorisé, il surcharge toutes les autres sources de
     valeurs pour le paramètre. Quelques paramètres ne peuvent pas être changés
@@ -167,12 +170,11 @@
     ne peut pas être modifié sans relancer le serveur
     <productname>PostgreSQL</productname>, par exemple. De plus, quelques
     paramètres peuvent être modifiés via <command>SET</command> ou
-    <command>ALTER</command> par les superutilisateurs, mais pas par les
-    utilisateurs ordinaires.
+    <command>ALTER</command> par les superutilisateurs.
    </para>
 
    <para>
-    La commande <xref linkend="sql-show" endterm="sql-show-title"/> permet
+    La commande <xref linkend="sql-show"/> permet
     d'inspecter les valeurs courantes de tous les paramètres.
    </para>
 
@@ -258,8 +260,8 @@
              <primary>paramètre de configuration <varname>ident_file</varname></primary>
            </indexterm>
              <para>
-               Indique le fichier de configuration de l'authentification
-               <application>ident</application> (appelé <filename>pg_ident.conf</filename>).
+               Indique le fichier de configuration pour
+               <xref linkend="auth-username-maps"/> username mapping (appelé <filename>pg_ident.conf</filename>).
                Ce paramètre ne peut être initialisé qu'au lancement du
                serveur.
              </para>
@@ -351,7 +353,12 @@
              La valeur par défaut est
 	     <systemitem class="systemname">localhost</systemitem>, ce qui
 	     n'autorise que les
-             connexions locales de type <quote>loopback</quote>. Ce
+             connexions TCP/IP locales de type <quote>loopback</quote>. While client authentication (<xref
+         linkend="client-authentication"/>) allows fine-grained control
+         over who can access the server, <varname>listen_addresses</varname>
+         controls which interfaces accept connection attempts, which
+         can help prevent repeated malicious connection requests on
+         insecure network interfaces. Ce
 	     paramètre ne peut être configuré qu'au lancement du serveur.
            </para>
          </listitem>
@@ -395,6 +402,12 @@
         d'exploitation. Voir la <xref linkend="sysvipc"/> pour plus
         d'informations sur la façon d'ajuster ces paramètres, si nécessaire.
        </para>
+
+       <para>
+        When running a standby server, you must set this parameter to the
+        same or higher value than on the master server. Otherwise, queries
+        will not be allowed in the standby server.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -411,7 +424,8 @@
 	actives simultanément. Dès que le nombre de connexions
 	simultanément actives atteint <varname>max_connections</varname> moins
 	<varname>superuser_reserved_connections</varname>, les nouvelles
-	connexions ne sont plus acceptées que pour les superutilisateurs.
+	connexions ne sont plus acceptées que pour les superutilisateurs, and no
+        new replication connections will be accepted.
        </para>
 
        <para>
@@ -497,6 +511,20 @@
        </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-bonjour" xreflabel="bonjour">
+      <term><varname>bonjour</varname> (<type>boolean</type>)</term>
+      <indexterm>
+       <primary><varname>bonjour</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Enables advertising the server's existence via
+        <productname>Bonjour</productname>.  The default is off.
+        This parameter can only be set at server start.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-bonjour-name" xreflabel="bonjour_name">
       <term><varname>bonjour_name</varname> (<type>string</type>)</term>
        <listitem>
@@ -504,7 +532,7 @@
        <primary>paramètre de configuration <varname>bonjour_name</varname></primary>
       </indexterm>
          <para>
-           Indique le nom du broadcast <productname>Bonjour</productname>.
+           Indique le nom du service <productname>Bonjour</productname>.
            Le nom de l'ordinateur est utilisé si ce paramètre est configuré avec
            une chaîne vide (ce qui est la valeur par défaut). Ce paramètre est
 	   ignoré si le serveur n'est pas compilé avec le support
@@ -583,7 +611,7 @@
        <para>
         Temps maximum pour terminer l'authentification du client, en
         secondes. Si un client n'a pas terminé le protocole d'authentification
-        dans ce délai, le serveur rompt la connexion. Cela protège le serveur
+        dans ce délai, le serveur ferme la connexion. Cela protège le serveur
 	des clients bloqués occupant une connexion indéfiniment. La valeur par
 	défaut est d'une minute.
 	Ce paramètre peut être configuré au lancement du serveur et dans le fichier
@@ -663,8 +691,8 @@
        </indexterm>
          <para>
            Ce paramètre détermine si un mot de passe, indiqué dans
-	   <xref linkend="sql-createuser" endterm="sql-createuser-title"/> ou
-	   <xref linkend="sql-alteruser" endterm="sql-alteruser-title"/> sans
+	   <xref linkend="sql-createuser"/> ou
+	   <xref linkend="sql-alteruser"/> sans
 	   qu'il soit précisé <literal>ENCRYPTED</literal> ou
 	   <literal>UNENCRYPTED</literal>, doit être chiffré.
 	   Actif par défaut (chiffre le mot de passe).
@@ -758,7 +786,7 @@
        <para>
         Ce paramètre activé, il reste possible de créer des utilisateurs
         globaux ordinaires. Il suffit pour cela d'ajouter
-	<literal>@</literal> au nom du client. Le <literal>@</literal> est
+	<literal>@</literal> au nom du client, e.g. <literal>joe@</literal>. Le <literal>@</literal> est
 	supprimé avant que le serveur ne recherche ce nom.
        </para>
 
@@ -876,7 +904,7 @@
        <para>
 	Configure le nombre maximum de transactions simultanément dans
 	l'état <quote>préparées</quote> (voir <xref
-	linkend="sql-prepare-transaction" endterm="sql-prepare-transaction-title"/>).
+	linkend="sql-prepare-transaction"/>).
 	Zéro, la configuration par défaut, désactive la fonctionnalité des
 	transactions préparées
 	Ce paramètre ne peut être configuré qu'au lancement du serveur.
@@ -900,6 +928,12 @@
 	Voir la <xref linkend="sysvipc"/> pour les informations concernant la façon
 	d'ajuster ces paramètres, si nécessaire.
        </para>
+
+       <para>
+        When running a standby server, you must set this parameter to the
+        same or higher value than on the master server. Otherwise, queries
+        will not be allowed in the standby server.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -1044,13 +1078,13 @@
        </indexterm>       
        <para>
         Indique les bibliothèques partagées à
-	précharger au démarrage du serveur. S'il faut précharger plusieurs
-	bibliothèques, leurs noms doivent être séparés par des
-	virgules. Par exemple,
+	précharger au démarrage du serveur. Par exemple,
         <literal>'$libdir/malib'</literal> implique le préchargement de 
 	<literal>malib.so</literal> (ou, sur certaines plateformes, 
 	<literal>malib.sl</literal>) depuis le répertoire d'installation
-	des bibliothèques standard. Ce paramètre ne peut être configuré
+	des bibliothèques standard. S'il faut précharger plusieurs
+	bibliothèques, leurs noms doivent être séparés par des
+	virgules. Ce paramètre ne peut être configuré
 	qu'au lancement du serveur.
        </para>
 
@@ -1109,19 +1143,17 @@
 est interrompu un certain temps (donc reporté) en fonction du coût estimé
 des opération du vacuum. -->
     <sect2 id="runtime-config-resource-vacuum-cost">
-     <title id="runtime-config-resource-vacuum-cost-title">
-      Report du VACUUM en fonction de son coût
-     </title>
+     <title>Report du VACUUM en fonction de son coût</title>
 
      <para>
       Lors de l'exécution des commandes 
-      <xref linkend="sql-vacuum" endterm="sql-vacuum-title"/> et 
-      <xref linkend="sql-analyze" endterm="sql-analyze-title"/>, le système
+      <xref linkend="sql-vacuum"/> et 
+      <xref linkend="sql-analyze"/>, le système
       maintient un compteur interne qui conserve la trace du coût estimé
       des différentes opérations d'entrée/sortie réalisées. Quand le coût
       accumulé atteint une limite (indiquée par
       <varname>vacuum_cost_limit</varname>), le processus traitant l'opération
-      s'arrête un moment (précisé par <varname>vacuum_cost_delay</varname>).
+      s'arrête un court moment (précisé par <varname>vacuum_cost_delay</varname>).
       Puis, il réinitialise le compteur et continue l'exécution.
      </para>
 
@@ -1263,22 +1295,17 @@
       <title>Processus d'écriture en arrière-plan</title>
   
       <para>
-        Il existe un processus serveur distinct, nommé
-	<firstterm>processus d'écriture en arrière-plan</firstterm>
-	(<foreignphrase>background writer</foreignphrase>), dont la
-        seule fonction est d'écrire les tampons partagés
-	<quote>modifiés</quote> 
-	(<foreignphrase>dirty shared buffers</foreignphrase>).
-	Le but est d'éviter aux processus serveur qui gèrent les
-        requêtes utilisateur d'attendre les écritures, le processus
-	d'écriture en arrière-plan se chargeant de celles-ci. Cependant,
-	la charge des entrées/sorties augmente
-	considérablement, parce que si une page fréquemment modifiée n'était
-	auparavant écrite qu'une seule fois par point de vérification, le
-	processus d'écriture en arrière-plan peut l'écrire plusieurs fois
-	dans le même intervalle. Les
-	paramètres décrits dans cette sous-section permettent d'ajuster ce
-	comportement pour des besoins particuliers.
+        There is a separate server
+      process called the <firstterm>background writer</firstterm>, whose function
+      is to issue writes of <quote>dirty</quote> (new or modified) shared
+      buffers.  It writes shared buffers so server processes handling
+      user queries seldom or never need to wait for a write to occur.
+      However, the background writer does cause a net overall
+      increase in I/O load, because while a repeatedly-dirtied page might
+      otherwise be written only once per checkpoint interval, the
+      background writer might write it several times as it is dirtied
+      in the same interval.  The parameters discussed in this subsection
+      can be used to tune the behavior for local needs.
       </para>
 
       <variablelist>
@@ -1431,6 +1458,49 @@
      <title>Paramètres</title>
      <variablelist>
      
+
+     <varlistentry id="guc-wal-level" xreflabel="wal_level">
+      <term><varname>wal_level</varname> (<type>enum</type>)</term>
+      <indexterm>
+       <primary><varname>wal_level</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        <varname>wal_level</varname> determines how much information is written
+        to the WAL. The default value is <literal>minimal</literal>, which writes
+        only the information needed to recover from a crash or immediate
+        shutdown. <literal>archive</literal> adds logging required for WAL archiving,
+        and <literal>hot_standby</literal> further adds information required to run
+        read-only queries on a standby server.
+        This parameter can only be set at server start.
+       </para>
+       <para>
+        In <literal>minimal</literal> level, WAL-logging of some bulk operations, like
+        <command>CREATE INDEX</command>, <command>CLUSTER</command> and <command>COPY</command> on
+        a table that was created or truncated in the same transaction can be
+        safely skipped, which can make those operations much faster (see
+        <xref linkend="populate-pitr"/>). But minimal WAL does not contain
+        enough information to reconstruct the data from a base backup and the
+        WAL logs, so either <literal>archive</literal> or <literal>hot_standby</literal>
+        level must be used to enable
+        WAL archiving (<xref linkend="guc-archive-mode"/>) and streaming
+        replication.
+       </para>
+       <para>
+        In <literal>hot_standby</literal> level, the same information is logged as
+        with <literal>archive</literal>, plus information needed to reconstruct
+        the status of running transactions from the WAL. To enable read-only
+        queries on a standby server, <varname>wal_level</varname> must be set to
+        <literal>hot_standby</literal> on the primary, and
+        <xref linkend="guc-hot-standby"/> must be enabled in the standby. It is
+        thought that there is
+        little measurable difference in performance between using
+        <literal>hot_standby</literal> and <literal>archive</literal> levels, so feedback
+        is welcome if any production impacts are noticeable.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-fsync" xreflabel="fsync">
       <term><varname>fsync</varname> (<type>boolean</type>)</term>
       <listitem>
@@ -1455,8 +1525,9 @@
         est désactivé, le système d'exploitation gère seul la mise en tampons,
 	l'ordonnancement et le report des écritures. Cela peut conduire à de
 	meilleures performances. Cependant, en cas de panne système, le résultat
-	des dernières transactions validées peut être en partie, voire 
-	complètement, perdu. Dans le pire des cas,
+	des dernières transactions validées might be completely lost, or worse,
+        might appear partially committed, leaving the database in an
+        inconsistent state. Dans le pire des cas,
         une corruption irrécupérable des données peut survenir.
 	(Un plantage du logiciel du serveur de bases de données lui-même ne représente
 	<emphasis>pas</emphasis> ici un facteur de risque. Seule une panne
@@ -1486,7 +1557,7 @@
        </para>
 
        <para>
-	Ce paramètre ne peut être configuré que dans le fichier
+	<varname>fsync</varname> ne peut être configuré que dans le fichier
 	<filename>postgresql.conf</filename> ou indiqué sur la ligne de commande.
 	Si ce paramètre est désactivé (<literal>off</literal>), il est
 	intéressant de désactiver aussi <xref linkend="guc-full-page-writes"/>.
@@ -1541,7 +1612,7 @@
        <para>
         Méthode utilisée pour forcer les mises à jour des WAL sur le disque.
         Si <varname>fsync</varname> est désactivé, alors ce paramètre est
-        inapplicable, car les mises à jour ne sont pas du tout forcées. Les
+        inapplicable, car les mises à jour des journaux de transactions ne sont pas du tout forcées. Les
         valeurs possibles sont&nbsp;:
        </para>
        <itemizedlist>
@@ -1582,6 +1653,8 @@
 	supportée par la plateforme.
         Les options <literal>open_</literal>* utilisent aussi
 	<literal>O_DIRECT</literal> s'il est disponible.
+        The utility <filename>src/tools/fsync</filename> in the PostgreSQL source tree
+        can do performance testing of various fsync methods.
 	Ce paramètre ne peut être configuré que dans le fichier
 	<filename>postgresql.conf</filename> ou indiqué sur la ligne de commande.
        </para>
@@ -1622,7 +1695,7 @@
 	sont similaires à la désactivation de <varname>fsync</varname>, bien
 	que moindres. Ce paramètre pourrait être désactivé sans risque si le
 	matériel (contrôleur disque sur batterie, par exemple) ou le logiciel de gestion
-	du système de fichiers (ReiserFS 4, par exemple) réduit le risque d'écritures
+	du système de fichiers (ZFS, par exemple) réduit le risque d'écritures
 	partielles de pages à un niveau suffisamment bas.
        </para>
 
@@ -1779,8 +1852,8 @@
         <primary>paramètre de configuration <varname>checkpoint_completion_target</varname></primary> 
        </indexterm> 
        <para>
-        Indique la longueur cible des points de vérification en fraction
-	de l'interval des points de vérification. La valeur par défaut est 0.5.
+        pecifies the target of checkpoint completion, as a fraction of
+        total time between checkpoints. La valeur par défaut est 0.5.
 	Ce paramètre ne peut être configuré que dans le fichier
 	<filename>postgresql.conf</filename> ou indiqué sur la ligne de commande.
        </para>
@@ -1827,7 +1900,9 @@
         sont des variables séparées de façon à ce que
 	<varname>archive_command</varname> puisse être modifiée sans quitter le
 	mode d'archivage. Ce paramètre ne peut être configuré qu'au lancement du
-        serveur.
+        serveur. <varname>wal_level</varname>
+        must be set to <literal>archive</literal> or <literal>hot_standby</literal> to
+        enable <varname>archive_mode</varname>.
        </para>
       </listitem>
      </varlistentry>
@@ -1846,9 +1921,12 @@
           (Le chemin est relatif au répertoire de travail du serveur,
 	  c'est-à-dire le répertoire de données du cluster.) 
 	  <literal>%%</literal> est utilisé pour intégrer un caractère
-	  <literal>%</literal> dans la commande. Pour plus d'informations, voir
-	  la <xref linkend="backup-archiving-wal"/>.
-	  Ce paramètre ne peut être configuré que dans le fichier
+	  <literal>%</literal> dans la commande..  It is important for the command to return a zero
+        exit status only if it succeeds. For more information see
+        <xref linkend="backup-archiving-wal"/>.
+       </para>
+       <para>
+        Ce paramètre ne peut être configuré que dans le fichier
 	  <filename>postgresql.conf</filename> ou indiqué sur la ligne de commande.  
 	  Il est ignoré sauf si <varname>archive_mode</varname> a été activé au
 	  lancement du serveur. Si <varname>archive_command</varname> est une
@@ -1856,15 +1934,12 @@
 	  <varname>archive_mode</varname> est activé, alors l'archivage des WAL
 	  est désactivé temporairement mais le serveur continue d'accumuler les
 	  fichiers WAL dans l'espoir qu'une commande lui soit rapidement
-	  proposée.
-        </para>
-
-        <para>
-          Il est important que la commande ne renvoie un code de sortie nul
-	  que si, et seulement si, elle réussit. Exemples&nbsp;:
-<programlisting>archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
-archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"'  # Windows</programlisting>
-        </para>
+	  proposée. Setting
+        <varname>archive_command</varname> to a command that does nothing but
+        return true, e.g. <literal>/bin/true</literal>, effectively disables
+        archiving, but also breaks the chain of WAL files needed for
+        archive recovery, so it should only be used in unusual circumstances.
+       </para>
       </listitem>
     </varlistentry>
 
@@ -1884,7 +1959,11 @@
 	serveur à basculer périodiquement sur un nouveau segment WAL.
 	Lorsque ce paramètre est positif, le serveur bascule sur un nouveau
 	segment à chaque fois que <varname>archive_timeout</varname> secondes
-	se sont écoulées depuis le dernier changement de segment.
+	se sont écoulées depuis le dernier changement de segment, and there has been any database activity,
+        including a single checkpoint.  (Increasing
+        <varname>checkpoint_timeout</varname> will reduce unnecessary
+        checkpoints on an idle system.)
+        
 	Les fichiers archivés clos par anticipation suite à une 
 	bascule imposée sont toujours de la même taille que les fichiers
 	complets. Il est donc déconseillé de configurer un temps très
@@ -1901,6 +1980,142 @@
    </variablelist>
    </sect2>
 
+    <sect2 id="runtime-config-replication">
+     <title>Streaming Replication</title>
+
+     <para>
+      These settings control the behavior of the built-in
+      <firstterm>streaming replication</firstterm> feature.
+     </para>
+
+     <variablelist>
+      <varlistentry id="guc-max-wal-senders" xreflabel="max_wal_senders">
+       <term><varname>max_wal_senders</varname> (<type>integer</type>)</term>
+       <indexterm>
+        <primary><varname>max_wal_senders</varname> configuration parameter</primary>
+       </indexterm>
+       <listitem>
+       <para>
+        Specifies the maximum number of concurrent connections from standby
+        servers (i.e., the maximum number of simultaneously running WAL sender
+        processes). The default is zero. This parameter can only be set at
+        server start. <varname>wal_level</varname> must be set to <literal>archive</literal>
+        or <literal>hot_standby</literal> to allow connections from standby servers.
+       </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry id="guc-wal-sender-delay" xreflabel="wal_sender_delay">
+       <term><varname>wal_sender_delay</varname> (<type>integer</type>)</term>
+       <indexterm>
+        <primary><varname>wal_sender_delay</varname> configuration parameter</primary>
+       </indexterm>
+       <listitem>
+       <para>
+        Specifies the delay between activity rounds for the WAL sender.
+        In each round the WAL sender sends any WAL accumulated since the last
+        round to the standby server. It then sleeps for
+        <varname>wal_sender_delay</varname> milliseconds, and repeats. The default
+        value is 200 milliseconds (<literal>200ms</literal>).
+        Note that on many systems, the effective resolution of sleep delays is
+        10 milliseconds; setting <varname>wal_sender_delay</varname> to a value that
+        is not a multiple of 10 might have the same results as setting it to
+        the next higher multiple of 10. This parameter can only be set in the
+        <filename>postgresql.conf</filename> file or on the server command line.
+       </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry id="guc-wal-keep-segments" xreflabel="wal_keep_segments">
+       <term><varname>wal_keep_segments</varname> (<type>integer</type>)</term>
+       <indexterm>
+        <primary><varname>wal_keep_segments</varname> configuration parameter</primary>
+       </indexterm>
+       <listitem>
+       <para>
+        Specifies the number of past log file segments kept in the
+        <filename>pg_xlog</filename>
+        directory, in case a standby server needs to fetch them for streaming
+        replication. Each segment is normally 16 megabytes. If a standby
+        server connected to the primary falls behind by more than
+        <varname>wal_keep_segments</varname> segments, the primary might remove
+        a WAL segment still needed by the standby, in which case the
+        replication connection will be terminated.
+       </para>
+
+       <para>
+        This sets only the minimum number of segments retained for standby
+        purposes; the system might need to retain more segments for WAL
+        archival or to recover from a checkpoint. If <varname>wal_keep_segments</varname>
+        is zero (the default), the system doesn't keep any extra segments
+        for standby purposes, and the number of old WAL segments available
+        for standbys is determined based only on the location of the previous
+        checkpoint and status of WAL archiving.
+        This parameter can only be set in the <filename>postgresql.conf</filename>
+        file or on the server command line.
+       </para>
+       </listitem>
+      </varlistentry>
+     </variablelist>
+    </sect2>
+    <sect2 id="runtime-config-standby">
+    <title>Standby Servers</title>
+
+    <variablelist>
+
+     <varlistentry id="guc-hot-standby" xreflabel="hot_standby">
+      <term><varname>hot_standby</varname> (<type>boolean</type>)</term>
+      <indexterm>
+       <primary><varname>hot_standby</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Specifies whether or not you can connect and run queries during
+        recovery, as described in <xref linkend="hot-standby"/>.
+        The default value is <literal>off</literal>.
+        This parameter can only be set at server start. It only has effect
+        during archive recovery or in standby mode.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="guc-max-standby-delay" xreflabel="max_standby_delay">
+      <term><varname>max_standby_delay</varname> (<type>integer</type>)</term>
+      <indexterm>
+       <primary><varname>max_standby_delay</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        When Hot Standby is active, this parameter specifies a wait policy
+        for applying WAL entries that conflict with active queries.
+        If a conflict should occur the server will delay up to this long
+        before it cancels conflicting queries, as
+        described in <xref linkend="hot-standby-conflict"/>.
+        The default is 30 seconds (30 s). Units are milliseconds.
+        A value of -1 causes the standby to wait forever for a conflicting
+        query to complete.
+        This parameter can only be set in the <filename>postgresql.conf</filename>
+        file or on the server command line.
+       </para>
+       <para>
+        A high value makes query cancel less likely.
+        Increasing this parameter or setting it to -1 might delay master server
+        changes from appearing on the standby.
+      </para>
+      <para>
+       While it is tempting to believe that <varname>max_standby_delay</varname>
+       is the maximum length of time a query can run before
+       cancellation is possible, this is not true.  When a long-running
+       query ends, there is a finite time required to apply backlogged
+       WAL logs.  If a second long-running query appears before the
+       WAL has caught up, the snapshot taken by the second query will
+       allow significantly less than <varname>max_standby_delay</varname> seconds
+       before query cancellation is possible.
+      </para>
+      </listitem>
+     </varlistentry>
+
+     </variablelist>
+    </sect2>
    </sect1>
 
    <sect1 id="runtime-config-query">
@@ -1913,15 +2128,15 @@
        Ces paramètres de configuration fournissent une méthode brutale pour
        influencer les plans de requête choisis par l'optimiseur de requêtes. Si
        le plan choisi par défaut par l'optimiseur pour une requête particulière
-       n'est pas optimal, une solution temporaire peut provenir de
+       n'est pas optimal, une solution <emphasis>temporaire</emphasis>emphasis> peut provenir de
        l'utilisation de l'un de ces paramètres de configuration pour forcer l'optimiseur
-       à choisir un plan différent. Désactiver un de ces paramètres de façon
-       permanente n'est toutefois pas une bonne idée. De meilleures
+       à choisir un plan différent. De meilleures
        façons d'améliorer la qualité des
        plans choisis par l'optimiseur passent par l'ajustement de
-       <xref linkend="runtime-config-query-constants" endterm="runtime-config-query-constants-title"/>,
+       the planer cost
+       constants (see <xref linkend="runtime-config-query-constants"/>),
        le lancement plus fréquent de
-       <xref linkend="sql-analyze" endterm="sql-analyze-title"/>,
+       <xref linkend="sql-analyze"/>,
        l'augmentation de la valeur du paramètre de configuration
        <xref linkend="guc-default-statistics-target"/> et l'augmentation du nombre
        de statistiques récupérées pour des colonnes spécifiques en utilisant
@@ -1991,6 +2206,22 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-enable-material" xreflabel="enable_material">
+      <term><varname>enable_material</varname> (<type>boolean</type>)</term>
+      <indexterm>
+       <primary><varname>enable_material</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Enables or disables the query planner's use of materialization.
+        It is impossible to suppress materialization entirely,
+        but turning this variable off prevents the planner from inserting
+        materialize nodes except in cases where it is required for correctness.
+        The default is <literal>on</literal>.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-enable-mergejoin" xreflabel="enable_mergejoin">
       <term><varname>enable_mergejoin</varname> (<type>boolean</type>)</term>
       <listitem>
@@ -2075,16 +2306,14 @@
      </variablelist>
      </sect2>
      <sect2 id="runtime-config-query-constants">
-     <title id="runtime-config-query-constants-title">
-      Constantes de coût du planificateur
-     </title>
+     <title>Constantes de coût du planificateur</title>
 
     <para>
      Les variables de <firstterm>coût</firstterm> décrites dans cette section
      sont mesurées sur une échelle arbitraire. Seules leurs valeurs relatives
      ont un intérêt. De ce fait, augmenter ou diminuer leurs valeurs d'un même facteur
      n'occasione aucun changement dans les choix du planificateur.
-     Traditionnellement, ces variables sont indexées sur le coût de
+     Par défaut, ces variables de coût sont basées sur le coût de
      récupération séquentielle d'une page&nbsp;; c'est-à-dire que
      <varname>seq_page_cost</varname> est, par convention, positionné à 
      <literal>1.0</literal> et les autres variables de coût sont configurées
@@ -2115,6 +2344,9 @@
         Initialise l'estimation faite par le planificateur du coût de récupération
 	d'une page disque incluse dans une série de récupérations
 	séquentielles. La valeur par défaut est 1.0.
+        This value can be overriden for a particular tablespace by setting
+        the tablespace parameter of the same name
+        (see <xref linkend="sql-altertablespace"/>).
        </para>
       </listitem>
      </varlistentry>
@@ -2130,6 +2362,12 @@
 	récupération non-séquentielle d'une page disque. Mesurée comme un
         multiple du coût de récupération d'une page séquentielle, sa valeur
 	par défaut est 4.0.
+        This value can be overriden for a particular tablespace by setting
+        the tablespace parameter of the same name
+        (see <xref linkend="sql-altertablespace"/>).
+       </para>
+
+       <para>
 	Réduire cette valeur par rapport à <varname>seq_page_cost</varname>
         incite le système à privilégier les parcours d'index&nbsp;;
 	l'augmenter donne l'impression de parcours d'index plus
@@ -2278,7 +2516,8 @@
         défaut est 12. Il est généralement préférable d'utiliser le
 	planificateur déterministe, exhaustif, pour les requêtes plus simples,
 	mais pour les requêtes impliquant autant de tables, celui-ci
-        prend trop de temps.
+        prend trop de temps, often
+        longer than the penalty of executing a suboptimal plan.
        </para>
       </listitem>
      </varlistentry>
@@ -2363,6 +2602,22 @@
        </listitem>
      </varlistentry>
      
+     <varlistentry id="guc-geqo-seed" xreflabel="geqo_seed">
+      <term><varname>geqo_seed</varname> (<type>floating point</type>)</term>
+      <indexterm>
+       <primary><varname>geqo_seed</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Controls the initial value of the random number generator used
+        by GEQO to select random paths through the join order search space.
+        The value can range from zero (the default) to one.  Varying the
+        value changes the set of join paths explored, and may result in a
+        better or worse best path being found.
+       </para>
+      </listitem>
+     </varlistentry>
+
      </variablelist>
     </sect2>
      <sect2 id="runtime-config-query-other">
@@ -2408,7 +2663,9 @@
         <literal>partition</literal> (n'examiner les contraintes que pour les
         tables enfants d'un héritage et pour les sous-requêtes <literal>UNION ALL</literal>).
         <literal>partition</literal> est la valeur par défaut.
-       </para>
+         It is often used with inheritance and partitioned tables to
+        improve performance.
+      </para>
 
        <para>
         Quand ce paramètre l'autorise pour une table particulière, le planificateur
@@ -2423,9 +2680,8 @@
 SELECT * FROM parent WHERE key = 2400;</programlisting>
 
 	Avec l'activation de l'exclusion par contraintes, ce <command>SELECT</command>
-	ne parcourt pas <structname>fils1000</structname>. Cela peut améliorer
-	les performances lorsque l'héritage est utilisé pour construire des tables
-	partitionnées.
+	ne parcourt pas <structname>fils1000</structname>, ce qui améliore les
+	performances.
        </para>
 
        <para>
@@ -2571,7 +2827,7 @@
        <para>
         Si <systemitem>csvlog</systemitem> est la valeur de
 	<varname>log_destination</varname>, les entrées du journal applicatif
-	sont enregistrées dans le format CSV (<quote>comma separated
+	sont enregistrées dans le format <acronym>CSV</acronym> (<quote>comma separated
         value</quote>), ce qui est bien pratique pour les charger dans des
 	programmes. Voir <xref linkend="runtime-config-logging-csvlog"/> pour
 	les détails.
@@ -2607,15 +2863,26 @@
         <primary>paramètre de configuration <varname>logging_collector</varname></primary> 
        </indexterm>       
        <para>
-	Ce paramètre autorise la capture et la redirection des messages envoyés
-	à <application>stderr</application>, ainsi que les sorties au format
-	CSV, vers les journaux. Cette aproche est souvent plus utile que la
+	This parameter captures plain and CSV-format log messages
+         sent to <application>stderr</application> and redirects them into log files. Cette approche est souvent plus utile que la
 	journalisation avec <application>syslog</application>, car certains
 	messages peuvent ne pas apparaître dans
 	<application>syslog</application> (les messages d'échec de l'éditeur de
 	liens en sont un bon exemple). Ce paramètre ne peut être configuré
 	qu'au lancement du serveur.
        </para>
+
+       <note>
+        <para>
+          The logging collector is designed to never lose messages.  This means
+          that in case of extremely high load, server processes could be
+          blocked due to trying to send additional log messages when the
+          collector has fallen behind.  In contrast, <application>syslog</application>
+          prefers to drop messages if it cannot write them, which means it's
+          less reliable in those cases but it will not block the rest of the
+          system.
+        </para>
+       </note>
       </listitem>
      </varlistentry>
 
@@ -2892,22 +3159,6 @@
       </listitem>
      </varlistentry>
 
-     <varlistentry id="guc-log-error-verbosity" xreflabel="log_error_verbosity">
-      <term><varname>log_error_verbosity</varname> (<type>enum</type>)</term>
-      <listitem>
-      <indexterm>
-       <primary>paramètre de configuration <varname>log_error_verbosity</varname></primary>
-      </indexterm>
-       <para>
-        Contrôle le niveau de détail des traces de chaque message. Les valeurs
-	valides sont <literal>TERSE</literal>, <literal>DEFAULT</literal> et
-	<literal>VERBOSE</literal>, chacune ajoutant plus de
-	champs aux messages affichés. Seuls les superutilisateurs peuvent
-        modifier ce paramétrage.
-       </para>
-      </listitem>
-     </varlistentry>
-
      <varlistentry id="guc-log-min-error-statement" xreflabel="log_min_error_statement">
       <term><varname>log_min_error_statement</varname> (<type>enum</type>)</term>
       <listitem>
@@ -3077,7 +3328,27 @@
      <title>Que tracer</title>
      
      <variablelist>
-     
+
+     <varlistentry id="guc-application-name" xreflabel="application_name">
+      <term><varname>application_name</varname> (<type>string</type>)</term>
+      <indexterm>
+       <primary><varname>application_name</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        The <varname>application_name</varname> can be any string of less than
+        <symbol>NAMEDATALEN</symbol> characters (64 characters in a standard build).
+        It is typically set by an application upon connection to the server.
+        The name will be displayed in the <structname>pg_stat_activity</structname> view
+        and included in CSV log entries.  It can also be included in regular
+        log entries via the <xref linkend="guc-log-line-prefix"/> parameter.
+        Only printable ASCII characters may be used in the
+        <varname>application_name</varname> value. Other characters will be
+        replaced with question marks (<literal>?</literal>).
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><varname>debug_print_parse</varname> (<type>boolean</type>)</term>
       <term><varname>debug_print_rewritten</varname> (<type>boolean</type>)</term>
@@ -3218,6 +3489,28 @@
        </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-log-error-verbosity" xreflabel="log_error_verbosity">
+      <term><varname>log_error_verbosity</varname> (<type>enum</type>)</term>
+      <indexterm>
+       <primary><varname>log_error_verbosity</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Controls the amount of detail written in the server log for each
+        message that is logged.  Valid values are <literal>TERSE</literal>,
+        <literal>DEFAULT</literal>, and <literal>VERBOSE</literal>, each adding more
+        fields to displayed messages.  <literal>TERSE</literal> excludes
+        the logging of <literal>DETAIL</literal>, <literal>HINT</literal>,
+        <literal>QUERY</literal>, and <literal>CONTEXT</literal> error information.
+        <literal>VERBOSE</literal> output includes the <link
+        linkend="errcodes-appendix">SQLSTATE</link> error
+        code and the source code file name, function name,
+        and line number that generated the error.
+        Only superusers can change this setting.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-log-hostname" xreflabel="log_hostname">
       <term><varname>log_hostname</varname> (<type>boolean</type>)</term>
       <listitem>
@@ -3267,6 +3560,11 @@
       </row>
     </thead>
     <tbody>
+            <row>
+             <entry><literal>%a</literal></entry>
+             <entry>Application name</entry>
+             <entry>yes</entry>
+            </row>
       <row>
         <entry><literal>%u</literal></entry>
         <entry>Nom de l'utilisateur</entry>
@@ -3307,6 +3605,11 @@
         <entry>Balise de commande&nbsp;: type de commande</entry>
 	<entry>oui</entry>
       </row>
+            <row>
+             <entry><literal>%e</literal></entry>
+             <entry>SQL state</entry>
+             <entry>no</entry>
+            </row>
       <row>
         <entry><literal>%c</literal></entry>
         <entry>ID de session&nbsp;: voir ci-dessous</entry>
@@ -3408,8 +3711,8 @@
        </indexterm>
          <para>
            Contrôle les instructions SQL à tracer. Les valeurs valides sont 
-	   <literal>none</literal>, <literal>ddl</literal>, <literal>mod</literal>
-	   et <literal>all</literal>. <literal>ddl</literal> trace toutes les
+	   <literal>none</literal> (off), <literal>ddl</literal>, <literal>mod</literal>
+	   et <literal>all</literal> (all statements). <literal>ddl</literal> trace toutes les
 	   commandes de définition comme <command>CREATE</command>,
 	   <command>ALTER</command> et <command>DROP</command>.
 	   <literal>mod</literal> trace toutes les instructions
@@ -3452,12 +3755,12 @@
         <primary>paramètre de configuration <varname>log_temp_files</varname></primary> 
        </indexterm>
        <para>
-        Contrôle l'écriture de traces sur l'utilisation des fichiers temporaires. Les
+        Contrôle l'écriture de traces sur l'utilisation des fichiers temporaires (noms et tailles). Les
 	fichiers temporaires peuvent être créés pour des tris, des hachages
 	et des résultats temporaires de requête. Une entrée de journal est générée
         pour chaque fichier temporaire au moment ou il est effacé.
         Zéro implique une trace
-	de tous les fichiers temporaires alors qu'une valeur positive ne
+	des informations sur tous les fichiers temporaires alors qu'une valeur positive ne
 	trace que les fichiers dont la taille est supérieure ou égale au
 	nombre indiqué (en kilo-octets). La valeur par défaut est
         <literal>-1</literal>, ce qui a pour effet de désactiver les traces.
@@ -3494,21 +3797,31 @@
         L'ajout de <literal>csvlog</literal> dans la liste
 	<varname>log_destination</varname> est une manière simple d'importer
 	des journaux dans une table de base de données. Cette option permet
-	de créer des journaux au format CSV avec les colonnes&nbsp;: horodatage
-	avec les millisecondes, nom de l'utilisateur, nom de la base, identifiant
-	de processus, hôte:numéro de port, identifiant de session,
-	numéro de ligne pour le processus ou la session, tag de commande, heure de début de
-	session, identifiant virtuel de transaction, identifiant standard de
-	transaction, sévérité des erreurs, code d'état SQL, message d'erreur,
-        détail du message d'erreur, astuce, requête interne qui a conduit à
-	cette erreur (s'il y en a une), nombre de caractères indiquant la
-	position de l'erreur dans la requête interne, contexte de l'erreur,
-	requête utilisateur qui a conduit à l'erreur (dans le cas d'une erreur et si
-	<varname>log_min_error_statement</varname> est activé), nombre de
-	caractères indiquant la position de l'erreur dans la requête
-	utilisateur, emplacement de l'erreur dans le code source PostgreSQL (si
-	<varname>log_error_verbosity</varname> est configuré à
-	<literal>verbose</literal>).
+	de créer des journaux au format <acronym>CSV</acronym> avec les colonnes&nbsp;: timestamp with milliseconds,
+        user name,
+        database name,
+        process ID,
+        client host:port number,
+        session ID,
+        per-session line number,
+        command tag,
+        session start time,
+        virtual transaction ID,
+        regular transaction ID,
+        error severity,
+        SQL state code,
+        error message,
+        error message detail,
+        hint,
+        internal query that led to the error (if any),
+        character count of the error position therein,
+        error context,
+        user query that led to the error (if any and enabled by
+        <varname>log_min_error_statement</varname>),
+        character count of the error position therein,
+        location of the error in the PostgreSQL source code
+        (if <varname>log_error_verbosity</varname> is set to <literal>verbose</literal>),
+        and application name.
        </para>
 
        <para>
@@ -3541,6 +3854,7 @@
   query text,
   query_pos integer,
   location text,
+  application_name text,
   PRIMARY KEY (session_id, session_line_num)
 );
 </programlisting>
@@ -3762,7 +4076,8 @@
        <para>
         Écrivent, pour chaque requête, les statistiques de performance du
 	module respectif dans les traces du serveur. C'est un outil de profilage très
-	simpliste. <varname>log_statement_stats</varname> rapporte les
+	simpliste, similar to the Unix <function>getrusage()</function> operating
+        system facility. <varname>log_statement_stats</varname> rapporte les
 	statistiques d'instructions globales, tandis que les autres
 	fournissent un rapport par module.
 	<varname>log_statement_stats</varname> ne peut pas être
@@ -3847,8 +4162,7 @@
        <para>
         Indique le nombre maximum de processus autovacuum (autre que le lanceur
         d'autovacuum) qui peuvent être exécutés simultanément. La valeur par défaut
-	est 3. Ce paramètre ne peut être configuré que dans le fichier
-	<filename>postgresql.conf</filename> ou indiqué sur la ligne de commande.
+	est 3. This parameter can only be set at server start.
        </para>
       </listitem>
      </varlistentry>
@@ -3864,7 +4178,7 @@
 	autovacuum sur une base. À chaque tour, le démon examine une base de données
 	et lance les commandes <command>VACUUM</command> et <command>ANALYZE</command>
 	nécessaires aux tables de cette base. Le délai, mesuré en
-	secondes, vaut, par défaut, une minute (1m).
+	secondes, vaut, par défaut, une minute (<literal>1min</literal>).
 	Ce paramètre ne peut être configuré que dans le fichier
 	<filename>postgresql.conf</filename> ou indiqué sur la ligne de commande.
        </para>
@@ -4027,7 +4341,7 @@
        <para>
         Cette variable précise l'ordre dans lequel les schémas sont parcourus
         lorsqu'un objet (table, type de données, fonction, etc.) est référencé
-        par un simple nom sans sa composante schéma. Lorsque des objets de
+        par un simple nom sans schéma indiqué. Lorsque des objets de
 	noms identiques existent dans plusieurs schémas, c'est le premier trouvé
 	dans le chemin de recherche qui est utilisé. Il ne peut être fait
 	référence à un objet qui ne fait partie d'aucun des schémas indiqués
@@ -4198,7 +4512,7 @@
           Ce paramètre est habituellement positionné à
 	  <literal>on</literal>. Positionné à <literal>off</literal>, il
 	  désactive la validation du corps de la fonction lors de
-	  <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>.
+	  <xref linkend="sql-createfunction"/>.
 	  Désactiver la validation est parfois utile. Cela permet, par
 	  exemple, d'éviter des problèmes de références lors de la restauration
 	  de définitions de fonctions à partir d'une sauvegarde.
@@ -4225,7 +4539,7 @@
 
         <para>
           Consulter le <xref linkend="mvcc"/> et
-	  <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"/>
+	  <xref linkend="sql-set-transaction"/>
           pour plus d'informations.
         </para>
       </listitem>
@@ -4250,7 +4564,7 @@
 
        <para>
         Consulter
-	<xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"/>
+	<xref linkend="sql-set-transaction"/>
 	pour plus d'informations.
        </para>
       </listitem>
@@ -4269,7 +4583,7 @@
 	précédemment mis en cache. Les valeurs possibles sont
 	<literal>origin</literal> (la valeur par défaut),
 	<literal>replica</literal> et <literal>local</literal>.
-        Voir <xref linkend="sql-altertable" endterm="sql-altertable-title"/>
+        Voir <xref linkend="sql-altertable"/>
 	pour plus d'informations.
        </para>
       </listitem>
@@ -4341,6 +4655,46 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-vacuum-defer-cleanup-age" xreflabel="vacuum_defer_cleanup_age">
+      <term><varname>vacuum_defer_cleanup_age</varname> (<type>integer</type>)</term>
+      <indexterm>
+       <primary><varname>vacuum_defer_cleanup_age</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Specifies the number of transactions by which <command>VACUUM</command> and
+        <acronym>HOT</acronym> updates will defer cleanup of dead row versions. The
+        default is 0 transactions, meaning that dead row versions will be
+        removed as soon as possible. You may wish to set this to a non-zero
+        value when planning or maintaining a <xref linkend="hot-standby"/>
+        configuration. The recommended value is <literal>0</literal> unless you have
+        clear reason to increase it. The purpose of the parameter is to
+        allow the user to specify an approximate time delay before cleanup
+        occurs. However, it should be noted that there is no direct link with
+        any specific time delay and so the results will be application and
+        installation specific, as well as variable over time, depending upon
+        the transaction rate (of writes only).
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="guc-bytea-output" xreflabel="bytea_output">
+      <term><varname>bytea_output</varname> (<type>enum</type>)</term>
+      <indexterm>
+       <primary><varname>bytea_output</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Sets the output format for values of type <type>bytea</type>.
+        Valid values are <literal>hex</literal> (the default)
+        and <literal>escape</literal> (the traditional PostgreSQL
+        format).  See <xref linkend="datatype-binary"/> for more
+        information.  The <type>bytea</type> type always
+        accepts both formats on input, regardless of this setting.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-xmlbinary" xreflabel="xmlbinary">
       <term><varname>xmlbinary</varname> (<type>enum</type>)</term>
       <listitem>
@@ -4523,7 +4877,7 @@
         types de données géométriques. La valeur du paramètre est ajoutée au
         nombre standard de chiffres (<literal>FLT_DIG</literal> ou
 	<literal>DBL_DIG</literal>). La valeur peut être initialisée à une
-	valeur maximale de 2 pour inclure les chiffres partiellement significatifs&nbsp;; c'est
+	valeur maximale de 3 pour inclure les chiffres partiellement significatifs&nbsp;; c'est
         tout spécialement utile pour sauvegarder les données à virgule flottante
         qui ont besoin d'être restaurées exactement. Cette variable peut aussi
         être négative pour supprimer les chiffres non souhaités.
@@ -4587,7 +4941,9 @@
         Les valeurs acceptables dépendent du système&nbsp;; voir la
 	<xref linkend="locale"/> pour plus d'informations. Si cette variable
 	est initialisée à une chaîne vide (valeur par défaut), alors la valeur
-	est héritée de l'environnement d'exécution du serveur.
+	est héritée de l'environnement d'exécution du serveur, and
+        an improper value might obscure the readability of the server
+        logs.
        </para>
       </listitem>
      </varlistentry>
@@ -4749,7 +5105,7 @@
        </para>
 
        <para>
-        Il n'y a pas de gain de performance à charger une bibliothèque au
+        Unlike <varname>local_preload_libraries</varname>, il n'y a pas de gain de performance à charger une bibliothèque au
 	démarrage d'une session ou à sa première utilisation. Le but de cette fonctionnalité
 	est d'autoriser le chargement de bibliothèques de débogage ou de mesure
 	de performance dans certaines sessions spécifiques sans commande
@@ -4800,7 +5156,7 @@
         Temps total, en millisecondes, d'attente d'un verrou avant de
 	tester une condition de verrou mort
 	(<foreignphrase>deadlock</foreignphrase>). Le test de verrou mort
-	est assez lent, le serveur ne l'effectue donc pas à chaque fois qu'il
+	est très coûteux, le serveur ne l'effectue donc pas à chaque fois qu'il
 	attend un verrou. Les développeurs supposent (de
         façon optimiste&nbsp;?) que les verrous morts sont rares dans les
         applications en production et attendent simplement un verrou
@@ -4833,7 +5189,7 @@
        <primary>paramètre de configuration <varname>max_locks_per_transaction</varname></primary>
       </indexterm>
        <para>
-        La table des verrous partagés est créée pour tracer les verrous sur
+        La table des verrous partagés trace les verrous sur
 	<varname>max_locks_per_transaction</varname> *
 	(<xref linkend="guc-max-connections"/> +
         <xref linkend="guc-max-prepared-transactions"/>) objets (c'est-à-dire
@@ -4858,6 +5214,12 @@
 	système d'exploitation. Voir la <xref linkend="sysvipc"/> pour plus
         d'informations sur la façon d'ajuster ces paramètres, si nécessaire.
        </para>
+
+       <para>
+        When running a standby server, you must set this parameter to the
+        same or higher value than on the master server. Otherwise, queries
+        will not be allowed in the standby server.
+       </para>
       </listitem>
      </varlistentry>
      </variablelist>
@@ -4870,39 +5232,6 @@
      <title>Versions précédentes de PostgreSQL</title>
      <variablelist>
 
-     <varlistentry id="guc-add-missing-from" xreflabel="add_missing_from">
-      <term><varname>add_missing_from</varname> (<type>boolean</type>)</term>
-      <listitem>
-      <indexterm><primary>FROM</primary><secondary>manquant</secondary></indexterm>
-      <indexterm>
-       <primary>paramètre de configuration <varname>add_missing_from</varname></primary>
-      </indexterm>
-       <para>
-        Lorsque ce paramètre est activé (<literal>on</literal>), les tables
-	référencées par une requête sont automatiquement ajoutées à la clause
-	<literal>FROM</literal>, si elles n'y sont
-	pas déjà présentes. Ce comportement, incompatible avec le
-	standard SQL, est très décrié car il masque
-	les erreurs (comme de faire référence à une table à la place de son
-	alias). Désactivé par défaut (<literal>off</literal>), ce paramètre peut
-	être activé pour des raisons de compatibilité avec les versions
-	antérieures à <productname>PostgreSQL</productname> 8.1, pour
-	lesquelles ce comportement était activé par défaut.
-       </para>
-
-       <para>
-        Même lorsque cette variable est activée, un message
-	d'avertissement est émis pour chaque entrée <literal>FROM</literal> implicite
-	référencée par une requête. Les utilisateurs sont encouragés à mettre à
-	jour leurs applications pour qu'elles ne s'appuient pas sur ce
-	comportement. Il suffit pour cela d'ajouter toutes les tables référencées
-	par une requête dans la clause <literal>FROM</literal> de cette requête
-	(ou dans sa clause <literal>USING</literal> dans le cas d'un
-	<command>DELETE</command>).
-       </para>
-      </listitem>
-     </varlistentry>
-
      <varlistentry id="guc-array-nulls" xreflabel="array_nulls">
       <term><varname>array_nulls</varname> (<type>boolean</type>)</term>
 
@@ -4962,7 +5291,7 @@
        <para>
         Dans une chaîne littérale conforme au standard,
 	<literal>\</literal> ne signifie que <literal>\</literal>. Ce paramètre
-	affecte la gestion des chaînes non conformes, incluant la syntaxe de chaînes
+	affecte seulement la gestion des chaînes non conformes, incluant la syntaxe de chaînes
 	d'échappement (<literal>E'...'</literal>).
        </para>
       </listitem>
@@ -4981,10 +5310,9 @@
            les tables nouvellement créées, lorsque ni <literal>WITH OIDS</literal>
            ni <literal>WITHOUT OIDS</literal> ne sont précisées. Ce
 	   paramètre détermine également si les OID sont inclus dans les tables
-	   créées par <command>SELECT INTO</command>. Dans
-	   <productname>PostgreSQL</productname> 8.1, 
-           <varname>default_with_oids</varname> est désactivée
-	   (<literal>off</literal>) par défaut, contrairement aux versions précédentes.
+	   créées par <command>SELECT INTO</command>.  The parameter is <literal>off</literal>
+        by default; in <productname>PostgreSQL</productname> 8.0 and earlier, it
+        was on by default.
          </para>
        
          <para>
@@ -5043,6 +5371,32 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-lo-compat-privileges" xreflabel="lo_compat_privileges">
+      <term><varname>lo_compat_privileges</varname> (<type>boolean</type>)</term>
+      <indexterm>
+       <primary>
+        <varname>lo_compat_privileges</varname> configuration parameter
+       </primary>
+      </indexterm>
+      <listitem>
+       <para>
+        In <productname>PostgreSQL</productname> releases prior to 9.0, large objects
+        did not have access privileges and were, in effect, readable and
+        writable by all users.  Setting this variable to <literal>on</literal>
+        disables the new privilege checks, for compatibility with prior
+        releases.  The default is <literal>off</literal>.
+       </para>
+       <para>
+        Setting this variable does not disable all security checks for
+        large objects &mdash; only those for which the default behavior has
+        changed in <productname>PostgreSQL</productname> 9.0.
+        For example, <literal>lo_import()</literal> and
+        <literal>lo_export()</literal> need superuser privileges independent
+        of this setting.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-sql-inheritance" xreflabel="sql_inheritance">
       <term><varname>sql_inheritance</varname> (<type>boolean</type>)</term>
       <listitem>
@@ -5075,11 +5429,12 @@
 	ramène <productname>PostgreSQL</productname> à son comportement historique
 	pour le traitement des antislashs comme caractères d'échappement.
 	La valeur par défaut sera passée à <literal>on</literal> dans une
-	prochaine version pour améliorer la compatibilité avec le standard. Les
+	prochaine version pour améliorer la compatibilité avec le standard SQL. Les
 	applications peuvent vérifier ce paramètre pour déterminer la façon dont
 	elles doivent traiter les chaînes littérales. La présence de ce
 	paramètre indique aussi que la syntaxe de chaîne d'échappement
 	(<literal>E'...'</literal>) est supportée. La syntaxe de chaîne d'échappement
+	 (<xref linkend="sql-syntax-strings-escape"/>)
 	doit être utilisée pour les applications traitant les
 	antislashs comme des caractères d'échappement.
        </para>
@@ -5143,8 +5498,8 @@
         NULL. Il peut donc être souhaitable, lorsque cette intarface est
 	utilisée pour accéder à une base de données, d'activer ce paramètre. Comme les
         expressions de la forme <literal><replaceable>expr</replaceable> = NULL</literal>
-        renvoient toujours la valeur NULL (en utilisant la bonne
-        interprétation), elles ne sont pas très utiles et n'apparaissent pas
+        renvoient toujours la valeur NULL (en utilisant l'interprétation du
+        standard SQL), elles ne sont pas très utiles et n'apparaissent pas
 	souvent dans les applications normales. De ce fait, ce paramètre a peu
         d'utilité en pratique. Mais la sémantique des expressions impliquant
 	des valeurs NULL est souvent source de confusion pour les nouveaux
@@ -5276,7 +5631,8 @@
 	   <literal>NAMEDATALEN</literal> - 1 lors de la construction du
 	   serveur. La valeur par défaut de <literal>NAMEDATALEN</literal> est 64&nbsp;;
 	   la valeur par défaut de <varname>max_identifier_length</varname>
-	   est, de ce fait, de 63 octets.
+	   est, de ce fait, de 63 octets, which
+        can be less than 63 characters when using multi-byte encodings.
          </para>
        </listitem>
      </varlistentry>
@@ -5436,16 +5792,15 @@
        chargé. Quand un module d'une classe spécifique est chargé, il ajoute les
        bonnes définitions de variables pour son nom de classe, convertit les
        valeurs des emplacements en fonction de leurs définitions et émet des messages
-       d'avertissement pour tout emplacement de la classe restant
-       (probablement des noms de variables mal saisis).
+       d'avertissement pour tout emplacement non reconnu de la classe restant.
      </para>
 
      <para>
        Exemple de ce que peut contenir <filename>postgresql.conf</filename>
        lorsque les variables personnalisées sont utilisées&nbsp;:
 
-<programlisting>custom_variable_classes = 'plr,plperl'
-plr.path = '/usr/lib/R'
+<programlisting>custom_variable_classes = 'plpgsql,plperl'
+plpgsql.variable_conflict = use_variable
 plperl.use_strict = true
 plruby.use_strict = true        # generates error, unknown class name</programlisting>
      </para>
@@ -5525,7 +5880,7 @@
         Si ce paramètre est différent de zéro, un délai de ce nombre de secondes
 	intervient, après l'étape d'authentification, lorsqu'un nouveau
 	processus serveur est lancé.
-	Ceci a pour but de donner l'opportunité d'attacher un débogueur au
+	Ceci a pour but de donner l'opportunité aux développeurs d'attacher un débogueur au
 	processus serveur. Ce paramètre ne peut pas être modifié après le
 	démarrage de la session.
        </para>
@@ -5541,7 +5896,7 @@
        <para>
         Si ce paramètre est différent de zéro, un délai de ce nombre de secondes
 	intervient juste après la création d'un nouveau processus, avant le processus
-        d'authentification. Ceci a pour but de donner une opportunité d'attacher
+        d'authentification. Ceci a pour but de donner une opportunité aux développeurs d'attacher
         un débogueur au processus serveur pour tracer les mauvais comportements
         pendant l'authentification.
 	Ce paramètre ne peut être configuré que dans le fichier
@@ -5764,6 +6119,32 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-trace-recovery-messages" xreflabel="trace_recovery_messages">
+      <term><varname>trace_recovery_messages</varname> (<type>enum</type>)</term>
+      <indexterm>
+       <primary><varname>trace_recovery_messages</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Controls which message levels are written to the server log
+        for system modules needed for recovery processing. This allows
+        the user to override the normal setting of log_min_messages,
+        but only for specific messages. This is intended for use in
+        debugging Hot Standby.
+        Valid values are <literal>DEBUG5</literal>, <literal>DEBUG4</literal>,
+        <literal>DEBUG3</literal>, <literal>DEBUG2</literal>, <literal>DEBUG1</literal>,
+        <literal>INFO</literal>, <literal>NOTICE</literal>, <literal>WARNING</literal>,
+        <literal>ERROR</literal>, <literal>LOG</literal>, <literal>FATAL</literal>, and
+        <literal>PANIC</literal>.  Each level includes all the levels that
+        follow it.  The later the level, the fewer messages are sent
+        to the log.  The default is <literal>WARNING</literal>.  Note that
+        <literal>LOG</literal> has a different rank here than in
+        <varname>client_min_messages</varname>.
+        Parameter should be set in the postgresql.conf only.
+       </para>
+      </listitem>
+     </varlistentry>
+
       <varlistentry id="guc-zero-damaged-pages" xreflabel="zero_damaged_pages">
        <term><varname>zero_damaged_pages</varname> (<type>boolean</type>)</term>
        <listitem>

Modified: traduc/trunk/postgresql/contrib.xml
===================================================================
--- traduc/trunk/postgresql/contrib.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/contrib.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -19,7 +19,8 @@
 
  <para>
   Lors de la construction à partir des sources de la distribution, ces modules
-  ne sont pas construits automatiquement. Il peuvent être construits et
+  ne sont pas construits automatiquement, unless you build the "world" target 
+  (see <xref linkend="build"/>). Il peuvent être construits et
   installés en exécutant&nbsp;:
 <screen>
 <userinput>gmake</userinput>
@@ -107,6 +108,7 @@
  &ltree;
  &oid2name;
  &pageinspect;
+ &passwordcheck;
  &pgbench;
  &pgbuffercache;
  &pgcrypto;
@@ -116,12 +118,14 @@
  &pgstatstatements;
  &pgstattuple;
  &pgtrgm;
+ &pgupgrade;
  &seg;
  &contrib-spi;
  &sslinfo;
  &tablefunc;
  &test-parser;
  &tsearch2;
+ &unaccent;
  &uuid-ossp;
  &vacuumlo;
  &xml2;

Modified: traduc/trunk/postgresql/datatype.xml
===================================================================
--- traduc/trunk/postgresql/datatype.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/datatype.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 
  <chapter id="datatype">
-  <title id="datatype-title">Types de données</title>
+  <title>Types de données</title>
 
   <indexterm zone="datatype">
    <primary>Types de données</primary>
@@ -21,7 +21,7 @@
    données disponibles nativement.
    Les utilisateurs peuvent ajouter de nouveaux types à 
    <productname>PostgreSQL</productname> en utilisant la commande <xref
-   linkend="sql-createtype" endterm="sql-createtype-title"/>.
+   linkend="sql-createtype"/>.
   </para>
 
   <para>
@@ -1242,14 +1242,81 @@
    </para>
 
    <para>
-    Lors de la saisie de valeurs de type <type>bytea</type>, les octets d'une
-    certaine valeur <emphasis>doivent</emphasis> être échappés (mais toutes
-    les valeurs <emphasis>peuvent</emphasis> l'être) lorsqu'ils appartiennent
-    à une chaîne littérale au sein d'une
-    commande <acronym>SQL</acronym>. En général, pour échapper un octet,
-    il faut le convertir en nombre octal sur 3 caractères, correspondant à sa
-    valeur décimale, et le faire précédé de deux
-    antislashs. Le <xref linkend="datatype-binary-sqlesc"/>
+    The <type>bytea</type> type supports two external formats for
+    input and output: <productname>PostgreSQL</productname>'s historical
+    <quote>escape</quote> format, and <quote>hex</quote> format.  Both
+    of these are always accepted on input.  The output format depends
+    on the configuration parameter <xref linkend="guc-bytea-output"/>;
+    the default is hex.  (Note that the hex format was introduced in
+    <productname>PostgreSQL</productname> 9.0; earlier versions and some
+    tools don't understand it.)
+   </para>
+
+   <para>
+    The <acronym>SQL</acronym> standard defines a different binary
+    string type, called <type>BLOB</type> or <type>BINARY LARGE
+    OBJECT</type>.  The input format is different from
+    <type>bytea</type>, but the provided functions and operators are
+    mostly the same.
+   </para>
+
+  <sect2>
+   <title><type>bytea</type> hex format</title>
+
+   <para>
+    The <quote>hex</quote> format encodes binary data as 2 hexadecimal digits
+    per byte, most significant nibble first.  The entire string is
+    preceded by the sequence <literal>\x</literal> (to distinguish it
+    from the escape format).  In some contexts, the initial backslash may
+    need to be escaped by doubling it, in the same cases in which backslashes
+    have to be doubled in escape format; details appear below.
+    The hexadecimal digits can
+    be either upper or lower case, and whitespace is permitted between
+    digit pairs (but not within a digit pair nor in the starting
+    <literal>\x</literal> sequence).
+    The hex format is compatible with a wide
+    range of external applications and protocols, and it tends to be
+    faster to convert than the escape format, so its use is preferred.
+   </para>
+
+   <para>
+    Example:
+<programlisting>
+SELECT E'\\xDEADBEEF';
+</programlisting>
+   </para>
+  </sect2>
+
+  <sect2>
+   <title><type>bytea</type> escape format</title>
+
+   <para>
+    The <quote>escape</quote> format is the traditional
+    <productname>PostgreSQL</productname> format for the <type>bytea</type>
+    type.  It
+    takes the approach of representing a binary string as a sequence
+    of ASCII characters, while converting those bytes that cannot be
+    represented as an ASCII character into special escape sequences.
+    If, from the point of view of the application, representing bytes
+    as characters makes sense, then this representation can be
+    convenient.  But in practice it is usually confusing becauses it
+    fuzzes up the distinction between binary strings and character
+    strings, and also the particular escape mechanism that was chosen is
+    somewhat unwieldy.  So this format should probably be avoided
+    for most new applications.
+   </para>
+
+   <para>
+    When entering <type>bytea</type> values in escape format,
+    octets of certain
+    values <emphasis>must</emphasis> be escaped, while all octet
+    values <emphasis>can</emphasis> be escaped.  In
+    general, to escape an octet, convert it into its three-digit
+    octal value and precede it
+    by a backslash (or two backslashes, if writing the value as a
+    literal using escape string syntax).
+    Backslash itself (octet value 92) can alternatively be represented by
+    double backslashes. Le <xref linkend="datatype-binary-sqlesc"/>
     affiche les caractères qui doivent être échappés, et donne les séquences
     d'échappement possibles.
    </para>
@@ -1398,12 +1465,7 @@
     traduit automatiquement, par exemple.
    </para>
 
-   <para>
-    Le standard <acronym>SQL</acronym> définit un type binaire différent,
-    appelé <type>BLOB</type> ou <type>BINARY LARGE OBJECT</type>.
-    Le format d'entrée est différent de celui du <type>bytea</type> mais les
-    fonctions et opérateurs fournis sont globalement les mêmes.
-   </para>
+  </sect2>
  </sect1>
 
 
@@ -1512,10 +1574,11 @@
 
    <note>
     <para>
-     Précédemment à <productname>PostgreSQL</productname> 7.3, n'écrire que
-     <type>timestamp</type> équivalait à <type>timestamp with
-     time zone</type>. Cela a été modifié pour des raisons de compatibilité avec
-     le standard SQL.
+     The SQL standard requires that writing just <type>timestamp</type>
+     be equivalent to <type>timestamp without time
+     zone</type>, and <productname>PostgreSQL</productname> honors that
+     behavior.  (Releases prior to 7.3 treated it as <type>timestamp
+     with time zone</type>.)
     </para>
    </note>
 
@@ -2871,7 +2934,7 @@
 
     <para>
      Les types enum sont créés en utilisant la commande <xref
-     linkend="sql-createtype" endterm="sql-createtype-title"/>.
+     linkend="sql-createtype"/>.
      Par exemple&nbsp;:
 
 <programlisting>
@@ -3983,6 +4046,8 @@
     à une déclaration de type de document (DTD),
     <indexterm><primary>DTD</primary></indexterm>
     même quand la valeur en entrée indique une DTD.
+    There is also currently no built-in support for validating against
+    other XML schema languages such as XML Schema.
    </para>
 
    <para>

Modified: traduc/trunk/postgresql/dblink.xml
===================================================================
--- traduc/trunk/postgresql/dblink.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/dblink.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -20,6 +20,7 @@
  <refentry id="CONTRIB-DBLINK-CONNECT">
   <refmeta>
    <refentrytitle>dblink_connect</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -56,9 +57,9 @@
     lors de la définition d'un wrapper de données distantes correspondant. Voir
     l'exemple ci-dessous, ainsi que&nbsp;:
     <simplelist type="inline">
-     <member><xref linkend="sql-createforeigndatawrapper" endterm="sql-createforeigndatawrapper-title"/></member>
-     <member><xref linkend="sql-createserver" endterm="sql-createserver-title"/></member>
-     <member><xref linkend="sql-createusermapping" endterm="sql-createusermapping-title"/></member>
+     <member><xref linkend="sql-createforeigndatawrapper"/></member>
+     <member><xref linkend="sql-createserver"/></member>
+     <member><xref linkend="sql-createusermapping"/></member>
     </simplelist>
    </para>
   </refsect1>
@@ -192,6 +193,7 @@
  <refentry id="CONTRIB-DBLINK-CONNECT-U">
   <refmeta>
    <refentrytitle>dblink_connect_u</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -249,6 +251,7 @@
  <refentry id="CONTRIB-DBLINK-DISCONNECT">
   <refmeta>
    <refentrytitle>dblink_disconnect</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -320,6 +323,7 @@
  <refentry id="CONTRIB-DBLINK">
   <refmeta>
    <refentrytitle>dblink</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -547,6 +551,7 @@
  <refentry id="CONTRIB-DBLINK-EXEC">
   <refmeta>
    <refentrytitle>dblink_exec</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -685,6 +690,7 @@
  <refentry id="CONTRIB-DBLINK-OPEN">
   <refmeta>
    <refentrytitle>dblink_open</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -807,6 +813,7 @@
  <refentry id="CONTRIB-DBLINK-FETCH">
   <refmeta>
    <refentrytitle>dblink_fetch</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -960,6 +967,7 @@
  <refentry id="CONTRIB-DBLINK-CLOSE">
   <refmeta>
    <refentrytitle>dblink_close</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1069,6 +1077,7 @@
  <refentry id="CONTRIB-DBLINK-GET-CONNECTIONS">
   <refmeta>
    <refentrytitle>dblink_get_connections</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1112,6 +1121,7 @@
  <refentry id="CONTRIB-DBLINK-ERROR-MESSAGE">
   <refmeta>
    <refentrytitle>dblink_error_message</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1171,6 +1181,7 @@
  <refentry id="CONTRIB-DBLINK-SEND-QUERY">
   <refmeta>
    <refentrytitle>dblink_send_query</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1250,6 +1261,7 @@
  <refentry id="CONTRIB-DBLINK-IS-BUSY">
   <refmeta>
    <refentrytitle>dblink_is_busy</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1307,9 +1319,88 @@
   </refsect1>
  </refentry>
 
+ <refentry id="CONTRIB-DBLINK-GET-NOTIFY">
+  <refmeta>
+   <refentrytitle>dblink_get_notify</refentrytitle>
+   <manvolnum>3</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+   <refname>dblink_get_notify</refname>
+   <refpurpose>retrieve async notifications on a connection</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+   <synopsis>
+    dblink_get_notify() returns setof (notify_name text, be_pid int, extra text)
+    dblink_get_notify(text connname) returns setof (notify_name text, be_pid int, extra text)
+   </synopsis>
+  </refsynopsisdiv>
+
+  <refsect1>
+   <title>Description</title>
+
+   <para>
+    <function>dblink_get_notify</function> retrieves notifications on either 
+    the unnamed connection, or on a named connection if specified.
+    To receive notifications via dblink, <function>LISTEN</function> must 
+    first be issued, using <function>dblink_exec</function>.
+    For details see <xref linkend="sql-listen"/> and <xref linkend="sql-notify"/>.
+   </para>
+
+  </refsect1>
+
+  <refsect1>
+   <title>Arguments</title>
+
+   <variablelist>
+    <varlistentry>
+     <term><parameter>conname</parameter></term>
+     <listitem>
+      <para>
+       The name of a named connection to get notifications on.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect1>
+
+  <refsect1>
+   <title>Return Value</title>
+    <para>Returns setof (notify_name text, be_pid int, extra text), or an empty set if none.</para>
+  </refsect1>
+
+  <refsect1>
+   <title>Example</title>
+
+   <programlisting>
+test=# SELECT dblink_exec('LISTEN virtual');
+ dblink_exec 
+-------------
+ LISTEN
+(1 row)
+
+test=# SELECT * FROM dblink_get_notify();
+ notify_name | be_pid | extra
+-------------+--------+-------
+(0 rows)
+
+test=# NOTIFY virtual;
+NOTIFY
+
+SELECT * FROM dblink_get_notify();
+ notify_name | be_pid | extra
+-------------+--------+-------
+ virtual     |   1229 |
+(1 row)
+   </programlisting>
+  </refsect1>
+ </refentry>
+
  <refentry id="CONTRIB-DBLINK-GET-RESULT">
   <refmeta>
    <refentrytitle>dblink_get_result</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1457,6 +1548,7 @@
  <refentry id="CONTRIB-DBLINK-CANCEL-QUERY">
   <refmeta>
    <refentrytitle>dblink_cancel_query</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1521,6 +1613,7 @@
  <refentry id="CONTRIB-DBLINK-GET-PKEY">
   <refmeta>
    <refentrytitle>dblink_get_pkey</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1600,6 +1693,7 @@
  <refentry id="CONTRIB-DBLINK-BUILD-SQL-INSERT">
   <refmeta>
    <refentrytitle>dblink_build_sql_insert</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1718,6 +1812,7 @@
  <refentry id="CONTRIB-DBLINK-BUILD-SQL-DELETE">
   <refmeta>
    <refentrytitle>dblink_build_sql_delete</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1818,6 +1913,7 @@
  <refentry id="CONTRIB-DBLINK-BUILD-SQL-UPDATE">
   <refmeta>
    <refentrytitle>dblink_build_sql_update</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>

Modified: traduc/trunk/postgresql/ddl.xml
===================================================================
--- traduc/trunk/postgresql/ddl.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ddl.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -97,7 +97,7 @@
 <!-- identifier : identifiant ou indicateur. Voire identificateur -->
   <para>
    Pour créer une table, on utilise la commande bien nommée
-   <xref linkend="sql-createtable" endterm="sql-createtable-title"/>. Dans cette
+   <xref linkend="sql-createtable"/>. Dans cette
    commande, il est nécessaire d'indiquer, au minimum, le nom de la
    table, les noms des colonnes et le type de données de chacune d'elles.
    Par exemple&nbsp;:
@@ -158,7 +158,7 @@
 
   <para>
    Lorsqu'une table n'est plus utile, elle peut être supprimée à l'aide de la
-   commande <xref linkend="sql-droptable" endterm="sql-droptable-title"/>. Par exemple&nbsp;:
+   commande <xref linkend="sql-droptable"/>. Par exemple&nbsp;:
 <programlisting>DROP TABLE ma_premiere_table;
 DROP TABLE produits;</programlisting>
    Tenter de supprimer une table qui n'existe pas lève une erreur.
@@ -833,7 +833,38 @@
 	une contrainte d'unicité, des possibilités supplémentaires sont offertes
 	concernant la correspondance des valeurs NULL. Celles-ci sont expliquées
 	dans la documentation de référence de
-	<xref linkend="sql-createtable" endterm="sql-createtable-title"/>.
+	<xref linkend="sql-createtable"/>.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Exclusion constraints</title>
+
+   <indexterm>
+    <primary>exclusion constraint</primary>
+   </indexterm>
+
+   <indexterm>
+    <primary>constraint</primary>
+    <secondary>exclusion</secondary>
+   </indexterm>
+
+   <para>
+    Exclusion constraints ensure that if any two rows are compared on
+    the specified columns or expressions using the specified operators,
+    at least one of these operator comparisons will return false or null.
+    The syntax is:
+<programlisting>
+CREATE TABLE circles (
+    c circle,
+    EXCLUDE USING gist (c WITH &amp;&amp;)
+);
+</programlisting>
+   </para>
+
+   <para>
+    See also <link linkend="SQL-CREATETABLE-EXCLUDE"><command>CREATE
+    TABLE ... CONSTRAINT ... EXCLUDE</command></link> for details.
        </para>
       </sect2>
      </sect1>
@@ -1090,7 +1121,7 @@
    </itemizedlist>
 
    Toutes ces actions sont réalisées à l'aide de la commande 
-   <xref linkend="sql-altertable" endterm="sql-altertable-title"/>, 
+   <xref linkend="sql-altertable"/>, 
    dont la page de référence est bien plus détaillée.
   </para>
 
@@ -1335,7 +1366,7 @@
    <literal>EXECUTE</literal> et <literal>USAGE</literal>.
    Les droits applicables à un objet particulier varient
    selon le type d'objet (table, fonction...). La page de référence
-   <xref linkend="sql-grant" endterm="sql-grant-title"/> fournit une
+   <xref linkend="sql-grant"/> fournit une
    information complète sur les différents types de droits gérés par
    <productname>PostgreSQL</productname>.  La section et
    les chapitres suivants présentent l'utilisation de ces droits.
@@ -1349,7 +1380,7 @@
    <para>
     Pour modifier le propriétaire d'une table, d'un index, d'une séquence ou
     d'une vue, on utilise la commande
-    <xref linkend="sql-altertable" endterm="sql-altertable-title"/>.
+    <xref linkend="sql-altertable"/>.
     Il existe des commandes <literal>ALTER</literal> correspondantes pour les autres types 
     d'objets.
    </para>
@@ -1397,8 +1428,8 @@
    révoquée, alors tous ceux qui ont reçu ce privilège par cet utilisateur
    (directement ou indirectement via la chaîne des dons) perdent ce privilège.
    Pour les détails, voir les pages de références
-   <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-   <xref linkend="sql-revoke" endterm="sql-revoke-title"/>.
+   <xref linkend="sql-grant"/> et
+   <xref linkend="sql-revoke"/>.
   </para>
  </sect1>
 
@@ -1485,7 +1516,7 @@
 
    <para>
     Pour créer un schéma, on utilise la commande
-    <xref linkend="sql-createschema" endterm="sql-createschema-title"/>.
+    <xref linkend="sql-createschema"/>.
     Le nom du schéma est libre. Par exemple&nbsp;:
 <programlisting>CREATE SCHEMA mon_schema;</programlisting>
    </para>
@@ -2021,11 +2052,11 @@
   <para>
    L'héritage de table est établi à la création de la table
    enfant, à l'aide de la clause <literal>INHERITS</literal> de l'instruction
-   <xref linkend="sql-createtable" endterm="sql-createtable-title"/>.
+   <xref linkend="sql-createtable"/>.
    Alternativement, il est possible d'ajouter à une table, définie de façon
    compatible, une nouvelle relation de parenté à l'aide de la clause
    <literal>INHERIT</literal> de
-   <xref linkend="sql-altertable" endterm="sql-altertable-title"/>. Pour cela,
+   <xref linkend="sql-altertable"/>. Pour cela,
    la nouvelle table enfant doit déjà inclure des colonnes de mêmes nom et
    type que les colonnes de la table parent. Elle doit aussi contenir
    des contraintes de vérification de mêmes nom et expression que celles
@@ -2062,7 +2093,7 @@
   </para>
 
   <para>
-   <xref linkend="sql-altertable" endterm="sql-altertable-title"/>
+   <xref linkend="sql-altertable"/>
    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 qui dépendent d'autres tables mères n'est possible
@@ -2071,22 +2102,20 @@
    l'instruction <command>CREATE TABLE</command>.
   </para>
 
-<!-- caveats != hints 
-    Je parlerai de chausse-trappe -->
+  <para>
+   Note how table access permissions are handled.  Querying a parent
+   table can automatically access data in child tables without further
+   access privilege checking.  This preserves the appearance that the
+   data is (also) in the parent table.  Accessing the child tables
+   directly is, however, not automatically allowed and would require
+   further privileges to be granted.
+  </para>
+
  <sect2 id="ddl-inherit-caveats">
   <title>Restrictions</title>
 
   <para>
-   Les droits d'accès des tables ne sont pas automatiquement hérités. De ce
-   fait, un utilisateur qui tente d'accéder à une table parent doit, soit
-   avoir les permissions pour réaliser l'opération sur toutes les tables
-   enfants, soit utiliser le mot clé <literal>ONLY</literal>. Lors de l'ajout
-   d'une nouvelle table enfant à un héritage existant, il faut s'assurer
-   que tous les droits s'y appliquant soient accordés.
-  </para>
-
-  <para>
-   Plus généralement, notez que toutes les commandes SQL fonctionnent avec les
+   Notez que toutes les commandes SQL fonctionnent avec les
    héritages. Les commandes utilisées pour récupérer des données, pour modifier
    des données ou pour modifier le schéma (autrement dit
    <literal>SELECT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>,

Modified: traduc/trunk/postgresql/dfunc.xml
===================================================================
--- traduc/trunk/postgresql/dfunc.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/dfunc.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 <!-- SAS : 20070511, PG824 -->
 
 <sect2 id="dfunc">
- <title id="dfunc-title">Compiler et lier des fonctions chargées dynamiquement</title>
+ <title>Compiler et lier des fonctions chargées dynamiquement</title>
 
  <para>
   Avant de pouvoir être utilisées dans <productname>PostgreSQL</productname>, 

Modified: traduc/trunk/postgresql/dict-xsyn.xml
===================================================================
--- traduc/trunk/postgresql/dict-xsyn.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/dict-xsyn.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -29,13 +29,30 @@
   <itemizedlist>
    <listitem>
     <para>
-     <literal>keeporig</literal> indique si le mot original est inclus dans la
-     recherche (si <literal>true</literal>, valeur par défaut), ou seulement
-     ses synonymes (si <literal>false</literal>)&nbsp;;
+     <literal>matchorig</literal> controls whether the original word is accepted by
+     the dictionary. Default is <literal>true</literal>.
     </para>
    </listitem>
    <listitem>
     <para>
+     <literal>matchsynonyms</literal> controls whether the synonyms are
+     accepted by the dictionary. Default is <literal>false</literal>.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     <literal>keeporig</literal> controls whether the original word is included in
+     the dictionary's output. Default is <literal>true</literal>.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     <literal>keepsynonyms</literal> controls whether the synonyms are included in
+     the dictionary's output. Default is <literal>true</literal>.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
      <literal>rules</literal> est le nom du fichier contenant la liste
      des synonymes. Ce fichier doit être stocké dans
      <filename>$SHAREDIR/tsearch_data/</filename>
@@ -98,10 +115,34 @@
 mydb=# SELECT ts_lexize('xsyn', 'word');
       ts_lexize
 -----------------------
+ {syn1,syn2,syn3}
+
+mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true);
+ALTER TEXT SEARCH DICTIONARY
+
+mydb=# SELECT ts_lexize('xsyn', 'word');
+      ts_lexize
+-----------------------
  {word,syn1,syn2,syn3}
+
+mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false, MATCHSYNONYMS=true);
+ALTER TEXT SEARCH DICTIONARY
+
+mydb=# SELECT ts_lexize('xsyn', 'syn1');
+      ts_lexize
+-----------------------
+ {syn1,syn2,syn3}
+
+mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true, MATCHORIG=false, KEEPSYNONYMS=false);
+ALTER TEXT SEARCH DICTIONARY
+
+mydb=# SELECT ts_lexize('xsyn', 'syn1');
+      ts_lexize
+-----------------------
+ {word}
 </programlisting>
 
-   mais une utilisation réelle implique son ajout dans une configuration de
+   Une utilisation réelle implique son ajout dans une configuration de
    recherche plein texte comme décrit dans <xref linkend="textsearch"/>. Cela
    pourrait ressembler à ceci&nbsp;:
 

Modified: traduc/trunk/postgresql/diskusage.xml
===================================================================
--- traduc/trunk/postgresql/diskusage.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/diskusage.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -24,7 +24,8 @@
   <para>
    Chaque table possède un fichier principal dans lequel la majorité
    des données sont stockées. Si la table contient des colonnes pouvant recevoir 
-   des valeurs étendues, il existe aussi un fichier <acronym>TOAST</acronym> associé à la
+   des valeurs étendues, il pourrait aussi y avoir un fichier
+   <acronym>TOAST</acronym> associé à la
    table. Ce fichier permet de stocker les valeurs trop larges pour tenir
    dans la table principale (voir la <xref linkend="storage-toast"/>).
    Si la table <acronym>TOAST</acronym> existe, un index lui est associé.
@@ -37,52 +38,46 @@
 
   <para>
    L'espace disque peut être surveillé de trois façons différentes&nbsp;:
-   depuis <application>psql</application> en utilisant les informations retournées par
-   <command>VACUUM</command>, depuis <application>psql</application> avec les outils de 
-   <filename>contrib/dbsize</filename> et en ligne de commande avec les outils de
-   <filename>contrib/oid2name</filename>.
+   using the SQL functions listed in <xref linkend="functions-admin-dbsize"/>,
+   using the tools in <filename>contrib/oid2name</filename>, or
+   using manual inspection of the system catalogs.
+   The SQL functions are the easiest to use and are generally recommended.
+   <filename>contrib/oid2name</filename> is described in <xref linkend="oid2name"/>.
+   The remainder of this section shows how to do it by inspection of the
+   system catalogs.
    </para>
-   <para>
-   Les fonctions SQL sont les plus faciles à utiliser. Elles rapportent des
-   informations concernant les tables, les tables avec index et stockage de
-   valeurs étendues (TOAST), les bases de données et les
-   <foreignphrase>tablespaces</foreignphrase>.
-  </para>
-
+   
   <para>
    L'utilisation de <application>psql</application> sur une base de données 
    récemment &laquo;&nbsp;nettoyée&nbsp;&raquo; (<command>VACUUM</command>) ou
    &laquo;&nbsp;analysée&nbsp;&raquo; (<command>ANALYZE</command>) permet de lancer des
    requêtes pour connaître l'occupation disque d'une table&nbsp;:
-<programlisting>SELECT relfilenode, relpages FROM pg_class WHERE relname = 'customer';
+<programlisting>SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'customer';
 
- relfilenode | relpages 
--------------+----------
-       16806 |       60
-(1 ligne)</programlisting>
-   Chaque page utilise typiquement 8&nbsp;Ko d'espace disque.
+ pg_relation_filepath | relpages 
+----------------------+----------
+ base/16384/16806     |       60
+(1 row)
+</programlisting>
+   Each page is typically 8 kilobytes. (Remember, <structfield>relpages</structfield>
+   is only updated by <command>VACUUM</command>, <command>ANALYZE</command>, and
+   a few DDL commands such as <command>CREATE INDEX</command>.)  The file pathname
+   is of interest if you want to examine the table's disk file directly.
   </para>
   
   <para>
-   <structfield>relpages</structfield> n'est mis à jour que par
-   les commandes <command>VACUUM</command>, <command>ANALYZE</command> et
-   par quelques commandes de définition de données (DDL, Data Definition
-   Language), telles que <command>CREATE INDEX</command>. La valeur de
-   <structfield>relfilenode</structfield> est intéressante pour l'examen direct du fichier
-   de table.
-  </para>
-
-  <para>
    Pour connaître l'espace disque utilisé par les tables 
    <acronym>TOAST</acronym>, on utilise une requête similaire à la suivante&nbsp;:
 <programlisting>SELECT relname, relpages
-    FROM pg_class,
-         (SELECT reltoastrelid FROM pg_class
-          WHERE relname = 'customer') ss
-    WHERE oid = ss.reltoastrelid
-       OR oid = (SELECT reltoastidxid FROM pg_class
-                 WHERE oid = ss.reltoastrelid)
-    ORDER BY relname;
+FROM pg_class,
+     (SELECT reltoastrelid
+      FROM pg_class
+      WHERE relname = 'customer') AS ss
+WHERE oid = ss.reltoastrelid OR
+      oid = (SELECT reltoastidxid
+             FROM pg_class
+             WHERE oid = ss.reltoastrelid)
+ORDER BY relname;
 
        relname        | relpages 
 ----------------------+----------
@@ -93,11 +88,11 @@
   <para>
    On peut aussi facilement afficher la taille des index&nbsp;:
 <programlisting>SELECT c2.relname, c2.relpages
-    FROM pg_class c, pg_class c2, pg_index i
-    WHERE c.relname = 'customer'
-        AND c.oid = i.indrelid
-        AND c2.oid = i.indexrelid
-        ORDER BY c2.relname;
+FROM pg_class c, pg_class c2, pg_index i
+WHERE c.relname = 'customer' AND
+      c.oid = i.indrelid AND
+      c2.oid = i.indexrelid
+ORDER BY c2.relname;
 
        relname        | relpages 
 ----------------------+----------
@@ -107,21 +102,15 @@
   <para>
    Les tables et les index les plus volumineux sont repérés à l'aide de la requête
    suivante&nbsp;:
-<programlisting>SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;
+<programlisting>SELECT relname, relpages
+FROM pg_class
+ORDER BY relpages DESC;
 
        relname        | relpages 
 ----------------------+----------
  bigtable             |     3290
  customer             |     3144</programlisting>
   </para>
-
-  <para>
-   L'utilitaire <filename>contrib/oid2name</filename> permet également de connaître
-   l'utilisation de l'espace disque. Des exemples d'utilisation sont repris dans 
-   le fichier <filename>README.oid2name</filename> situé dans le répertoire
-   de l'utilitaire. On y trouve notamment un script permettant de connaître l'utilisation
-   de l'espace disque par base de données.
-  </para>
  </sect1>
 
  <sect1 id="disk-full">

Modified: traduc/trunk/postgresql/dml.xml
===================================================================
--- traduc/trunk/postgresql/dml.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/dml.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -16,10 +16,7 @@
   Le chapitre précédent présente la création des tables et
   des autres structures de stockage des données. Il est temps de remplir ces
   tables avec des données. Le présent chapitre couvre l'insertion, la mise à jour et
-  la suppression des données des tables.
-  Il introduit également les outils de modifications automatiques des
-  données en fonction d'évènements précis&nbsp;:
-  les déclencheurs et les règles de réécriture. Après cela, le chapitre présente
+  la suppression des données des tables. Après cela, le chapitre présente
   l'élimination des données perdues.
  </para>
 
@@ -46,7 +43,7 @@
 
   <para>
    Pour créer une nouvelle ligne, la commande <xref
-   linkend="sql-insert" endterm="sql-insert-title"/> est utilisée.
+   linkend="sql-insert"/> est utilisée.
    La commande a besoin du nom de la table et des valeurs de
    colonnes.
   </para>
@@ -111,9 +108,9 @@
   <tip>
    <para>
     Lors de l'insertion d'une grande quantité de données en même temps,
-    il est préférable d'utiliser la commande <xref linkend="sql-copy"
-    endterm="sql-copy-title"/>. Elle n'est pas aussi flexible que la commande
-    <xref linkend="sql-insert" endterm="sql-insert-title"/> mais elle est plus
+    il est préférable d'utiliser la commande <xref linkend="sql-copy"/>. Elle
+    n'est pas aussi flexible que la commande <xref linkend="sql-insert"/> mais
+    elle est plus
     efficace. Se référer à <xref linkend="populate"/> pour plus d'informations
     sur l'amélioration des performances lors de gros chargements de données.
    </para>
@@ -151,7 +148,7 @@
 
   <para>
    Pour mettre à jour les lignes existantes, utilisez la commande <xref
-   linkend="sql-update" endterm="sql-update-title"/>. Trois informations sont
+   linkend="sql-update"/>. Trois informations sont
    nécessaires&nbsp;:
    <orderedlist spacing="compact">
     <listitem>
@@ -261,8 +258,8 @@
   </para>
 
   <para>
-   Pour supprimer des lignes, on utilise la commande <xref linkend="sql-delete"
-   endterm="sql-delete-title"/>&nbsp;; la syntaxe est très similaire à la
+   Pour supprimer des lignes, on utilise la commande <xref
+   linkend="sql-delete"/>&nbsp;; la syntaxe est très similaire à la
    commande <command>UPDATE</command>.
   </para>
   

Modified: traduc/trunk/postgresql/docguide.xml
===================================================================
--- traduc/trunk/postgresql/docguide.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/docguide.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -90,14 +90,14 @@
 
    <variablelist>
     <varlistentry>
-     <term><ulink url="http://www.oasis-open.org/docbook/sgml/">DTD DocBook</ulink></term>
+     <term><ulink url="http://www.oasis-open.org/docbook/">DTD DocBook</ulink></term>
      <listitem>
       <para>
       Il s'agit de la définition de DocBook elle-même. C'est actuellement la
-      version 4.2 qui est utilisée&nbsp;; il n'est pas posiible d'en utiliser
-      une autre (plus récente ou plus ancienne). Il existe également une version
-      <acronym>XML</acronym> de DocBook &mdash; elle ne doit pas être
-      utilisée.
+      version 4.2 qui est utilisée.You
+       need the <acronym>SGML</acronym> variant of the DocBook DTD,
+       but to build man pages you also need the <acronym>XML</acronym>
+       variant of the same version.
       </para>
      </listitem>
     </varlistentry>
@@ -115,51 +115,53 @@
     </varlistentry>
 
     <varlistentry>
-     <term><ulink url="http://openjade.sourceforge.net">OpenJade</ulink></term>
+     <term><ulink url="http://wiki.docbook.org/topic/DocBookDssslStylesheets">DocBook DSSSL Stylesheets</ulink></term>
      <listitem>
       <para>
-      C'est le paquetage de base pour le traitement de
-      <acronym>SGML</acronym>. Il contient un analyseur
-      <acronym>SGML</acronym>, un processeur
-      <acronym>DSSSL</acronym> (programme qui permet la
-      conversion de documents <acronym>SGML</acronym> en d'autres
-      formats à l'aide de feuilles de styles
-      <acronym>DSSSL</acronym>), ainsi qu'un certain nombre d'autres
-      outils. <productname>Jade</productname> est actuellement
-      maintenu par le groupe OpenJade et non plus par James Clark.
+       These contain the processing instructions for converting the
+       DocBook sources to other formats, such as
+       <acronym>HTML</acronym>.
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term><ulink
-     url="http://wiki.docbook.org/topic/DocBookDssslStylesheets">Feuilles
-     de styles DocBook DSSSL</ulink></term>
+     <term><ulink url="http://wiki.docbook.org/topic/DocBookXslStylesheets">DocBook XSL Stylesheets</ulink></term>
      <listitem>
       <para>
-      Celles-ci contiennent les instructions de
-      conversion des sources DocBook en d'autres formats, tel le
-      <acronym>HTML</acronym>.
+       This is another stylesheet for converting DocBook to other
+       formats.  We currently use this to produce man pages and
+       optionally HTMLHelp.  You can also use this toolchain to
+       produce HTML or PDF output, but official PostgreSQL releases
+       use the DSSSL stylesheets for that.
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term><ulink url="http://search.cpan.org/dist/SGMLSpm/">SGMLSpm</ulink></term>
+     <term><ulink url="http://openjade.sourceforge.net">OpenJade</ulink></term>
      <listitem>
       <para>
-      Ce paquetage est utilisé pour créer les pages de manuel.
+      C'est le paquetage de base pour le traitement de
+      <acronym>SGML</acronym>. Il contient un analyseur
+      <acronym>SGML</acronym>, un processeur
+      <acronym>DSSSL</acronym> (programme qui permet la
+      conversion de documents <acronym>SGML</acronym> en d'autres
+      formats à l'aide de feuilles de styles
+      <acronym>DSSSL</acronym>), ainsi qu'un certain nombre d'autres
+      outils. <productname>Jade</productname> est actuellement
+      maintenu par le groupe OpenJade et non plus par James Clark.
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term><ulink url="http://docbook2x.sourceforge.net">DocBook2X</ulink></term>
+     <term><ulink url="http://xmlsoft.org/XSLT/">Libxslt</ulink> for <command>xsltproc</command></term>
      <listitem>
       <para>
-       Ce paquet optionnel est aussi utilisé pour créer les pages man. Il
-       s'agit du paquet <literal>docbook2man-sgmlspl</literal>, et non pas du
-       paquet principal <literal>docbook2x</literal>.
+       This is the processing tool to use with the XSLT stylesheets
+       (like <command>jade</command> is the processing tool for DSSSL
+       stylesheets).
       </para>
      </listitem>
     </varlistentry>
@@ -283,13 +285,8 @@
    Un ensemble complet de paquetages d'outils de documentation est
    disponible pour <productname>Debian GNU/Linux</productname>.
    Pour l'installer, il suffit de taper&nbsp;:
-<programlisting>apt-get install openjade1.3
-apt-get install docbook
-apt-get install docbook-dsssl
-apt-get install sgmlspl   # pour les pages man
+<programlisting>apt-get install docbook docbook-dsssl docbook-xsl openjade xsltproc
 </programlisting>
-    (Le package <literal>openjade</literal> installe
-    OpenJade 1.4 qui semble ne pas fonctionner.)
    </para>
   </sect2>
 
@@ -529,10 +526,13 @@
 <screen><computeroutput>checking for onsgmls... onsgmls
 checking for openjade... openjade
 checking for DocBook V4.2... yes
-checking for DocBook stylesheets... /usr/lib/sgml/stylesheets/nwalsh-modular
-checking for sgmlspl... sgmlspl</computeroutput></screen>
+checking for DocBook stylesheets... /usr/share/sgml/docbook/stylesheet/dsssl/modular
+checking for collateindex.pl... /usr/bin/collateindex.pl
+checking for xsltproc... xsltproc
+checking for osx... osx</computeroutput></screen>
    Si ni <filename>onsgmls</filename> ni <filename>nsgmls</filename> n'ont été
-   trouvés, les quatre dernières lignes ne sont pas affichées.
+   trouvés, some of the following tests
+   will be skipped.
    <filename>onsgmls</filename> fait partie du paquetage Jade. Les variables
    d'environnement <envar>JADE</envar> et
    <envar>NSGMLS</envar> peuvent être renseignées pour indiquer les
@@ -569,7 +569,8 @@
     Pour engendrer la version <acronym>HTML</acronym> de la
     documentation, effectuer&nbsp;:
 <screen><prompt>doc/src/sgml$ </prompt><userinput>gmake html</userinput></screen>
-    Il s'agit également de la cible par défaut.
+    Il s'agit également de la cible par défaut. The output appears in the
+    subdirectory <filename>html</filename>.
    </para>
 
    <para>
@@ -580,28 +581,13 @@
 <prompt>doc/src/sgml$ </prompt><userinput>gmake draft</userinput>
 </screen>
    </para>
-
-   <para>
-    Pour simplifier la manipulation de la distribution
-    finale de la documentation, l'ensemble des fichiers, dont la
-    documentation HTML, peut être stocké dans une archive tar
-    décompressée à l'installation. Pour créer le
-    paquetage <acronym>HTML</acronym>, on utilise les commandes&nbsp;:
-<programlisting>cd doc/src
-gmake postgres.tar.gz
-</programlisting>
-    Dans la distribution de PostgreSQL, cette archive, qui se trouve dans le
-    répertoire <filename>doc</filename>, est installée par
-    <command>gmake install</command>.
-  </para>
  </sect2>
 
  <sect2>
   <title>Pages man (de manuel)</title>
 
   <para>
-   <application>docbook2man-sgmlspl</application> du projet
-   <productname>DocBook2X</productname> est utilisé pour convertir les pages
+   We use the DocBook XSL stylesheets to 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
@@ -609,35 +595,9 @@
    utiliser les commandes&nbsp;:
 <programlisting>
 cd doc/src/sgml
-gmake man D2MDIR=<replaceable>directory</replaceable>
+gmake man
 </programlisting>
-   Utilisez la variable <varname>D2MDIR</varname> pour indiquer le nom du
-   répertoire où se trouve le fichier <filename>docbook2man-spec.pl</filename>
-   du package <application>docbook2man-sgmlspl</application>. Il n'existe
-   pas de valeur par défaut pour cela. Comme ce paquet n'est pas disponible
-   ou est obsolète pour certains systèmes de paquets, vous pouvez aussi
-   télécharger l'archive tar des sources et la déballer. Aucune compilation
-   n'est nécessaire. Du coup, le chemin ressemble à ceci&nbsp;:
-   <literal>D2MDIR=/home/vous/quelquepart/docbook2man-sgmlspl-1.0/perl</literal>.
-   Vous pourriez obtenir des avertissements du style&nbsp;:
-<screen>
-Warning: unrecognized SDATA '[scaron]': please add definition to docbook2man-spec.pl
-Warning: unrecognized SDATA '[ouml  ]': please add definition to docbook2man-spec.pl
-</screen>
-   Vous pouvez les ignorer si (mais seulement si) vous utilisez la dernière
-   version de <filename>docbook2man-spec.pl</filename> et que vous ne voyez pas
-   d'autres avertissements SDATA entre ces deux-là.
   </para>
-
-  <para>
-   Pour créer le paquet des pages man d'une version, utilisez les commandes
-   suivantes&nbsp;:
-<programlisting>cd doc/src
-gmake man.tar.gz D2MDIR=<replaceable>directory</replaceable>
-</programlisting>
-   qui produisent un fichier tar placé dans le
-   répertoire <filename>doc/src</filename>.
-  </para>
  </sect2>
 
   <sect2>

Modified: traduc/trunk/postgresql/ecpg.xml
===================================================================
--- traduc/trunk/postgresql/ecpg.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ecpg.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -2309,7 +2309,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><literal>PGTYPES_NUM_OVERFLOW</literal></term>
+      <term><literal>PGTYPES_NUM_UNDERFLOW</literal></term>
       <listitem>
        <para>
 	Un dépassement (<foreignphrase>overflow</foreignphrase>) est survenu.
@@ -2443,6 +2443,478 @@
   </sect2>
  </sect1>
 
+ <sect1 id="ecpg-descriptors">
+  <title>Using Descriptor Areas</title>
+
+  <para>
+   An SQL descriptor area is a more sophisticated method for processing
+   the result of a <command>SELECT</command>, <command>FETCH</command> or
+   a <command>DESCRIBE</command> statement. An SQL descriptor area groups
+   the data of one row of data together with metadata items into one
+   data structure.  The metadata is particularly useful when executing
+   dynamic SQL statements, where the nature of the result columns might
+   not be known ahead of time. PostgreSQL provides two ways to use
+   Descriptor Areas: the named SQL Descriptor Areas and the C-structure
+   SQLDAs.
+  </para>
+
+  <sect2 id="ecpg-named-descriptors">
+   <title>Named SQL Descriptor Areas</title>
+
+   <para>
+    A named SQL descriptor area consists of a header, which contains
+    information concerning the entire descriptor, and one or more item
+    descriptor areas, which basically each describe one column in the
+    result row.
+   </para>
+
+   <para>
+    Before you can use an SQL descriptor area, you need to allocate one:
+<programlisting>
+EXEC SQL ALLOCATE DESCRIPTOR <replaceable>identifier</replaceable>;
+</programlisting>
+    The identifier serves as the <quote>variable name</quote> of the
+    descriptor area.  <remark>The scope of the allocated descriptor is WHAT?.</remark>
+    When you don't need the descriptor anymore, you should deallocate
+    it:
+<programlisting>
+EXEC SQL DEALLOCATE DESCRIPTOR <replaceable>identifier</replaceable>;
+</programlisting>
+   </para>
+
+   <para>
+    To use a descriptor area, specify it as the storage target in an
+    <literal>INTO</literal> clause, instead of listing host variables:
+<programlisting>
+EXEC SQL FETCH NEXT FROM mycursor INTO SQL DESCRIPTOR mydesc;
+</programlisting>
+    If the resultset is empty, the Descriptor Area will still contain
+    the metadata from the query, i.e. the field names.
+   </para>
+
+   <para>
+    For not yet executed prepared queries, the <command>DESCRIBE</command>
+    statement can be used to get the metadata of the resultset:
+<programlisting> 
+EXEC SQL BEGIN DECLARE SECTION;
+char *sql_stmt = "SELECT * FROM table1";
+EXEC SQL END DECLARE SECTION;
+
+EXEC SQL PREPARE stmt1 FROM :sql_stmt;
+EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc;
+</programlisting>
+   </para>
+
+   <para>
+    Before PostgreSQL 9.0, the <literal>SQL</literal> keyword was optional,
+    so using <literal>DESCRIPTOR</literal> and <literal>SQL DESCRIPTOR</literal>
+    produced named SQL Descriptor Areas. Now it is mandatory, omitting
+    the <literal>SQL</literal> keyword produces SQLDA Descriptor Areas,
+    see <xref linkend="ecpg-sqlda-descriptors"/>. 
+   </para>
+
+   <para>
+    In <command>DESCRIBE</command> and <command>FETCH</command> statements,
+    the <literal>INTO</literal> and <literal>USING</literal> keywords can be
+    used to similarly: they produce the resultset and the metadata in a
+    Descriptor Area.
+   </para>
+
+   <para>
+    Now how do you get the data out of the descriptor area?  You can
+    think of the descriptor area as a structure with named fields.  To
+    retrieve the value of a field from the header and store it into a
+    host variable, use the following command:
+<programlisting>
+EXEC SQL GET DESCRIPTOR <replaceable>name</replaceable> :<replaceable>hostvar</replaceable> = <replaceable>field</replaceable>;
+</programlisting>
+    Currently, there is only one header field defined:
+    <replaceable>COUNT</replaceable>, which tells how many item
+    descriptor areas exist (that is, how many columns are contained in
+    the result).  The host variable needs to be of an integer type.  To
+    get a field from the item descriptor area, use the following
+    command:
+<programlisting>
+EXEC SQL GET DESCRIPTOR <replaceable>name</replaceable> VALUE <replaceable>num</replaceable> :<replaceable>hostvar</replaceable> = <replaceable>field</replaceable>;
+</programlisting>
+    <replaceable>num</replaceable> can be a literal integer or a host
+    variable containing an integer. Possible fields are:
+
+    <variablelist>
+     <varlistentry>
+      <term><literal>CARDINALITY</literal> (integer)</term>
+      <listitem>
+       <para>
+        number of rows in the result set
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>DATA</literal></term>
+      <listitem>
+       <para>
+        actual data item (therefore, the data type of this field
+        depends on the query)
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>DATETIME_INTERVAL_CODE</literal> (integer)</term>
+      <listitem>
+       <para>
+        ?
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>DATETIME_INTERVAL_PRECISION</literal> (integer)</term>
+      <listitem>
+       <para>
+        not implemented
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>INDICATOR</literal> (integer)</term>
+      <listitem>
+       <para>
+        the indicator (indicating a null value or a value truncation)
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>KEY_MEMBER</literal> (integer)</term>
+      <listitem>
+       <para>
+        not implemented
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>LENGTH</literal> (integer)</term>
+      <listitem>
+       <para>
+        length of the datum in characters
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>NAME</literal> (string)</term>
+      <listitem>
+       <para>
+        name of the column
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>NULLABLE</literal> (integer)</term>
+      <listitem>
+       <para>
+        not implemented
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>OCTET_LENGTH</literal> (integer)</term>
+      <listitem>
+       <para>
+        length of the character representation of the datum in bytes
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>PRECISION</literal> (integer)</term>
+      <listitem>
+       <para>
+        precision (for type <type>numeric</type>)
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>RETURNED_LENGTH</literal> (integer)</term>
+      <listitem>
+       <para>
+        length of the datum in characters
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>RETURNED_OCTET_LENGTH</literal> (integer)</term>
+      <listitem>
+       <para>
+        length of the character representation of the datum in bytes
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>SCALE</literal> (integer)</term>
+      <listitem>
+       <para>
+        scale (for type <type>numeric</type>)
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><literal>TYPE</literal> (integer)</term>
+      <listitem>
+       <para>
+        numeric code of the data type of the column
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+
+   <para>
+    In <command>EXECUTE</command>, <command>DECLARE</command> and <command>OPEN</command>
+    statements, the effect of the <literal>INTO</literal> and <literal>USING</literal>
+    keywords are different. A Descriptor Area can also be manually built to
+    provide the input parameters for a query or a cursor and
+    <literal>USING SQL DESCRIPTOR <replaceable>name</replaceable></literal>
+    is the way to pass the input parameters into a parametrized query. The statement
+    to build a named SQL Descriptor Area is below:
+<programlisting>
+EXEC SQL SET DESCRIPTOR <replaceable>name</replaceable> VALUE <replaceable>num</replaceable> <replaceable>field</replaceable> = :<replaceable>hostvar</replaceable>;
+</programlisting>
+   </para>
+
+   <para>
+    PostgreSQL supports retrieving more that one record in one <command>FETCH</command>
+    statement and storing the data in host variables in this case assumes that the
+    variable is an array. E.g.:
+<programlisting>
+EXEC SQL BEGIN DECLARE SECTION;
+int id[5];
+EXEC SQL END DECLARE SECTION;
+
+EXEC SQL FETCH 5 FROM mycursor INTO SQL DESCRIPTOR mydesc;
+
+EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :id = DATA;
+</programlisting>
+
+   </para>
+
+  </sect2>
+
+  <sect2 id="ecpg-sqlda-descriptors">
+   <title>SQLDA Descriptor Areas</title>
+
+   <para>
+    An SQLDA Descriptor Area is a C language structure which can be also used
+    to get the resultset and the metadata of a query. One structure stores one
+    record from the resultset.
+<programlisting>
+EXEC SQL include sqlda.h;
+sqlda_t         *mysqlda;
+
+EXEC SQL FETCH 3 FROM mycursor INTO DESCRIPTOR mysqlda;
+</programlisting>
+    Note that the <literal>SQL</literal> keyword is omitted. The paragraphs about
+    the use cases of the <literal>INTO</literal> and <literal>USING</literal>
+    keywords in <xref linkend="ecpg-named-descriptors"/> also apply here with an addition.
+    In a <command>DESCRIBE</command> statement the <literal>DESCRIPTOR</literal>
+    keyword can be completely omitted if the <literal>INTO</literal> keyword is used:
+<programlisting>
+EXEC SQL DESCRIBE prepared_statement INTO mysqlda;
+</programlisting>
+   </para>
+
+   <para>
+    The structure of SQLDA is:
+<programlisting>
+#define NAMEDATALEN 64
+
+struct sqlname
+{
+        short           length;
+        char            data[NAMEDATALEN];
+};
+
+struct sqlvar_struct
+{
+        short           sqltype;
+        short           sqllen;
+        char       *sqldata;
+        short      *sqlind;
+        struct sqlname sqlname;
+};
+
+struct sqlda_struct
+{
+        char            sqldaid[8];
+        long            sqldabc;
+        short           sqln;
+        short           sqld;
+        struct sqlda_struct *desc_next;
+        struct sqlvar_struct    sqlvar[1];
+};
+
+typedef struct sqlvar_struct    sqlvar_t;
+typedef struct sqlda_struct     sqlda_t;
+</programlisting>
+   </para>
+
+   <para>
+    The allocated data for an SQLDA structure is variable as it depends on the
+    number of fields in a resultset and also depends on the length of the string
+    data values in a record. The individual fields of the <literal>SQLDA</literal>
+    structure are:
+
+    <variablelist>
+     <varlistentry>
+      <term><literal>sqldaid</literal></term>
+      <listitem>
+       <para>
+        It contains the "<literal>SQLDA  </literal>" literal string.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>sqldabc</literal></term>
+      <listitem>
+       <para>
+        It contains the size of the allocated space in bytes.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>sqln</literal></term>
+      <listitem>
+       <para>
+        It contains the number of input parameters for a parametrized query
+        case it's passed into <command>OPEN</command>, <command>DECLARE</command> or
+        <command>EXECUTE</command> statements using the <literal>USING</literal>
+        keyword. In case it's used as output of <command>SELECT</command>,
+        <command>EXECUTE</command> or <command>FETCH</command> statements,
+        its value is the same as <literal>sqld</literal>
+        statement
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>sqld</literal></term>
+      <listitem>
+       <para>
+        It contains the number of fields in a resultset.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>desc_next</literal></term>
+      <listitem>
+       <para>
+        If the query returns more than one records, multiple linked SQLDA structures
+        are returned, the first record is stored in the SQLDA returned in the
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>sqlvar</literal></term>
+      <listitem>
+       <para>
+        This is the array of the fields in the resultset. The fields are:
+
+        <variablelist>
+
+         <varlistentry>
+         <term><literal>sqltype</literal></term>
+          <listitem>
+           <para>
+            It contains the type identifier of the field. For values,
+            see <literal>enum ECPGttype</literal> in <literal>ecpgtype.h</literal>.
+           </para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+         <term><literal>sqllen</literal></term>
+          <listitem>
+           <para>
+            It contains the binary length of the field. E.g. 4 bytes for ECPGt_int.
+           </para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+         <term><literal>sqldata</literal></term>
+          <listitem>
+           <para>
+            <literal>(char *)sqldata</literal> points to the data.
+           </para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+         <term><literal>sqlind</literal></term>
+          <listitem>
+           <para>
+            <literal>(char *)sqlind</literal> points to the NULL indicator for data.
+            0 means NOT NULL, -1 means NULL.
+           </para>
+          </listitem>
+         </varlistentry>
+
+         <varlistentry>
+         <term><literal>sqlname</literal></term>
+          <listitem>
+           <para>
+            <literal>struct sqlname sqlname</literal> contains the name of the field
+            in a structure:
+<programlisting>
+struct sqlname
+{
+        short           length;
+        char            data[NAMEDATALEN];
+};
+</programlisting>
+
+            <variablelist>
+             <varlistentry>
+              <term><literal>length</literal></term>
+               <listitem>
+                <para>
+                 <literal>sqlname.length</literal> contains the length of the field name.
+                </para>
+               </listitem>
+              </varlistentry>
+             <varlistentry>
+              <term><literal>data</literal></term>
+               <listitem>
+                <para>
+                 <literal>sqlname.data</literal> contains the actual field name.
+                </para>
+               </listitem>
+              </varlistentry>
+            </variablelist>
+           </para>
+          </listitem>
+         </varlistentry>
+
+        </variablelist>
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+
+  </sect2>
+
+ </sect1>
+
  <sect1 id="ecpg-informix-compat">
   <title>Mode de compatibilité <productname>Informix</productname></title>
   <para>
@@ -2493,8 +2965,24 @@
   </para>
 
   <sect2>
-   <title>Instructions supplémentaires du SQL embarqué</title>
+   <title>Additional types</title>
    <para>
+    The Informix-special "string" pseudo-type for storing right-trimmed character string data is now
+    supported in Informix-mode without using <literal>typedef</literal>. In fact, in Informix-mode,
+    ECPG refuses to process source files that contain <literal>typedef sometype string;</literal>
+<programlisting>
+    EXEC SQL BEGIN DECLARE SECTION;
+    string userid; /* this variable will contain trimmed data */
+    EXEC SQL END DECLARE SECTION;
+
+    EXEC SQL FETCH MYCUR INTO :userid;
+</programlisting>
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Instructions supplémentaires/manquantes du SQL embarqué</title>
+   <para>
     <variablelist>
      <varlistentry>
       <term><literal>CLOSE DATABASE</literal></term>
@@ -2509,11 +2997,310 @@
        </para>
       </listitem>
      </varlistentry>
+     <varlistentry>
+      <term><literal>FREE cursor_name</literal></term>
+      <listitem>
+       <para>
+        Due to the differences how ECPG works compared to Informix's ESQL/C (i.e. which steps
+        are purely grammar transformations and which steps rely on the underlying runtime library)
+        there is no <literal>FREE cursor_name</literal> statement in ECPG. This is because in ECPG,
+        <literal>DECLARE CURSOR</literal> doesn't translate to a function call into
+        the runtime library that uses to the cursor name. This means that there's no runtime
+        bookkeeping of SQL cursors in the ECPG runtime library, only in the PostgreSQL server.
+       </para>
+      </listitem>
+     </varlistentry>
+     <varlistentry>
+      <term><literal>FREE statement_name</literal></term>
+      <listitem>
+       <para>
+        <literal>FREE statement_name</literal> is a synonym for <literal>DEALLOCATE PREPARE statement_name</literal>.
+       </para>      
+      </listitem>   
+     </varlistentry>
     </variablelist>
    </para>
   </sect2>
 
   <sect2>
+   <title>Informix-compatible SQLDA Descriptor Areas</title>
+   <para>
+    Informix-compatible mode supports a different structure than the one described in
+    <xref linkend="ecpg-sqlda-descriptors"/>. See below:
+<programlisting>
+struct sqlvar_compat
+{
+        short   sqltype;
+        int     sqllen;
+        char       *sqldata;
+        short      *sqlind;
+        char       *sqlname;
+        char       *sqlformat;
+        short   sqlitype;
+        short   sqlilen;
+        char       *sqlidata;
+        int     sqlxid;
+        char       *sqltypename;
+        short   sqltypelen;
+        short   sqlownerlen;
+        short   sqlsourcetype;
+        char       *sqlownername;
+        int     sqlsourceid;
+
+        char       *sqlilongdata;
+        int     sqlflags;
+        void       *sqlreserved;
+};
+
+struct sqlda_compat
+{
+        short           sqld;
+        struct sqlvar_compat *sqlvar;
+        char            desc_name[19];
+        short           desc_occ;
+        struct sqlda_compat *desc_next;
+        void               *reserved;
+};
+
+typedef struct sqlvar_compat    sqlvar_t;
+typedef struct sqlda_compat     sqlda_t;
+</programlisting>
+   </para>
+
+   <para>
+    The global properties are:
+    <variablelist>  
+
+     <varlistentry>
+     <term><literal>sqld</literal></term>
+      <listitem>
+       <para>
+        The number of fields in the <literal>SQLDA</literal> descriptor.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlvar</literal></term>   
+      <listitem>
+       <para>
+        Pointer to the per-field properties.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>desc_name</literal></term>
+      <listitem>
+       <para>
+        Unused, filled with zerobytes.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>desc_occ</literal></term>
+      <listitem>
+       <para>
+        Size of the allocated structure.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>desc_next</literal></term>
+      <listitem>
+       <para>
+        Pointer to the next SQLDA structure if the resultset contains more than one records.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>reserved</literal></term>
+      <listitem>
+       <para>
+        Unused pointer, contains NULL. Kept for Informix-compatibility.
+       </para>
+      </listitem>
+     </varlistentry>
+
+    </variablelist>
+
+    The per-field properties are below, they are stored in the <literal>sqlvar</literal> array:
+
+    <variablelist>
+
+     <varlistentry>
+     <term><literal>sqltype</literal></term>
+      <listitem>
+       <para>
+        Type of the field. Constants are in <literal>sqltypes.h</literal>
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqllen</literal></term>
+      <listitem>
+       <para>
+        Length of the field data.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqldata</literal></term>
+      <listitem>
+       <para>
+        Pointer to the field data. The pointer is of <literal>char *</literal> type,
+        the data pointed by it is in a binary format. Example:
+<programlisting>
+    int intval; 
+
+    switch (sqldata->sqlvar[i].sqltype)
+    {
+      case SQLINTEGER:
+        intval = *(int *)sqldata->sqlvar[i].sqldata;
+        break;
+      ...
+    }
+</programlisting>
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlind</literal></term>
+      <listitem>
+       <para>
+        Pointer to the NULL indicator. If returned by DESCRIBE or FETCH then it's always a valid pointer.
+        If used as input for <literal>EXECUTE ... USING sqlda;</literal> then NULL-pointer value means   
+        that the value for this field is non-NULL. Otherwise a valid pointer and <literal>sqlitype</literal>
+        has to be properly set. Example:
+<programlisting>
+    if (*(int2 *)sqldata->sqlvar[i].sqlind != 0)
+      printf("value is NULL\n");
+</programlisting>
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlname</literal></term>
+      <listitem>
+       <para>
+        Name of the field. 0-terminated string.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlformat</literal></term>
+      <listitem>
+       <para>
+        Reserved in Informix, value of PQfformat() for the field.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlitype</literal></term>
+      <listitem>
+       <para>
+        Type of the NULL indicator data. It's always SQLSMINT when returning data from the server.
+        When the <literal>SQLDA</literal> is used for a parametrized query, the data is treated   
+        according to the set type.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlilen</literal></term>
+      <listitem>
+       <para>
+        Length of the NULL indicator data.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlxid</literal></term>
+      <listitem>
+       <para>
+        Extended type of the field, result of PQftype().
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqltypename</literal></term>
+     <term><literal>sqltypelen</literal></term> 
+     <term><literal>sqlownerlen</literal></term>
+     <term><literal>sqlsourcetype</literal></term>
+     <term><literal>sqlownername</literal></term> 
+     <term><literal>sqlsourceid</literal></term>  
+     <term><literal>sqlflags</literal></term>     
+     <term><literal>sqlreserved</literal></term>  
+      <listitem>
+       <para>
+        Unused.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+     <term><literal>sqlilongdata</literal></term>
+      <listitem>
+       <para>
+        It equals to <literal>sqldata</literal> if <literal>sqllen</literal> is larger than 32KB.
+       </para>
+      </listitem>
+     </varlistentry>
+
+    </variablelist>
+
+    Example:
+<programlisting>
+EXEC SQL INCLUDE sqlda.h;
+
+    sqlda_t        *sqlda; /* This doesn't need to be under embedded DECLARE SECTION */
+
+    EXEC SQL BEGIN DECLARE SECTION;
+    char *prep_stmt = "select * from table1";
+    int i;
+    EXEC SQL END DECLARE SECTION;
+
+    ...
+
+    EXEC SQL PREPARE mystmt FROM :prep_stmt;
+
+    EXEC SQL DESCRIBE mystmt INTO sqlda;
+
+    printf("# of fields: %d\n", sqlda-&gt;sqld);
+    for (i = 0; i &lt; sqlda-&gt;sqld; i++)
+      printf("field %d: \"%s\"\n", sqlda-&gt;sqlvar[i]-&gt;sqlname);
+
+    EXEC SQL DECLARE mycursor CURSOR FOR mystmt;
+    EXEC SQL OPEN mycursor;
+    EXEC SQL WHENEVER NOT FOUND GOTO out;
+
+    while (1)
+    {
+      EXEC SQL FETCH mycursor USING sqlda;
+    }
+
+    EXEC SQL CLOSE mycursor;
+
+    free(sqlda); /* The main structure is all to be free(),
+                  * sqlda and sqlda-&gt;sqlvar is in one allocated area */
+</programlisting>
+    For more information, see the <literal>sqlda.h</literal> header and the
+    <literal>src/interfaces/ecpg/test/compat_informix/sqlda.pgc</literal> regression test.
+   </para>
+  </sect2>
+
+  <sect2>
    <title>Fonctions supplémentaires</title>
    <para>
     <variablelist>
@@ -3158,7 +3945,7 @@
       <listitem>
        <para>
 	analyse une variable de type timestamp à partir d'une représentation
-	textuelle en un standard ANSI pour en faire une variable de type timestamp.
+	textuelle pour en faire une variable de type timestamp.
 <synopsis>
 int dtcvasc(char *str, timestamp *ts);
 </synopsis>
@@ -3183,7 +3970,7 @@
       <listitem>
        <para>
 	analyse une variable de type timestamp à partir de sa représentation
-	textuelle dans le standard ANSI en utilisant un masque de formatage
+	textuelle en utilisant un masque de formatage
 	pour en faire une variable de type timestamp.
 <synopsis>
 dtcvfmtasc(char *inbuf, char *fmtstr, timestamp *dtvalue)
@@ -3238,7 +4025,7 @@
 	à convertir (<literal>ts</literal>) et la chaîne de stockage du
 	résultat de l'opération, <literal>output</literal>. Elle convertit
 	<literal>ts</literal> en sa représentation textuelle dans le standard
-	SQL ANSI, définie comme <literal>YYYY-MM-DD HH:MM:SS</literal>.
+	SQL, définie comme <literal>YYYY-MM-DD HH:MM:SS</literal>.
        </para>
        <para>
 	La fonction renvoie 0 en cas de succès et une valeur négative en cas
@@ -3288,7 +4075,7 @@
 	à convertir (<literal>i</literal>) et la chaîne de stockage du
 	résultat de l'opération, <literal>str</literal>. Elle convertit
 	<literal>i</literal> en sa représentation textuelle dans le standard
-	SQL ANSI, définie comme <literal>YYYY-MM-DD HH:MM:SS</literal>.
+	SQL, définie comme <literal>YYYY-MM-DD HH:MM:SS</literal>.
        </para>
        <para>
 	La fonction renvoie 0 en cas de succès et une valeur négative en cas
@@ -3774,213 +4561,6 @@
   </sect2>
  </sect1>
 
- <sect1 id="ecpg-descriptors">
-  <title>Utiliser les zones de descripteur SQL</title>
-
-  <para>
-   Une zone de descripteur SQL est une méthode de traitement du résultat 
-   d'un <command>SELECT</command> ou d'un <command>FETCH</command> plus
-   sophistiquée.
-   La zone de descripteur SQL groupe les données d'une ligne avec les éléments
-   de métadonnées en une seule structure de données. Les métadonnées sont
-   particulièrement utiles lors de l'exécution d'instructions SQL dynamiques
-   pour lesquelles la nature des colonnes de résultats n'est pas forcément
-   connue à l'avance.
-  </para>
-
-  <para>
-   Une zone de descripteur SQL est constituée d'un en-tête, qui contient des
-   informations sur le descripteur complet, et un ou plusieurs éléments
-   de zones de descripteur, qui basiquement décrivent chacun une colonne de la ligne de
-   résultat.
-  </para>
-
-  <para>
-   Avant d'utiliser une zone de descripteur SQL, il est nécessaire de
-   l'allouer&nbsp;:
-<programlisting>EXEC SQL ALLOCATE DESCRIPTOR <replaceable>identifiant</replaceable>;
-</programlisting>
-   L'identifiant sert de <quote>nom de variable</quote> à la zone du
-   descripteur.
-  </para> <remark>La portée du descripteur alloué est QUOI&nbsp;?</remark>
-  <para>
-   Lorsque le descripteur n'est plus utilisé, il est recommandé de le désallouer&nbsp;:
-<programlisting>EXEC SQL DEALLOCATE DESCRIPTOR <replaceable>identifiant</replaceable>;
-</programlisting>
-  </para>
-
-  <para>
-   Pour utiliser une zone de descripteur, il suffit de le préciser comme cible de
-   stockage dans une clause <literal>INTO</literal> à la place de la liste des
-   variables hôtes&nbsp;:
-<programlisting>EXEC SQL FETCH NEXT FROM moncurseur INTO DESCRIPTOR mondesc;
-</programlisting>
-  </para>
-
-  <para>
-   Il reste à répondre à la question de la récupération des données de la zone
-   descripteur.
-   Celle-ci peut être considérée comme une structure contenant des champs nommés. Pour
-   récupérer la valeur d'un champ à partir de l'en-tête et la stocker dans une
-   variable hôte, on utilise la commande suivante&nbsp;:
-<programlisting>EXEC SQL GET DESCRIPTOR <replaceable>nom</replaceable> :<replaceable>varhote</replaceable> = <replaceable>champ</replaceable>;
-</programlisting>
-   Actuellement, il n'existe qu'un seul champ d'en-tête défini&nbsp;:
-   <replaceable>COUNT</replaceable>, qui indique le nombre d'éléments dans
-   la zone de descripteur (c'est-à-dire le nombre de colonnes contenues dans le
-   résultat). La variable hôte doit être de type entier. Pour récupérer
-   un champ à partir de l'élément de la zone du descripteur, on utilise la commande
-   suivante&nbsp;:
-<programlisting>EXEC SQL GET DESCRIPTOR <replaceable>nom</replaceable> VALUE
-<replaceable>numero</replaceable> :<replaceable>varhote</replaceable> =
-<replaceable>champ</replaceable>;
-</programlisting>
-   <replaceable>numero</replaceable> peut être une constante entière ou une
-   variable hôte contenant un entier. Les champs possibles sont&nbsp;:
-
-   <variablelist>
-    <varlistentry>
-     <term><literal>CARDINALITY</literal> (integer)</term>
-     <listitem>
-      <para>
-       le nombre de lignes dans l'ensemble du résultat&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>DATA</literal></term>
-     <listitem>
-      <para>
-       l'élément de données en cours (de fait, le type de données de ce champ
-       dépend de la requête)&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-
-    <varlistentry>
-     <term><literal>DATETIME_INTERVAL_CODE</literal> (integer)</term>
-     <listitem>
-      <para>
-       ?
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>DATETIME_INTERVAL_PRECISION</literal> (integer)</term>
-     <listitem>
-      <para>
-       non implanté&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>INDICATOR</literal> (integer)</term>
-     <listitem>
-      <para>
-       l'indicateur (de valeur NULL ou de troncature de la valeur)&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>KEY_MEMBER</literal> (integer)</term>
-     <listitem>
-      <para>
-       non implanté&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>LENGTH</literal> (integer)</term>
-     <listitem>
-      <para>
-       la longueur de la donnée en caractères&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>NAME</literal> (string)</term>
-     <listitem>
-      <para>
-       le nom de la colonne&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>NULLABLE</literal> (integer)</term>
-     <listitem>
-      <para>
-       non implanté&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>OCTET_LENGTH</literal> (integer)</term>
-     <listitem>
-      <para>
-       la longueur en octets de la représentation en caractères de la
-       donnée&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>PRECISION</literal> (integer)</term>
-     <listitem>
-      <para>
-       la précision (pour le type <type>numeric</type>)&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>RETURNED_LENGTH</literal> (integer)</term>
-     <listitem>
-      <para>
-       la longueur de la donnée en caractères&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>RETURNED_OCTET_LENGTH</literal> (integer)</term>
-     <listitem>
-      <para>
-       la longueur en octets de la représentation en caractères de la
-       donnée&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>SCALE</literal> (integer)</term>
-     <listitem>
-      <para>
-       l'échelle (pour le type <type>numeric</type>)&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term><literal>TYPE</literal> (integer)</term>
-     <listitem>
-      <para>
-       le code numérique du type de données de la colonne&nbsp;;
-      </para>
-     </listitem>
-    </varlistentry>
-   </variablelist>
-  </para>
- </sect1>
-
  <sect1 id="ecpg-errors">
   <title>Gestion des erreurs</title>
 
@@ -4818,10 +5398,9 @@
 
   <para>
    La bibliothèque <application>ecpg</application> est compatible avec les
-   threads si elle a été compilée en utilisant l'option en ligne de commande
-   <option>--enable-thread-safety</option> de <filename>configure</filename>.
-   (Il peut s'avérer nécessaire de préciser d'autres options de threading sur la
-   ligne de commande pour compiler le code client.)
+   threads by
+   default.  However, you might need to use some threading
+   command-line options to compile your client code.
   </para>
  </sect1>
 
@@ -4862,6 +5441,31 @@
    </listitem>
 
    <listitem>
+     <para>
+       <function>ECPGget_PGconn(const char *<replaceable>connection_name</replaceable>)
+       </function> returns the library database connection handle identified by the given name.
+       If <replaceable>connection_name</replaceable> is set to <literal>NULL</literal>, the current
+       connection handle is returned. If no connection handle can be identified, the function returns 
+       <literal>NULL</literal>. The returned connection handle can be used to call any other functions
+       from <application>libpq</application>, if necessary.
+     </para>
+     <note>
+     <para>
+       It is a bad idea to manipulate database connection handles made from <application>ecpg</application> directly
+       with <application>libpq</application> routines.
+     </para>
+     </note>
+   </listitem>
+
+   <listitem>
+     <para>
+       <function>ECPGtransactionStatus(const char *<replaceable>connection_name</replaceable>)</function>
+       returns the current transaction status of the given connection identified by <replaceable>connection_name</replaceable>.
+       See <xref linkend="libpq-status"/> and libpq's <function>PQtransactionStatus()</function> for details about the returned status codes.
+     </para>
+   </listitem>
+
+   <listitem>
     <para>
      <function>ECPGstatus(int <replaceable>no_ligne</replaceable>,
      const char* <replaceable>nom_connexion</replaceable>)</function> retourne

Modified: traduc/trunk/postgresql/errcodes.xml
===================================================================
--- traduc/trunk/postgresql/errcodes.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/errcodes.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -662,6 +662,11 @@
 <entry>check_violation</entry>
 </row>
 
+<row>
+<entry><literal>23P01</literal></entry>
+<entry>EXCLUSION VIOLATION</entry>
+<entry>exclusion_violation</entry>
+</row>
 
 <row>
 <entry spanname="span13"><emphasis role="bold">Classe 24 &mdash; État de
@@ -782,6 +787,11 @@
 <entry>invalid_authorization_specification</entry>
 </row>
 
+<row>
+<entry><literal>28P01</literal></entry>
+<entry>INVALID PASSWORD</entry>
+<entry>invalid_password</entry>
+</row>
 
 <row>
 <entry spanname="span13"><emphasis role="bold">Classe 2B &mdash; Descripteurs de

Modified: traduc/trunk/postgresql/extend.xml
===================================================================
--- traduc/trunk/postgresql/extend.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/extend.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -155,7 +155,7 @@
 
     <para>
      Les domaines peuvent être créés à l'aide de la commande
-     <acronym>SQL</acronym> <xref linkend="sql-createdomain" endterm="sql-createdomain-title"/>.
+     <acronym>SQL</acronym> <xref linkend="sql-createdomain"/>.
      Leurs création et utilisation n'est pas l'objet de ce chapitre.
     </para>
    </sect2>

Modified: traduc/trunk/postgresql/filelist.xml
===================================================================
--- traduc/trunk/postgresql/filelist.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/filelist.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -46,6 +46,7 @@
 <!ENTITY manage-ag     SYSTEM "manage-ag.xml">
 <!ENTITY monitoring    SYSTEM "monitoring.xml">
 <!ENTITY regress       SYSTEM "regress.xml">
+<!ENTITY recovery-config SYSTEM "recovery-config.xml">
 <!ENTITY runtime       SYSTEM "runtime.xml">
 <!ENTITY config        SYSTEM "config.xml">
 <!ENTITY user-manag    SYSTEM "user-manag.xml">
@@ -115,6 +116,7 @@
 <!ENTITY ltree           SYSTEM "ltree.xml">
 <!ENTITY oid2name        SYSTEM "oid2name.xml">
 <!ENTITY pageinspect     SYSTEM "pageinspect.xml">
+<!ENTITY passwordcheck   SYSTEM "passwordcheck.xml">
 <!ENTITY pgbench         SYSTEM "pgbench.xml">
 <!ENTITY pgbuffercache   SYSTEM "pgbuffercache.xml">
 <!ENTITY pgcrypto        SYSTEM "pgcrypto.xml">
@@ -124,12 +126,14 @@
 <!ENTITY pgstatstatements SYSTEM "pgstatstatements.xml">
 <!ENTITY pgstattuple     SYSTEM "pgstattuple.xml">
 <!ENTITY pgtrgm          SYSTEM "pgtrgm.xml">
+<!ENTITY pgupgrade       SYSTEM "pgupgrade.xml">
 <!ENTITY seg             SYSTEM "seg.xml">
 <!ENTITY contrib-spi     SYSTEM "contrib-spi.xml">
 <!ENTITY sslinfo         SYSTEM "sslinfo.xml">
 <!ENTITY tablefunc       SYSTEM "tablefunc.xml">
 <!ENTITY test-parser     SYSTEM "test-parser.xml">
 <!ENTITY tsearch2        SYSTEM "tsearch2.xml">
+<!ENTITY unaccent        SYSTEM "unaccent.xml">
 <!ENTITY uuid-ossp       SYSTEM "uuid-ossp.xml">
 <!ENTITY vacuumlo        SYSTEM "vacuumlo.xml">
 <!ENTITY xml2            SYSTEM "xml2.xml">
@@ -144,6 +148,7 @@
 <!ENTITY keywords   SYSTEM "keywords.xml">
 
 <!ENTITY release    SYSTEM "release.xml">
+<!ENTITY release-9.0    SYSTEM "release-9.0.xml">
 <!ENTITY release-8.4    SYSTEM "release-8.4.xml">
 <!ENTITY release-8.3    SYSTEM "release-8.3.xml">
 <!ENTITY release-8.2    SYSTEM "release-8.2.xml">
@@ -172,3 +177,9 @@
  -->
 <!ENTITY % standalone-ignore  "INCLUDE">
 <!ENTITY % standalone-include "IGNORE">
+
+<!--
+ By default, no index is included.  Use -i include-index on the command line
+ to include it.
+ -->
+<!ENTITY % include-index "IGNORE">

Modified: traduc/trunk/postgresql/func.xml
===================================================================
--- traduc/trunk/postgresql/func.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/func.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -951,6 +951,11 @@
    Pour finir, le <xref linkend="functions-math-trig-table"/> affiche les fonctions
    trigonométriques disponibles. Toutes les fonctions trigonométriques prennent
    des arguments et renvoient des valeurs de type <type>double precision</type>.
+   Trigonometric functions arguments are expressed
+   in radians. Inverse functions return values are expressed in
+   radians.  See unit transformation functions
+   <literal><function>radians</function>()</literal> and
+   <literal><function>degrees</function>()</literal> above.
   </para>
 
    <indexterm>
@@ -992,22 +997,19 @@
      <tbody>
       <row>
 
-<entry><literal><function>acos</function>(<replaceable>x</replaceable>)</literal
-></entry>
+<entry><literal><function>acos</function>(<replaceable>x</replaceable>)</literal></entry>
        <entry>arccosinus</entry>
       </row>
 
       <row>
 
-<entry><literal><function>asin</function>(<replaceable>x</replaceable>)</literal
-></entry>
+<entry><literal><function>asin</function>(<replaceable>x</replaceable>)</literal></entry>
        <entry>arcsinus</entry>
       </row>
 
       <row>
 
-<entry><literal><function>atan</function>(<replaceable>x</replaceable>)</literal
-></entry>
+<entry><literal><function>atan</function>(<replaceable>x</replaceable>)</literal></entry>
        <entry>arctangente</entry>
       </row>
 
@@ -1904,6 +1906,11 @@
     </tgroup>
    </table>
 
+   <para>
+   See also the aggregate function <function>string_agg</function> in
+   <xref linkend="functions-aggregate"/>.
+   </para>
+
    <table id="conversion-names">
     <title>Conversions intégrées</title>
     <tgroup cols="3">
@@ -2764,40 +2771,24 @@
       </row>
 
       <row>
-       <entry><function>get_bit</function>(<parameter>chaîne</parameter>, <parameter>décalage</parameter>)</entry>
+       <entry><literal><function>octet_length</function>( <parameter>chaîne</parameter>)</literal></entry>
        <entry><type>int</type></entry>
-       <entry>
-        Extrait un bit d'une chaîne
-        <indexterm>
-         <primary>get_bit</primary>
-        </indexterm>
-       </entry>
-       <entry><literal>get_bit(E'Th\\000omas'::bytea, 45)</literal></entry>
-       <entry><literal>1</literal></entry>
+       <entry>Nombre d'octets d'une chaîne binaire</entry>
+       <entry><literal>octet_length( E'jo\\000se'::bytea)</literal></entry>
+       <entry><literal>5</literal></entry>
       </row>
 
       <row>
-       <entry><function>get_byte</function>(<parameter>chaîne</parameter>, <parameter>décalage</parameter>)</entry>
-       <entry><type>int</type></entry>
+       <entry><literal><function>overlay</function>(<parameter>string</parameter> placing <parameter>string</parameter> from <type>int</type> <optional>for <type>int</type></optional>)</literal></entry>
+       <entry><type>bytea</type></entry>
        <entry>
-        Extrait un octet d'une chaîne
-        <indexterm>
-         <primary>get_byte</primary>
-        </indexterm>
+        Replace substring
        </entry>
-       <entry><literal>get_byte(E'Th\\000omas'::bytea, 4)</literal></entry>
-       <entry><literal>109</literal></entry>
+       <entry><literal>overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3)</literal></entry>
+       <entry><literal>T\\002\\003mas</literal></entry>
       </row>
 
       <row>
-       <entry><literal><function>octet_length</function>( <parameter>chaîne</parameter>)</literal></entry>
-       <entry><type>int</type></entry>
-       <entry>Nombre d'octets d'une chaîne binaire</entry>
-       <entry><literal>octet_length( E'jo\\000se'::bytea)</literal></entry>
-       <entry><literal>5</literal></entry>
-      </row>
-
-      <row>
        <entry><literal><function>position</function>( <parameter>sous-chaîne</parameter>
 in <parameter>chaîne</parameter>)</literal></entry>
        <entry><type>int</type></entry>
@@ -2807,34 +2798,6 @@
       </row>
 
       <row>
-       <entry><function>set_bit</function>(<parameter>chaîne</parameter>,
-        <parameter>décalage</parameter>, <parameter>nouvelle_valeur</parameter>)</entry>
-       <entry><type>bytea</type></entry>
-       <entry>
-        Positionne un bit de la chaîne
-        <indexterm>
-         <primary>set_bit</primary>
-        </indexterm>
-       </entry>
-       <entry><literal>set_bit(E'Th\\000omas'::bytea, 45, 0)</literal></entry>
-       <entry><literal>Th\000omAs</literal></entry>
-      </row>
-
-      <row>
-       <entry><function>set_byte</function>(<parameter>chaîne</parameter>,
-       <parameter>décalage</parameter>, <parameter>nouvelle_valeur</parameter>)</entry>
-       <entry><type>bytea</type></entry>
-       <entry>
-        Positionne un octet de la chaîne
-        <indexterm>
-         <primary>set_byte</primary>
-        </indexterm>
-       </entry>
-       <entry><literal>set_byte( E'Th\\000omas'::bytea, 4, 64)</literal></entry>
-       <entry><literal>Th\000o at as</literal></entry>
-      </row>
-
-      <row>
        <entry><literal><function>substring</function>(<parameter>chaîne</parameter> <optional>from <type>int</type></optional> <optional>for <type>int</type></optional>)</literal></entry>
        <entry><type>bytea</type></entry>
        <entry>
@@ -2937,6 +2900,36 @@
       <entry><literal>123\000456</literal></entry>
      </row>
 
+      <row>
+       <entry>
+        <literal><function>get_bit</function>(<parameter>string</parameter>, <parameter>offset</parameter>)</literal>
+       </entry>
+       <entry><type>int</type></entry>
+       <entry>
+        Extract bit from string
+        <indexterm>
+         <primary>get_bit</primary>
+        </indexterm>
+       </entry>
+       <entry><literal>get_bit(E'Th\\000omas'::bytea, 45)</literal></entry>
+       <entry><literal>1</literal></entry>
+      </row>
+
+      <row>
+       <entry>
+        <literal><function>get_byte</function>(<parameter>string</parameter>, <parameter>offset</parameter>)</literal>
+       </entry>
+       <entry><type>int</type></entry>
+       <entry>
+        Extract byte from string
+        <indexterm>
+         <primary>get_byte</primary>
+        </indexterm>
+       </entry>
+       <entry><literal>get_byte(E'Th\\000omas'::bytea, 4)</literal></entry>
+       <entry><literal>109</literal></entry>
+      </row>
+
      <row>
       <entry><literal><function>length</function>
 (<parameter>chaîne</parameter>)</literal></entry>
@@ -2968,6 +2961,37 @@
       <entry><literal>8ab2d3c9689aaf18 b4958c334c82d8b1</literal></entry>
      </row>
 
+      <row>
+       <entry>
+        <literal><function>set_bit</function>(<parameter>string</parameter>,
+        <parameter>offset</parameter>, <parameter>newvalue</parameter>)</literal>
+       </entry>
+       <entry><type>bytea</type></entry>
+       <entry>
+        Set bit in string
+        <indexterm>
+         <primary>set_bit</primary>
+        </indexterm>
+       </entry>
+       <entry><literal>set_bit(E'Th\\000omas'::bytea, 45, 0)</literal></entry>
+       <entry><literal>Th\000omAs</literal></entry>
+      </row>
+
+      <row>
+       <entry>
+        <literal><function>set_byte</function>(<parameter>string</parameter>,
+        <parameter>offset</parameter>, <parameter>newvalue</parameter>)</literal>
+       </entry>
+       <entry><type>bytea</type></entry>
+       <entry>
+        Set byte in string
+        <indexterm>
+         <primary>set_byte</primary>
+        </indexterm>
+       </entry>
+       <entry><literal>set_byte(E'Th\\000omas'::bytea, 4, 64)</literal></entry>
+       <entry><literal>Th\000o at as</literal></entry>
+      </row>
     </tbody>
    </tgroup>
   </table>
@@ -3068,7 +3092,15 @@
        <literal><function>bit_length</function></literal>,
        <literal><function>octet_length</function></literal>,
        <literal><function>position</function></literal>,
-       <literal><function>substring</function></literal>.
+       <literal><function>substring</function></literal>,
+    <literal><function>overlay</function></literal>.
+   </para>
+
+   <para>
+    The following functions work on bit strings as well as binary
+    strings:
+    <literal><function>get_bit</function></literal>,
+    <literal><function>set_bit</function></literal>.
      </para>
      
      <para>
@@ -3286,6 +3318,31 @@
        ou plusieurs fois&nbsp;;
       </para>
      </listitem>
+    <listitem>
+     <para>
+      <literal>?</literal> denotes repetition of the previous item zero
+      or one time.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <literal>{</literal><replaceable>m</replaceable><literal>}</literal> denotes repetition
+      of the previous item exactly <replaceable>m</replaceable> times.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <literal>{</literal><replaceable>m</replaceable><literal>,}</literal> denotes repetition
+      of the previous item <replaceable>m</replaceable> or more times.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <literal>{</literal><replaceable>m</replaceable><literal>,</literal><replaceable>n</replaceable><literal>}</literal>
+      denotes repetition of the previous item at least <replaceable>m</replaceable> and
+      not more than <replaceable>n</replaceable> times.
+     </para>
+    </listitem>
      <listitem>
       <para>
        les parenthèses <literal>()</literal> peuvent être utilisées pour grouper des
@@ -3300,9 +3357,8 @@
      </listitem>
     </itemizedlist>
 
-     Les opérateurs de répétitions encadrées (<literal>?</literal> et <literal>{...}</literal>) ne sont
-     pas permises bien qu'elles existent en POSIX. De même, le point
-     (<literal>.</literal>) n'est pas un méta-caractère.
+     Notez que le point (<literal>.</literal>) n'est pas un méta-caractère
+    for <function>SIMILAR TO</function>.
     </para>
 
     <para>
@@ -3697,15 +3753,12 @@
 
    <note>
     <para>
-     La forme des expressions rationnelles acceptées par
-     <productname>PostgreSQL</productname> peut être choisie à l'aide du
-     paramètre d'exécution
-     <xref linkend="guc-regex-flavor"/> (décrit dans le
-     <xref linkend="runtime-config"/>). La configuration habituelle est
-     <literal>advanced</literal> (NdT&nbsp;: pour avancées) mais il est possible
-     de sélectionner <literal>extended</literal> (pour étendues) pour obtenir un
-     maximum de compatibilité avec les versions antérieures à la version 7.4 de
-     <productname>PostgreSQL</productname>.
+     <productname>PostgreSQL</productname> always initially presumes that a regular
+     expression follows the ARE rules.  However, the more limited ERE or
+     BRE rules can be chosen by prepending an <firstterm>embedded option</firstterm>
+     to the RE pattern, as described in <xref linkend="posix-metasyntax"/>.
+     This can be useful for compatibility with applications that expect
+     exactly the <acronym>POSIX</acronym> 1003.2 rules.
     </para>
    </note>
 
@@ -4494,11 +4547,11 @@
    </para>
 
    <para>
-    Normalement, le type d'ER considéré est déterminé par
-    <varname>regex_flavor</varname>. Néanmoins, ce paramètre peut être surchargé par un préfixe
-    <firstterm>directeur</firstterm>. Si une ER commence
-    par <literal>***:</literal>, le reste de l'ER est considéré comme une ERA,
-    quelque soit la valeur de <varname>regex_flavor</varname>.
+    An RE can begin with one of two special <firstterm>director</firstterm> prefixes. Si une ER commence
+    par <literal>***:</literal>, le reste de l'ER est considéré comme une ERA.  (This normally has no effect in
+    <productname>PostgreSQL</productname>, since REs are assumed to be AREs;
+    but it does have an effect if ERE or BRE mode had been specified by
+    the <replaceable>flags</replaceable> parameter to a regex function.)
     Si une ER commence par <literal>***=</literal>, le reste
     de l'ER est considéré comme une chaîne littérale, tous les caractères étant
     considérés ordinaires.
@@ -4509,9 +4562,13 @@
     une séquence <literal>(?</literal><replaceable>xyz</replaceable><literal>)</literal>
     (où <replaceable>xyz</replaceable> correspond à un ou plusieurs caractères
     alphabétiques) spécifie les options affectant le reste de l'ER. Ces options
-    surchargent toutes les options précédemment déterminées (dont le type de
-    l'ER et la sensibilité à la casse). Les lettres d'options disponibles sont
+    surchargent toutes les options précédemment déterminées &mdash;
+    in particular, they can override the case-sensitivity behavior implied by
+    a regex operator, or the <replaceable>flags</replaceable> parameter to a regex
+    function. Les lettres d'options disponibles sont
     indiquées dans le <xref linkend="posix-embedded-options-table"/>.
+    Note that these same option letters are used in the <replaceable>flags</replaceable>
+    parameters of regex functions.
    </para>
 
    <table id="posix-embedded-options-table">
@@ -4900,10 +4957,6 @@
       </para>
      </listitem>
     </itemizedlist>
-
-    Même si ces différences ne posent pas de problèmes pour la plupart
-    des applications, il est possible de les éviter en initialisant
-    <varname>regex_flavor</varname> à <literal>extended</literal>.
    </para>
    </sect3>
 
@@ -5298,7 +5351,7 @@
        </row>
        <row>
 	<entry><literal>Q</literal></entry>
-	<entry>trimestre</entry>
+	<entry>trimestre (ignored by <function>to_date</function> and <function>to_timestamp</function>)</entry>
        </row>
        <row>
 	<entry><literal>RM</literal></entry>
@@ -5394,7 +5447,11 @@
       <para>
        <literal>FM</literal> supprime les zéros de début et les espaces de
        fin qui, autrement, sont ajoutés pour fixer la taille du motif de
-       sortie&nbsp;;
+       sortie&nbsp;; In <productname>PostgreSQL</productname>,
+       <literal>FM</literal> modifies only the next specification, while in
+       Oracle <literal>FM</literal> affects all subsequent
+       specifications, and repeated <literal>FM</literal> modifiers
+       toggle fill mode on and off.
       </para>
      </listitem>
 
@@ -5429,7 +5486,10 @@
        <literal>'"Hello Year "YYYY'</literal>, les caractères
        <literal>YYYY</literal> sont remplacés par l'année mais
        l'<literal>Y</literal> isolé du mot <literal>Year</literal> ne l'est
-       pas&nbsp;;
+       pas&nbsp;; In <function>to_date</function>, <function>to_number</function>,
+       and <function>to_timestamp</function>, double-quoted strings skip the number of
+       input characters contained in the string, e.g. <literal>"XX"</literal>
+       skips two input characters.
       </para>
      </listitem>
 
@@ -5540,8 +5600,9 @@
 
      <listitem>
       <para><function>to_char(interval)</function> formate <literal>HH</literal> et
-        <literal>HH12</literal> comme les heures d'un seul jour alors que <literal>HH24</literal>
-        peut afficher des heures dépassant un simple jour, c'est-à-dire &gt;24.
+        <literal>HH12</literal> as shown on a 12-hour clock, i.e. zero hours
+        and 36 hours output as <literal>12</literal>, while <literal>HH24</literal>
+        outputs the full hour value, which can exceed 23 for intervals.
       </para>
      </listitem>
 
@@ -5632,7 +5693,7 @@
        </row>
        <row>
 	<entry><literal>EEEE</literal></entry>
-	<entry>notation scientifique (pas implantée)</entry>
+	<entry>exponent for notation scientifique</entry>
        </row>
       </tbody>
      </tgroup>
@@ -5689,6 +5750,15 @@
        (donc <literal>99.9V99</literal> n'est pas autorisé).
       </para>
      </listitem>
+
+     <listitem>
+      <para>
+       <literal>EEEE</literal> (scientific notation) cannot be used in
+       combination with any of the other formatting patterns or
+       modifiers other than digit and decimal point patterns, and must be at the end of the format string
+       (e.g., <literal>9.99EEEE</literal> is a valid pattern).
+      </para>
+     </listitem>
     </itemizedlist>
    </para>   
 
@@ -5897,6 +5967,10 @@
         <entry><literal>to_char(12.45, '99V9')</literal></entry>
         <entry><literal>'&nbsp;125'</literal></entry>
        </row>
+       <row>
+        <entry><literal>to_char(0.0004859, '9.99EEEE')</literal></entry>
+        <entry><literal>' 4.86e-04'</literal></entry>
+       </row>
       </tbody>
      </tgroup>
     </table>
@@ -6547,9 +6621,9 @@
         l'intervalle.
        </para>
 
-<screen>SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-08');
+<screen>SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');
 <lineannotation>Résultat :
-</lineannotation><computeroutput>982384720</computeroutput>
+</lineannotation><computeroutput>982384720.12</computeroutput>
 
 SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
 <lineannotation>Résultat :
@@ -6560,7 +6634,11 @@
 	date/heure&nbsp;:
        </para>
 
-<screen>SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720 * INTERVAL '1 second';</screen>
+<screen>SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second';</screen>
+       <para>
+        (The <function>to_timestamp</function> function encapsulates the above
+        conversion.)
+       </para>
       </listitem>
      </varlistentry>
 
@@ -7557,8 +7635,7 @@
 	<entry><literal>center(box '((0,0),(1,2))')</literal></entry>
        </row>
        <row>
-	<entry><literal><function>diameter</function>(<type>circle</type>)</literal></entry
->
+	<entry><literal><function>diameter</function>(<type>circle</type>)</literal></entry>
 	<entry><type>double precision</type></entry>
 	<entry>diamètre du cercle</entry>
 	<entry><literal>diameter(circle '((0,0),2.0)')</literal></entry>
@@ -7594,8 +7671,7 @@
 	<entry><literal>npoints(path '[(0,0),(1,1),(2,0)]')</literal></entry>
        </row>
        <row>
-	<entry><literal><function>npoints</function>(<type>polygon</type>)</literal></entry
->
+	<entry><literal><function>npoints</function>(<type>polygon</type>)</literal></entry>
 	<entry><type>int</type></entry>
 	<entry>nombre de points</entry>
 	<entry><literal>npoints(polygon '((1,1),(0,0))')</literal></entry>
@@ -7665,8 +7741,7 @@
 	<entry><literal>box(point '(0,0)', point '(1,1)')</literal></entry>
        </row>
        <row>
-	<entry><literal><function>box</function>(<type>polygon</type>)</literal></entry
->
+	<entry><literal><function>box</function>(<type>polygon</type>)</literal></entry>
 	<entry><type>box</type></entry>
 	<entry>polygone vers boîte</entry>
 	<entry><literal>box(polygon '((0,0),(1,1),(2,0))')</literal></entry>
@@ -7741,8 +7816,7 @@
 	<entry><literal>point(polygon '((0,0),(1,1),(2,0))')</literal></entry>
        </row>
        <row>
-	<entry><literal><function>polygon</function>(<type>box</type>)</literal></entry
->
+	<entry><literal><function>polygon</function>(<type>box</type>)</literal></entry>
 	<entry><type>polygon</type></entry>
 	<entry>boîte vers polygone à quatre points</entry>
 	<entry><literal>polygon(box '((0,0),(1,1))')</literal></entry>
@@ -8749,7 +8823,8 @@
      La fonction <function>xmlagg</function> est, à la différence des
      fonctions décrites ici, une fonction d'aggrégat. Elle concatène les valeurs
      en entrée pour les passer en argument à la fonction d'aggrégat, comme le
-     fait la fonction <function>xmlconcat</function>.
+     fait la fonction <function>xmlconcat</function>, except that concatenation
+     occurs across rows rather than across expressions in a single row.
      Voir <xref linkend="functions-aggregate"/> pour plus d'informations sur
      les fonctions d'agrégat.
     </para>
@@ -8768,17 +8843,28 @@
     </para>
 
     <para>
-     Pour déterminer l'ordre de la concaténation, l'approche suivante peut
-     être utilisée&nbsp;:
+     Pour déterminer l'ordre de la concaténation, an <literal>ORDER BY</literal>
+     clause may be added to the aggregate call as described in
+     <xref linkend="syntax-aggregates"/>. For example:
+
 <screen><![CDATA[
+SELECT xmlagg(x ORDER BY y DESC) FROM test;
+        xmlagg
+----------------------
+ <bar/><foo>abc</foo>
+]]></screen>
+    </para>
+
+    <para>
+     The following non-standard approach used to be recommended
+     in previous versions, and may still be useful in specific
+     cases&nbsp;:
+<screen><![CDATA[
 SELECT xmlagg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS tab;
         xmlagg
 ----------------------
  <bar/><foo>abc</foo>
 ]]></screen>
-
-     De nouveau, voir <xref linkend="functions-aggregate"/> pour plus
-     d'informations.
     </para>
    </sect3>
 
@@ -9131,7 +9217,7 @@
    opérant sur les <firstterm>objets de séquence</firstterm>. Les objets de
    séquence (aussi appelés générateurs de séquence ou simplement séquences)
    sont des tables spéciales, mono-lignes, créées avec la commande
-   <xref linkend="sql-createsequence" endterm="sql-createsequence-title"/>. Une
+   <xref linkend="sql-createsequence"/>. Une
    séquence est habituellement
    utilisée pour engendrer des identifiants uniques de lignes d'une table. 
    Les fonctions de séquence, listées dans le <xref
@@ -9332,7 +9418,7 @@
    appels à <function>nextval</function> sur celui-ci renvoient des valeurs
    successives à partir de 1. D'autres comportements peuvent être obtenus en
    utilisant des paramètres spéciaux de la commande <xref
-   linkend="sql-createsequence" endterm="sql-createsequence-title"/>&nbsp;; voir
+   linkend="sql-createsequence"/>&nbsp;; voir
    la page de référence de la commande pour plus d'informations.
   </para>
 
@@ -9535,8 +9621,9 @@
 <programlisting>SELECT NULLIF(valeur, '(aucune)') ...</programlisting>
   </para>
   <para>
-   Si <replaceable>valeur1</replaceable> est <literal>(aucune)</literal>, renvoie une
-   valeur NULL. Sinon, renvoie <replaceable>valeur1</replaceable>.
+   In this example, if <literal>value</literal> is <literal>(none)</literal>,
+   null is returned, otherwise the value of <literal>value</literal>
+   is returned.
   </para>
 
   </sect2>
@@ -10115,6 +10202,25 @@
      </row>
 
      <row>
+      <entry>
+       <indexterm>
+        <primary>string_agg</primary>
+       </indexterm>
+       <function>
+         string_agg(<replaceable class="parameter">expression</replaceable> 
+                    [, <replaceable class="parameter">delimiter</replaceable> ] )
+       </function>
+      </entry>
+      <entry>
+       <type>text</type>
+      </entry>
+      <entry>
+       <type>text</type>
+      </entry>
+      <entry>input values concatenated into a string, optionally with delimiters</entry>
+     </row>
+
+     <row>
       <entry><function>sum(<replaceable class="parameter">expression</replaceable>)</function></entry>
       <entry>
        <type>smallint</type>, <type>int</type>,
@@ -10199,11 +10305,15 @@
   </note>
   
   <para>
-   Les fonctions d'agrégat <function>array_agg</function> et
+   Les fonctions d'agrégat <function>array_agg</function>,
+   <function>string_agg</function> et
    <function>xmlagg</function>, ainsi que d'autres fonctions similaires d'agrégats
    définies par l'utilisateur, produisent des valeurs de résultats qui ont un sens
-   différents, dépendant de l'ordre des valeurs en entrée. Dans l'implantation
-   actuelle, l'ordre des entrées est en principe non spécifiée. Fournir les
+   différents, dépendant de l'ordre des valeurs en entrée. This ordering is
+   unspecified by default, but can be controlled by writing an
+   <literal>ORDER BY</literal> clause within the aggregate call, as shown in
+   <xref linkend="syntax-aggregates"/>.
+   Alternatively, fournir les
    valeurs à partir d'une sous-requête triée fonctionnera généralement. Par
    exemple&nbsp;:
 
@@ -10212,10 +10322,7 @@
 ]]></screen>
 
    Mais cette syntaxe n'est pas autorisée dans le standard SQL et n'est pas
-   portable vers d'autres systèmes de bases de données. Une version future
-   de <productname>PostgreSQL</productname> pourrait fournir une fonctionnalité
-   supplémentaire pour contrôler l'ordre d'une meilleure façon
-   (<literal>xmlagg(expr ORDER BY expr, expr, ...)</literal>).
+   portable vers d'autres systèmes de bases de données.
   </para>
 
   <para>
@@ -10828,16 +10935,17 @@
   </para>
 
   <para>
-   Notez que <function>première_valeur</function>,
-   <function>dernière_valeur</function> et <function>nieme_valeur</function>
+   Notez que <function>first_value</function>,
+   <function>last_value</function> et <function>nth_value</function>
    considèrent seulement les lignes à l'intérieur du <quote>frame window</quote>
    qui contient par défaut les lignes du début de la partition jusqu'au dernier
-   pair de la ligne en cours. Cela risque de données des résultats inintéressants
-   pour <function>nieme_valeur</function> et tout particulièrement
-   <function>derniere_valeur</function>. Vous pouvez redéfinir le frame comme
-   étant la partition complète en ajoutant <literal>ROWS BETWEEN UNBOUNDED
-   PRECEDING AND UNBOUNDED FOLLOWING</literal> à la clause <literal>OVER</literal>.
-   Voir <xref linkend="syntax-window-functions"/> pour plus d'informations.
+   pair de la ligne en cours. This is
+   likely to give unhelpful results for <function>last_value</function> and
+   sometimes also <function>nth_value</function>.  You can redefine the frame by
+   adding a suitable frame specification (<literal>RANGE</literal> or
+   <literal>ROWS</literal>) to the <literal>OVER</literal> clause.
+   See <xref linkend="syntax-window-functions"/> for more information
+   about frame specifications.
   </para>
 
   <para>
@@ -11791,6 +11899,12 @@
              </entry>
       </row>
 
+      <row>
+       <entry><literal><function>pg_listening_channels</function>()</literal></entry>
+       <entry><type>setof text</type></entry>
+       <entry>channel names that the session is currently listening on</entry>
+      </row>
+
             <row>
               <entry><literal><function>inet_client_addr</function>()</literal></entry>
               <entry><type>inet</type></entry>
@@ -11906,11 +12020,11 @@
         <function>session_user</function> est habituellement l'utilisateur
         qui a initié la connexion à la base de données&nbsp;; mais les
         superutilisateurs peuvent modifier ce paramétrage avec
-	<xref linkend="sql-set-session-authorization" endterm="sql-set-session-authorization-title"/>.
+	<xref linkend="sql-set-session-authorization"/>.
         <function>current_user</function> est l'identifiant de l'utilisateur,
         utilisable pour les vérifications de permissions. Il est habituellement
 	identique à l'utilisateur de la session, mais il peut être modifié avec
-	<xref linkend="sql-set-role" endterm="sql-set-role-title"/>. Il change
+	<xref linkend="sql-set-role"/>. Il change
 	aussi pendant l'exécution des fonctions comprenant l'attribut <literal>SECURITY
         DEFINER</literal>. En langage Unix, l'utilisateur de la session
         est le <quote>real user</quote> (NdT&nbsp;: l'utilisateur réel) et
@@ -11938,6 +12052,16 @@
         </para>
       </note>
   
+   <indexterm>
+    <primary>pg_listening_channels</primary>
+   </indexterm>
+
+   <para>
+    <function>pg_listening_channels</function> returns a set of names of
+    channels that the current session is listening to.  See <xref
+    linkend="sql-listen"/> for more information.
+   </para>
+
   <indexterm>
     <primary>inet_client_addr</primary>
   </indexterm>
@@ -12182,6 +12306,21 @@
        <entry>l'utilisateur actuel a-t-il un droit sur ce serveur distant</entry>
       </row>
       <row>
+       <entry><literal><function>has_sequence_privilege</function>(<parameter>user</parameter>,
+                                  <parameter>sequence</parameter>,
+                                  <parameter>privilege</parameter>)</literal>
+       </entry>
+       <entry><type>boolean</type></entry>
+       <entry>does user have privilege for sequence</entry>
+      </row>
+      <row>
+       <entry><literal><function>has_sequence_privilege</function>(<parameter>sequence</parameter>,
+                                  <parameter>privilege</parameter>)</literal>
+       </entry>
+       <entry><type>boolean</type></entry>
+       <entry>does current user have privilege for sequence</entry>
+      </row>
+      <row>
        <entry><literal><function>has_table_privilege</function>(<parameter>utilisateur</parameter>,
                                   <parameter>table</parameter>,
                                   <parameter>privilège</parameter>)</literal>
@@ -12266,6 +12405,9 @@
     <primary>has_server_privilege</primary>
    </indexterm>
    <indexterm>
+    <primary>has_sequence_privilege</primary>
+   </indexterm>
+   <indexterm>
     <primary>has_table_privilege</primary>
    </indexterm>
    <indexterm>
@@ -12303,6 +12445,16 @@
    </para>
 
    <para>
+    <function>has_sequence_privilege</function> checks whether a user
+    can access a sequence in a particular way.  The possibilities for its
+    arguments are analogous to <function>has_table_privilege</function>.
+    The desired access privilege type must evaluate to one of
+    <literal>USAGE</literal>,
+    <literal>SELECT</literal>, or
+    <literal>UPDATE</literal>.
+   </para>
+
+   <para>
     <function>has_any_column_privilege</function> vérifie si un utilisateur
     peut accéder à une colonne d'une table d'une façon particulière. Les
     possibilités pour que ces arguments correspondent à ceux de
@@ -12718,6 +12870,11 @@
       <row>
        <entry><function>pg_get_triggerdef</function>(<parameter>trigger_oid</parameter>)</entry>
        <entry><type>text</type></entry>
+       <entry>get <command>CREATE [ CONSTRAINT ] TRIGGER</command> command for trigger</entry>
+      </row>
+      <row>
+       <entry><function>pg_get_triggerdef</function>(<parameter>trigger_oid</parameter>, <parameter>pretty_bool</parameter>)</entry>
+       <entry><type>text</type></entry>
        <entry>récupère la commande <command>CREATE [ CONSTRAINT ] TRIGGER</command>
         du déclencheur</entry>
       </row>
@@ -12902,7 +13059,7 @@
    <para>
     Les fonctions affichées dans <xref linkend="functions-info-comment-table"/>
     extraient les commentaires stockées précédemment avec la commande <xref
-    linkend="sql-comment" endterm="sql-comment-title"/>. Une valeur NULL est
+    linkend="sql-comment"/>. Une valeur NULL est
     renvoyée si aucun commentaire ne correspond aux paramètres
     donnés.
    </para>
@@ -13339,7 +13496,8 @@
     <para>
      Les fonctions présentées dans le
      <xref linkend="functions-admin-backup-table"/> aident à l'exécution de
-     sauvegardes à chaud. L'utilisation des trois premières fonctions
+     sauvegardes à chaud.
+     These functions cannot be executed during recovery. L'utilisation des trois premières fonctions
      est réservée aux superutilisateurs.
     </para>
       
@@ -13502,7 +13660,72 @@
     </para>
 
 
+   <indexterm>
+    <primary>pg_is_in_recovery</primary>
+   </indexterm>
+   <indexterm>
+    <primary>pg_last_xlog_receive_location</primary>
+   </indexterm>
+   <indexterm>
+    <primary>pg_last_xlog_replay_location</primary>
+   </indexterm>
+
    <para>
+    The functions shown in <xref
+    linkend="functions-recovery-info-table"/> provide information
+    about the current status of the standby.
+    These functions may be executed during both recovery and in normal running.
+   </para>
+
+   <table id="functions-recovery-info-table">
+    <title>Recovery Information Functions</title>
+    <tgroup cols="3">
+     <thead>
+      <row><entry>Name</entry> <entry>Return Type</entry> <entry>Description</entry>
+      </row>
+     </thead>
+
+     <tbody>
+      <row>
+       <entry>
+        <literal><function>pg_is_in_recovery</function>()</literal>
+        </entry>
+       <entry><type>bool</type></entry>
+       <entry>True if recovery is still in progress.
+       </entry>
+      </row>
+      <row>
+       <entry>
+        <literal><function>pg_last_xlog_receive_location</function>()</literal>
+        </entry>
+       <entry><type>text</type></entry>
+       <entry>Get last transaction log location received and synced to disk during
+        streaming recovery. If streaming recovery is still in progress
+        this will increase monotonically. If streaming recovery has completed
+        then this value will remain static at the value of the last WAL record
+        received and synced to disk during that recovery. When the server has
+        been started without a streaming recovery then the return value will be
+        InvalidXLogRecPtr (0/0).
+       </entry>
+      </row>
+      <row>
+       <entry>
+        <literal><function>pg_last_xlog_replay_location</function>()</literal>
+        </entry>
+       <entry><type>text</type></entry>
+       <entry>Get last transaction log location replayed during recovery.
+        If recovery is still in progress this will increase monotonically.
+        If recovery has completed then this value will remain static at
+        the value of the last WAL record applied during that recovery.
+        When the server has been started normally without a recovery
+        then the return value will be InvalidXLogRecPtr (0/0).
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </table>
+
+   <para>
     Les fonctions présentées dans le <xref linkend="functions-admin-dbsize"/>
     calculent l'utilisation de l'espace disque par les objets de la base de
     données.
@@ -13512,20 +13735,26 @@
     <primary>pg_column_size</primary>
    </indexterm>
    <indexterm>
-    <primary>pg_database_size</primary>
+    <primary>pg_total_relation_size</primary>
    </indexterm>
    <indexterm>
-    <primary>pg_relation_size</primary>
+    <primary>pg_table_size</primary>
    </indexterm>
    <indexterm>
-    <primary>pg_size_pretty</primary>
+    <primary>pg_indexes_size</primary>
    </indexterm>
    <indexterm>
+    <primary>pg_database_size</primary>
+   </indexterm>
+   <indexterm>
     <primary>pg_tablespace_size</primary>
    </indexterm>
    <indexterm>
-    <primary>pg_total_relation_size</primary>
+    <primary>pg_relation_size</primary>
    </indexterm>
+   <indexterm>
+    <primary>pg_size_pretty</primary>
+   </indexterm>
 
    <table id="functions-admin-dbsize">
     <title>Fonctions de calcul de la taille des objets de la base de
@@ -13553,71 +13782,90 @@
       </row>
       <row>
        <entry>
-        <literal><function>pg_database_size</function>(<type>oid</type>)</literal>
+        <literal><function>pg_total_relation_size</function>(<type>regclass</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
-       <entry>Espace disque utilisé par la base de données d'OID indiqué</entry>
+       <entry>
+        Total disk space used by the table with the specified OID or name,
+        including all indexes and <acronym>TOAST</acronym> data
+       </entry>
       </row>
       <row>
        <entry>
-        <literal><function>pg_database_size</function>(<type>name</type>)</literal>
+        <literal><function>pg_table_size</function>(<type>regclass</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
-       <entry>Espace disque utilisé par la base de données de nom indiqué</entry>
+       <entry>
+        Disk space used by the table with the specified OID or name,
+        excluding indexes (but including TOAST, free space map, and visibility
+        map)
+       </entry>
       </row>
       <row>
        <entry>
-        <literal><function>pg_relation_size</function>(<parameter>relation</parameter> <type>regclass</type>, <parameter>fork</parameter> <type>text</type>)</literal>
+        <literal><function>pg_indexes_size</function>(<type>regclass</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
        <entry>
-        Espace disque utilisé par le fork indiqué, <literal>'main'</literal>,
-        <literal>'fsm'</literal> ou <literal>'vm'</literal>, d'une table ou index d'OID ou de nom indiqué.
+        Total disk space used by indexes attached to the table with the
+        specified OID or name
        </entry>
       </row>
       <row>
        <entry>
-        <literal><function>pg_relation_size</function>(<parameter>relation</parameter> <type>regclass</type>)</literal>
+        <literal><function>pg_database_size</function>(<type>oid</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
-       <entry>
-        Raccourci pour <literal>pg_relation_size(..., 'main')</literal>
-       </entry>
+       <entry>Espace disque utilisé par la base de données d'OID indiqué</entry>
       </row>
       <row>
        <entry>
-        <literal><function>pg_size_pretty</function>(<type>bigint</type>)</literal>
+        <literal><function>pg_database_size</function>(<type>name</type>)</literal>
         </entry>
-       <entry><type>text</type></entry>
-       <entry>Convertit une taille en octets en format interprétable par
-       l'utilisateur avec unités</entry>
+       <entry><type>bigint</type></entry>
+       <entry>Espace disque utilisé par la base de données de nom indiqué</entry>
       </row>
       <row>
        <entry>
         <literal><function>pg_tablespace_size</function>(<type>oid</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
-       <entry>Espace disque utilisé par le
-       <foreignphrase>tablespace</foreignphrase> d'OID indiqué</entry>
+       <entry>Disk space used by the tablespace with the specified OID</entry>
       </row>
       <row>
        <entry>
         <literal><function>pg_tablespace_size</function>(<type>name</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
-       <entry>Espace disque utilisé par le
-       <foreignphrase>tablespace</foreignphrase> de nom indiqué</entry>
+       <entry>Disk space used by the tablespace with the specified name</entry>
       </row>
       <row>
        <entry>
-        <literal><function>pg_total_relation_size</function>(<type>regclass</type>)</literal>
+        <literal><function>pg_relation_size</function>(<parameter>relation</parameter> <type>regclass</type>, <parameter>fork</parameter> <type>text</type>)</literal>
         </entry>
        <entry><type>bigint</type></entry>
        <entry>
-        Espace disque total utilisé par la table de cet OID ou nom, incluant
-	les index et les données de la partie TOAST.
+        Espace disque utilisé par le fork indiqué, <literal>'main'</literal>,
+        <literal>'fsm'</literal> ou <literal>'vm'</literal>, d'une table ou index d'OID ou de nom indiqué.
        </entry>
       </row>
+      <row>
+       <entry>
+        <literal><function>pg_relation_size</function>(<parameter>relation</parameter> <type>regclass</type>)</literal>
+        </entry>
+       <entry><type>bigint</type></entry>
+       <entry>
+        Raccourci pour <literal>pg_relation_size(..., 'main')</literal>
+       </entry>
+      </row>
+      <row>
+       <entry>
+        <literal><function>pg_size_pretty</function>(<type>bigint</type>)</literal>
+        </entry>
+       <entry><type>text</type></entry>
+       <entry>Convertit une taille en octets en format interprétable par
+       l'utilisateur avec unités</entry>
+      </row>
      </tbody>
     </tgroup>
    </table>
@@ -13628,6 +13876,26 @@
    </para>
 
    <para>
+    <function>pg_total_relation_size</function> accepts the OID or name of a
+    table or toast table, and returns the total on-disk space used for
+    that table, including all associated indexes.  This function is
+    equivalent to <function>pg_table_size</function>
+    <literal>+</literal> <function>pg_indexes_size</function>.
+   </para>
+
+   <para>
+    <function>pg_table_size</function> accepts the OID or name of a table and
+    returns the disk space needed for that table, exclusive of indexes.
+    (TOAST space, free space map, and visibility map are included.)
+   </para>
+
+   <para>
+    <function>pg_indexes_size</function> accepts the OID or name of a table and
+    returns the total disk space used by all the indexes attached to that
+    table.
+   </para>
+
+   <para>
     <function>pg_database_size</function> et <function>pg_tablespace_size</function> acceptent
     l'OID ou le nom d'une base de données ou d'un
     <foreignphrase>tablespace</foreignphrase> et renvoient l'espace disque total utilisé.
@@ -13635,13 +13903,17 @@
 
    <para>
     <function>pg_relation_size</function> accepte l'OID ou le nom d'une table, d'un
-    index ou d'une table toast et renvoie la taille en octets. Indiquer
+    index ou d'une table toast et renvoie la taille sur disque en octets. Indiquer
     <literal>'main'</literal> ou laisser le second argument renvoit la taille du
     morceau de données principal de la relation. Indiquer
     <literal>'fsm'</literal> renvoit la taille de la carte des espaces libres
     (voir <xref linkend="storage-fsm"/>) associée à cette relation. Indiquer
     <literal>'vm'</literal> renvoit la taille de la carte de visibilité
-    (voir <xref linkend="storage-vm"/>) associée avec la relation.
+    (voir <xref linkend="storage-vm"/>) associée avec la relation. Note
+    that this function shows the size of only one fork;
+    for most purposes it is more convenient to use the higher-level
+    functions <function>pg_total_relation_size</function> or
+    <function>pg_table_size</function>.
    </para>
 
    <para>
@@ -13651,12 +13923,68 @@
    </para>
 
    <para>
-    <function>pg_total_relation_size</function> accepte l'OID ou le nom d'une table
-    ou d'une table toast, et renvoie la taille en octets des données et de
-    tous les index et tables toast associées.
+    The functions shown in <xref linkend="functions-admin-dblocation"/> assist
+    in identifying the specific disk files associated with database objects.
    </para>
 
+   <indexterm>
+    <primary>pg_relation_filenode</primary>
+   </indexterm>
+   <indexterm>
+    <primary>pg_relation_filepath</primary>
+   </indexterm>
+
+   <table id="functions-admin-dblocation">
+    <title>Database Object Location Functions</title>
+    <tgroup cols="3">
+     <thead>
+      <row><entry>Name</entry> <entry>Return Type</entry> <entry>Description</entry>
+      </row>
+     </thead>
+
+     <tbody>
+      <row>
+       <entry>
+        <literal><function>pg_relation_filenode</function>(<parameter>relation</parameter> <type>regclass</type>)</literal>
+        </entry>
+       <entry><type>oid</type></entry>
+       <entry>
+        Filenode number of the relation with the specified OID or name
+       </entry>
+      </row>
+      <row>
+       <entry>
+        <literal><function>pg_relation_filepath</function>(<parameter>relation</parameter> <type>regclass</type>)</literal>
+        </entry>
+       <entry><type>text</type></entry>
+       <entry>
+        File path name of the relation with the specified OID or name
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </table>
+
    <para>
+    <function>pg_relation_filenode</function> accepts the OID or name of a table,
+    index, sequence, or toast table, and returns the <quote>filenode</quote> number
+    currently assigned to it.  The filenode is the base component of the file
+    name(s) used for the relation (see <xref linkend="storage-file-layout"/>
+    for more information).  For most tables the result is the same as
+    <structname>pg_class</structname>.<structfield>relfilenode</structfield>, but for certain
+    system catalogs <structfield>relfilenode</structfield> is zero and this function must
+    be used to get the correct value.  The function returns NULL if passed
+    a relation that does not have storage, such as a view.
+   </para>
+
+   <para>
+    <function>pg_relation_filepath</function> is similar to
+    <function>pg_relation_filenode</function>, but it returns the entire file pathname
+    (relative to the database cluster's data directory <varname>PGDATA</varname>) of
+    the relation.
+   </para>
+
+   <para>
     Les fonctions présentées dans le <xref
     linkend="functions-admin-genfile"/> fournissent un accès natif aux fichiers
     situés sur le serveur. Seuls les fichiers contenus dans le répertoire du

Modified: traduc/trunk/postgresql/geqo.xml
===================================================================
--- traduc/trunk/postgresql/geqo.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/geqo.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -30,7 +30,7 @@
    <date>1997-10-02</date>
   </chapterinfo>
 
-  <title id="geqo-title">Optimiseur génétique de requêtes
+  <title>Optimiseur génétique de requêtes
     (<foreignphrase>Genetic Query Optimizer</foreignphrase>)</title>
 
   <para>
@@ -70,7 +70,6 @@
     devient donc inapproprié pour les requêtes qui joignent un grand nombre de tables.
    </para>
 
-<!-- electrical power grid ? -->
    <para>
     L'Institut de Contrôle Automatique de l'Université des Mines et de 
     Technologie basé à Freiberg, Allemagne, a rencontré des difficultés
@@ -83,15 +82,7 @@
     l'utilisation de l'optimiseur de requête standard.
    </para>
 
-<!-- Supprimé dans la v83
    <para>
-    Les difficultés en terme de performance pour l'exploration des plans de
-    requêtes possibles ont créé la demande du développement d'une nouvelle
-    technique d'optimisation.
-   </para>
--->
-
-   <para>
     La suite du document décrit le codage d'un <firstterm>algorithme
     génétique</firstterm> de résolution de l'ordonnancement des jointures
     qui soit efficace pour les requêtes à jointures nombreuses.
@@ -101,12 +92,9 @@
   <sect1 id="geqo-intro2">
    <title>Algorithmes génétiques</title>
 
-<!-- fitness : ? Je doute qu'il s'agisse de forme physique :-/ 
-     to fit : s'intégrer, entrer, s'encastrer... 
-     adaptation me semble convenir -->
    <para>
     L'algorithme génétique (<acronym>GA</acronym>) est une méthode
-    d'optimisation heuristique qui opère par recherches non déterministes,
+    d'optimisation heuristique qui opère par recherches
     aléatoires. L'ensemble des solutions possibles au problème d'optimisation
     est considéré comme une <firstterm>population</firstterm>
     d'<firstterm>individus</firstterm>. Le degré d'adaptation d'un individu
@@ -285,10 +273,13 @@
    <para>
     Ce processus est intrinsèquement non-déterministe, du fait des choix
     aléatoires effectués lors de la sélection initiale de la population et lors des
-    <quote>mutations</quote> des meilleurs candidats qui s'en suivent. De ce
-    fait, des plans différents peuvent être choisis d'une exécution à l'autre,
-    ce qui conduit à des temps d'exécution et des ordres de colonnes
-    différents.
+    <quote>mutations</quote> des meilleurs candidats qui s'en suivent. To avoid surprising changes
+    of the selected plan, each run of the GEQO algorithm restarts its
+    random number generator with the current <xref linkend="guc-geqo-seed"/>
+    parameter setting.  As long as <varname>geqo_seed</varname> and the other
+    GEQO parameters are kept fixed, the same plan will be generated for a
+    given query (and other planner inputs such as statistics).  To experiment
+    with different search paths, try changing <varname>geqo_seed</varname>.
    </para>
 
   </sect2>

Modified: traduc/trunk/postgresql/gin.xml
===================================================================
--- traduc/trunk/postgresql/gin.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/gin.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -261,8 +261,7 @@
    Si la cohérence des temps de réponse est plus importante que la vitesse de
    mise à jour, l'utilisation de liste d'entrées en attente peut être désactivée
    en désactivant le paramètre de stockage <literal>FASTUPDATE</literal> pour
-   un index GIN. Voir <xref linkend="sql-createindex"
-   endterm="sql-createindex-title"/> pour plus de détails.
+   un index GIN. Voir <xref linkend="sql-createindex"/> pour plus de détails.
   </para>
  </sect2>
 

Modified: traduc/trunk/postgresql/high-availability.xml
===================================================================
--- traduc/trunk/postgresql/high-availability.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/high-availability.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -90,6 +90,9 @@
   aussi disponible.
  </para>
 
+ <sect1 id="different-replication-solutions">
+ <title>Comparison of different solutions</title>
+
  <variablelist>
 
  <varlistentry>
@@ -152,13 +155,13 @@
  </varlistentry>
 
  <varlistentry>
-  <term><foreignphrase>Warm Standby</foreignphrase> en utilisant
+  <term><foreignphrase>Warm and Hot Standby</foreignphrase> en utilisant
     <acronym>PITR</acronym></term>
   <listitem>
 
    <para>
-    Un serveur <foreignphrase>warm standby</foreignphrase> (voir <xref
-    linkend="warm-standby"/>) peut conserver sa cohérence en lisant un flux
+    Les serveurs <foreignphrase>warm et hot standby</foreignphrase> (voir <xref
+    linkend="warm-standby"/>) peuvent conserver leur cohérence en lisant un flux
     d'enregistrements de <acronym>WAL</acronym>. Si le serveur principal
     échoue, le serveur
     <foreignphrase>warm standby</foreignphrase> contient pratiquement toutes
@@ -166,11 +169,17 @@
     serveur maître. Ceci est asynchrone et ne peut se faire que pour le
     serveur de bases complet.
    </para>
+    <para>
+     A PITR standby server can be kept more up-to-date using streaming
+     replication.;  see <xref linkend="streaming-replication"/>.  For
+     warm standby information, see <xref linkend="warm-standby"/>, and
+     for hot standby, see <xref linkend="hot-standby"/>.
+    </para>
   </listitem>
  </varlistentry>
 
  <varlistentry>
-  <term>Réplication maître/esclave</term>
+  <term>Réplication maître/esclave basé sur des triggers</term>
   <listitem>
 
    <para>
@@ -215,12 +224,14 @@
     modifiées). Si cette solution est inacceptable, le
     <foreignphrase>middleware</foreignphrase> ou l'application doivent
     demander ces valeurs à un seul serveur, et les utiliser dans
-    des requêtes d'écriture. De plus, il est impératif que
+    des requêtes d'écriture. Another option is to use this replication
+     option with a traditional master-slave setup, i.e. data modification
+     queries are sent only to the master and are propagated to the
+     slaves via master-slave replication, not by the replication
+     middleware.  Il est impératif que
     toute transaction soit validée ou annulée sur tous les serveurs,
     éventuellement par validation en deux phases (<xref
-    linkend="sql-prepare-transaction"
-    endterm="sql-prepare-transaction-title"/> et <xref
-    linkend="sql-commit-prepared" endterm="sql-commit-prepared-title"/>.
+    linkend="sql-prepare-transaction"/> et <xref linkend="sql-commit-prepared"/>.
     <productname>Pgpool-II</productname> et <productname>Sequoia</productname>
     sont des exemples de ce type de réplication.
    </para>
@@ -281,9 +292,7 @@
    <para>
     <productname>PostgreSQL</productname> n'offre pas ce type de réplication,
     mais la validation en deux phases de <productname>PostgreSQL</productname>
-    (<xref linkend="sql-prepare-transaction"
-    endterm="sql-prepare-transaction-title"/> et <xref
-    linkend="sql-commit-prepared" endterm="sql-commit-prepared-title"/>)
+    (<xref linkend="sql-prepare-transaction"/> et <xref linkend="sql-commit-prepared"/>)
     autorise son intégration dans une application ou un
     <foreignphrase>middleware</foreignphrase>.
    </para>
@@ -322,9 +331,9 @@
      <entry>Bascule par disques partagés (<foreignphrase>Shared Disk
      Failover</foreignphrase>)</entry>
      <entry>Réplication par système de fichiers</entry>
-     <entry>Secours semi-automatique (<foreignphrase>Warm
+     <entry>Secours semi-automatique (<foreignphrase>Hot/Warm
      Standby</foreignphrase>) par <acronym>PITR</acronym></entry>
-     <entry>Réplication maître/esclave</entry>
+     <entry>Réplication maître/esclave basé sur les triggers</entry>
      <entry><foreignphrase>Middleware</foreignphrase> de réplication
        sur instructions</entry>
      <entry>Réplication asynchrone multi-maîtres</entry>
@@ -415,7 +424,7 @@
      <entry>Les esclaves acceptent les requêtes en lecture seule</entry>
      <entry align="center"></entry>
      <entry align="center"></entry>
-     <entry align="center"></entry>
+     <entry align="center">Hot only</entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
      <entry align="center">&bull;</entry>
@@ -492,4 +501,1567 @@
 
  </variablelist>
 
+ </sect1>
+
+ <sect1 id="warm-standby">
+ <title>Log-Shipping Standby Servers</title>
+
+
+  <para>
+   Continuous archiving can be used to create a <firstterm>high
+   availability</firstterm> (HA) cluster configuration with one or more
+   <firstterm>standby servers</firstterm> ready to take over operations if the
+   primary server fails. This capability is widely referred to as
+   <firstterm>warm standby</firstterm> or <firstterm>log shipping</firstterm>.
+  </para>
+
+  <para>
+   The primary and standby server work together to provide this capability,
+   though the servers are only loosely coupled. The primary server operates
+   in continuous archiving mode, while each standby server operates in
+   continuous recovery mode, reading the WAL files from the primary. No
+   changes to the database tables are required to enable this capability,
+   so it offers low administration overhead compared to some other
+   replication solutions. This configuration also has relatively low
+   performance impact on the primary server.
+  </para>
+
+  <para>
+   Directly moving WAL records from one database server to another
+   is typically described as log shipping. <productname>PostgreSQL</productname>
+   implements file-based log shipping, which means that WAL records are
+   transferred one file (WAL segment) at a time. WAL files (16MB) can be
+   shipped easily and cheaply over any distance, whether it be to an
+   adjacent system, another system at the same site, or another system on
+   the far side of the globe. The bandwidth required for this technique
+   varies according to the transaction rate of the primary server.
+   Record-based log shipping is also possible with streaming replication
+   (see <xref linkend="streaming-replication"/>).
+  </para>
+
+  <para>
+   It should be noted that the log shipping is asynchronous, i.e., the WAL
+   records are shipped after transaction commit. As a result, there is a
+   window for data loss should the primary server suffer a catastrophic
+   failure; transactions not yet shipped will be lost.  The size of the
+   data loss window in file-based log shipping can be limited by use of the
+   <varname>archive_timeout</varname> parameter, which can be set as low
+   as a few seconds.  However such a low setting will
+   substantially increase the bandwidth required for file shipping.
+   If you need a window of less than a minute or so, consider using
+   streaming replication (see <xref linkend="streaming-replication"/>).
+  </para>
+
+  <para>
+   Recovery performance is sufficiently good that the standby will
+   typically be only moments away from full
+   availability once it has been activated. As a result, this is called
+   a warm standby configuration which offers high
+   availability. Restoring a server from an archived base backup and
+   rollforward will take considerably longer, so that technique only
+   offers a solution for disaster recovery, not high availability.
+   A standby server can also be used for read-only queries, in which case
+   it is called a Hot Standby server. See <xref linkend="hot-standby"/> for
+   more information.
+  </para>
+
+  <indexterm zone="high-availability">
+   <primary>warm standby</primary>
+  </indexterm>
+
+  <indexterm zone="high-availability">
+   <primary>PITR standby</primary>
+  </indexterm>
+
+  <indexterm zone="high-availability">
+   <primary>standby server</primary>
+  </indexterm>
+
+  <indexterm zone="high-availability">
+   <primary>log shipping</primary>
+  </indexterm>
+
+  <indexterm zone="high-availability">
+   <primary>witness server</primary>
+  </indexterm>
+
+  <indexterm zone="high-availability">
+   <primary>STONITH</primary>
+  </indexterm>
+
+  <sect2 id="standby-planning">
+   <title>Planning</title>
+
+   <para>
+    It is usually wise to create the primary and standby servers
+    so that they are as similar as possible, at least from the
+    perspective of the database server.  In particular, the path names
+    associated with tablespaces will be passed across unmodified, so both
+    primary and standby servers must have the same mount paths for
+    tablespaces if that feature is used.  Keep in mind that if
+    <xref linkend="sql-createtablespace"/>
+    is executed on the primary, any new mount point needed for it must
+    be created on the primary and all standby servers before the command
+    is executed. Hardware need not be exactly the same, but experience shows
+    that maintaining two identical systems is easier than maintaining two
+    dissimilar ones over the lifetime of the application and system.
+    In any case the hardware architecture must be the same &mdash; shipping
+    from, say, a 32-bit to a 64-bit system will not work.
+   </para>
+
+   <para>
+    In general, log shipping between servers running different major
+    <productname>PostgreSQL</productname> release
+    levels is not possible. It is the policy of the PostgreSQL Global
+    Development Group not to make changes to disk formats during minor release
+    upgrades, so it is likely that running different minor release levels
+    on primary and standby servers will work successfully. However, no
+    formal support for that is offered and you are advised to keep primary
+    and standby servers at the same release level as much as possible.
+    When updating to a new minor release, the safest policy is to update
+    the standby servers first &mdash; a new minor release is more likely
+    to be able to read WAL files from a previous minor release than vice
+    versa.
+   </para>
+
+  </sect2>
+
+  <sect2 id="standby-server-operation">
+   <title>Standby Server Operation</title>
+
+   <para>
+    In standby mode, the server continuously applies WAL received from the
+    master server. The standby server can read WAL from a WAL archive
+    (see <varname>restore_command</varname>) or directly from the master
+    over a TCP connection (streaming replication). The standby server will
+    also attempt to restore any WAL found in the standby cluster's
+    <filename>pg_xlog</filename> directory. That typically happens after a server
+    restart, when the standby replays again WAL that was streamed from the
+    master before the restart, but you can also manually copy files to
+    <filename>pg_xlog</filename> at any time to have them replayed.
+   </para>
+
+   <para>
+    At startup, the standby begins by restoring all WAL available in the
+    archive location, calling <varname>restore_command</varname>. Once it
+    reaches the end of WAL available there and <varname>restore_command</varname>
+    fails, it tries to restore any WAL available in the pg_xlog directory.
+    If that fails, and streaming replication has been configured, the
+    standby tries to connect to the primary server and start streaming WAL
+    from the last valid record found in archive or pg_xlog. If that fails
+    or streaming replication is not configured, or if the connection is
+    later disconnected, the standby goes back to step 1 and tries to
+    restore the file from the archive again. This loop of retries from the
+    archive, pg_xlog, and via streaming replication goes on until the server
+    is stopped or failover is triggered by a trigger file.
+   </para>
+
+   <para>
+    Standby mode is exited and the server switches to normal operation,
+    when a trigger file is found (trigger_file). Before failover, it will
+    restore any WAL available in the archive or in pg_xlog, but won't try
+    to connect to the master or wait for files to become available in the
+    archive.
+   </para>
+  </sect2>
+
+  <sect2 id="preparing-master-for-standby">
+   <title>Preparing the Master for Standby Servers</title>
+
+   <para>
+    Set up continuous archiving on the primary to an archive directory
+    accessible from the standby, as described
+    in <xref linkend="continuous-archiving"/>. The archive location should be
+    accessible from the standby even when the master is down, i.e. it should
+    reside on the standby server itself or another trusted server, not on
+    the master server.
+   </para>
+
+   <para>
+    If you want to use streaming replication, set up authentication on the
+    primary server to allow replication connections from the standby
+    server(s); that is, provide a suitable entry or entries in
+    <filename>pg_hba.conf</filename> with the database field set to
+    <literal>replication</literal>.  Also ensure <varname>max_wal_senders</varname> is set
+    to a sufficiently large value in the configuration file of the primary
+    server.
+   </para>
+
+   <para>
+    Take a base backup as described in <xref linkend="backup-base-backup"/>
+    to bootstrap the standby server.
+   </para>
+  </sect2>
+
+  <sect2 id="standby-server-setup">
+   <title>Setting Up a Standby Server</title>
+
+   <para>
+    To set up the standby server, restore the base backup taken from primary
+    server (see <xref linkend="backup-pitr-recovery"/>). Create a recovery
+    command file <filename>recovery.conf</filename> in the standby's cluster data
+    directory, and turn on <varname>standby_mode</varname>. Set
+    <varname>restore_command</varname> to a simple command to copy files from
+    the WAL archive.
+   </para>
+
+   <note>
+     <para>
+     Do not use pg_standby or similar tools with the built-in standby mode
+     described here. <varname>restore_command</varname> should return immediately
+     if the file does not exist; the server will retry the command again if
+     necessary. See <xref linkend="log-shipping-alternative"/>
+     for using tools like pg_standby.
+    </para>
+   </note>
+
+   <para>
+     If you want to use streaming replication, fill in
+     <varname>primary_conninfo</varname> with a libpq connection string, including
+     the host name (or IP address) and any additional details needed to
+     connect to the primary server. If the primary needs a password for
+     authentication, the password needs to be specified in
+     <varname>primary_conninfo</varname> as well.
+   </para>
+
+   <para>
+    You can use <varname>restartpoint_command</varname> to prune the archive of
+    files no longer needed by the standby.
+   </para>
+
+   <para>
+    If you're setting up the standby server for high availability purposes,
+    set up WAL archiving, connections and authentication like the primary
+    server, because the standby server will work as a primary server after
+    failover. You will also need to set <varname>trigger_file</varname> to make
+    it possible to fail over.
+    If you're setting up the standby server for reporting
+    purposes, with no plans to fail over to it, <varname>trigger_file</varname>
+    is not required.
+   </para>
+
+   <para>
+    A simple example of a <filename>recovery.conf</filename> is:
+<programlisting>
+standby_mode = 'on'
+primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'
+restore_command = 'cp /path/to/archive/%f %p'
+trigger_file = '/path/to/trigger_file'
+</programlisting>
+   </para>
+
+   <para>
+    You can have any number of standby servers, but if you use streaming
+    replication, make sure you set <varname>max_wal_senders</varname> high enough in
+    the primary to allow them to be connected simultaneously.
+   </para>
+  </sect2>
+
+  <sect2 id="streaming-replication">
+   <title>Streaming Replication</title>
+
+   <indexterm zone="high-availability">
+    <primary>Streaming Replication</primary>
+   </indexterm>
+
+   <para>
+    Streaming replication allows a standby server to stay more up-to-date
+    than is possible with file-based log shipping. The standby connects
+    to the primary, which streams WAL records to the standby as they're
+    generated, without waiting for the WAL file to be filled.
+   </para>
+
+   <para>
+    Streaming replication is asynchronous, so there is still a small delay
+    between committing a transaction in the primary and for the changes to
+    become visible in the standby. The delay is however much smaller than with
+    file-based log shipping, typically under one second assuming the standby
+    is powerful enough to keep up with the load. With streaming replication,
+    <varname>archive_timeout</varname> is not required to reduce the data loss
+    window.
+   </para>
+
+   <para>
+    Streaming replication relies on file-based continuous archiving for
+    making the base backup and for allowing the standby to catch up if it is
+    disconnected from the primary for long enough for the primary to
+    delete old WAL files still required by the standby. It is possible
+    to use streaming replication without WAL archiving, but if a standby
+    falls behind too much, the primary will delete old WAL files still
+    needed by the standby, and the standby will have to be manually restored
+    from a base backup. You can control how long the primary retains old WAL
+    segments using the <varname>wal_keep_segments</varname> setting.
+   </para>
+
+   <para>
+    To use streaming replication, set up a file-based log-shipping standby
+    server as described in <xref linkend="warm-standby"/>. The step that
+    turns a file-based log-shipping standby into streaming replication
+    standby is setting <varname>primary_conninfo</varname> setting in the
+    <filename>recovery.conf</filename> file to point to the primary server. Set
+    <xref linkend="guc-listen-addresses"/> and authentication options
+    (see <filename>pg_hba.conf</filename>) on the primary so that the standby server
+    can connect to the <literal>replication</literal> pseudo-database on the primary
+    server (see <xref linkend="streaming-replication-authentication"/>).
+   </para>
+
+   <para>
+    On systems that support the keepalive socket option, setting
+    <xref linkend="guc-tcp-keepalives-idle"/>,
+    <xref linkend="guc-tcp-keepalives-interval"/> and
+    <xref linkend="guc-tcp-keepalives-count"/> helps the primary promptly
+    notice a broken connection.
+   </para>
+
+   <para>
+    Set the maximum number of concurrent connections from the standby servers
+    (see <xref linkend="guc-max-wal-senders"/> for details).
+   </para>
+
+   <para>
+    When the standby is started and <varname>primary_conninfo</varname> is set
+    correctly, the standby will connect to the primary after replaying all
+    WAL files available in the archive. If the connection is established
+    successfully, you will see a walreceiver process in the standby, and
+    a corresponding walsender process in the primary.
+   </para>
+
+   <sect3 id="streaming-replication-authentication">
+    <title>Authentication</title>
+    <para>
+     It is very important that the access privileges for replication be set up
+     so that only trusted users can read the WAL stream, because it is
+     easy to extract privileged information from it.  Standby servers must
+     authenticate to the primary as a superuser account.
+     So a role with the <literal>SUPERUSER</literal> and <literal>LOGIN</literal>
+     privileges needs to be created on the primary.
+    </para>
+    <para>
+     Client authentication for replication is controlled by a
+     <filename>pg_hba.conf</filename> record specifying <literal>replication</literal> in the
+     <replaceable>database</replaceable> field. For example, if the standby is running on
+     host IP <literal>192.168.1.100</literal> and the superuser's name for replication
+     is <literal>foo</literal>, the administrator can add the following line to the
+     <filename>pg_hba.conf</filename> file on the primary:
+
+<programlisting>
+# Allow the user "foo" from host 192.168.1.100 to connect to the primary
+# as a replication standby if the user's password is correctly supplied.
+#
+# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
+host    replication     foo             192.168.1.100/32        md5
+</programlisting>
+    </para>
+    <para>
+     The host name and port number of the primary, connection user name,
+     and password are specified in the <filename>recovery.conf</filename> file or
+     the corresponding environment variable on the standby.
+     For example, if the primary is running on host IP <literal>192.168.1.50</literal>,
+     port <literal>5432</literal>, the superuser's name for replication is
+     <literal>foo</literal>, and the password is <literal>foopass</literal>, the administrator
+     can add the following line to the <filename>recovery.conf</filename> file on the
+     standby:
+
+<programlisting>
+# The standby connects to the primary that is running on host 192.168.1.50
+# and port 5432 as the user "foo" whose password is "foopass".
+primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'
+</programlisting>
+    </para>
+   </sect3>
+
+   <sect3 id="streaming-replication-monitoring">
+    <title>Monitoring</title>
+    <para>
+     An important health indicator of streaming replication is the amount
+     of WAL records generated in the primary, but not yet applied in the
+     standby. You can calculate this lag by comparing the current WAL write
+     location on the primary with the last WAL location received by the
+     standby. They can be retrieved using
+     <function>pg_current_xlog_location</function> on the primary and the
+     <function>pg_last_xlog_receive_location</function> on the standby,
+     respectively (see <xref linkend="functions-admin-backup-table"/> and
+     <xref linkend="functions-recovery-info-table"/> for details).
+     The last WAL receive location in the standby is also displayed in the
+     process status of the WAL receiver process, displayed using the
+     <command>ps</command> command (see <xref linkend="monitoring-ps"/> for details).
+    </para>
+   </sect3>
+
+  </sect2>
+  </sect1>
+
+  <sect1 id="warm-standby-failover">
+   <title>Failover</title>
+
+   <para>
+    If the primary server fails then the standby server should begin
+    failover procedures.
+   </para>
+
+   <para>
+    If the standby server fails then no failover need take place. If the
+    standby server can be restarted, even some time later, then the recovery
+    process can also be restarted immediately, taking advantage of
+    restartable recovery. If the standby server cannot be restarted, then a
+    full new standby server instance should be created.
+   </para>
+
+   <para>
+    If the primary server fails and the standby server becomes the
+    new primary, and then the old primary restarts, you must have
+    a mechanism for informing the old primary that it is no longer the primary. This is
+    sometimes known as <acronym>STONITH</acronym> (Shoot The Other Node In The Head), which is
+    necessary to avoid situations where both systems think they are the
+    primary, which will lead to confusion and ultimately data loss.
+   </para>
+
+   <para>
+    Many failover systems use just two systems, the primary and the standby,
+    connected by some kind of heartbeat mechanism to continually verify the
+    connectivity between the two and the viability of the primary. It is
+    also possible to use a third system (called a witness server) to prevent
+    some cases of inappropriate failover, but the additional complexity
+    might not be worthwhile unless it is set up with sufficient care and
+    rigorous testing.
+   </para>
+
+   <para>
+    Once failover to the standby occurs, there is only a
+    single server in operation. This is known as a degenerate state.
+    The former standby is now the primary, but the former primary is down
+    and might stay down.  To return to normal operation, a standby server
+    must be recreated,
+    either on the former primary system when it comes up, or on a third,
+    possibly new, system. Once complete the primary and standby can be
+    considered to have switched roles. Some people choose to use a third
+    server to provide backup for the new primary until the new standby
+    server is recreated,
+    though clearly this complicates the system configuration and
+    operational processes.
+   </para>
+
+   <para>
+    So, switching from primary to standby server can be fast but requires
+    some time to re-prepare the failover cluster. Regular switching from
+    primary to standby is useful, since it allows regular downtime on
+    each system for maintenance. This also serves as a test of the
+    failover mechanism to ensure that it will really work when you need it.
+    Written administration procedures are advised.
+   </para>
+
+   <para>
+    To trigger failover of a log-shipping standby server, create a trigger
+    file with the filename and path specified by the <varname>trigger_file</varname>
+    setting in <filename>recovery.conf</filename>. If <varname>trigger_file</varname> is
+    not given, there is no way to exit recovery in the standby and promote
+    it to a master. That can be useful for e.g reporting servers that are
+    only used to offload read-only queries from the primary, not for high
+    availability purposes.
+   </para>
+  </sect1>
+
+  <sect1 id="log-shipping-alternative">
+   <title>Alternative method for log shipping</title>
+
+   <para>
+    An alternative to the built-in standby mode described in the previous
+    sections is to use a restore_command that polls the archive location.
+    This was the only option available in versions 8.4 and below. In this
+    setup, set <varname>standby_mode</varname> off, because you are implementing
+    the polling required for standby operation yourself. See
+    contrib/pg_standby (<xref linkend="pgstandby"/>) for a reference
+    implementation of this.
+   </para>
+
+   <para>
+    Note that in this mode, the server will apply WAL one file at a
+    time, so if you use the standby server for queries (see Hot Standby),
+    there is a bigger delay between an action in the master and when the
+    action becomes visible in the standby, corresponding the time it takes
+    to fill up the WAL file. archive_timeout can be used to make that delay
+    shorter. Also note that you can't combine streaming replication with
+    this method.
+   </para>
+
+   <para>
+    The operations that occur on both primary and standby servers are
+    normal continuous archiving and recovery tasks. The only point of
+    contact between the two database servers is the archive of WAL files
+    that both share: primary writing to the archive, standby reading from
+    the archive. Care must be taken to ensure that WAL archives from separate
+    primary servers do not become mixed together or confused. The archive
+    need not be large if it is only required for standby operation.
+   </para>
+
+   <para>
+    The magic that makes the two loosely coupled servers work together is
+    simply a <varname>restore_command</varname> used on the standby that,
+    when asked for the next WAL file, waits for it to become available from
+    the primary. The <varname>restore_command</varname> is specified in the
+    <filename>recovery.conf</filename> file on the standby server. Normal recovery
+    processing would request a file from the WAL archive, reporting failure
+    if the file was unavailable.  For standby processing it is normal for
+    the next WAL file to be unavailable, so the standby must wait for
+    it to appear. For files ending in <literal>.backup</literal> or
+    <literal>.history</literal> there is no need to wait, and a non-zero return
+    code must be returned. A waiting <varname>restore_command</varname> can be
+    written as a custom script that loops after polling for the existence of
+    the next WAL file. There must also be some way to trigger failover, which
+    should interrupt the <varname>restore_command</varname>, break the loop and
+    return a file-not-found error to the standby server. This ends recovery
+    and the standby will then come up as a normal server.
+   </para>
+
+   <para>
+    Pseudocode for a suitable <varname>restore_command</varname> is:
+<programlisting>
+triggered = false;
+while (!NextWALFileReady() &amp;&amp; !triggered)
+{
+    sleep(100000L);         /* wait for ~0.1 sec */
+    if (CheckForExternalTrigger())
+        triggered = true;
+}
+if (!triggered)
+        CopyWALFileForRecovery();
+</programlisting>
+   </para>
+
+   <para>
+    A working example of a waiting <varname>restore_command</varname> is provided
+    as a <filename>contrib</filename> module named <application>pg_standby</application>. It
+    should be used as a reference on how to correctly implement the logic
+    described above. It can also be extended as needed to support specific
+    configurations and environments.
+   </para>
+
+   <para>
+    <productname>PostgreSQL</productname> does not provide the system
+    software required to identify a failure on the primary and notify
+    the standby database server.  Many such tools exist and are well
+    integrated with the operating system facilities required for
+    successful failover, such as IP address migration.
+   </para>
+
+   <para>
+    The method for triggering failover is an important part of planning
+    and design. One potential option is the <varname>restore_command</varname>
+    command.  It is executed once for each WAL file, but the process
+    running the <varname>restore_command</varname> is created and dies for
+    each file, so there is no daemon or server process, and
+    signals or a signal handler cannot be used. Therefore, the
+    <varname>restore_command</varname> is not suitable to trigger failover.
+    It is possible to use a simple timeout facility, especially if
+    used in conjunction with a known <varname>archive_timeout</varname>
+    setting on the primary. However, this is somewhat error prone
+    since a network problem or busy primary server might be sufficient
+    to initiate failover. A notification mechanism such as the explicit
+    creation of a trigger file is ideal, if this can be arranged.
+   </para>
+
+   <para>
+    The size of the WAL archive can be minimized by using the <literal>%r</literal>
+    option of the <varname>restore_command</varname>. This option specifies the
+    last archive file name that needs to be kept to allow the recovery to
+    restart correctly. This can be used to truncate the archive once
+    files are no longer required, assuming the archive is writable from the
+    standby server.
+   </para>
+
+  <sect2 id="warm-standby-config">
+   <title>Implementation</title>
+
+   <para>
+    The short procedure for configuring a standby server is as follows. For
+    full details of each step, refer to previous sections as noted.
+    <orderedlist>
+     <listitem>
+      <para>
+       Set up primary and standby systems as nearly identical as
+       possible, including two identical copies of
+       <productname>PostgreSQL</productname> at the same release level.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Set up continuous archiving from the primary to a WAL archive
+       directory on the standby server. Ensure that
+       <xref linkend="guc-archive-mode"/>,
+       <xref linkend="guc-archive-command"/> and
+       <xref linkend="guc-archive-timeout"/>
+       are set appropriately on the primary
+       (see <xref linkend="backup-archiving-wal"/>).
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Make a base backup of the primary server (see <xref
+       linkend="backup-base-backup"/>), and load this data onto the standby.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Begin recovery on the standby server from the local WAL
+       archive, using a <filename>recovery.conf</filename> that specifies a
+       <varname>restore_command</varname> that waits as described
+       previously (see <xref linkend="backup-pitr-recovery"/>).
+      </para>
+     </listitem>
+    </orderedlist>
+   </para>
+
+   <para>
+    Recovery treats the WAL archive as read-only, so once a WAL file has
+    been copied to the standby system it can be copied to tape at the same
+    time as it is being read by the standby database server.
+    Thus, running a standby server for high availability can be performed at
+    the same time as files are stored for longer term disaster recovery
+    purposes.
+   </para>
+
+   <para>
+    For testing purposes, it is possible to run both primary and standby
+    servers on the same system. This does not provide any worthwhile
+    improvement in server robustness, nor would it be described as HA.
+   </para>
+  </sect2>
+
+  <sect2 id="warm-standby-record">
+   <title>Record-based Log Shipping</title>
+
+   <para>
+    <productname>PostgreSQL</productname> directly supports file-based
+    log shipping as described above. It is also possible to implement
+    record-based log shipping, though this requires custom development.
+   </para>
+
+   <para>
+    An external program can call the <function>pg_xlogfile_name_offset()</function>
+    function (see <xref linkend="functions-admin"/>)
+    to find out the file name and the exact byte offset within it of
+    the current end of WAL.  It can then access the WAL file directly
+    and copy the data from the last known end of WAL through the current end
+    over to the standby servers.  With this approach, the window for data
+    loss is the polling cycle time of the copying program, which can be very
+    small, and there is no wasted bandwidth from forcing partially-used
+    segment files to be archived.  Note that the standby servers'
+    <varname>restore_command</varname> scripts can only deal with whole WAL files,
+    so the incrementally copied data is not ordinarily made available to
+    the standby servers.  It is of use only when the primary dies &mdash;
+    then the last partial WAL file is fed to the standby before allowing
+    it to come up.  The correct implementation of this process requires
+    cooperation of the <varname>restore_command</varname> script with the data
+    copying program.
+   </para>
+
+   <para>
+    Starting with <productname>PostgreSQL</productname> version 9.0, you can use
+    streaming replication (see <xref linkend="streaming-replication"/>) to
+    achieve the same benefits with less effort.
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="hot-standby">
+  <title>Hot Standby</title>
+
+  <indexterm zone="high-availability">
+   <primary>Hot Standby</primary>
+  </indexterm>
+
+   <para>
+    Hot Standby is the term used to describe the ability to connect to
+    the server and run read-only queries while the server is in archive
+    recovery. This
+    is useful for both log shipping replication and for restoring a backup
+    to an exact state with great precision.
+    The term Hot Standby also refers to the ability of the server to move
+    from recovery through to normal operation while users continue running
+    queries and/or keep their connections open.
+   </para>
+
+   <para>
+    Running queries in recovery mode is similar to normal query operation,
+    though there are several usage and administrative differences
+    noted below.
+   </para>
+
+  <sect2 id="hot-standby-users">
+   <title>User's Overview</title>
+
+   <para>
+    Users can connect to the database server while it is in recovery
+    mode and perform read-only queries. Read-only access to system
+    catalogs and views will also occur as normal.
+   </para>
+
+   <para>
+    The data on the standby takes some time to arrive from the primary server
+    so there will be a measurable delay between primary and standby. Running the
+    same query nearly simultaneously on both primary and standby might therefore
+    return differing results. We say that data on the standby is
+    <firstterm>eventually consistent</firstterm> with the primary.
+    Queries executed on the standby will be correct with regard to the transactions
+    that had been recovered at the start of the query, or start of first statement
+    in the case of serializable transactions. In comparison with the primary,
+    the standby returns query results that could have been obtained on the primary
+    at some moment in the past.
+   </para>
+
+   <para>
+    When a transaction is started in recovery, the parameter
+    <varname>transaction_read_only</varname> will be forced to be true, regardless of the
+    <varname>default_transaction_read_only</varname> setting in <filename>postgresql.conf</filename>.
+    It can't be manually set to false either. As a result, all transactions
+    started during recovery will be limited to read-only actions. In all
+    other ways, connected sessions will appear identical to sessions
+    initiated during normal processing mode. There are no special commands
+    required to initiate a connection so all interfaces
+    work unchanged. After recovery finishes, the session
+    will allow normal read-write transactions at the start of the next
+    transaction, if these are requested.
+   </para>
+
+   <para>
+    "Read-only" above means no writes to the permanent or temporary database
+    tables.  There are no problems with queries that use transient sort and
+    work files.
+   </para>
+
+   <para>
+    The following actions are allowed:
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       Query access - <command>SELECT</command>, <command>COPY TO</command> including views and
+       <command>SELECT</command> rules
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Cursor commands - <command>DECLARE</command>, <command>FETCH</command>, <command>CLOSE</command>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Parameters - <command>SHOW</command>, <command>SET</command>, <command>RESET</command>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Transaction management commands
+        <itemizedlist>
+         <listitem>
+          <para>
+           <command>BEGIN</command>, <command>END</command>, <command>ABORT</command>, <command>START TRANSACTION</command>
+          </para>
+         </listitem>
+         <listitem>
+          <para>
+           <command>SAVEPOINT</command>, <command>RELEASE</command>, <command>ROLLBACK TO SAVEPOINT</command>
+          </para>
+         </listitem>
+         <listitem>
+          <para>
+           <command>EXCEPTION</command> blocks and other internal subtransactions
+          </para>
+         </listitem>
+        </itemizedlist>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <command>LOCK TABLE</command>, though only when explicitly in one of these modes:
+       <literal>ACCESS SHARE</literal>, <literal>ROW SHARE</literal> or <literal>ROW EXCLUSIVE</literal>.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Plans and resources - <command>PREPARE</command>, <command>EXECUTE</command>,
+       <command>DEALLOCATE</command>, <command>DISCARD</command>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Plugins and extensions - <command>LOAD</command>
+      </para>
+     </listitem>
+    </itemizedlist>
+   </para>
+
+   <para>
+    These actions produce error messages:
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       Data Manipulation Language (DML) - <command>INSERT</command>,
+       <command>UPDATE</command>, <command>DELETE</command>, <command>COPY FROM</command>,
+       <command>TRUNCATE</command>.
+       Note that there are no allowed actions that result in a trigger
+       being executed during recovery.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Data Definition Language (DDL) - <command>CREATE</command>,
+       <command>DROP</command>, <command>ALTER</command>, <command>COMMENT</command>.
+       This also applies to temporary tables also because currently their
+       definition causes writes to catalog tables.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <command>SELECT ... FOR SHARE | UPDATE</command> which cause row locks to be written
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Rules on <command>SELECT</command> statements that generate DML commands.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <command>LOCK</command> that explicitly requests a mode higher than <literal>ROW EXCLUSIVE MODE</literal>.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <command>LOCK</command> in short default form, since it requests <literal>ACCESS EXCLUSIVE MODE</literal>.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Transaction management commands that explicitly set non-read-only state:
+        <itemizedlist>
+         <listitem>
+          <para>
+            <command>BEGIN READ WRITE</command>,
+            <command>START TRANSACTION READ WRITE</command>
+          </para>
+         </listitem>
+         <listitem>
+          <para>
+            <command>SET TRANSACTION READ WRITE</command>,
+            <command>SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE</command>
+          </para>
+         </listitem>
+         <listitem>
+          <para>
+           <command>SET transaction_read_only = off</command>
+          </para>
+         </listitem>
+        </itemizedlist>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Two-phase commit commands - <command>PREPARE TRANSACTION</command>,
+       <command>COMMIT PREPARED</command>, <command>ROLLBACK PREPARED</command>
+       because even read-only transactions need to write WAL in the
+       prepare phase (the first phase of two phase commit).
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Sequence updates - <function>nextval()</function>, <function>setval()</function>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       LISTEN, UNLISTEN, NOTIFY
+      </para>
+     </listitem>
+    </itemizedlist>
+   </para>
+
+   <para>
+    Note that the current behavior of read only transactions when not in
+    recovery is to allow the last two actions, so there are small and
+    subtle differences in behavior between read-only transactions
+    run on a standby and run during normal operation.
+    It is possible that <command>LISTEN</command>, <command>UNLISTEN</command>,
+    and temporary tables might be allowed in a future release.
+   </para>
+
+   <para>
+    If failover or switchover occurs the database will switch to normal
+    processing mode. Sessions will remain connected while the server
+    changes mode. Current transactions will continue, though will remain
+    read-only. After recovery is complete, it will be possible to initiate
+    read-write transactions.
+   </para>
+
+   <para>
+    Users will be able to tell whether their session is read-only by
+    issuing <command>SHOW transaction_read_only</command>.  In addition, a set of
+    functions (<xref linkend="functions-recovery-info-table"/>) allow users to
+    access information about the standby server. These allow you to write
+    programs that are aware of the current state of the database. These
+    can be used to monitor the progress of recovery, or to allow you to
+    write complex programs that restore the database to particular states.
+   </para>
+
+   <para>
+    In recovery, transactions will not be permitted to take any table lock
+    higher than <literal>RowExclusiveLock</literal>. In addition, transactions may never assign
+    a TransactionId and may never write WAL.
+    Any <command>LOCK TABLE</command> command that runs on the standby and requests
+    a specific lock mode higher than <literal>ROW EXCLUSIVE MODE</literal> will be rejected.
+   </para>
+
+   <para>
+    In general queries will not experience lock conflicts from the database
+    changes made by recovery. This is because recovery follows normal
+    concurrency control mechanisms, known as <acronym>MVCC</acronym>. There are
+    some types of change that will cause conflicts, covered in the following
+    section.
+   </para>
+  </sect2>
+
+  <sect2 id="hot-standby-conflict">
+   <title>Handling query conflicts</title>
+
+   <para>
+    The primary and standby nodes are in many ways loosely connected. Actions
+    on the primary will have an effect on the standby. As a result, there is
+    potential for negative interactions or conflicts between them. The easiest
+    conflict to understand is performance: if a huge data load is taking place
+    on the primary then this will generate a similar stream of WAL records on the
+    standby, so standby queries may contend for system resources, such as I/O.
+   </para>
+
+   <para>
+    There are also additional types of conflict that can occur with Hot Standby.
+    These conflicts are <emphasis>hard conflicts</emphasis> in the sense that queries
+    might need to be cancelled and, in some cases, sessions disconnected to resolve them.
+    The user is provided with several ways to handle these
+    conflicts, though it is important to first understand the possible causes
+    of conflicts:
+
+      <itemizedlist>
+       <listitem>
+        <para>
+         Access Exclusive Locks from primary node, including both explicit
+         <command>LOCK</command> commands and various <acronym>DDL</acronym> actions
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Dropping tablespaces on the primary while standby queries are using
+         those tablespaces for temporary work files (<varname>work_mem</varname> overflow)
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Dropping databases on the primary while users are connected to that
+         database on the standby.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         The standby waiting longer than <varname>max_standby_delay</varname>
+         to acquire a buffer cleanup lock.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Early cleanup of data still visible to the current query's snapshot
+        </para>
+       </listitem>
+      </itemizedlist>
+   </para>
+
+   <para>
+    Some WAL redo actions will be for <acronym>DDL</acronym> execution. These DDL
+    actions are replaying changes that have already committed on the primary
+    node, so they must not fail on the standby node. These DDL locks take
+    priority and will automatically *cancel* any read-only transactions that
+    get in their way, after a grace period. This is similar to the possibility
+    of being canceled by the deadlock detector.  But in this case, the standby
+    recovery process always wins, since the replayed actions must not fail.
+    This also ensures that replication does not fall behind while waiting for a
+    query to complete. This prioritization presumes that the standby exists
+    primarily for high availability, and that adjusting the grace period
+    will allow a sufficient guard against unexpected cancellation.
+   </para>
+
+   <para>
+    An example of the above would be an administrator on the primary server
+    running <command>DROP TABLE</command> on a table that is currently being queried
+    on the standby server.
+    Clearly the query cannot continue if <command>DROP TABLE</command>
+    proceeds. If this situation occurred on the primary, the <command>DROP TABLE</command>
+    would wait until the query had finished. When <command>DROP TABLE</command> is
+    run on the primary, the primary doesn't have
+    information about which queries are running on the standby, so it
+    cannot wait for any of the standby queries. The WAL change records come through to the
+    standby while the standby query is still running, causing a conflict.
+   </para>
+
+   <para>
+    The most common reason for conflict between standby queries and WAL redo is
+    "early cleanup". Normally, <productname>PostgreSQL</productname> allows cleanup of old
+    row versions when there are no users who need to see them to ensure correct
+    visibility of data (the heart of MVCC). If there is a standby query that has
+    been running for longer than any query on the primary then it is possible
+    for old row versions to be removed by either a vacuum or HOT. This will
+    then generate WAL records that, if applied, would remove data on the
+    standby that might <emphasis>potentially</emphasis> be required by the standby query.
+    In more technical language, the primary's xmin horizon is later than
+    the standby's xmin horizon, allowing dead rows to be removed.
+   </para>
+
+   <para>
+    Experienced users should note that both row version cleanup and row version
+    freezing will potentially conflict with recovery queries. Running a
+    manual <command>VACUUM FREEZE</command> is likely to cause conflicts even on tables
+    with no updated or deleted rows.
+   </para>
+
+   <para>
+    There are a number of choices for resolving query conflicts.  The default
+    is to wait and hope the query finishes. The server will wait
+    automatically until the lag between primary and standby is at most
+    <xref linkend="guc-max-standby-delay"/> (30 seconds by default).
+    Once that grace period expires,
+    one of the following actions is taken:
+
+      <itemizedlist>
+       <listitem>
+        <para>
+         If the conflict is caused by a lock, the conflicting standby
+         transaction is cancelled immediately. If the transaction is
+         idle-in-transaction, then the session is aborted instead.
+         This behavior might change in the future.
+        </para>
+       </listitem>
+
+       <listitem>
+        <para>
+         If the conflict is caused by cleanup records, the standby query is informed
+         a conflict has occurred and that it must cancel itself to avoid the
+         risk that it silently fails to read relevant data because
+         that data has been removed. (This is regrettably similar to the
+         much feared and iconic error message "snapshot too old"). Some cleanup
+         records only conflict with older queries, while others
+         can affect all queries.
+        </para>
+
+        <para>
+         If cancellation does occur, the query and/or transaction can always
+         be re-executed. The error is dynamic and will not necessarily reoccur
+         if the query is executed again.
+        </para>
+       </listitem>
+      </itemizedlist>
+   </para>
+
+   <para>
+    Keep in mind that <varname>max_standby_delay</varname> is compared to the
+    difference between the standby server's clock and the transaction
+    commit timestamps read from the WAL log.  Thus, the grace period
+    allowed to any one query on the standby is never more than
+    <varname>max_standby_delay</varname>, and could be considerably less if the
+    standby has already fallen behind as a result of waiting for previous
+    queries to complete, or as a result of being unable to keep up with a
+    heavy update load.
+   </para>
+
+   <caution>
+    <para>
+     Be sure that the primary and standby servers' clocks are kept in sync;
+     otherwise the values compared to <varname>max_standby_delay</varname> will be
+     erroneous, possibly leading to undesirable query cancellations.
+     If the clocks are intentionally not in sync, or if there is a large
+     propagation delay from primary to standby, it is advisable to set
+     <varname>max_standby_delay</varname> to -1.  In any case the value should be
+     larger than the largest expected clock skew between primary and standby.
+    </para>
+   </caution>
+
+   <para>
+    Users should be clear that tables that are regularly and heavily updated on the
+    primary server will quickly cause cancellation of longer running queries on
+    the standby. In those cases <varname>max_standby_delay</varname> can be
+    considered similar to setting
+    <varname>statement_timeout</varname>.
+    </para>
+
+   <para>
+    Other remedial actions exist if the number of cancellations is unacceptable.
+    The first option is to connect to the primary server and keep a query active
+    for as long as needed to run queries on the standby. This guarantees that
+    a WAL cleanup record is never generated and query conflicts do not occur,
+    as described above. This could be done using <filename>contrib/dblink</filename>
+    and <function>pg_sleep()</function>, or via other mechanisms. If you do this, you
+    should note that this will delay cleanup of dead rows on the primary by
+    vacuum or HOT, and people might find this undesirable. However, remember
+    that the primary and standby nodes are linked via the WAL, so the cleanup
+    situation is no different from the case where the query ran on the primary
+    node itself.  And you are still getting the benefit of off-loading the
+    execution onto the standby. <varname>max_standby_delay</varname> should
+    not be used in this case because delayed WAL files might already
+    contain entries that invalidate the current snapshot.
+   </para>
+
+   <para>
+    It is also possible to set <varname>vacuum_defer_cleanup_age</varname> on the primary
+    to defer the cleanup of records by autovacuum, <command>VACUUM</command>
+    and HOT. This might allow
+    more time for queries to execute before they are cancelled on the standby,
+    without the need for setting a high <varname>max_standby_delay</varname>.
+   </para>
+
+   <para>
+    Three-way deadlocks are possible between <literal>AccessExclusiveLocks</literal> arriving from
+    the primary, cleanup WAL records that require buffer cleanup locks, and
+    user requests that are waiting behind replayed <literal>AccessExclusiveLocks</literal>. Deadlocks
+    are resolved immediately, should they occur, though they are thought to be
+    rare in practice.
+   </para>
+
+   <para>
+    Dropping tablespaces or databases is discussed in the administrator's
+    section since they are not typical user situations.
+   </para>
+  </sect2>
+
+  <sect2 id="hot-standby-admin">
+   <title>Administrator's Overview</title>
+
+   <para>
+    If <varname>hot_standby</varname> is turned <literal>on</literal> in
+    <filename>postgresql.conf</filename> and there is a <filename>recovery.conf</filename>
+    file present, the server will run in Hot Standby mode.
+    However, it may take some time for Hot Standby connections to be allowed,
+    because the server will not accept connections until it has completed
+    sufficient recovery to provide a consistent state against which queries
+    can run.  During this period,
+    clients that attempt to connect will be refused with an error message.
+    To confirm the server has come up, either loop trying to connect from
+    the application, or look for these messages in the server logs:
+
+<programlisting>
+LOG:  entering standby mode
+
+... then some time later ...
+
+LOG:  consistent recovery state reached
+LOG:  database system is ready to accept read only connections
+</programlisting>
+
+    Consistency information is recorded once per checkpoint on the primary.
+    It is not possible to enable hot standby when reading WAL
+    written during a period when <varname>wal_level</varname> was not set to
+    <literal>hot_standby</literal> on the primary.  Reaching a consistent state can
+    also be delayed in the presence of both of these conditions:
+
+      <itemizedlist>
+       <listitem>
+        <para>
+         A write transaction has more than 64 subtransactions
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Very long-lived write transactions
+        </para>
+       </listitem>
+      </itemizedlist>
+
+    If you are running file-based log shipping ("warm standby"), you might need
+    to wait until the next WAL file arrives, which could be as long as the
+    <varname>archive_timeout</varname> setting on the primary.
+   </para>
+
+   <para>
+    The setting of some parameters on the standby will need reconfiguration
+    if they have been changed on the primary. For these parameters,
+    the value on the standby must
+    be equal to or greater than the value on the primary. If these parameters
+    are not set high enough then the standby will refuse to start.
+    Higher values can then be supplied and the server
+    restarted to begin recovery again.  These parameters are:
+
+      <itemizedlist>
+       <listitem>
+        <para>
+         <varname>max_connections</varname>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <varname>max_prepared_transactions</varname>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <varname>max_locks_per_transaction</varname>
+        </para>
+       </listitem>
+      </itemizedlist>
+   </para>
+
+   <para>
+    It is important that the administrator consider the appropriate setting
+    of <varname>max_standby_delay</varname>,
+    which can be set in <filename>postgresql.conf</filename>.
+    There is no optimal setting, so it should be set according to business
+    priorities. For example if the server is primarily tasked as a High
+    Availability server, then you may wish to lower
+    <varname>max_standby_delay</varname> or even set it to zero, though that is a
+    very aggressive setting. If the standby server is tasked as an additional
+    server for decision support queries then it might be acceptable to set this
+    to a value of many hours.  It is also possible to set
+    <varname>max_standby_delay</varname> to -1 which means wait forever for queries
+    to complete; this will be useful when performing
+    an archive recovery from a backup.
+   </para>
+
+   <para>
+    Transaction status "hint bits" written on the primary are not WAL-logged,
+    so data on the standby will likely re-write the hints again on the standby.
+    Thus, the standby server will still perform disk writes even though
+    all users are read-only; no changes occur to the data values
+    themselves.  Users will still write large sort temporary files and
+    re-generate relcache info files, so no part of the database
+    is truly read-only during hot standby mode.
+    Note also that writes to remote databases will still be possible,
+    even though the transaction is read-only locally.
+   </para>
+
+   <para>
+    The following types of administration commands are not accepted
+    during recovery mode:
+
+      <itemizedlist>
+       <listitem>
+        <para>
+         Data Definition Language (DDL) - e.g. <command>CREATE INDEX</command>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Privilege and Ownership - <command>GRANT</command>, <command>REVOKE</command>,
+         <command>REASSIGN</command>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Maintenance commands - <command>ANALYZE</command>, <command>VACUUM</command>,
+         <command>CLUSTER</command>, <command>REINDEX</command>
+        </para>
+       </listitem>
+      </itemizedlist>
+   </para>
+
+   <para>
+    Again, note that some of these commands are actually allowed during
+    "read only" mode transactions on the primary.
+   </para>
+
+   <para>
+    As a result, you cannot create additional indexes that exist solely
+    on the standby, nor statistics that exist solely on the standby.
+    If these administration commands are needed, they should be executed
+    on the primary, and eventually those changes will propagate to the
+    standby.
+   </para>
+
+   <para>
+    <function>pg_cancel_backend()</function> will work on user backends, but not the
+    Startup process, which performs recovery. <structname>pg_stat_activity</structname> does not
+    show an entry for the Startup process, nor do recovering transactions
+    show as active. As a result, <structname>pg_prepared_xacts</structname> is always empty during
+    recovery. If you wish to resolve in-doubt prepared transactions,
+    view <literal>pg_prepared_xacts</literal> on the primary and issue commands to
+    resolve transactions there.
+   </para>
+
+   <para>
+    <structname>pg_locks</structname> will show locks held by backends,
+    as normal. <structname>pg_locks</structname> also shows
+    a virtual transaction managed by the Startup process that owns all
+    <literal>AccessExclusiveLocks</literal> held by transactions being replayed by recovery.
+    Note that the Startup process does not acquire locks to
+    make database changes, and thus locks other than <literal>AccessExclusiveLocks</literal>
+    do not show in <structname>pg_locks</structname> for the Startup
+    process; they are just presumed to exist.
+   </para>
+
+   <para>
+    The <productname>Nagios</productname> plugin <productname>check_pgsql</productname> will
+    work, because the simple information it checks for exists.
+    The <productname>check_postgres</productname> monitoring script will also work,
+    though some reported values could give different or confusing results.
+    For example, last vacuum time will not be maintained, since no
+    vacuum occurs on the standby.  Vacuums running on the primary
+    do still send their changes to the standby.
+   </para>
+
+   <para>
+    WAL file control commands will not work during recovery,
+    e.g. <function>pg_start_backup</function>, <function>pg_switch_xlog</function> etc.
+   </para>
+
+   <para>
+    Dynamically loadable modules work, including <structname>pg_stat_statements</structname>.
+   </para>
+
+   <para>
+    Advisory locks work normally in recovery, including deadlock detection.
+    Note that advisory locks are never WAL logged, so it is impossible for
+    an advisory lock on either the primary or the standby to conflict with WAL
+    replay. Nor is it possible to acquire an advisory lock on the primary
+    and have it initiate a similar advisory lock on the standby. Advisory
+    locks relate only to the server on which they are acquired.
+   </para>
+
+   <para>
+    Trigger-based replication systems such as <productname>Slony</productname>,
+    <productname>Londiste</productname> and <productname>Bucardo</productname> won't run on the
+    standby at all, though they will run happily on the primary server as
+    long as the changes are not sent to standby servers to be applied.
+    WAL replay is not trigger-based so you cannot relay from the
+    standby to any system that requires additional database writes or
+    relies on the use of triggers.
+   </para>
+
+   <para>
+    New oids cannot be assigned, though some <acronym>UUID</acronym> generators may still
+    work as long as they do not rely on writing new status to the database.
+   </para>
+
+   <para>
+    Currently, temporary table creation is not allowed during read only
+    transactions, so in some cases existing scripts will not run correctly.
+    This restriction might be relaxed in a later release. This is
+    both a SQL Standard compliance issue and a technical issue.
+   </para>
+
+   <para>
+    <command>DROP TABLESPACE</command> can only succeed if the tablespace is empty.
+    Some standby users may be actively using the tablespace via their
+    <varname>temp_tablespaces</varname> parameter. If there are temporary files in the
+    tablespace, all active queries are cancelled to ensure that temporary
+    files are removed, so the tablespace can be removed and WAL replay
+    can continue.
+   </para>
+
+   <para>
+    Running <command>DROP DATABASE</command>, <command>ALTER DATABASE ... SET TABLESPACE</command>,
+    or <command>ALTER DATABASE ... RENAME</command> on primary will generate a log message
+    that will cause all users connected to that database on the standby to be
+    forcibly disconnected. This action occurs immediately, whatever the setting of
+    <varname>max_standby_delay</varname>.
+   </para>
+
+   <para>
+    In normal (non-recovery) mode, if you issue <command>DROP USER</command> or <command>DROP ROLE</command>
+    for a role with login capability while that user is still connected then
+    nothing happens to the connected user - they remain connected. The user cannot
+    reconnect however. This behavior applies in recovery also, so a
+    <command>DROP USER</command> on the primary does not disconnect that user on the standby.
+   </para>
+
+   <para>
+    The statistics collector is active during recovery. All scans, reads, blocks,
+    index usage, etc., will be recorded normally on the standby. Replayed
+    actions will not duplicate their effects on primary, so replaying an
+    insert will not increment the Inserts column of pg_stat_user_tables.
+    The stats file is deleted at the start of recovery, so stats from primary
+    and standby will differ; this is considered a feature, not a bug.
+   </para>
+
+   <para>
+    Autovacuum is not active during recovery, it will start normally at the
+    end of recovery.
+   </para>
+
+   <para>
+    The background writer is active during recovery and will perform
+    restartpoints (similar to checkpoints on the primary) and normal block
+    cleaning activities. This can include updates of the hint bit
+    information stored on the standby server.
+    The <command>CHECKPOINT</command> command is accepted during recovery,
+    though it performs a restartpoint rather than a new checkpoint.
+   </para>
+  </sect2>
+
+  <sect2 id="hot-standby-parameters">
+   <title>Hot Standby Parameter Reference</title>
+
+   <para>
+    Various parameters have been mentioned above in
+    <xref linkend="hot-standby-admin"/>
+    and <xref linkend="hot-standby-conflict"/>.
+   </para>
+
+   <para>
+    On the primary, parameters <xref linkend="guc-wal-level"/> and
+    <xref linkend="guc-vacuum-defer-cleanup-age"/> can be used.
+    <xref linkend="guc-max-standby-delay"/> has no effect if set on the primary.
+   </para>
+
+   <para>
+    On the standby, parameters <xref linkend="guc-hot-standby"/> and
+    <xref linkend="guc-max-standby-delay"/> can be used.
+    <xref linkend="guc-vacuum-defer-cleanup-age"/> has no effect during
+    recovery.
+   </para>
+  </sect2>
+
+  <sect2 id="hot-standby-caveats">
+   <title>Caveats</title>
+
+   <para>
+    There are several limitations of Hot Standby.
+    These can and probably will be fixed in future releases:
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     Operations on hash indexes are not presently WAL-logged, so
+     replay will not update these indexes.  Hash indexes will not be
+     used for query plans during recovery.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     Full knowledge of running transactions is required before snapshots
+     can be taken. Transactions that use large numbers of subtransactions
+     (currently greater than 64) will delay the start of read only
+     connections until the completion of the longest running write transaction.
+     If this situation occurs, explanatory messages will be sent to the server log.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     Valid starting points for standby queries are generated at each
+     checkpoint on the master. If the standby is shut down while the master
+     is in a shutdown state, it might not be possible to re-enter Hot Standby
+     until the primary is started up, so that it generates further starting
+     points in the WAL logs.  This situation isn't a problem in the most
+     common situations where it might happen. Generally, if the primary is
+     shut down and not available anymore, that's likely due to a serious
+     failure that requires the standby being converted to operate as
+     the new primary anyway.  And in situations where the primary is
+     being intentionally taken down, coordinating to make sure the standby
+     becomes the new primary smoothly is also standard procedure.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     At the end of recovery, <literal>AccessExclusiveLocks</literal> held by prepared transactions
+     will require twice the normal number of lock table entries. If you plan
+     on running either a large number of concurrent prepared transactions
+     that normally take <literal>AccessExclusiveLocks</literal>, or you plan on having one
+     large transaction that takes many <literal>AccessExclusiveLocks</literal>, you are
+     advised to select a larger value of <varname>max_locks_per_transaction</varname>,
+     perhaps as much as twice the value of the parameter on
+     the primary server. You need not consider this at all if
+     your setting of <varname>max_prepared_transactions</varname> is <literal>0</literal>.
+    </para>
+   </listitem>
+  </itemizedlist>
+
+   </para>
+  </sect2>
+
+ </sect1>
+
+  <sect1 id="backup-incremental-updated">
+   <title>Incrementally Updated Backups</title>
+
+  <indexterm zone="high-availability">
+   <primary>incrementally updated backups</primary>
+  </indexterm>
+
+  <indexterm zone="high-availability">
+   <primary>change accumulation</primary>
+  </indexterm>
+
+   <para>
+    In a warm standby configuration, it is possible to offload the expense of
+    taking periodic base backups from the primary server; instead base backups
+    can be made by backing
+    up a standby server's files.  This concept is generally known as
+    incrementally updated backups, log change accumulation, or more simply,
+    change accumulation.
+   </para>
+
+   <para>
+    If we take a file system backup of the standby server's data
+    directory while it is processing
+    logs shipped from the primary, we will be able to reload that backup and
+    restart the standby's recovery process from the last restart point.
+    We no longer need to keep WAL files from before the standby's restart point.
+    If recovery is needed, it will be faster to recover from the incrementally
+    updated backup than from the original base backup.
+   </para>
+
+   <para>
+    The procedure for taking a file system backup of the standby server's
+    data directory while it's processing logs shipped from the primary is:
+   <orderedlist>
+    <listitem>
+     <para>
+      Perform the backup, without using <function>pg_start_backup</function> and
+      <function>pg_stop_backup</function>. Note that the <filename>pg_control</filename>
+      file must be backed up <emphasis>first</emphasis>, as in:
+<programlisting>
+cp /var/lib/pgsql/data/global/pg_control /tmp
+cp -r /var/lib/pgsql/data /path/to/backup
+mv /tmp/pg_control /path/to/backup/data/global
+</programlisting>
+      <filename>pg_control</filename> contains the location where WAL replay will
+      begin after restoring from the backup; backing it up first ensures
+      that it points to the last restartpoint when the backup started, not
+      some later restartpoint that happened while files were copied to the
+      backup.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      Make note of the backup ending WAL location by calling the <function>
+      pg_last_xlog_replay_location</function> function at the end of the backup,
+      and keep it with the backup.
+<programlisting>
+psql -c "select pg_last_xlog_replay_location();" > /path/to/backup/end_location
+</programlisting>
+      When recovering from the incrementally updated backup, the server
+      can begin accepting connections and complete the recovery successfully
+      before the database has become consistent. To avoid that, you must
+      ensure the database is consistent before users try to connect to the
+      server and when the recovery ends. You can do that by comparing the
+      progress of the recovery with the stored backup ending WAL location:
+      the server is not consistent until recovery has reached the backup end
+      location. The progress of the recovery can also be observed with the
+      <function>pg_last_xlog_replay_location</function> function, but that required
+      connecting to the server while it might not be consistent yet, so
+      care should be taken with that method.
+     </para>
+     <para>
+     </para>
+    </listitem>
+   </orderedlist>
+   </para>
+
+   <para>
+    Since the standby server is not <quote>live</quote>, it is not possible to
+    use <function>pg_start_backup()</function> and <function>pg_stop_backup()</function>
+    to manage the backup process; it will be up to you to determine how
+    far back you need to keep WAL segment files to have a recoverable
+    backup. That is determined by the last restartpoint when the backup
+    was taken, any WAL older than that can be deleted from the archive
+    once the backup is complete. You can determine the last restartpoint
+    by running <application>pg_controldata</application> on the standby server before
+    taking the backup, or by using the <varname>log_checkpoints</varname> option
+    to print values to the standby's server log.
+   </para>
+  </sect1>
+
 </chapter>

Modified: traduc/trunk/postgresql/hstore.xml
===================================================================
--- traduc/trunk/postgresql/hstore.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/hstore.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -13,57 +13,78 @@
 
  <para>
   Ce module code le type de données <type>hstore</type> pour stocker des
-  ensembles de paires (clé, valeur) à l'intérieur d'un simple champ
+  ensembles de paires clé/valeur à l'intérieur d'une simple valeur
   <productname>PostgreSQL</productname>. Cela peut s'avérer utile dans divers
   cas, comme les lignes à attributs multiples rarement examinées ou les données
-  semi-structurées.
+  semi-structurées. Keys and values are
+  simply text strings.
  </para>
 
  <sect2>
   <title>Représentation externe de <type>hstore</type></title>
 
   <para>
-   La représentation textuelle d'une valeur <type>hstore</type> inclut
+   La représentation textuelle d'une valeur <type>hstore</type>, used for input and output, inclut
    zéro ou plusieurs paires <replaceable>clé</replaceable>
    <literal>=&gt;</literal> <replaceable>valeur</replaceable> séparées par
    des virgules. Par exemple&nbsp;:
 
    <programlisting>
-    k => v
-    foo => bar, baz => whatever
-    "1-a" => "anything at all"
+    k =&gt; v
+    foo =&gt; bar, baz =&gt; whatever
+    "1-a" =&gt; "anything at all"
    </programlisting>
 
-   L'ordre des éléments n'est pas significatif (et peut ne pas
-   être reproduit en sortie). Les espaces entre les éléments ou autour
-   du signe <literal>=&gt;</literal> sont ignorées. Des guillemets
-   doubles sont nécessaires si une clé ou une valeur inclut espace, virgule,
-   <literal>=</literal> ou <literal>&gt;</literal>. Pour inclure un
-   guillemet double ou un antislash dans une clé ou une valeur, on le précède
-   d'un autre antislash. (En fonction de la configuration
-   de <varname>standard_conforming_strings</varname>, il peut s'avérer
-   nécessaire de doubler les antislashs dans les chaînes litérales SQL.)
+   The order of the pairs is not significant (and may not be reproduced on
+   output). Whitespace between pairs or around the <literal>=&gt;</literal> sign is
+   ignored. Double-quote keys and values that include whitespace, commas,
+   <literal>=</literal>s or <literal>&gt;</literal>s. To include a double quote or a
+   backslash in a key or value, escape it with a backslash.
   </para>
 
   <para>
-   Une valeur (mais pas une clé) peut être NULL. Ceci est représenté
-   ainsi&nbsp;:
+   Each key in an <type>hstore</type> is unique. If you declare an <type>hstore</type>
+   with duplicate keys, only one will be stored in the <type>hstore</type> and
+   there is no guarantee as to which will be kept:
 
    <programlisting>
-    key => NULL
+% select 'a=&gt;1,a=&gt;2'::hstore;
+  hstore
+----------
+ "a"=&gt;"1"
    </programlisting>
+  </para>
 
-   Le mot clé <literal>NULL</literal> est insensible à la casse. Là aussi, on
-   utilise les guillemets doubles pour que la chaîne
-   <literal>null</literal> soit traitée comme une valeur ordinaire.
+  <para>
+   A value (but not a key) can be an SQL <literal>NULL</literal>. For example:
+
+   <programlisting>
+    key =&gt; NULL
+   </programlisting>
+
+   The <literal>NULL</literal> keyword is case-insensitive. Double-quote the
+   <literal>NULL</literal> to treat it as the ordinary string "NULL".
   </para>
 
+  <note>
   <para>
-   Actuellement, les guillemets doubles sont utilisés pour entourer les
-   chaînes représentant la clé et la valeur en sortie, même si ce n'est pas
-   strictement nécessaire.
+   Keep in mind that the <type>hstore</type> text format, when used for input,
+   applies <emphasis>before</emphasis> any required quoting or escaping. If you are
+   passing an <type>hstore</type> literal via a parameter, then no additional
+   processing is needed. But if you're passing it as a quoted literal
+   constant, then any single-quote characters and (depending on the setting of
+   the <varname>standard_conforming_strings</varname> configuration parameter)
+   backslash characters need to be escaped correctly. See
+   <xref linkend="sql-syntax-strings"/> for more on the handling of string
+   constants.
   </para>
+  </note>
 
+  <para>
+   On output, double quotes always surround keys and values, even when it's
+   not strictly necessary.
+  </para>
+
  </sect2>
 
  <sect2>
@@ -85,12 +106,19 @@
     <tbody>
      <row>
       <entry><type>hstore</type> <literal>-&gt;</literal> <type>text</type></entry>
-      <entry>obtenir la valeur de la clé (NULL si inexistante)</entry>
+      <entry>obtenir la valeur de la clé (<literal>NULL</literal> si inexistante)</entry>
       <entry><literal>'a=&gt;x, b=&gt;y'::hstore -&gt; 'a'</literal></entry>
       <entry><literal>x</literal></entry>
      </row>
 
      <row>
+      <entry><type>hstore</type> <literal>-&gt;</literal> <type>text[]</type></entry>
+      <entry>get values for keys (<literal>NULL</literal> if not present)</entry>
+      <entry><literal>'a=&gt;x, b=&gt;y, c=&gt;z'::hstore -&gt; ARRAY['c','a']</literal></entry>
+      <entry><literal>{"z","x"}</literal></entry>
+     </row>
+
+     <row>
       <entry><type>text</type> <literal>=&gt;</literal> <type>text</type></entry>
       <entry>créer un <type>hstore</type> à un seul élément</entry>
       <entry><literal>'a' =&gt; 'b'</literal></entry>
@@ -98,8 +126,22 @@
      </row>
 
      <row>
+      <entry><type>text[]</type> <literal>=&gt;</literal> <type>text[]</type></entry>
+      <entry>construct an <type>hstore</type> from separate key and value arrays</entry>
+      <entry><literal>ARRAY['a','b'] =&gt; ARRAY['1','2']</literal></entry>
+      <entry><literal>"a"=&gt;"1","b"=&gt;"2"</literal></entry>
+     </row>
+
+     <row>
+      <entry><type>hstore</type> <literal>=&gt;</literal> <type>text[]</type></entry>
+      <entry>extract a subset of an <type>hstore</type></entry>
+      <entry><literal>'a=&gt;1,b=&gt;2,c=&gt;3'::hstore =&gt; ARRAY['b','c','x']</literal></entry>
+      <entry><literal>"b"=&gt;"2", "c"=&gt;"3"</literal></entry>
+     </row>
+
+     <row>
       <entry><type>hstore</type> <literal>||</literal> <type>hstore</type></entry>
-      <entry>concaténation</entry>
+      <entry>concaténation de <type>hstore</type></entry>
       <entry><literal>'a=&gt;b, c=&gt;d'::hstore || 'c=&gt;x, d=&gt;q'::hstore</literal></entry>
       <entry><literal>"a"=&gt;"b", "c"=&gt;"x", "d"=&gt;"q"</literal></entry>
      </row>
@@ -112,6 +154,20 @@
      </row>
 
      <row>
+      <entry><type>hstore</type> <literal>?&amp;</literal> <type>text[]</type></entry>
+      <entry>does <type>hstore</type> contain all specified keys?</entry>
+      <entry><literal>'a=&gt;1,b=&gt;2'::hstore ?&amp; ARRAY['a','b']</literal></entry>
+      <entry><literal>t</literal></entry>
+     </row>
+
+     <row>
+      <entry><type>hstore</type> <literal>?|</literal> <type>text[]</type></entry>
+      <entry>does <type>hstore</type> contain any of the specified keys?</entry>
+      <entry><literal>'a=&gt;1,b=&gt;2'::hstore ?| ARRAY['b','c']</literal></entry>
+      <entry><literal>t</literal></entry>
+     </row>
+
+     <row>
       <entry><type>hstore</type> <literal>@&gt;</literal> <type>hstore</type></entry>
       <entry>l'opérande gauche contient-il l'opérande droit&nbsp;?</entry>
       <entry><literal>'a=&gt;b, b=&gt;1, c=&gt;NULL'::hstore @&gt; 'b=&gt;1'</literal></entry>
@@ -126,6 +182,48 @@
       <entry><literal>f</literal></entry>
      </row>
 
+     <row>
+      <entry><type>hstore</type> <literal>-</literal> <type>text</type></entry>
+      <entry>delete key from left operand</entry>
+      <entry><literal>'a=&gt;1, b=&gt;2, c=&gt;3'::hstore - 'b'::text</literal></entry>
+      <entry><literal>"a"=&gt;"1", "c"=&gt;"3"</literal></entry>
+     </row>
+
+     <row>
+      <entry><type>hstore</type> <literal>-</literal> <type>text[]</type></entry>
+      <entry>delete keys from left operand</entry>
+      <entry><literal>'a=&gt;1, b=&gt;2, c=&gt;3'::hstore - ARRAY['a','b']</literal></entry>
+      <entry><literal>"c"=&gt;"3"</literal></entry>
+     </row>
+
+     <row>
+      <entry><type>hstore</type> <literal>-</literal> <type>hstore</type></entry>
+      <entry>delete matching pairs from left operand</entry>
+      <entry><literal>'a=&gt;1, b=&gt;2, c=&gt;3'::hstore - 'a=&gt;4, b=&gt;2'::hstore</literal></entry>
+      <entry><literal>"a"=&gt;"1", "c"=&gt;"3"</literal></entry>
+     </row>
+
+     <row>
+      <entry><type>record</type> <literal>#=</literal> <type>hstore</type></entry>
+      <entry>replace fields in <type>record</type> with matching values from <type>hstore</type></entry>
+      <entry>see Examples section</entry>
+      <entry></entry>
+     </row>
+
+     <row>
+      <entry><literal>%%</literal> <type>hstore</type></entry>
+      <entry>convert <type>hstore</type> to array of alternating keys and values</entry>
+      <entry><literal>%% 'a=&gt;foo, b=&gt;bar'::hstore</literal></entry>
+      <entry><literal>{a,foo,b,bar}</literal></entry>
+     </row>
+
+     <row>
+      <entry><literal>%#</literal> <type>hstore</type></entry>
+      <entry>convert <type>hstore</type> to two-dimensional key/value array</entry>
+      <entry><literal>%# 'a=&gt;foo, b=&gt;bar'::hstore</literal></entry>
+      <entry><literal>{{a,foo},{b,bar}}</literal></entry>
+     </row>
+
     </tbody>
    </tgroup>
   </table>
@@ -154,6 +252,23 @@
 
     <tbody>
      <row>
+      <entry><function>hstore(record)</function></entry>
+      <entry><type>hstore</type></entry>
+      <entry>construct an <type>hstore</type> from a record or row</entry>
+      <entry><literal>hstore(ROW(1,2))</literal></entry>
+      <entry><literal>f1=&gt;1,f2=&gt;2</literal></entry>
+     </row>
+
+     <row>
+      <entry><function>hstore(text[])</function></entry>
+      <entry><type>hstore</type></entry>
+      <entry>construct an <type>hstore</type> from an array, which may be either
+       a key/value array, or a two-dimensional array</entry>
+      <entry><literal>hstore(ARRAY['a','1','b','2']) || hstore(ARRAY[['c','3'],['d','4']])</literal></entry>
+      <entry><literal>a=&gt;1, b=&gt;2, c=&gt;3, d=&gt;4</literal></entry>
+     </row>
+
+     <row>
       <entry><function>akeys(hstore)</function></entry>
       <entry><type>text[]</type></entry>
       <entry>récupérer les clés du <type>hstore</type> dans un tableau</entry>
@@ -195,6 +310,23 @@
      </row>
 
      <row>
+      <entry><function>hstore_to_array(hstore)</function></entry>
+      <entry><type>text[]</type></entry>
+      <entry>get <type>hstore</type>'s keys and values as an array of alternating
+       keys and values</entry>
+      <entry><literal>hstore_to_array('a=&gt;1,b=&gt;2')</literal></entry>
+      <entry><literal>{a,1,b,2}</literal></entry>
+     </row>
+
+     <row>
+      <entry><function>hstore_to_matrix(hstore)</function></entry>
+      <entry><type>text[]</type></entry>
+      <entry>get <type>hstore</type>'s keys and values as a two-dimensional array</entry>
+      <entry><literal>hstore_to_matrix('a=&gt;1,b=&gt;2')</literal></entry>
+      <entry><literal>{{a,1},{b,2}}</literal></entry>
+     </row>
+
+     <row>
       <entry><function>each(hstore)</function></entry>
       <entry><type>setof (key text, value text)</type></entry>
       <entry>récupérer les clés et valeurs du <type>hstore</type> dans un
@@ -220,7 +352,7 @@
      <row>
       <entry><function>defined(hstore,text)</function></entry>
       <entry><type>boolean</type></entry>
-      <entry>le <type>hstore</type> contient-il une valeur non NULL pour la
+      <entry>le <type>hstore</type> contient-il une valeur non <literal>NULL</literal> pour la
       clé&nbsp;?</entry>
       <entry><literal>defined('a=&gt;NULL','a')</literal></entry>
       <entry><literal>f</literal></entry>
@@ -229,29 +361,74 @@
      <row>
       <entry><function>delete(hstore,text)</function></entry>
       <entry><type>hstore</type></entry>
-      <entry>supprimer tout élément correspondant à une clé donnée</entry>
+      <entry>supprimer toute paire correspondant à une clé donnée</entry>
       <entry><literal>delete('a=&gt;1,b=&gt;2','b')</literal></entry>
       <entry><literal>"a"=>"1"</literal></entry>
      </row>
 
+     <row>
+      <entry><function>delete(hstore,text[])</function></entry>
+      <entry><type>hstore</type></entry>
+      <entry>delete pairs with matching keys</entry>
+      <entry><literal>delete('a=&gt;1,b=&gt;2,c=&gt;3',ARRAY['a','b'])</literal></entry>
+      <entry><literal>"c"=>"3"</literal></entry>
+     </row>
+
+     <row>
+      <entry><function>delete(hstore,hstore)</function></entry>
+      <entry><type>hstore</type></entry>
+      <entry>delete pairs matching those in the second argument</entry>
+      <entry><literal>delete('a=&gt;1,b=&gt;2','a=&gt;4,b=&gt;2'::hstore)</literal></entry>
+      <entry><literal>"a"=>"1"</literal></entry>
+     </row>
+
+     <row>
+      <entry><function>populate_record(record,hstore)</function></entry>
+      <entry><type>record</type></entry>
+      <entry>replace fields in <type>record</type> with matching values from <type>hstore</type></entry>
+      <entry>see Examples section</entry>
+      <entry></entry>
+     </row>
     </tbody>
    </tgroup>
   </table>
+
+  <note>
+   <para>
+    The function <function>populate_record</function> is actually declared
+    with <type>anyelement</type>, not <type>record</type>, as its first argument,
+    but it will reject non-record types with a runtime error.
+   </para>
+  </note>
  </sect2>
 
  <sect2>
   <title>Index</title>
 
   <para>
-   <type>hstore</type> supporte des index pour les opérateurs
-   <literal>@&gt;</literal> et <literal>?</literal>. Les
-   types d'index GiST et GIN peuvent être utilisés. Par exemple&nbsp;:
+   <type>hstore</type> has GiST and GIN index support for the <literal>@&gt;</literal>,
+   <literal>?</literal>, <literal>?&amp;</literal> and <literal>?|</literal> operators. For example:
   </para>
   <programlisting>
-CREATE INDEX hidx ON testhstore USING GIST(h);
+CREATE INDEX hidx ON testhstore USING GIST (h);
 
-CREATE INDEX hidx ON testhstore USING GIN(h);
+CREATE INDEX hidx ON testhstore USING GIN (h);
   </programlisting>
+
+  <para>
+   <type>hstore</type> also supports <type>btree</type> or <type>hash</type> indexes for
+   the <literal>=</literal> operator. This allows <type>hstore</type> columns to be
+   declared <literal>UNIQUE</literal>, or to be used in <literal>GROUP BY</literal>,
+   <literal>ORDER BY</literal> or <literal>DISTINCT</literal> expressions. The sort ordering
+   for <type>hstore</type> values is not particularly useful, but these indexes
+   may be useful for equivalence lookups. Create indexes for <literal>=</literal>
+   comparisons as follows:
+  </para>
+  <programlisting>
+CREATE INDEX hidx ON testhstore USING BTREE (h);
+
+CREATE INDEX hidx ON testhstore USING HASH (h);
+  </programlisting>
  </sect2>
 
  <sect2>
@@ -262,7 +439,7 @@
    valeur&nbsp;:
   </para>
   <programlisting>
-UPDATE tab SET h = h || ('c' => '3');
+UPDATE tab SET h = h || ('c' =&gt; '3');
   </programlisting>
 
   <para>
@@ -271,6 +448,48 @@
   <programlisting>
 UPDATE tab SET h = delete(h, 'k1');
   </programlisting>
+
+  <para>
+   Convert a <type>record</type> to an <type>hstore</type>:
+  </para>
+  <programlisting>
+CREATE TABLE test (col1 integer, col2 text, col3 text);
+INSERT INTO test VALUES (123, 'foo', 'bar');
+
+SELECT hstore(t) FROM test AS t;
+                   hstore                    
+---------------------------------------------
+ "col1"=&gt;"123", "col2"=&gt;"foo", "col3"=&gt;"bar"
+(1 row)
+  </programlisting>
+
+  <para>
+   Convert an <type>hstore</type> to a predefined <type>record</type> type:
+  </para>
+  <programlisting>
+CREATE TABLE test (col1 integer, col2 text, col3 text);
+
+SELECT * FROM populate_record(null::test,
+                              '"col1"=&gt;"456", "col2"=&gt;"zzz"');
+ col1 | col2 | col3 
+------+------+------
+  456 | zzz  | 
+(1 row)
+  </programlisting>
+
+  <para>
+   Modify an existing record using the values from an <type>hstore</type>:
+  </para>
+  <programlisting>
+CREATE TABLE test (col1 integer, col2 text, col3 text);
+INSERT INTO test VALUES (123, 'foo', 'bar');
+
+SELECT (r).* FROM (SELECT t #= '"col3"=&gt;"baz"' AS r FROM test t) s;
+ col1 | col2 | col3 
+------+------+------
+  123 | foo  | baz
+(1 row)
+  </programlisting>
  </sect2>
 
  <sect2>
@@ -287,7 +506,7 @@
    Exemple simple&nbsp;:
   </para>
   <programlisting>
-SELECT * FROM each('aaa=>bq, b=>NULL, ""=>1');
+SELECT * FROM each('aaa=&gt;bq, b=&gt;NULL, ""=&gt;1');
   </programlisting>
 
   <para>
@@ -321,6 +540,44 @@
  </sect2>
 
  <sect2>
+  <title>Compatibility</title>
+
+  <para>
+   <emphasis>When upgrading from older versions, always load the new
+   version of this module into the database before restoring a dump.
+   Otherwise, many new features will be unavailable.</emphasis>
+  </para>
+
+  <para>
+   As of PostgreSQL 9.0, <type>hstore</type> uses a different internal
+   representation than previous versions. This presents no obstacle for
+   dump/restore upgrades since the text representation (used in the dump) is
+   unchanged.
+  </para>
+
+  <para>
+   In the event of a binary upgrade, upward compatibility is maintained by
+   having the new code recognize old-format data. This will entail a slight
+   performance penalty when processing data that has not yet been modified by
+   the new code. It is possible to force an upgrade of all values in a table
+   column by doing an <literal>UPDATE</literal> statement as follows:
+  </para>
+  <programlisting>
+UPDATE tablename SET hstorecol = hstorecol || '';
+  </programlisting>
+
+  <para>
+   Another way to do it is:
+  <programlisting>
+ALTER TABLE tablename ALTER hstorecol TYPE hstore USING hstorecol || '';
+  </programlisting>
+   The <command>ALTER TABLE</command> method requires an exclusive lock on the table,
+   but does not result in bloating the table with old row versions.
+  </para>
+
+ </sect2>
+
+ <sect2>
   <title>Auteurs</title>
 
   <para>
@@ -332,6 +589,11 @@
    Teodor Sigaev <email>teodor at sigaev.ru</email>, Moscou, Delta-Soft Ltd.,
    Russie
   </para>
+
+  <para>
+   Additional enhancements by Andrew Gierth <email>andrew at tao11.riddles.org.uk</email>,
+   United Kingdom
+  </para>
  </sect2>
 
 </sect1>

Modified: traduc/trunk/postgresql/indexam.xml
===================================================================
--- traduc/trunk/postgresql/indexam.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/indexam.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -144,7 +144,8 @@
    combinaisons arbitraires de valeurs NULL. Une méthode d'accès d'index qui
    initialise <structfield>amindexnulls</structfield> peut aussi initialiser
    <structfield>amsearchnulls</structfield>, indiquant ainsi qu'elle supporte
-   les clauses <literal>IS NULL</literal> dans les conditions de recherche.
+   les clauses <literal>IS NULL</literal> et <literal>IS NOT NULL</literal> dans
+   les conditions de recherche.
   </para>
 
  </sect1>
@@ -180,24 +181,35 @@
           bool *isnull,
           ItemPointer heap_tid,
           Relation heapRelation,
-          bool check_uniqueness);
+          IndexUniqueCheck checkUnique);
 </programlisting>
    Insérer une nouvelle ligne dans un index existant. Les tableaux
    <literal>values</literal> et <literal>isnull</literal> donnent les valeurs
    de clés à indexer.
    <literal>heap_tid</literal> est le TID à indexer. Si la méthode d'accès supporte les
    index uniques (son drapeau <structname>pg_am</structname>.<structfield>amcanunique</structfield>
-   vaut true), alors <literal>check_uniqueness</literal> peut aussi valoir
-   true. Dans ce cas la méthode d'accès doit vérifier qu'il n'y a pas de ligne en
-   conflit&nbsp;; c'est la seule situation où le paramètre
-   <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 la méthode
-   d'indexage qui refuse d'indexer une valeur NULL.)
+   vaut true), alors <literal>checkUnique</literal> indicates the type of uniqueness check to
+   perform.  This varies depending on whether the unique constraint is
+   deferrable; see <xref linkend="index-unique-checks"/> for details.
+   Normally the access method only needs the <literal>heapRelation</literal>
+   parameter when performing uniqueness checking (since then it will have to
+   look into the heap to verify tuple liveness).
   </para>
 
   <para>
+   The function's boolean result value is significant only when
+   <literal>checkUnique</literal> is <literal>UNIQUE_CHECK_PARTIAL</literal>.
+   In this case a TRUE result means the new entry is known unique, whereas
+   FALSE means it might be non-unique (and a deferred uniqueness check must
+   be scheduled).  For other cases a constant FALSE result is recommended.
+  </para>
+
+  <para>
+   Some indexes might not index all tuples.  If the tuple is not to be
+   indexed, <function>aminsert</function> should just return without doing anything.
+  </para>
+
+  <para>
 <programlisting>IndexBulkDeleteResult *
 ambulkdelete (IndexVacuumInfo *info,
               IndexBulkDeleteResult *stats,
@@ -601,9 +613,8 @@
    <command>VACUUM</command> simple). Comme ces types de
    verrous ne sont pas conflictuels, la méthode d'accès est responsable de la
    finesse du verrouillage dont elle a besoin. Un verrou exclusif sur
-   l'intégralité de l'index entier n'est pris qu'à la création de l'index, sa destruction,
-   dans une opération <literal>REINDEX</literal> ou lors d'un <command>VACUUM
-   FULL</command>.
+   l'intégralité de l'index entier n'est pris qu'à la création de l'index, sa destruction
+   ou dans une opération <literal>REINDEX</literal>.
   </para>
 
   <para>
@@ -778,8 +789,78 @@
   </para>
 
   <para>
-   Le principale limitation de ce schéma est l'absence de solution simple 
-   de support des vérifications retardées d'unicité.
+   If the unique constraint is deferrable, there is additional complexity:
+   we need to be able to insert an index entry for a new row, but defer any
+   uniqueness-violation error until end of statement or even later.  To
+   avoid unnecessary repeat searches of the index, the index access method
+   should do a preliminary uniqueness check during the initial insertion.
+   If this shows that there is definitely no conflicting live tuple, we
+   are done.  Otherwise, we schedule a recheck to occur when it is time to
+   enforce the constraint.  If, at the time of the recheck, both the inserted
+   tuple and some other tuple with the same key are live, then the error
+   must be reported.  (Note that for this purpose, <quote>live</quote> actually
+   means <quote>any tuple in the index entry's HOT chain is live</quote>.)
+   To implement this, the <function>aminsert</function> function is passed a
+   <literal>checkUnique</literal> parameter having one of the following values:
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       <literal>UNIQUE_CHECK_NO</literal> indicates that no uniqueness checking
+       should be done (this is not a unique index).
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <literal>UNIQUE_CHECK_YES</literal> indicates that this is a non-deferrable
+       unique index, and the uniqueness check must be done immediately, as
+       described above.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <literal>UNIQUE_CHECK_PARTIAL</literal> indicates that the unique
+       constraint is deferrable. <productname>PostgreSQL</productname>
+       will use this mode to insert each row's index entry.  The access
+       method must allow duplicate entries into the index, and report any
+       potential duplicates by returning FALSE from <function>aminsert</function>.
+       For each row for which FALSE is returned, a deferred recheck will
+       be scheduled.
+      </para>
+
+      <para>
+       The access method must identify any rows which might violate the
+       unique constraint, but it is not an error for it to report false
+       positives. This allows the check to be done without waiting for other
+       transactions to finish; conflicts reported here are not treated as
+       errors and will be rechecked later, by which time they may no longer
+       be conflicts.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <literal>UNIQUE_CHECK_EXISTING</literal> indicates that this is a deferred
+       recheck of a row that was reported as a potential uniqueness violation.
+       Although this is implemented by calling <function>aminsert</function>, the
+       access method must <emphasis>not</emphasis> insert a new index entry in this
+       case.  The index entry is already present.  Rather, the access method
+       must check to see if there is another live index entry.  If so, and
+       if the target row is also still live, report error.
+      </para>
+
+      <para>
+       It is recommended that in a <literal>UNIQUE_CHECK_EXISTING</literal> call,
+       the access method further verify that the target row actually does
+       have an existing entry in the index, and report error if not.  This
+       is a good idea because the index tuple values passed to
+       <function>aminsert</function> will have been recomputed.  If the index
+       definition involves functions that are not really immutable, we
+       might be checking the wrong area of the index.  Checking that the
+       target row is found in the recheck verifies that we are scanning
+       for the same tuple values as were used in the original insertion.
+      </para>
+     </listitem>
+    </itemizedlist>
   </para>
 
  </sect1>

Modified: traduc/trunk/postgresql/indices.xml
===================================================================
--- traduc/trunk/postgresql/indices.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/indices.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 
 <chapter id="indexes">
- <title id="indexes-title">Index</title>
+ <title>Index</title>
 
  <indexterm zone="indexes">
   <primary>index</primary>
@@ -101,7 +101,7 @@
    parallèle de la création d'un index, mais quelques précautions sont à
    prendre. Pour plus d'informations, voir <xref
    linkend="sql-createindex-concurrently"
-   endterm="sql-createindex-concurrently-title"/>.
+  />.
   </para>
 
   <para>
@@ -147,8 +147,8 @@
    Les constructions équivalentes à des combinaisons de ces opérateurs, comme
    <literal>BETWEEN</literal> et <literal>IN</literal>, peuvent aussi être
    implantées avec une recherche par index B-tree. Une condition
-   <literal>IS NULL</literal> sur une colonne indexée peut aussi être utilisé avec
-   un index B-tree.
+   <literal>IS NULL</literal> ou <literal>IS NOT NULL</literal> sur une colonne
+   indexée peut aussi être utilisé avec un index B-tree.
   </para>
 
   <para>
@@ -179,8 +179,7 @@
    Les index hash ne peuvent gérer que des comparaisons d'égalité simple.
    Le planificateur de requêtes considère l'utilisation d'un index hash quand
    une colonne indexée est impliquée dans une comparaison avec l'opérateur
-   <literal>=</literal>. (Mais les index hash ne supportent pas les recherches
-   de type <literal>IS NULL</literal>.) La commande suivante est utilisée pour
+   <literal>=</literal>. La commande suivante est utilisée pour
    créer un index hash&nbsp;:
 <synopsis>CREATE INDEX <replaceable>nom</replaceable> ON <replaceable>table</replaceable> USING hash (<replaceable>column</replaceable>);
 </synopsis>
@@ -1004,7 +1003,7 @@
    de maintenance ou d'optimisation, il est important de s'assurer que les
    index sont effectivement utilisés sur un système en production.
    On vérifie l'utilisation d'un index pour une requête particulière avec
-   la commande <xref linkend="sql-explain" endterm="sql-explain-title"/>.
+   la commande <xref linkend="sql-explain"/>.
    Son utilisation dans notre cas est expliquée dans la
    <xref linkend="using-explain"/>.
    Il est aussi possible de rassembler des statistiques globales
@@ -1024,7 +1023,7 @@
    <listitem>
     <para>
      La première chose à faire est de lancer 
-     <xref linkend="sql-analyze" endterm="sql-analyze-title"/>.
+     <xref linkend="sql-analyze"/>.
      Cette commande collecte les informations sur la distribution des
      valeurs dans la table. Cette information est nécessaire pour estimer
      le nombre de lignes retournées par une requête. L'optimiseur
@@ -1034,8 +1033,8 @@
      d'être inadaptées. Examiner l'utilisation des index par une application
      sans avoir lancé <command>ANALYZE</command> au préalable est, de ce fait,
      peine perdue. Voir <xref linkend="vacuum-for-statistics"
-     endterm="vacuum-for-statistics-title"/> et <xref linkend="autovacuum"
-     endterm="autovacuum-title"/> pour plus d'informations.
+    /> et <xref linkend="autovacuum"
+    /> pour plus d'informations.
     </para>
    </listitem>
 
@@ -1110,7 +1109,7 @@
      Une estimation de sélectivité inadaptée est due à des statistiques 
      insuffisantes. Il peut être possible de les améliorer en 
      optimisant les paramètres de collecte de statistiques.
-     Voir <xref linkend="sql-altertable" endterm="sql-altertable-title"/>.
+     Voir <xref linkend="sql-altertable"/>.
     </para>
 
     <para>

Modified: traduc/trunk/postgresql/information_schema.xml
===================================================================
--- traduc/trunk/postgresql/information_schema.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/information_schema.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -99,19 +99,25 @@
       </para>
      </listitem>
     </varlistentry>
+
+    <varlistentry>
+     <term><type>yes_or_no</type></term>
+     <listitem>
+      <para>
+       A character string domain that contains
+       either <literal>YES</literal> or <literal>NO</literal>.  This
+       is used to represent Boolean (true/false) data in the
+       information schema.  (The information schema was invented
+       before the type <type>boolean</type> was added to the SQL
+       standard, so this convention is necessary to keep the
+       information schema backward compatible.)
+      </para>
+     </listitem>
+    </varlistentry>
    </variablelist>
 
-   Chaque colonne du schéma d'information est de l'un des ces quatre types.
+   Chaque colonne du schéma d'information est de l'un des ces cinq types.
   </para>
-
-  <para>
-   Les données booléennes (true/false) sont représentées dans le schéma
-   d'informations par une colonne de type <type>character_data</type> contenant
-   soit <literal>YES</literal> soit <literal>NO</literal>. (Le schéma
-   d'information a été inventé avant que le type <type>boolean</type> ne soit
-   ajouté au standard SQL. Cette convention est ainsi nécessaire pour conserver
-   la rétro-compatibilité du schéma d'informations).
-  </para>
  </sect1>
 
  <sect1 id="infoschema-information-schema-catalog-name">
@@ -190,7 +196,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>Toujours <literal>YES</literal></entry>
      </row>
     </tbody>
@@ -246,7 +252,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si le bénéficiaire a l'option ADMIN sur le rôle,
        <literal>NO</literal> dans le cas contraire
@@ -320,7 +326,7 @@
 
      <row>
       <entry><literal>is_nullable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si l'attribut peut être NULL,
        <literal>NO</literal> dans le cas contraire.
@@ -354,10 +360,10 @@
       <entry><type>cardinal_number</type></entry>
       <entry>
        Si <literal>data_type</literal> identifie un type caractère,
-       la longueur maximale en octets (bytes) d'un datum (ne
-       concerne pas les utilisateurs de
-       <productname>PostgreSQL</productname>)&nbsp;; NULL pour tous les autres
-       types.
+       la longueur maximale en octets (bytes) d'un datum; null
+       for all other data types.  The maximum octet length depends on
+       the declared character maximum length (see above) and the
+       server encoding.
       </entry>
      </row>
 
@@ -488,7 +494,7 @@
 
      <row>
       <entry><literal>is_derived_reference_attribute</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans <productname>PostgreSQL</productname></entry>
      </row>
     </tbody>
@@ -779,7 +785,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être accordé,
 <literal>NO</literal> sinon</entry>
      </row>
@@ -941,7 +947,7 @@
 
      <row>
       <entry><literal>is_nullable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si la colonne est
        <foreignphrase>NULLable</foreignphrase> (elle admet une absence de
@@ -982,9 +988,10 @@
       <entry><type>cardinal_number</type></entry>
       <entry>
        Si <literal>data_type</literal> identifie un type caractère, la longueur
-       maximale en octets (bytes) d'un datum (ne concerne pas les
-       utilisateurs de <productname>PostgreSQL</productname>)&nbsp;; NULL pour les
-       autres types de données.
+       maximale en octets (bytes) d'un datum; null
+       for all other data types.  The maximum octet length depends on
+       the declared character maximum length (see above) and the
+       server encoding.
       </entry>
      </row>
 
@@ -1191,14 +1198,14 @@
 
      <row>
       <entry><literal>is_self_referencing</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
 
      <row>
       <entry><literal>is_identity</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
       <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -1240,7 +1247,7 @@
 
      <row>
       <entry><literal>identity_cycle</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
       <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -1261,7 +1268,7 @@
 
      <row>
       <entry><literal>is_updatable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si la colonne est actualisable,
        <literal>NO</literal> dans le cas contraire (les colonnes des tables
@@ -1618,7 +1625,7 @@
 
      <row>
       <entry><literal>is_deferrable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si la vérification de la contrainte
       peut être différée,
        <literal>NO</literal> sinon</entry>
@@ -1626,7 +1633,7 @@
 
      <row>
       <entry><literal>initially_deferred</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si la vérification de la contrainte, qui peut
       être différée, est initialement différée, <literal>NO</literal> sinon</entry>
      </row>
@@ -1774,9 +1781,9 @@
       <entry><type>cardinal_number</type></entry>
       <entry>
        Si le domaine a un type caractère, la longueur maximale en octets (bytes)
-       d'un datum (ne concerne normalement pas les utilisateurs de
-       <productname>PostgreSQL</productname>)&nbsp;; NULL pour tous les autres
-       types.
+       d'un datum; null for all other data types.
+       The maximum octet length depends on the declared character
+       maximum length (see above) and the server encoding.
       </entry>
      </row>
 
@@ -2670,14 +2677,14 @@
 
      <row>
       <entry><literal>is_result</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
 
      <row>
       <entry><literal>as_locator</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -2986,7 +2993,11 @@
    La vue <literal>role_column_grants</literal> identifie tous les privilèges
    de colonne octroyés pour lesquels le donneur ou le
    bénéficiaire est un rôle actuellement actif. Plus d'informations sous
-   <literal>column_privileges</literal>.
+   <literal>column_privileges</literal>. The only effective
+   difference between this view
+   and <literal>column_privileges</literal> is that this view omits
+   columns that have been made accessible to the current user by way
+   of a grant to public.
   </para>
 
   <table>
@@ -3055,7 +3066,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être transmis,
        <literal>NO</literal> sinon</entry>
      </row>
@@ -3070,7 +3081,11 @@
   <para>
    La vue <literal>role_routine_grants</literal> identifie tous les privilèges
    de routine octriyés lorsque le donneur ou le bénéficiaire est un rôle actif.
-   Plus d'informations sous <literal>routine_privileges</literal>.
+   Plus d'informations sous <literal>routine_privileges</literal>. The only effective
+   difference between this view
+   and <literal>routine_privileges</literal> is that this view omits
+   functions that have been made accessible to the current user by way
+   of a grant to public.
   </para>
 
   <table>
@@ -3152,7 +3167,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être transmis,
        <literal>NO</literal> sinon</entry>
      </row>
@@ -3167,7 +3182,11 @@
   <para>
    La vue <literal>role_table_grants</literal> identifie tous les privilèges de
    tables octroyés lorsque le donneur ou le bénéficiaire est un rôle actif.
-   Plus d'informations sous <literal>table_privileges</literal>.
+   Plus d'informations sous <literal>table_privileges</literal>. The only effective
+   difference between this view
+   and <literal>table_privileges</literal> is that this view omits
+   tables that have been made accessible to the current user by way of
+   a grant to public.
   </para>
 
   <table>
@@ -3230,14 +3249,14 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être transmis,
 <literal>NO</literal> sinon</entry>
      </row>
 
      <row>
       <entry><literal>with_hierarchy</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -3254,7 +3273,10 @@
    les privilèges d'<literal>USAGE</literal> sur différents types d'objets
    où le donneur ou le receveur des droits est un rôle actuellement activé.
    Plus d'informations sous <literal>usage_privileges</literal>.
-   Dans le futur, cette vue pourrait contenir des informations plus utiles.
+   Dans le futur, cette vue pourrait contenir des informations plus utiles. The only effective difference
+   between this view and <literal>usage_privileges</literal> is that
+   this view omits objects that have been made accessible to the
+   current user by way of a grant to public.
   </para>
 
   <table>
@@ -3320,7 +3342,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être transmis,
        <literal>NO</literal> sinon</entry>
      </row>
@@ -3417,7 +3439,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être transmis,
        <literal>NO</literal> sinon</entry>
      </row>
@@ -3777,7 +3799,7 @@
 
      <row>
       <entry><literal>is_deterministic</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        Si la fonction est déclarée immuable (déterministe dans le
        standard SQL), alors <literal>YES</literal>, sinon
@@ -3800,7 +3822,7 @@
 
      <row>
       <entry><literal>is_null_call</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        Si la fonction renvoie automatiquement NULL si un de ces arguments est
        NULL, alors <literal>YES</literal>, sinon <literal>NO</literal>.
@@ -3816,7 +3838,7 @@
 
      <row>
       <entry><literal>schema_level_routine</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        Toujours <literal>YES</literal>. (L'opposé serait une méthode d'un type
        utilisateur, fonctionnalité non disponible dans
@@ -3833,14 +3855,14 @@
 
      <row>
       <entry><literal>is_user_defined_cast</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
 
      <row>
       <entry><literal>is_implicitly_invocable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -3878,7 +3900,7 @@
 
      <row>
       <entry><literal>as_locator</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -3897,13 +3919,13 @@
 
      <row>
       <entry><literal>new_savepoint_level</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans <productname>PostgreSQL</productname></entry>
      </row>
 
      <row>
       <entry><literal>is_udt_dependent</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans <productname>PostgreSQL</productname></entry>
      </row>
 
@@ -3915,7 +3937,7 @@
 
      <row>
       <entry><literal>result_cast_as_locator</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans <productname>PostgreSQL</productname></entry>
      </row>
 
@@ -4236,7 +4258,7 @@
 
      <row>
       <entry><literal>cycle_option</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>Pas encore implanté</entry>
      </row>
     </tbody>
@@ -4299,7 +4321,7 @@
 
      <row>
       <entry><literal>is_supported</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si la fonctionnalité est complètement supportée
        par la version actuelle de <productname>PostgreSQL</productname>, <literal>NO</literal> sinon
@@ -4532,7 +4554,7 @@
 
      <row>
       <entry><literal>is_supported</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si le paquet est complètement supporté par la
        version actuelle, <literal>NO</literal> sinon
@@ -4593,7 +4615,7 @@
 
      <row>
       <entry><literal>is_supported</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si cette partie est complètement supportée par la
        version actuelle de <productname>PostgreSQL</productname>,
@@ -4823,14 +4845,14 @@
 
      <row>
       <entry><literal>is_deferrable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si la contrainte peut être différée,
        <literal>NO</literal> sinon</entry>
      </row>
 
      <row>
       <entry><literal>initially_deferred</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si la contrainte, qui peut être différée,
        est initialement différée, <literal>NO</literal> sinon</entry>
      </row>
@@ -4908,14 +4930,14 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être transmis,
        <literal>NO</literal> sinon</entry>
      </row>
 
      <row>
       <entry><literal>with_hierarchy</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>S'applique à une fonctionnalité non disponible dans
        <productname>PostgreSQL</productname>.</entry>
      </row>
@@ -4997,27 +5019,34 @@
      <row>
       <entry><literal>user_defined_type_catalog</literal></entry>
       <entry><type>sql_identifier</type></entry>
-      <entry>S'applique à une fonctionnalité non disponible dans
-       <productname>PostgreSQL</productname>.</entry>
+      <entry>
+       If the table is a typed table, the name of the database that
+       contains the underlying data type (always the current
+       database), else null.
+      </entry>
      </row>
 
      <row>
       <entry><literal>user_defined_type_schema</literal></entry>
       <entry><type>sql_identifier</type></entry>
-      <entry>S'applique à une fonctionnalité non disponible dans
-       <productname>PostgreSQL</productname>.</entry>
+      <entry>
+       If the table is a typed table, the name of the schema that
+       contains the underlying data type, else null.
+      </entry>
      </row>
 
      <row>
       <entry><literal>user_defined_type_name</literal></entry>
       <entry><type>sql_identifier</type></entry>
-      <entry>S'applique à une fonctionnalité non disponible dans
-       <productname>PostgreSQL</productname>.</entry>
+      <entry>
+       If the table is a typed table, the name of the underlying data
+       type, else null.
+      </entry>
      </row>
 
      <row>
       <entry><literal>is_insertable_into</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> s'il est possible d'insérer des données dans la
        table, <literal>NO</literal> dans le cas contraire. (Il est toujours
@@ -5028,9 +5057,8 @@
 
      <row>
       <entry><literal>is_typed</literal></entry>
-      <entry><type>character_data</type></entry>
-      <entry>S'applique à une fonctionnalité non disponible dans
-       <productname>PostgreSQL</productname></entry>
+      <entry><type>yes_or_no</type></entry>
+      <entry><literal>YES</literal> if the table is a typed table, <literal>NO</literal> if not</entry>
      </row>
 
      <row>
@@ -5048,17 +5076,20 @@
   </table>
  </sect1>
 
- <sect1 id="infoschema-triggers">
-  <title><literal>triggers</literal></title>
+ <sect1 id="infoschema-triggered-update-columns">
+  <title><literal>triggered_update_columns</literal></title>
 
   <para>
-   La vue <literal>triggers</literal> contient tous les déclencheurs définis
-   dans la base de données courante qu'un rôle actif possède ou pour lesquels
-   il dispose de privilèges différents de SELECT.
+   For triggers in the current database that specify a column list
+   (like <literal>UPDATE OF column1, column2</literal>), the
+   view <literal>triggered_update_columns</literal> identifies these
+   columns.  Triggers that do not specify a column list are not
+   included in this view.  Only those columns are shown that the
+   current user owns or has some non-SELECT privilege on.
   </para>
 
   <table>
-   <title>Colonnes de <literal>triggers</literal></title>
+   <title><literal>triggered_update_columns</literal> Columns</title>
 
    <tgroup cols="3">
     <colspec colnum="1" colwidth="1.1*"/>
@@ -5093,11 +5124,83 @@
      </row>
 
      <row>
+      <entry><literal>event_object_catalog</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>
+       Nom de la base de données qui contient la table sur laquelle est défini le déclencheur
+       (toujours la base de données courante)
+      </entry>
+     </row>
+
+     <row>
+      <entry><literal>event_object_schema</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>Nom du schéma qui contient la table sur laquelle est défini le
+       déclencheur</entry>
+     </row>
+
+     <row>
+      <entry><literal>event_object_table</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>Nom de la table sur laquelle est défini le déclencheur</entry>
+     </row>
+
+     <row>
+      <entry><literal>event_object_column</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>Name of the column that the trigger is defined on</entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </table>
+ </sect1>
+
+ <sect1 id="infoschema-triggers">
+  <title><literal>triggers</literal></title>
+
+  <para>
+   The view <literal>triggers</literal> contains all triggers defined
+   in the current database on tables that the current user owns or has
+   some non-SELECT privilege on.
+  </para>
+
+  <table>
+   <title><literal>triggers</literal> Columns</title>
+
+   <tgroup cols="3">
+    <thead>
+     <row>
+      <entry>Name</entry>
+      <entry>Data Type</entry>
+      <entry>Description</entry>
+     </row>
+    </thead>
+
+    <tbody>
+     <row>
+      <entry><literal>trigger_catalog</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>Name of the database that contains the trigger (always the current database)</entry>
+     </row>
+
+     <row>
+      <entry><literal>trigger_schema</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>Name of the schema that contains the trigger</entry>
+     </row>
+
+     <row>
+      <entry><literal>trigger_name</literal></entry>
+      <entry><type>sql_identifier</type></entry>
+      <entry>Name of the trigger</entry>
+     </row>
+
+     <row>
       <entry><literal>event_manipulation</literal></entry>
       <entry><type>character_data</type></entry>
       <entry>
-       Événement qui a lancé le déclencheur (<literal>INSERT</literal>,
-       <literal>UPDATE</literal> ou <literal>DELETE</literal>)
+       Event that fires the trigger (<literal>INSERT</literal>,
+       <literal>UPDATE</literal>, or <literal>DELETE</literal>)
       </entry>
      </row>
 
@@ -5105,22 +5208,21 @@
       <entry><literal>event_object_catalog</literal></entry>
       <entry><type>sql_identifier</type></entry>
       <entry>
-       Nom de la base de données qui contient la table sur laquelle est défini le déclencheur
-       (toujours la base de données courante)
+       Name of the database that contains the table that the trigger
+       is defined on (always the current database)
       </entry>
      </row>
 
      <row>
       <entry><literal>event_object_schema</literal></entry>
       <entry><type>sql_identifier</type></entry>
-      <entry>Nom du schéma qui contient la table sur laquelle est défini le
-       déclencheur</entry>
+      <entry>Name of the schema that contains the table that the trigger is defined on</entry>
      </row>
 
      <row>
       <entry><literal>event_object_table</literal></entry>
       <entry><type>sql_identifier</type></entry>
-      <entry>Nom de la table sur laquelle est défini le déclencheur</entry>
+      <entry>Name of the table that the trigger is defined on</entry>
      </row>
 
      <row>
@@ -5132,8 +5234,11 @@
      <row>
       <entry><literal>action_condition</literal></entry>
       <entry><type>character_data</type></entry>
-      <entry>S'applique à une fonctionnalité non disponible dans
-       <productname>PostgreSQL</productname>.</entry>
+      <entry>
+       <literal>WHEN</literal> condition of the trigger, null if none
+       (also null if the table is not owned by a currently enabled
+       role)
+      </entry>
      </row>
 
      <row>
@@ -5327,7 +5432,7 @@
 
      <row>
       <entry><literal>is_grantable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry><literal>YES</literal> si le droit peut être donné,
        <literal>NO</literal> dans le cas contraire</entry>
      </row>
@@ -5746,7 +5851,7 @@
 
      <row>
       <entry><literal>is_updatable</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> si la vue est actualisable (autorise
        <command>UPDATE</command> et <command>DELETE</command>),
@@ -5756,13 +5861,31 @@
 
      <row>
       <entry><literal>is_insertable_into</literal></entry>
-      <entry><type>character_data</type></entry>
+      <entry><type>yes_or_no</type></entry>
       <entry>
        <literal>YES</literal> s'il est possible d'insérer des données dans la
        vue (autorise <command>INSERT</command>), <literal>NO</literal> dans le
        cas contraire
       </entry>
      </row>
+
+     <row>
+      <entry><literal>is_trigger_updatable</literal></entry>
+      <entry><type>yes_or_no</type></entry>
+      <entry>Applies to a feature not available in <productname>PostgreSQL</productname></entry>
+     </row>
+
+     <row>
+      <entry><literal>is_trigger_deletable</literal></entry>
+      <entry><type>yes_or_no</type></entry>
+      <entry>Applies to a feature not available in <productname>PostgreSQL</productname></entry>
+     </row>
+
+     <row>
+      <entry><literal>is_trigger_insertable_into</literal></entry>
+      <entry><type>yes_or_no</type></entry>
+      <entry>Applies to a feature not available in <productname>PostgreSQL</productname></entry>
+     </row>
     </tbody>
    </tgroup>
   </table>

Modified: traduc/trunk/postgresql/install-win32.xml
===================================================================
--- traduc/trunk/postgresql/install-win32.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/install-win32.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -15,8 +15,8 @@
 
  <para>
   Il est recommandé que la plupart des utilisateurs téléchargent la distribution
-  binaire pour Windows, disponible sous la forme d'un package
-  <productname>Windows Installer</productname> à partir du site web de
+  binaire pour Windows, disponible sous la forme d'un package d'installation
+  <productname>one-click</productname> à partir du site web de
   <productname>PostgreSQL</productname>. Construire à partir des sources a pour
   seule cible les personnes qui développent <productname>PostgreSQL</productname>
   ou des extensions.
@@ -24,11 +24,24 @@
 
  <para>
   Il existe différentes façons de construire PostgreSQL sur
-  <productname>Windows</productname>. Le système complet peut être construit en
-  utilisant <productname>MinGW</productname> ou
-  <productname>Visual C++ 2005</productname>. Il peut aussi être construit
-  pour les anciennes versions de <productname>Windows</productname> en
-  utilisant <productname>Cygwin</productname>. Enfin, la bibliothèque d'accès
+  <productname>Windows</productname>. The simplest way to build with
+  Microsoft tools is to intall a modern version of the
+  <productname>Microsoft Platform SDK</productname> and use use the included
+  compiler. It is also possible to build with the full
+  <productname>Microsoft Visual C++ 2005 or 2008</productname>. In some cases
+  that requires the installation of the <productname>Platform SDK</productname>
+  in addition to the compiler.
+ </para>
+
+ <para>
+  It is also possible to build PostgreSQL using the GNU compiler tools
+  provided by <productname>MinGW</productname>, or using
+  <productname>Cygwin</productname> for older versions of
+  <productname>Windows</productname>.
+ </para>
+
+ <para>
+  Enfin, la bibliothèque d'accès
   pour les clients (<application>libpq</application>) peut être construit en
   utilisant <productname>Visual C++ 7.1</productname> ou
   <productname>Borland C++</productname> pour la compatibilité avec des
@@ -40,33 +53,70 @@
   <productname>Cygwin</productname> utilise le système habituel de construction,
   voir <xref linkend="installation"/> et les notes spécifiques dans <xref
   linkend="installation-notes-mingw"/> et <xref linkend="installation-notes-cygwin"/>.
+  These builds cannot generate 64-bit binaries.
   <productname>Cygwin</productname> n'est pas recommandé, et devrait
   seulement être utilisé pour les anciennes versions de
   <productname>Windows</productname> où la construction native ne fonctionne
-  pas, comme par exemple <productname>Windows 98</productname>.
+  pas, comme par exemple <productname>Windows 98</productname>. <productname>MinGW</productname> is
+  only recommended if you are building other modules using it. The official
+  binaries are built using <productname>Visual Studio</productname>.
  </para>
 
  <sect1 id="install-win32-full">
-  <title>Construire avec <productname>Visual C++ 2005</productname></title>
+  <title>Construire avec <productname>Visual C++</productname> or the
+  <productname>Platform SDK</productname></title>
 
  <para>
-  Les outils pour construire en utilisant <productname>Visual C++
-  2005</productname> se trouvent dans le répertoire
+  PostgreSQL can be built using the Visual C++ compiler suite from Microsoft.
+  These compilers can be either from <productname>Visual Studio</productname>,
+  <productname>Visual Studio Express</productname> or recent versions of the
+  <productname>Platform SDK</productname>. If you do not already have a
+  <productname>Visual Studio</productname> environment set up, the easiest
+  way us to use the compilers in the <productname>Platform SDK</productname>,
+  which is a free download from Microsoft.
+ </para>
+
+ <para>
+  PostgreSQL supports the compilers from
+  <productname>Visual Studio 2005</productname> and
+  <productname>Visual Studio 2008</productname>. When using the Platform SDK
+  only, or when building for 64-bit Windows, only
+  <productname>Visual Studio 2008</productname> is supported.
+ </para>
+
+ <para>
+  Les outils pour construire en utilisant <productname>Visual C++</productname> se trouvent dans le répertoire
   <filename>src/tools/msvc</filename>. Lors de la construction, assurez-vous
   qu'il n'y a pas d'outils provenant de <productname>MinGW</productname> ou
   <productname>Cygwin</productname> dans le chemin (PATH) de votre
-  environnement. De plus, assurez-vous que vous disposez de tous les outils
-  requis de Visual C++ et que ces derniers sont bien dans le PATH. Cela se
-  fait simplement en lançant <application>Visual Studio Command
-  Prompt</application> et en exécutant les commandes à partir de là. Toutes
-  les commandes doivent être exécutées à partir du répertoire
-  <filename>src\tools\msvc</filename>.
+  environnement. In
+  <productname>Visual Studio</productname>, start the
+  <application>Visual Studio Command Prompt</application>. In the
+  <productname>Platform SDK</productname>, start the
+  <application>CMD shell</application> listed under the SDK on the Start Menu.
+  If you wish to build a 64-bit version, you must use the 64-bit version of
+  the command, and vice versa.
+  All commands should be run from the <filename>src\tools\msvc</filename>
+  directory.
  </para>
 
  <para>
-  Avant de commencer la construction, éditez le fichier
-  <filename>config.pl</filename> pour préciser vos options de configuration,
-  ceci incluant les chemins vers les bibliothèques utilisées. Si vous avez
+  Before you build, you may need to edit the file <filename>config.pl</filename>
+  to reflect any configuration options you want to change, or the paths to
+  any third party libraries to use. The complete configuration is determined
+  by first reading and parsing the file <filename>config_default.pl</filename>,
+  and then apply any changes from <filename>config.pl</filename>. For example,
+  to specify the location of your <productname>Python</productname> installation,
+  put the following in <filename>config.pl</filename>:
+  <screen>
+   $config->{python} = 'c:\python26';
+  </screen>
+  You only need to specify those parameters that are different from what's in
+  <filename>config_default.pl</filename>.
+ </para>
+
+ <para>
+  Si vous avez
   besoin de configurer d'autres variables d'environnement, créez un fichier
   appelé <filename>buildenv.pl</filename> et placez-y les commandes souhaitées.
   Par exemple, pour ajouter le chemin vers bison s'il ne se trouve pas dans
@@ -79,15 +129,29 @@
  <sect2>
   <title>Pré-requis</title>
   <para>
-   PostgreSQL se construit en utilisant soit les versions professionnelles
-   (quelque soit l'édition) soit la version Express gratuite de
-   <productname>Visual Studio 2005</productname>. Les produits supplémentaires
-   suivants sont nécessaires pour construire le package complet. Utilisez le
+   The following additional products are required to build
+   <productname>PostgreSQL</productname>. Utilisez le
    fichier <filename>config.pl</filename> pour indiquer les répertoires où se
    trouvent les bibliothèques.
 
    <variablelist>
     <varlistentry>
+     <term><productname>Microsoft Platform SDK</productname></term>
+     <listitem><para>
+      It is recommended that you upgrade to the latest available version
+      of the <productname>Microsoft Platform SDK</productname>, available
+      for download from <ulink url="http://www.microsoft.com/downloads/"></ulink>.
+     </para>
+     <para>
+      You must always include the
+      <application>Windows Headers and Libraries</application> part of the SDK.
+      If you install the <productname>Platform SDK</productname>
+      including the <application>Visual C++ Compilers</application>,
+      you don't need <productname>Visual Studio</productname> to build.
+     </para></listitem>
+    </varlistentry>
+
+    <varlistentry>
      <term><productname>ActiveState Perl</productname></term>
      <listitem><para>
       ActiveState Perl est requis pour exécuter les scripts de construction.
@@ -98,7 +162,15 @@
       suffisante).
      </para></listitem>
     </varlistentry>
+   </variablelist>
+  </para>
+  <para>
+   The following additional products are not required to get started,
+   but are required to build the complete package. Use the
+   <filename>config.pl</filename> file to specify which directories the libraries
+   are available in.
 
+   <variablelist>
     <varlistentry>
      <term><productname>ActiveState TCL</productname></term>
      <listitem><para>
@@ -115,8 +187,10 @@
       Bison et Flex sont requis pour construire à partir d'une extraction du
       CVS, mais ils ne sont pas nécessaires si vous utilisez une version
       packagée. Notez que seul Bison 1.875 ou les versions 2.2 et ultérieures
-      fonctionneront. Bison et Flex sont téléchargeables sur
-      <ulink url="http://gnuwin32.sourceforge.net"></ulink>.
+      fonctionneront. Also, Flex version 2.5.31 or later is required.
+      Bison can be downloaded from <ulink url="http://gnuwin32.sourceforge.net"></ulink>.
+      Flex can be downloaded from 
+      <ulink url="http://www.postgresql.org/ftp/misc/winflex/"></ulink>.
      </para></listitem>
     </varlistentry>
 
@@ -139,15 +213,6 @@
     </varlistentry>
 
     <varlistentry>
-     <term><productname>Microsoft Platform SDK</productname></term>
-     <listitem><para>
-      Il est recommandé de mettre à jour avec la dernière version disponible
-      du <productname>Microsoft Platform SDK</productname>, disponible au
-      téléchargement sur <ulink url="http://www.microsoft.com/downloads/"></ulink>.
-     </para></listitem>
-    </varlistentry>
-
-    <varlistentry>
      <term><productname>MIT Kerberos</productname></term>
      <listitem><para>
       Requis pour le support de l'authentification Kerberos. MIT Kerberos est
@@ -210,6 +275,31 @@
  </sect2>
 
  <sect2>
+  <title>Special considerations for 64-bit Windows</title>
+
+  <para>
+   PostgreSQL will only build for the x64 architecture on 64-bit Windows, there
+   is no support for Itanium processors.
+  </para>
+
+  <para>
+   Mixing 32- and 64-bit versions in the same build tree is not supported.
+   The build system will automatically detect if it's running in a 32- or
+   64-bit environment, and build PostgreSQL accordingly. For this reason, it
+   is important to start the correct command prompt before building.
+  </para>
+
+  <para>
+   To use a server-side third party library such as <productname>python</productname> or
+   <productname>openssl</productname>, this library <emphasis>must</emphasis> also be
+   64-bit. There is no support for loading a 32-bit library in a 64-bit
+   server. Several of the third party libraries that PostgreSQL supports may
+   only be available in 32-bit versions, in which case they cannot be used with
+   64-bit PostgreSQL.
+  </para>
+ </sect2>
+
+ <sect2>
   <title>Construction</title>
 
   <para>
@@ -281,7 +371,7 @@
    exécutez la commande&nbsp;:
    <screen>
     <userinput>
-     perl install.pl c:\destination\directory
+     install c:\destination\directory
     </userinput>
    </screen>
   </para>
@@ -338,7 +428,7 @@
     <varlistentry>
      <term>OpenJade 1.3.1-2</term>
      <listitem><para>
-      À télécharger à partir de <ulink url="http://sourceforge.net/project/downloading.php?groupname=openjade&amp;filename=openjade-1_3_1-2-bin.zip"></ulink>
+      À télécharger à partir de <ulink url="http://sourceforge.net/projects/openjade/files/openjade/1.3.1/openjade-1_3_1-2-bin.zip/download"></ulink>
       et à décompresser dans le sous-répertoire <filename>openjade-1.3.1</filename>.
      </para></listitem>
     </varlistentry>
@@ -354,7 +444,7 @@
     <varlistentry>
      <term>DocBook DSSSL 1.79</term>
      <listitem><para>
-      À télécharger à partir de <ulink url="http://sourceforge.net/project/downloading.php?groupname=docbook&amp;filename=docbook-dsssl-1.79.zip"></ulink>
+      À télécharger à partir de <ulink url="http://sourceforge.net/projects/docbook/files/docbook-dsssl/1.79/docbook-dsssl-1.79.zip/download"></ulink>
       et à décompresser dans le sous-répertoire <filename>docbook-dsssl-1.79</filename>.
      </para></listitem>
     </varlistentry>
@@ -387,13 +477,14 @@
   <productname>Borland C++</productname></title>
 
  <para>
-  Utiliser <productname>Visual C++ 7.1-8.0</productname> ou
+  Utiliser <productname>Visual C++ 7.1-9.0</productname> ou
   <productname>Borland C++</productname> pour construire libpq est seulement
   recommandé si vous avez besoin d'une version contenant des drapeaux
   débogage/version finale, ou si vous avez besoin d'une bibliothèque statique
   que vous lierez à une application. Pour une utilisation normale,
   <productname>MinGW</productname> et
-  <productname>Visual Studio 2005</productname> sont recommandés.
+  <productname>Visual Studio 2005</productname> or
+  <productname>Platform SDK</productname> method sont recommandés.
  </para>
 
  <para>
@@ -466,7 +557,8 @@
   Habituellement, vous n'avez pas besoin d'installer les fichiers client. Vous
   devez placer le fichier <filename>libpq.dll</filename> dans le même répertoire
   que vos applications. N'installez pas <filename>libpq.dll</filename> dans
-  votre répertoire Windows, System ou System32, sauf en cas d'absolue
+  votre répertoire <filename>Windows</filename>,
+  <filename>System</filename> or <filename>System32</filename>, sauf en cas d'absolue
   nécessité. S'il
   est installé par un programme, ce dernier doit en contrôler au préalable la
   ressource <symbol>VERSIONINFO</symbol> afin d'éviter l'écrasement d'une 

Modified: traduc/trunk/postgresql/installation.xml
===================================================================
--- traduc/trunk/postgresql/installation.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/installation.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -77,7 +77,7 @@
       est l'outil par défaut et est nommé <filename>make</filename>). Pour
       connaître la version utilisée, saisir
 <screen><userinput>gmake --version</userinput></screen>
-      Il est recommandé d'avoir une version postérieure à la version 3.76.1.
+      Il est recommandé d'avoir une version postérieure à la version 3.79.1.
      </para>
     </listitem>
 
@@ -196,11 +196,13 @@
      <para>
       Pour compiler le langage de programmation serveur <application>PL/Python</application>,
       il faut que <productname>Python</productname> soit installé avec les
-      fichiers d'en-tête et le module <application>distutils</application>. Le
-      module <application>distutils</application> est inclus par défaut avec
-      <productname>Python</productname> 1.6 et les versions suivantes&nbsp;; les
-      utilisateurs des versions précédentes de <productname>Python</productname>
-      doivent l'installer.
+      fichiers d'en-tête et le module <application>distutils</application>. The minimum
+      required version is <productname>Python</productname>
+      2.2.  <productname>Python 3</productname> is supported if it's
+      version 3.1 or later; but see
+      <phrase>the <application>PL/Python</application> documentation</phrase>
+      <phrase><xref linkend="plpython-python23"/></phrase>
+      when using Python 3.
      </para>
 
      <para>
@@ -295,7 +297,7 @@
       GNU <application>Flex</application> et <application>Bison</application>
       sont nécessaires pour compiler à partir d'un export du CVS ou lorsque les
       fichiers de définition de l'analyseur ou du « scanner » sont modifiés.
-      Les versions nécessaires sont <application>Flex</application> 2.5.4 ou
+      Les versions nécessaires sont <application>Flex</application> 2.5.31 ou
       ultérieure et <application>Bison</application> 1.875 ou ultérieure.
       Les autres programmes <application>lex</application> et
       <application>yacc</application> ne peuvent pas être utilisés.
@@ -307,7 +309,7 @@
        <primary>perl</primary>
       </indexterm>
 
-      <application>Perl</application> est aussi nécessaire pour construire les
+      <application>Perl</application> 5.8 ou ultérieur est aussi nécessaire pour construire les
       sources du CVS, ou lorsque les fichiers en entrée pour
       n'importe laquelle des étapes de construction qui utilisent des scripts
       Perl ont été modifiés. Sous Windows, <application>Perl</application> est nécessaire dans tous les cas.
@@ -1178,15 +1180,13 @@
       </varlistentry>
 
       <varlistentry>
-       <term><option>--enable-thread-safety</option></term>
+       <term><option>--disable-thread-safety</option></term>
        <listitem>
         <para>
-         Rend les bibliothèques clientes compatibles avec les threads. Ceci
-         permet des threads concurrents dans les programmes
-         <application>libpq</application> et <application>ECPG</application>
-         ce qui leur permet de gérer en toute sûreté leur connexions privées.
-	 Cette option requiert un support adéquat des threads sur votre système
-	 d'exploitation.
+         Disable the thread-safety of client libraries.  This prevents
+         concurrent threads in <application>libpq</application> and
+         <application>ECPG</application> programs from safely controlling
+         their private connection handles.
         </para>
        </listitem>
       </varlistentry>
@@ -1535,7 +1535,7 @@
     </para>
    </step>
 
-  <step>
+  <step id="build">
    <title>Compilation</title>
 
    <para>
@@ -1546,6 +1546,19 @@
     suivant de votre matériel. La dernière ligne affichée devrait être
 <screen>All of PostgreSQL is successfully made. Ready to install.</screen>
    </para>
+
+  <para>
+   If you want to build everything that can be built, including the
+   documentation (HTML and man pages), and the additional modules
+   (<filename>contrib</filename>), type instead:
+<screen>
+<userinput>gmake world</userinput>
+</screen>
+   The last line displayed should be:
+<screen>
+PostgreSQL, contrib and HTML documentation successfully made. Ready to install.
+</screen>
+   </para>
   </step>
 
   <step>
@@ -1596,6 +1609,21 @@
    </para>
 
    <para>
+    To install the documentation (HTML and man pages), enter:
+<screen>
+<userinput>gmake install-docs</userinput>
+</screen>
+   </para>
+
+   <para>
+    If you built the world above, type instead:
+<screen>
+<userinput>gmake install-world</userinput>
+</screen>
+    This also installs the documentation.
+   </para>
+
+   <para>
     Vous pouvez utiliser <literal>gmake install-strip</literal> en lieu et
     place de <literal>gmake install</literal> pour dépouiller l'installation
     des exécutables et des bibliothèques. Cela économise un peu d'espace disque.
@@ -1719,7 +1747,7 @@
     que <filename>/etc/profile</filename> ou <filename>~/.bash_profile</filename>. Certaines
     informations pertinentes au sujet de mises en garde associées à cette
     méthode peuvent être trouvées sur
-    <ulink url="http://www.visi.com/~barr/ldpath.html"></ulink>.
+    <ulink url="http://xahlee.org/UnixResource_dir/_/ldpath.html"></ulink>.
    </para>
 
    <para>
@@ -2249,14 +2277,14 @@
      Par exemple, en exécutant en tant que propriétaire de l'installation
      PostgreSQL&nbsp;:
 <screen>
--bash-3.00$ createlang plpgsql template1
-createlang: language installation failed: ERROR:  could not load library "/opt/dbs/pgsql748/lib/plpgsql.so": A memory address is not in the address space for the process.
+-bash-3.00$ createlang plperl template1
+createlang: language installation failed: ERROR:  could not load library "/opt/dbs/pgsql748/lib/plperl.so": A memory address is not in the address space for the process.
 </screen>
     En l'exécutant en tant que non-propriétaire, mais dans le groupe propriétaire de
     l'installation PostgreSQL&nbsp;:
 <screen>
--bash-3.00$ createlang plpgsql template1
-createlang: language installation failed: ERROR:  could not load library "/opt/dbs/pgsql748/lib/plpgsql.so": Bad address
+-bash-3.00$ createlang plperl template1
+createlang: language installation failed: ERROR:  could not load library "/opt/dbs/pgsql748/lib/plperl.so": Bad address
 </screen>
      On a un autre exemple avec les erreurs 'out of memory' dans les traces
      du serveur PostgreSQL, avec toute allocation de mémoire proche ou supérieure
@@ -2748,7 +2776,7 @@
      La bibliothèque Readline est disponible sur le CD Skunkware, mais
      pas sur le CD Skunkware d'UnixWare 7.1. Si vous avez UnixWare
      7.0.0 ou 7.0.1, vous pouvez installer à partir du CD, sinon
-     essayez <ulink url="ftp://ftp.sco.com/skunkware"></ulink>.
+     essayez <ulink url="http://www.sco.com/skunkware/"></ulink>.
     </para>
 
     <para>
@@ -2817,11 +2845,10 @@
    </sect3>
 
    <sect3>
-    <title><option>--enable-thread-safety</option> et UnixWare</title>
+    <title>Threads avec UnixWare</title>
 
     <para>
-     Si vous utilisez l'option <command>configure</command>
-     <option>--enable-thread-safety</option>, vous <emphasis>devez</emphasis>
+     Pour les threads, vous <emphasis>devez</emphasis>
      utiliser <option>-Kpthread</option> sur <emphasis>tous</emphasis> les
      programmes utilisant libpq. libpq utilise des appels
      <function>pthread_*</function>, qui ne sont disponibles qu'avec l'option

Modified: traduc/trunk/postgresql/intro.xml
===================================================================
--- traduc/trunk/postgresql/intro.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/intro.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -88,7 +88,7 @@
   <para>
    <productname>PostgreSQL</productname> est un système de gestion de bases de
    données relationnelles objet (<acronym>ORDBMS</acronym>) fondé sur
-   <ulink url="http://s2k-ftp.CS.Berkeley.EDU:8000/postgres/postgres.html">
+   <ulink url="http://db.cs.berkeley.edu/postgres.html">
    <productname>POSTGRES, Version 4.2</productname></ulink>. Ce dernier a été
    développé à l'université de Californie au département des sciences informatiques de
    Berkeley. POSTGRES est à l'origine de nombreux concepts qui ne seront rendus

Modified: traduc/trunk/postgresql/jdbc.xml
===================================================================
--- traduc/trunk/postgresql/jdbc.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/jdbc.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -2942,8 +2942,7 @@
        <entry>2</entry>
        <entry>Oui</entry>
       
-<entry><literal>org.postgresql.jdbc2.optional.PoolingDataSource</literal></entry
->
+<entry><literal>org.postgresql.jdbc2.optional.PoolingDataSource</literal></entry>
       </row>
  
       <row>

Modified: traduc/trunk/postgresql/keywords.xml
===================================================================
--- traduc/trunk/postgresql/keywords.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/keywords.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -455,7 +455,7 @@
    </row>
    <row>
     <entry><token>BETWEEN</token></entry>
-    <entry>réservé (peut être une fonction ou un type)</entry>
+    <entry>non réservé (ne peut pas être une fonction ou un type)</entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
     <entry>non réservé</entry>
@@ -510,6 +510,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>BLOCKED</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>BOM</token></entry>
     <entry></entry>
     <entry>non réservé</entry>
@@ -910,6 +918,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>COMMENTS</token></entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>COMMIT</token></entry>
     <entry>non réservé</entry>
     <entry>réservé</entry>
@@ -935,7 +951,7 @@
    </row>
    <row>
     <entry><token>CONCURRENTLY</token></entry>
-    <entry>non réservé</entry>
+    <entry>non réservé (can be function or type)</entry>
     <entry></entry>
     <entry></entry>
     <entry></entry>
@@ -1062,6 +1078,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>CONTROL</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>CONVERSION</token></entry>
     <entry>non réservé</entry>
     <entry></entry>
@@ -1326,6 +1350,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>DATALINK</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>DATE</token></entry>
     <entry></entry>
     <entry>réservé</entry>
@@ -1358,6 +1390,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>DB</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>DEALLOCATE</token></entry>
     <entry>non réservé</entry>
     <entry>réservé</entry>
@@ -1606,6 +1646,94 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>DLNEWCOPY</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLPREVIOUSCOPY</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLCOMPLETE</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLCOMPLETEONLY</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLCOMPLETEWRITE</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLPATH</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLPATHONLY</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLPATHWRITE</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLSCHEME</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLURLSERVER</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
+    <entry><token>DLVALUE</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>DO</token></entry>
     <entry>réservé</entry>
     <entry></entry>
@@ -1791,9 +1919,9 @@
    </row>
    <row>
     <entry><token>EXCLUDE</token></entry>
-    <entry></entry>
     <entry>non réservé</entry>
     <entry>non réservé</entry>
+    <entry>non réservé</entry>
     <entry></entry>
     <entry></entry>
    </row>
@@ -1902,6 +2030,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>FILE</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>FILTER</token></entry>
     <entry></entry>
     <entry>réservé</entry>
@@ -1959,9 +2095,9 @@
    </row>
    <row>
     <entry><token>FOLLOWING</token></entry>
-    <entry></entry>
     <entry>non réservé</entry>
     <entry>non réservé</entry>
+    <entry>non réservé</entry>
     <entry></entry>
     <entry></entry>
    </row>
@@ -2038,6 +2174,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>FS</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>FULL</token></entry>
     <entry>réservé (peut être une fonction ou un type)</entry>
     <entry>réservé</entry>
@@ -2054,6 +2198,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>FUNCTIONS</token></entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>FUSION</token></entry>
     <entry></entry>
     <entry>réservé</entry>
@@ -2294,6 +2446,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>IMPORT</token></entry>
+    <entry></entry>
+    <entry>reserved</entry>
+    <entry>reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>IN</token></entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
@@ -2390,6 +2550,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>INLINE</token></entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>INNER</token></entry>
     <entry>réservé (peut être une fonction ou un type)</entry>
     <entry>réservé</entry>
@@ -2470,6 +2638,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>INTEGRITY</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>INTERSECT</token></entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
@@ -2590,14 +2766,6 @@
     <entry></entry>
    </row>
    <row>
-    <entry><token>LANCOMPILER</token></entry>
-    <entry>non réservé</entry>
-    <entry></entry>
-    <entry></entry>
-    <entry></entry>
-    <entry></entry>
-   </row>
-   <row>
     <entry><token>LANGUAGE</token></entry>
     <entry>non réservé</entry>
     <entry>réservé</entry>
@@ -2710,6 +2878,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>LIBRARY</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>LIKE</token></entry>
     <entry>réservé (peut être une fonction ou un type)</entry>
     <entry>réservé</entry>
@@ -2727,11 +2903,19 @@
    </row>
    <row>
     <entry><token>LIMIT</token></entry>
-    <entry>réservé</entry>
+    <entry>reserved</entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry>reserved</entry>
     <entry></entry>
+   </row>
+   <row>
+    <entry><token>LINK</token></entry>
     <entry></entry>
-    <entry>réservé</entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
     <entry></entry>
+    <entry></entry>
    </row>
    <row>
     <entry><token>LISTEN</token></entry>
@@ -3103,10 +3287,10 @@
    </row>
    <row>
     <entry><token>NEW</token></entry>
+    <entry></entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
-    <entry>réservé</entry>
     <entry></entry>
    </row>
    <row>
@@ -3384,8 +3568,8 @@
    <row>
     <entry><token>OFF</token></entry>
     <entry>réservé</entry>
-    <entry></entry>
-    <entry></entry>
+    <entry>non réservé</entry>
+    <entry>non réservé</entry>
     <entry>réservé</entry>
     <entry></entry>
    </row>
@@ -3407,10 +3591,10 @@
    </row>
    <row>
     <entry><token>OLD</token></entry>
+    <entry></entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
-    <entry>réservé</entry>
     <entry></entry>
    </row>
    <row>
@@ -3679,7 +3863,7 @@
    </row>
    <row>
     <entry><token>PARTITION</token></entry>
-    <entry></entry>
+    <entry>non réservé</entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
     <entry></entry>
@@ -3702,6 +3886,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>PASSTHROUGH</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>PASSWORD</token></entry>
     <entry>non réservé</entry>
     <entry></entry>
@@ -3742,6 +3934,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>PERMISSION</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>PLACING</token></entry>
     <entry>réservé</entry>
     <entry>non réservé</entry>
@@ -3799,9 +3999,9 @@
    </row>
    <row>
     <entry><token>PRECEDING</token></entry>
-    <entry></entry>
     <entry>non réservé</entry>
     <entry>non réservé</entry>
+    <entry>non réservé</entry>
     <entry></entry>
     <entry></entry>
    </row>
@@ -3911,7 +4111,7 @@
    </row>
    <row>
     <entry><token>RANGE</token></entry>
-    <entry></entry>
+    <entry>non réservé</entry>
     <entry>réservé</entry>
     <entry>réservé</entry>
     <entry></entry>
@@ -3966,6 +4166,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>RECOVERY</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>RECURSIVE</token></entry>
     <entry>non réservé</entry>
     <entry>réservé</entry>
@@ -4126,6 +4334,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>REQUIRING</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>RESET</token></entry>
     <entry>non réservé</entry>
     <entry></entry>
@@ -4150,6 +4366,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>RESTORE</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>RESTRICT</token></entry>
     <entry>non réservé</entry>
     <entry>non réservé</entry>
@@ -4446,6 +4670,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>SELECTIVE</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>SELF</token></entry>
     <entry></entry>
     <entry>non réservé</entry>
@@ -4470,6 +4702,14 @@
     <entry></entry>
    </row>
    <row>
+    <entry><token>SEQUENCES</token></entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>SERIALIZABLE</token></entry>
     <entry>non réservé</entry>
     <entry>non réservé</entry>
@@ -4918,6 +5158,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>TABLES</token></entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>TABLESAMPLE</token></entry>
     <entry></entry>
     <entry>réservé</entry>
@@ -5046,6 +5294,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>TOKEN</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>TOP_LEVEL_COUNT</token></entry>
     <entry></entry>
     <entry>non réservé</entry>
@@ -5231,9 +5487,9 @@
    </row>
    <row>
     <entry><token>UNBOUNDED</token></entry>
-    <entry></entry>
     <entry>non réservé</entry>
     <entry>non réservé</entry>
+    <entry>non réservé</entry>
     <entry></entry>
     <entry></entry>
    </row>
@@ -5286,6 +5542,14 @@
     <entry>réservé</entry>
    </row>
    <row>
+    <entry><token>UNLINK</token></entry>
+    <entry></entry>
+    <entry>non-reserved</entry>
+    <entry>non-reserved</entry>
+    <entry></entry>
+    <entry></entry>
+   </row>
+   <row>
     <entry><token>UNLISTEN</token></entry>
     <entry>non réservé</entry>
     <entry></entry>
@@ -5824,10 +6088,10 @@
    <row>
     <entry><token>YES</token></entry>
     <entry>non réservé</entry>
+    <entry>non réservé</entry>
     <entry></entry>
     <entry></entry>
     <entry></entry>
-    <entry></entry>
    </row>
    <row>
     <entry><token>ZONE</token></entry>

Modified: traduc/trunk/postgresql/legal.xml
===================================================================
--- traduc/trunk/postgresql/legal.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/legal.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 
 <copyright>
- <year>1996-2009</year>
+ <year>1996-2010</year>
  <holder>The PostgreSQL Global Development Group</holder>
 </copyright>
 
@@ -13,7 +13,7 @@
  <title>Legal Notice</title>
 
  <para>
-  <productname>PostgreSQL</productname> is Copyright &copy; 1996-2009
+  <productname>PostgreSQL</productname> is Copyright &copy; 1996-2010
   by the PostgreSQL Global Development Group and is distributed under
   the terms of the license of the University of California below.
  </para>

Modified: traduc/trunk/postgresql/libpq.xml
===================================================================
--- traduc/trunk/postgresql/libpq.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/libpq.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -62,7 +62,8 @@
    de la faire est d'accéder à plusieurs bases de données). Chaque connexion
    est représentée par un objet
    <structname>PGconn</structname><indexterm><primary>PGconn</primary></indexterm>, obtenu avec la
-   fonction <function>PQconnectdb</function> ou <function>PQsetdbLogin</function>. Notez que
+   fonction <function>PQconnectdb</function>,
+   <function>PQconnectdbParams</function>, ou <function>PQsetdbLogin</function>. Notez que
    ces fonctions renverront toujours un pointeur d'objet non nul, sauf peut-être
    dans un cas de manque de mémoire pour l'allocation de l'objet
    <structname>PGconn</structname>. La fonction <function>PQstatus</function> doit être appelée
@@ -97,36 +98,41 @@
 
    <variablelist>
     <varlistentry>
-     <term><function>PQconnectdb</function><indexterm><primary>PQconnectdb</primary></indexterm></term>
+     <term><function>PQconnectdbParams</function><indexterm><primary>PQconnectdbParams</primary></indexterm></term>
      <listitem>
       <para>
-       Crée une nouvelle connexion au serveur de bases de données.
-<synopsis>PGconn *PQconnectdb(const char *conninfo);
-</synopsis>
-</para>
+       Makes a new connection to the database server.
 
-  <para>
-   Cette fonction ouvre une nouvelle connexion à la base de données en utilisant
-   les paramètres à partir de la chaîne <literal>conninfo</literal>.
-   Contrairement à <function>PQsetdbLogin</function> ci-dessous, l'ensemble des
-   paramètres peut être étendu sans changer la signature de la fonction, donc
-   utiliser cette fonction (ou son analogue non bloquant,
-   <function>PQconnectStart</function> et <function>PQconnectPoll</function>) est
-   préférée pour la programmation de nouvelles applications.
-   </para>
+       <synopsis>
+        PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand_dbname);
+       </synopsis>
+      </para>
 
-   <para>
-    La chaîne passée peut être vide pour utiliser tous les paramètres par défaut
-    ou elle peut contenir un ou plusieurs paramétrages séparés par des espaces
-    blancs. Chaque paramètre est de la forme <literal>motclé = valeur</literal>.
-    Les espaces autour du signe égal sont optionnels. Pour écrire une valeur
-    vide ou une valeur contenant des espaces, entourez-les de guillemets simples,
-    c'est-à-dire <literal>motclé = 'une valeur'</literal>. À l'intérieur de la
-    valeur, des guillemets simples et des antislashs peuvent être échappés
-    avec un antislash, par exemple
-    <literal>\'</literal> et <literal>\\</literal>.
-    </para>
+      <para>
+       This function opens a new database connection using the parameters taken
+       from two <symbol>NULL</symbol>-terminated arrays. The first,
+       <literal>keywords</literal>, is defined as an array of strings, each one
+       being a key word. The second, <literal>values</literal>, gives the value
+       for each key word. Unlike <function>PQsetdbLogin</function> below, the parameter
+       set can be extended without changing the function signature, so use of
+       this function (or its nonblocking analogs <function>PQconnectStartParams</function>
+       and <function>PQconnectPoll</function>) is preferred for new application
+       programming.
+      </para>
 
+      <para>
+       When <literal>expand_dbname</literal> is non-zero, the
+       <parameter>dbname</parameter> key word value is allowed to be recognized
+       as a <parameter>conninfo</parameter> string. See below for details.
+      </para>
+
+      <para>
+       The passed arrays can be empty to use all default parameters, or can
+       contain one or more parameter settings. They should be matched in length.
+       Processing will stop with the last non-<symbol>NULL</symbol> element
+       of the <literal>keywords</literal> array.
+      </para>
+
    <para>
    Les mots clés actuellement reconnus sont&nbsp;:
 
@@ -256,6 +262,32 @@
      </listitem>
     </varlistentry>
 
+        <varlistentry id="libpq-connect-application-name" xreflabel="application_name">
+         <term><literal>application_name</literal></term>
+         <listitem>
+          <para>
+           Specifies a value for the <xref linkend="guc-application-name"/>
+           configuration parameter.
+          </para>
+         </listitem>
+        </varlistentry>
+
+        <varlistentry id="libpq-connect-fallback-application-name" xreflabel="fallback_application_name">
+         <term><literal>fallback_application_name</literal></term>
+         <listitem>
+          <para>
+           Specifies a fallback value for the <xref
+           linkend="guc-application-name"/> configuration parameter.
+           This value will be used if no value has been given for
+           <literal>application_name</literal> via a connection parameter or the
+           <envar>PGAPPNAME</envar> environment variable.  Specifying
+           a fallback name is useful in generic utility programs that
+           wish to set a default application name but allow it to be
+           overridden by the user.
+          </para>
+         </listitem>
+        </varlistentry>
+
     <varlistentry id="libpq-connect-tty" xreflabel="tty">
      <term><literal>tty</literal></term>
      <listitem>
@@ -461,6 +493,57 @@
    est vérifiée (voir la <xref linkend="libpq-envars"/>). Si elle n'est pas
    disponible, alors la valeur par défaut indiquée est utilisée.
    </para>
+
+      <para>
+        If <literal>expand_dbname</literal> is non-zero and
+        <parameter>dbname</parameter> contains an <symbol>=</symbol> sign, it
+        is taken as a <parameter>conninfo</parameter> string in exactly the same way as
+        if it had been passed to <function>PQconnectdb</function>(see below). Previously
+        processed key words will be overridden by key words in the
+        <parameter>conninfo</parameter> string.
+      </para>
+
+      <para>
+        In general key words are processed from the beginning of these arrays in index
+        order. The effect of this is that when key words are repeated, the last processed
+        value is retained. Therefore, through careful placement of the
+        <parameter>dbname</parameter> key word, it is possible to determine what may
+        be overridden by a <parameter>conninfo</parameter> string, and what may not.
+      </para>
+
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><function>PQconnectdb</function><indexterm><primary>PQconnectdb</primary></indexterm></term>
+     <listitem>
+      <para>
+       Makes a new connection to the database server.
+
+       <synopsis>
+        PGconn *PQconnectdb(const char *conninfo);
+       </synopsis>
+      </para>
+
+      <para>
+       This function opens a new database connection using the parameters taken
+       from the string <literal>conninfo</literal>.
+      </para>
+
+      <para>
+       The passed string can be empty to use all default parameters, or it can
+       contain one or more parameter settings separated by whitespace.
+       Each parameter setting is in the form <literal>keyword = value</literal>.
+       Spaces around the equal sign are optional. To write an empty value,
+       or a value containing spaces, surround it with single quotes, e.g.,
+       <literal>keyword = 'a value'</literal>. Single quotes and backslashes
+       within the value must be escaped with a backslash, i.e.,
+       <literal>\'</literal> and <literal>\\</literal>.
+      </para>
+
+      <para>
+       The currently recognized parameter key words are the same as above.
+      </para>
   </listitem>
  </varlistentry>
 
@@ -519,34 +602,46 @@
  </varlistentry>
 
  <varlistentry>
+  <term><function>PQconnectStartParams</function><indexterm><primary>PQconnectStartParams</primary></indexterm></term>
   <term><function>PQconnectStart</function><indexterm><primary>PQconnectStart</primary></indexterm></term>
   <term><function>PQconnectPoll</function><indexterm><primary>PQconnectPoll</primary></indexterm></term>
   <listitem>
   <para>
    <indexterm><primary>connexion non bloquante</primary></indexterm>
    Crée une connexion au serveur de bases de données d'une façon non bloquante.
+<synopsis>PGconn *PQconnectStartParams(const char **keywords, const char **values, int expand_dbname);
+</synopsis>
 <synopsis>PGconn *PQconnectStart(const char *conninfo);
 </synopsis>
 <synopsis>PostgresPollingStatusType PQconnectPoll(PGconn *conn);
 </synopsis>
 </para>
 <para>
-   Ces deux fonctions sont utilisées pour ouvrir une connexion au serveur de 
+   Ces trois fonctions sont utilisées pour ouvrir une connexion au serveur de 
    bases de données d'une façon telle que le thread de votre application n'est
    pas bloqué sur les entrées/sorties distantes en demandant la connexion. Le
    but de cette approche est que l'attente de la fin des entrées/sorties peut se
    faire dans la boucle principale de l'application plutôt qu'à l'intérieur de
-   <function>PQconnectdb</function>, et donc l'application peut gérer des opérations en
+   <function>PQconnectdbParams</function> ou <function>PQconnectdb</function>, et donc l'application peut gérer des opérations en
    parallèle à d'autres activités.
   </para>
+      <para>
+       With <function>PQconnectStartParams</function>, the database connection is made
+       using the parameters taken from the <literal>keywords</literal> and
+       <literal>values</literal> arrays, and controlled by <literal>expand_dbname</literal>,
+       as described above for <function>PQconnectdbParams</function>.
+      </para>
+
+      <para>
+       With <function>PQconnectStart</function>, the database connection is made
+       using the parameters taken from the string <literal>conninfo</literal> as
+       described above for <function>PQconnectdb</function>.
+      </para>
+
+      <para>
   <para>
-   La connexion à la base de données est faite en utilisant les paramètres pris
-   dans la chaîne <literal>conninfo</literal>, passée à
-   <function>PQconnectStart</function>. Cette chaîne est du même format que
-   celle décrite pour <function>PQconnectdb</function>.
-  </para>
-  <para>
-   Ni <function>PQconnectStart</function> ni <function>PQconnectPoll</function>
+   Ni <function>PQconnectStartParams</function> ni
+   <function>PQconnectStart</function> ni <function>PQconnectPoll</function>
    ne bloqueront, aussi longtemps qu'un certain nombre de restrictions est
    respecté&nbsp;:
    <itemizedlist>
@@ -555,7 +650,7 @@
       Les paramètres <literal>hostaddr</literal> et <literal>host</literal> sont utilisés de
       façon appropriée pour vous assurer que la requête de nom et la requête
       inverse ne soient pas lancées. Voir la documentation de ces paramètres avec
-      <function>PQconnectdb</function> ci-dessus pour les détails.
+      <function>PQconnectdbParams</function> ci-dessus pour les détails.
      </para>
     </listitem>
 
@@ -575,6 +670,11 @@
    </itemizedlist>
   </para>
 
+      <para>
+       Note: use of <function>PQconnectStartParams</function> is analogous to
+       <function>PQconnectStart</function> shown below.
+      </para>
+
   <para>
    Pour commencer une demande de connexion non bloquante, appelez <literal>conn
    = PQconnectStart("<replaceable>connection_info_string</replaceable>")</literal>.
@@ -622,6 +722,7 @@
     connexion asynchrone. Ils indiquent l'état actuel de la procédure de
     connexion et pourraient être utile pour fournir un retour à l'utilisateur.
     Ces statuts sont&nbsp;:
+  </para>
 
     <variablelist>
      <varlistentry>
@@ -679,6 +780,7 @@
      </varlistentry>
     </variablelist>
 
+  <para>
     Notez que, bien que ces constantes resteront (pour maintenir une
     compatibilité), une application ne devrait jamais se baser sur un ordre
     pour celles-ci ou sur tout ou sur le fait que le statut fait partie de ces
@@ -718,8 +820,8 @@
    lui sont associés. Ceci doit être fait même si la tentative de connexion
    échoue ou est abandonnée.
   </para>
-  </listitem>
- </varlistentry>
+  </para>
+ </listitem>
 
  <varlistentry>
   <term><function>PQconndefaults</function><indexterm><primary>PQconndefaults</primary></indexterm></term>
@@ -876,7 +978,7 @@
     erreur si une connexion est perdue. Elles diffèrent de
     <function>PQreset</function> (ci-dessus) car elles agissent d'une façon non
     bloquante. Ces fonctions souffrent des mêmes restrictions que
-    <function>PQconnectStart</function> et <function>PQconnectPoll</function>.
+    <function>PQconnectStartParams</function>, <function>PQconnectStart</function> et <function>PQconnectPoll</function>.
    </para>
    <para>
     Pour initier une réinitialisation de la connexion, appelez
@@ -888,7 +990,8 @@
   </listitem>
  </varlistentry>
 
- </variablelist>
+ </varlistentry>
+</variablelist>
 </para>
 </sect1>
 
@@ -1032,7 +1135,7 @@
       </para>
 
       <para>
-       Voir l'entrée de <function>PQconnectStart</function> et de
+       Voir l'entrée de <function>PQconnectStartParams</function>, <function>PQconnectStart</function> et de
        <function>PQconnectPoll</function> en regard aux autres codes de statut, qui
        pourraient être vus.
       </para>
@@ -1085,6 +1188,7 @@
 <literal>server_version</literal>,
 <literal>server_encoding</literal>,
 <literal>client_encoding</literal>,
+<literal>application_name</literal>,
 <literal>is_superuser</literal>,
 <literal>session_authorization</literal>,
 <literal>datestyle</literal>,
@@ -1097,7 +1201,8 @@
 antérieures à la 8.0&nbsp;;
 <literal>standard_conforming_strings</literal> n'était pas rapporté dans les versions
 antérieures à la 8.1; <literal>IntervalStyle</literal> n'était pas rapporté dans les versions
-antérieures à la 8.4).
+antérieures à la 8.4;
+       <literal>application_name</literal> was not reported by releases before 9.0).
 Notez que
 <literal>server_version</literal>,
 <literal>server_encoding</literal> et
@@ -1608,12 +1713,12 @@
 </variablelist>
 
 Les instructions préparées avec <function>PQexecPrepared</function> peuvent aussi être
-créées en exécutant les instructions SQL <xref linkend="sql-prepare"
-endterm="sql-prepare-title"/> (mais <function>PQprepare</function> est plus flexible
+créées en exécutant les instructions SQL <xref linkend="sql-prepare"/> (mais
+<function>PQprepare</function> est plus flexible
 car il ne requiert pas de spécification des types de paramètres). De plus,
 bien qu'il n'y ait aucune fonction <application>libpq</application> pour supprimer une
-instruction préparée, l'instruction SQL <xref linkend="sql-deallocate"
-endterm="sql-deallocate-title"/> peut être utilisée dans ce but.
+instruction préparée, l'instruction SQL <xref linkend="sql-deallocate"/> peut
+être utilisée dans ce but.
 </para>
 
 <para>
@@ -2498,13 +2603,11 @@
 </sect2>
 
 <sect2 id="libpq-exec-nonselect">
-  <title>Récupérer les informations de résultats pour les autres
-   commandes</title>
+  <title>Récupérer d'autres informations de résultats</title>
 
 <para>
-Ces fonctions sont utilisées pour extraire des informations des objets
-<structname>PGresult</structname> qui ne sont pas les résultats d'instructions
-<command>SELECT</command>.
+Ces fonctions sont utilisées pour extraire d'autres informations des objets
+<structname>PGresult</structname>.
 </para>
 
 <variablelist>
@@ -2540,7 +2643,8 @@
 Cette fonction renvoie une chaîne contenant le nombre de lignes affectées par
 l'instruction <acronym>SQL</acronym> qui a généré <structname>PGresult</structname>. Cette
 fonction peut seulement être utilisée après l'exécution d'une instruction
-<command>INSERT</command>, <command>UPDATE</command>, <command>DELETE</command>, <command>MOVE</command>,
+<command>SELECT</command>, <command>CREATE TABLE AS</command>, <command>INSERT</command>,
+<command>UPDATE</command>, <command>DELETE</command>, <command>MOVE</command>,
 <command>FETCH</command> ou <command>COPY</command>, ou <command>EXECUTE</command> avec une instruction préparée 
 contenant une instruction <command>INSERT</command>, <command>UPDATE</command> ou
 <command>DELETE</command>. Si la commande qui a généré <structname>PGresult</structname> était
@@ -2601,112 +2705,221 @@
   <title>Chaîne d'échappement à inclure dans les commandes SQL</title>
 
    <indexterm zone="libpq-exec-escape-string">
-    <primary>PQescapeStringConn</primary>
+    <primary>escaping strings</primary>
+    <secondary>in libpq</secondary>
    </indexterm>
-   <indexterm zone="libpq-exec-escape-string">
-    <primary>PQescapeString</primary>
-   </indexterm>
-   <indexterm zone="libpq-exec-escape-string">
-    <primary>chaînes d'échappement</primary>
-    <secondary>dans libpq</secondary>
-   </indexterm>
 
-<para>
-<function>PQescapeStringConn</function> échappe une chaîne à utiliser dans une
-commande SQL. Ceci est utile lors de l'insertion de valeurs comme constantes
-littérales. Certains caractères (tels que les guillemets et les antislashs)
-doivent être échappés pour les empêcher d'être interprétés spécialement par
-l'analyseur SQL. <function>PQescapeStringConn</function> réalise cette opération.
-</para>
+  <variablelist>
+    <varlistentry>
+     <term>
+      <function>PQescapeLiteral</function>
+      <indexterm>
+       <primary>PQescapeLiteral</primary>
+      </indexterm>
+     </term>
 
-<tip>
-<para>
-Il est tout particulièrement important de faire cet échappement proprement lors
-de la gestion de chaînes reçues d'une source non sûre. Sinon, il existe un
-risque de sécurité&nbsp;: vous êtes vulnérable à une attaque par
-<quote>injection de SQL</quote> où des commandes SQL non souhaitées
-remplissent votre base de données.
-</para>
-</tip>
+     <listitem>
+     <para>
+      <synopsis>
+       size_t PQescapeLiteral(PGconn *conn, char *str, size_t len)
+      </synopsis>
+     </para>
 
-<para>
-Notez qu'il n'est ni nécessaire ni correct de faire un échappement
-lorsque une valeur est passée comme paramètre séparé dans
-<function>PQexecParams</function> ou ses routines similaires.
+     <para>
+      <function>PQescapeLiteral</function> escapes a string for
+      use within an SQL command.  This is useful when inserting data
+      values as literal constants in SQL commands.  Certain characters
+      (such as quotes and backslashes) must be escaped to prevent them
+      from being interpreted specially by the SQL parser.
+      <function>PQescapeLiteral</function> performs this operation.
+     </para>
 
-<synopsis>size_t PQescapeStringConn (PGconn *conn,
-                           char *to, const char *from, size_t length,
-                           int *error);</synopsis>
-</para>
+     <para>
+      <function>PQescapeLiteral</function> returns an escaped version of the
+      <parameter>str</parameter> parameter in memory allocated with
+      <function>malloc()</function>.  This memory should be freed using
+      <function>PQfreemem()</function> when the result is no longer needed.
+      A terminating zero byte is not required, and should not be
+      counted in <parameter>length</parameter>.  (If a terminating zero byte is found
+      before <parameter>length</parameter> bytes are processed,
+      <function>PQescapeLiteral</function> stops at the zero; the behavior is
+      thus rather like <function>strncpy</function>.) The
+      return string has all special characters replaced so that they can
+      be properly processed by the <productname>PostgreSQL</productname>
+      string literal parser.  A terminating zero byte is also added.  The
+      single quotes that must surround <productname>PostgreSQL</productname>
+      string literals are included in the result string.
+     </para>
 
-<para>
-<function>PQescapeStringConn</function> écrit une version échappée de la chaîne
-<parameter>from</parameter> dans le tampon <parameter>to</parameter>, en échappant les
-caractères spéciaux de façon à ce qu'ils ne puissent causer aucun problème,
-et en ajoutant un octet nul de terminaison. Les guillemets simples qui
-doivent entourer les chaînes <productname>PostgreSQL</productname> ne sont pas
-incluses dans la chaîne résultante&nbsp;; ils doivent être fournis dans la
-commande SQL où le résultat sera inséré.
-Le paramètre <parameter>from</parameter> pointe le premier caractère d'une chaîne à
-protéger et le paramètre <parameter>length</parameter> donne le nombre d'octets
-dans cette chaîne. Un octet de terminaison, zéro, n'est pas requis et ne
-devrait pas être compté dans <parameter>length</parameter> (si un octet de terminaison
-est trouvé avant que <parameter>length</parameter> octets ne soient traités,
-<function>PQescapeStringConn</function> s'arrête au zéro&nbsp;; le comportement ressemble
-donc à <function>strncpy</function>). <parameter>to</parameter> devrait pointer
-vers un tampon capable de contenir au moins un octet de plus que le double de
-la valeur de <parameter>length</parameter>, sinon le comportement est indéfini.
-Le comportement est indéfini si les chaînes <parameter>to</parameter> et
-<parameter>from</parameter> se surchargent.
-</para>
-<para>
-Si le paramètre <parameter>error</parameter> n'est pas NULL, alors
-<literal>*error</literal> est initialisé à zéro en cas de succès et à une valeur
-différente de zéro dans le cas contraire. Actuellement, les seules conditions
-d'erreurs possibles impliquent un codage multi-octets invalide dans la chaîne
-en entrée. La chaîne en sortie est toujours générée en cas d'erreur mais il est
-probable que le serveur la rejettera en indiquant qu'elle est malformée. En cas
-d'erreur, un message adéquat est stocké dans l'objet <parameter>conn</parameter>,
-que <parameter>error</parameter> soit NULL ou non.
-</para>
-<para>
-<function>PQescapeString</function> renvoie le nombre d'octets écrits dans
-<parameter>to</parameter>, sans inclure l'octet de terminaison.
-</para>
+     <para>
+      On error, <function>PQescapeLiteral</function> returns NULL and a suitable
+      message is stored in the <parameter>conn</parameter> object.
+     </para>
 
-<para>
-<synopsis>size_t PQescapeString (char *to, const char *from, size_t length);</synopsis>
-</para>
+     <tip>
+      <para>
+       It is especially important to do proper escaping when handling
+       strings that were received from an untrustworthy source.
+       Otherwise there is a security risk: you are vulnerable to
+       <quote>SQL injection</quote> attacks wherein unwanted SQL commands are
+       fed to your database.
+      </para>
+     </tip>
 
-<para>
-<function>PQescapeString</function> est une version obsolète de
-<function>PQescapeStringConn</function>&nbsp;; la différence réside dans le fait
-qu'elle ne prend pas de paramètres <parameter>conn</parameter> ou <parameter>error</parameter>.
-À cause de ceci, elle ne peut ajuster son comportement suivant les propriétés
-de la connexion comme le codage des caractères et donc <emphasis>elle pourrait
-renvoyer des résultats faux</emphasis>. De plus, il n'existe aucun moyen de renvoyer
-les conditions de l'erreur.
-</para>
-<para>
-<function>PQescapeString</function> peut être utilisé sereinement dans les programmes
-clients à un seul thread et fonctionnant avec une seule connexion
-<productname>PostgreSQL</productname> à la fois (dans ce cas, il peut trouver les informations
-qui l'intéressent <quote>en arrière-plan</quote>). Les autres contextes devraient être
-évités et <function>PQescapeStringConn</function> devrait être utilisé à la place.
-</para>
-</sect2>
+     <para>
+      Note that it is not necessary nor correct to do escaping when a data
+      value is passed as a separate parameter in <function>PQexecParams</function> or
+      its sibling routines.
+     </para>
+     </listitem>
+    </varlistentry>
 
+    <varlistentry>
+     <term>
+      <function>PQescapeIdentifier</function>
+      <indexterm>
+       <primary>PQescapeIdentifier</primary>
+      </indexterm>
+     </term>
 
- <sect2 id="libpq-exec-escape-bytea">
-  <title>Échapper des chaînes binaires pour une inclusion dans des commandes
-   SQL</title>
+     <listitem>
+     <para>
+      <synopsis>
+       size_t PQescapeIdentifier(PGconn *conn, char *str, size_t len)
+      </synopsis>
+     </para>
 
-  <indexterm zone="libpq-exec-escape-bytea">
-   <primary>bytea</primary>
-   <secondary sortas="libpq">dans libpq</secondary>
-  </indexterm>
+     <para>
+      <function>PQescapeIndentifier</function> escapes a string for
+      use as an SQL identifier, such as a table, column, or function name.
+      This is useful when a user-supplied identifier might contain
+      special characters that would otherwise not be interpreted as part
+      of the identifier by the SQL parser, or when the identifier might
+      contain uppercase characters whose case should be preserved.
+     </para>
 
-  <variablelist>
+     <para>
+      <function>PQescapeIdentifier</function> returns a version of the
+      <parameter>str</parameter> parameter escaped as an SQL identifier
+      in memory allocated with <function>malloc()</function>.  This memory must be
+      freed using <function>PQfreemem()</function> when the result is no longer
+      needed.  A terminating zero byte is not required, and should not be
+      counted in <parameter>length</parameter>.  (If a terminating zero byte is found
+      before <parameter>length</parameter> bytes are processed,
+      <function>PQescapeIdentifier</function> stops at the zero; the behavior is
+      thus rather like <function>strncpy</function>.) The
+      return string has all special characters replaced so that it
+      will be properly processed as an SQL identifier.  A terminating zero byte
+      is also added.  The return string will also be surrounded by double
+      quotes.
+     </para>
+
+     <para>
+      On error, <function>PQescapeIdentifier</function> returns NULL and a suitable
+      message is stored in the <parameter>conn</parameter> object.
+     </para>
+
+     <tip>
+      <para>
+       As with string literals, to prevent SQL injection attacks,
+       SQL identifiers must be escaped when they are received from an
+       untrustworthy source.
+      </para>
+     </tip>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      <function>PQescapeStringConn</function>
+      <indexterm>
+       <primary>PQescapeStringConn</primary>
+      </indexterm>
+     </term>
+
+     <listitem>
+     <para>
+      <synopsis>
+       size_t PQescapeStringConn (PGconn *conn,
+                                  char *to, const char *from, size_t length,
+                                  int *error);
+      </synopsis>
+     </para>
+
+     <para>
+      <function>PQescapeStringConn</function> escapes string literals, much like
+      <function>PQescapeLiteral</function>.  Unlike <function>PQescapeLiteral</function>,
+      the caller is responsible for providing an appropriately sized buffer.
+      Furthermore, <function>PQescapeStringConn</function> does not generate the
+      single quotes that must surround <productname>PostgreSQL</productname> string
+      literals; they should be provided in the SQL command that the
+      result is inserted into.  The parameter <parameter>from</parameter> points to
+      the first character of the string that is to be escaped, and the
+      <parameter>length</parameter> parameter gives the number of bytes in this
+      string.  A terminating zero byte is not required, and should not be
+      counted in <parameter>length</parameter>.  (If a terminating zero byte is found
+      before <parameter>length</parameter> bytes are processed,
+      <function>PQescapeStringConn</function> stops at the zero; the behavior is
+      thus rather like <function>strncpy</function>.) <parameter>to</parameter> shall point
+      to a buffer that is able to hold at least one more byte than twice
+      the value of <parameter>length</parameter>, otherwise the behavior is undefined.
+      Behavior is likewise undefined if the <parameter>to</parameter> and
+      <parameter>from</parameter> strings overlap.
+     </para>
+
+     <para>
+      If the <parameter>error</parameter> parameter is not NULL, then
+      <literal>*error</literal> is set to zero on success, nonzero on error.
+      Presently the only possible error conditions involve invalid multibyte
+      encoding in the source string.  The output string is still generated
+      on error, but it can be expected that the server will reject it as
+      malformed.  On error, a suitable message is stored in the
+      <parameter>conn</parameter> object, whether or not <parameter>error</parameter> is NULL.
+     </para>
+
+     <para>
+      <function>PQescapeStringConn</function> returns the number of bytes written
+      to <parameter>to</parameter>, not including the terminating zero byte.
+     </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      <function>PQescapeString</function>
+      <indexterm>
+       <primary>PQescapeString</primary>
+      </indexterm>
+     </term>
+
+     <listitem>
+     <para>
+      <synopsis>
+       size_t PQescapeString (char *to, const char *from, size_t length);
+      </synopsis>
+     </para>
+
+     <para>
+      <function>PQescapeString</function> is an older, deprecated version of
+      <function>PQescapeStringConn</function>; the difference is that it does
+      not take <parameter>conn</parameter> or <parameter>error</parameter> parameters.
+      Because of this, it cannot adjust its behavior depending on the
+      connection properties (such as character encoding) and therefore
+      <emphasis>it might give the wrong results</emphasis>.  Also, it has no way
+      to report error conditions.
+     </para>
+
+     <para>
+      <function>PQescapeString</function> can be used safely in single-threaded
+      client programs that work with only one <productname>PostgreSQL</productname>
+      connection at a time (in this case it can find out what it needs to
+      know <quote>behind the scenes</quote>).  In other contexts it is a security
+      hazard and should be avoided in favor of
+      <function>PQescapeStringConn</function>.
+     </para>
+     </listitem>
+    </varlistentry>
+
   <varlistentry>
   <term><function>PQescapeByteaConn</function><indexterm><primary>PQescapeBytea</primary></indexterm></term>
   <listitem>
@@ -3457,20 +3670,19 @@
 <para>
 <productname>PostgreSQL</productname> propose des notifications asynchrone via
 les commandes <command>LISTEN</command> et <command>NOTIFY</command>. Une
-session cliente enregistre son intérêt dans une notification particulière avec 
+session cliente enregistre son intérêt dans un canal particulier avec 
 la commande <command>LISTEN</command> (et peut arrêter son écoute avec la
-commande <command>UNLISTEN</command>). Toutes les sessions écoutant une
-condition particulière seront notifiées de façon asynchrone lorsqu'une commande
-<command>NOTIFY</command> avec ce nom de condition sera exécutée par une
-session. Aucune autre information n'est passée du notifieur au notifié. Du
-coup, typiquement, toute donnée qui a besoin d'être communiquée est transférée
-via une table de la base. D'habitude, le nom de la condition est identique à la
-table associée mais il n'est pas nécessaire d'avoir une table associée.
+commande <command>UNLISTEN</command>). Toutes les sessions écoutant un
+canal particulier seront notifiées de façon asynchrone lorsqu'une commande
+<command>NOTIFY</command> avec ce nom de canal sera exécutée par une
+session. A <quote>payload</quote> string can
+   be passed to communicate additional data to the listeners.
 </para>
 
 <para>
 Les applications <application>libpq</application> soumettent les commandes
-<command>LISTEN</command> et <command>UNLISTEN</command> comme des commandes
+<command>LISTEN</command>, <command>UNLISTEN</command> and <command>NOTIFY</command>
+comme des commandes
 SQL ordinaires. L'arrivée des messages <command>NOTIFY</command> peut être
 détectée ensuite en appelant
 <function>PQnotifies</function>.<indexterm><primary>PQnotifies</primary></indexterm>
@@ -3486,9 +3698,9 @@
 <synopsis>PGnotify* PQnotifies(PGconn *conn);
 
 typedef struct pgNotify {
-    char *relname;              /* nom de la condition de la notification */
+    char *relname;              /* nom du canal de la notification */
     int  be_pid;                /* ID du processus serveur notifiant */
-    char *extra;                /* paramètre de notification */
+    char *extra;                /* notification payload string */
 } PGnotify;
 </synopsis>
 Après avoir traité un objet <structname>PGnotify</structname> renvoyé par
@@ -3497,8 +3709,9 @@
 <structname>PGnotify</structname>&nbsp;; les champs
 <structfield>relname</structfield> et <structfield>extra</structfield> ne
 représentent pas des allocations séparées
-(actuellement, le champ <structfield>extra</structfield> est inutilisé et
-pointera en permanence vers une chaîne vide).
+(The names of these fields
+   are historical; in particular, channel names need not have anything to
+   do with relation names.)
 </para>
 
 <para>
@@ -3613,7 +3826,7 @@
                 séparées par des retours chariots, colonnes séparées par des
                 caractères de séparation, etc).
                 1 indique que le format de copie complet est binaire. Voir
-                <xref linkend="sql-copy" endterm="sql-copy-title"/> pour plus
+                <xref linkend="sql-copy"/> pour plus
                 d'informations.
 </para>
 </listitem>
@@ -3682,7 +3895,7 @@
 dans des chargements de tampon de taille convenable. Les limites n'ont pas de
 signification sémantique lors de l'envoi. Le contenu du flux de données doit
 correspondre au format de données attendu par la commande
-<command>COPY</command>&nbsp;; voir <xref linkend="sql-copy" endterm="sql-copy-title"/>
+<command>COPY</command>&nbsp;; voir <xref linkend="sql-copy"/>
 pour des détails.
 </para>
 </listitem>
@@ -5211,6 +5424,19 @@
 configuration <xref linkend="libpq-connect-service"/>.
 </para>
 </listitem>
+
+    <listitem>
+     <para>
+      <indexterm>
+       <primary><envar>PGSERVICEFILE</envar></primary>
+      </indexterm>
+      <envar>PGSERVICEFILE</envar> specifies the name of the per-user
+      connection service file.  If not set, it defaults
+      to <filename>~/.pg_service.conf</filename>
+      (see <xref linkend="libpq-pgservice"/>).
+     </para>
+    </listitem>
+
 <listitem>
 <para>
 <indexterm>
@@ -5235,6 +5461,16 @@
 configuration <xref linkend="libpq-connect-options"/>.
 </para>
 </listitem>
+    <listitem>
+     <para>
+      <indexterm>
+       <primary><envar>PGAPPNAME</envar></primary>
+      </indexterm>
+      <envar>PGAPPNAME</envar> behaves the same as the <xref
+      linkend="libpq-connect-application-name"/> connection parameter.
+     </para>
+    </listitem>
+
 <listitem>
 <para>
 <indexterm>
@@ -5343,8 +5579,8 @@
 Les variables d'environnement par défaut peuvent être utilisées pour
 spécifier le comportement par défaut de chaque session
 <productname>PostgreSQL</productname> (voir aussi les commandes
-<xref linkend="sql-alteruser" endterm="sql-alteruser-title"/> et
-<xref linkend="sql-alterdatabase" endterm="sql-alterdatabase-title"/>
+<xref linkend="sql-alteruser"/> et
+<xref linkend="sql-alterdatabase"/>
 pour des moyens d'initialiser le
 comportement par défaut sur des bases par utilisateur ou par bases de données).
 
@@ -5391,7 +5627,7 @@
 </itemizedlist>
 
 Référez-vous à la commande <acronym>SQL</acronym>
-<xref linkend="sql-set" endterm="sql-set-title"/> pour
+<xref linkend="sql-set"/> pour
 plus d'informations sur des valeurs correctes pour ces variables
 d'environnement.
 </para>
@@ -5409,7 +5645,8 @@
         </indexterm>
         <envar>PGSYSCONFDIR</envar>
         configure le répertoire contenant le fichier
-        <filename>pg_service.conf</filename>.
+        <filename>pg_service.conf</filename> and in a future version
+      possibly other system-wide configuration files.
       </para>
     </listitem>
     <listitem>
@@ -5481,6 +5718,9 @@
 <indexterm zone="libpq-pgservice">
  <primary>pg_service.conf</primary>
 </indexterm>
+  <indexterm zone="libpq-pgservice">
+   <primary>.pg_service.conf</primary>
+  </indexterm>
 
 <para>
 Le fichier des connexions de service autorise l'association des paramètres de
@@ -5491,14 +5731,33 @@
 la variable d'environnement <envar>PGSERVICE</envar>.
 </para>
 
-<para>
-Pour utiliser cette fonctionnalité, copiez le fichier
-<filename>share/pg_service.conf.sample</filename> dans
-<filename>etc/pg_service.conf</filename> et renommez le fichier pour ajouter
-les noms de service et paramètres. Ce fichier peut aussi être utilisé pour les
-installations avec seulement le client. L'emplacement du fichier peut être
-indiqué par la variable d'environnement <envar>PGSYSCONFDIR</envar>.
-</para>
+  <para>
+   The connection service file can be a per-user service file
+   at <filename>~/.pg_service.conf</filename> or the location
+   specified by the environment variable <envar>PGSERVICEFILE</envar>,
+   or it can be a system-wide file
+   at <filename>etc/pg_service.conf</filename> or in the directory
+   specified by the environment variable
+   <envar>PGSYSCONFDIR</envar>.  If service definitions with the same
+   name exist in the user and the system file, the user file takes
+   precedence.
+  </para>
+
+  <para>
+   The file uses an <quote>INI file</quote> format where the section
+   name is the service name and the parameters are connection
+   parameters; see <xref linkend="libpq-connect"/> for a list.  For
+   example:
+<programlisting>
+# comment
+[mydb]
+host=somehost
+port=5433
+user=admin
+</programlisting>
+   An example file is provided at
+   <filename>share/pg_service.conf.sample</filename>.
+  </para>
 </sect1>
 
 <sect1 id="libpq-ldap">
@@ -6030,10 +6289,8 @@
 </indexterm>
 
 <para>
-<application>libpq</application> est réentrante et sûre avec les threads si
-l'option en ligne de commande de <filename>configure</filename>,
-<literal>--enable-thread-safety</literal>, a été utilisée lors de la construction de
-PostgreSQL. De plus, vous pourriez avoir besoin d'utiliser des options de
+<application>libpq</application> est réentrante et sûre avec les threads par
+défaut. Vous pourriez avoir besoin d'utiliser des options de
 compilation supplémentaires en ligne lorsque vous compiler le code de votre
 application. Référez-vous aux documentations de votre système pour savoir
 comment construire des applications actives au niveau thread ou recherchez
@@ -6238,7 +6495,7 @@
  */
 #include <stdio.h>
 #include <stdlib.h>
-#include "libpq-fe.h"
+#include <libpq-fe.h>
 
 static void
 exit_nicely(PGconn *conn)
@@ -6384,7 +6641,7 @@
 #include <string.h>
 #include <errno.h>
 #include <sys/time.h>
-#include "libpq-fe.h"
+#include <libpq-fe.h>
 
 static void
 exit_nicely(PGconn *conn)
@@ -6520,7 +6777,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
-#include "libpq-fe.h"
+#include <libpq-fe.h>
 
 /* for ntohl/htonl */
 #include <netinet/in.h>

Modified: traduc/trunk/postgresql/lobj.xml
===================================================================
--- traduc/trunk/postgresql/lobj.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/lobj.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -60,6 +60,21 @@
     garantit des recherches rapides sur le numéro du morceau lors d'accès
     aléatoires en lecture et écriture.
    </para>
+
+   <para>
+    As of <productname>PostgreSQL</productname> 9.0, large objects have an owner
+    and a set of access permissions, which can be managed using
+    <xref linkend="sql-grant"/> and
+    <xref linkend="sql-revoke"/>.  
+    For compatibility with prior releases, see
+    <xref linkend="guc-lo-compat-privileges"/>.
+    <literal>SELECT</literal> privileges are required to read a large
+    object, and 
+    <literal>UPDATE</literal> privileges are required to write to or
+    truncate it.
+    Only the large object owner (or the database superuser) can unlink, comment
+    on, or change the owner of a large object.
+   </para>
   </sect1>
 
   <sect1 id="lo-interfaces">
@@ -421,8 +436,8 @@
 de données. Du coup, leur utilisation est restreinte aux superutilisateurs PostgreSQL. 
 Au contraire des fonctions côté serveur, les fonctions d'import et d'export côté
 client lisent et écrivent des fichiers dans le système de fichiers du client en
-utilisant les droits du programme client. Les fonctions côté client peuvent être
-utilisées par tout utilisateurs <productname>PostgreSQL</productname>.
+utilisant les droits du programme client. Les fonctions côté client do not
+require superuser privilege.
 </para>
 </sect1>
 

Modified: traduc/trunk/postgresql/maintenance.xml
===================================================================
--- traduc/trunk/postgresql/maintenance.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/maintenance.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -51,9 +51,9 @@
 
   <para>
    <ulink
-   url="http://bucardo.org/check_postgres/"><application>check_postgres.pl</application></ulink>
+   url="http://bucardo.org/wiki/Check_postgres"><application>check_postgres</application></ulink>
    est disponible pour surveiller la santé des bases de données et pour
-   rapporter des conditions inhabituelles. <application>check_postgres.pl</application>
+   rapporter des conditions inhabituelles. <application>check_postgres</application>
    s'intègre bien avec Nagios et MRTG, mais il peut aussi fonctionner en autonome.
   </para>
 
@@ -92,7 +92,7 @@
    <title>Bases du VACUUM</title>
 
   <para>
-   La commande <xref linkend="sql-vacuum" endterm="sql-vacuum-title"/> de
+   La commande <xref linkend="sql-vacuum"/> de
    <productname>PostgreSQL</productname> doit traiter chaque table régulièrement
    pour plusieurs raisons&nbsp;:
 
@@ -132,10 +132,7 @@
     cours de <command>VACUUM</command>.
     <command>VACUUM FULL</command> nécessite un verrou exclusif sur la table sur
     laquelle il travaille, et ne peut donc pas être exécuté en parallèle avec une
-    autre activité sur la table. Un autre inconvénient de 
-    <command>VACUUM FULL</command> est que, bien qu'il réduise la taille des
-    tables, il ne réduit pas la taille des index en proportion&nbsp;; en réalité,
-    il peut rendre les index plus <emphasis>grands</emphasis>. En règle générale,
+    autre activité sur la table. En règle générale,
     par conséquent, les administrateurs devraient s'efforcer d'utiliser la commande
     standard <command>VACUUM</command> et éviter <command>VACUUM FULL</command>.
    </para>
@@ -162,12 +159,12 @@
     lignes ne sont pas immédiatement supprimées après une commande
     <command>UPDATE</command> ou <command>DELETE</command>.  Cette approche est
     nécessaire pour la consistance des accès
-    concurrents (voir le <xref linkend="mvcc"/>)&nbsp;: la version de la ligne ne
+    concurrents (<acronym>MVCC</acronym>, voir le <xref linkend="mvcc"/>)&nbsp;: la version de la ligne ne
     doit pas être supprimée tant qu'elle est susceptible d'être lue par une
     autre transaction. Mais finalement, une ligne qui est plus vieille que
     toutes les transactions en cours n'est plus utile du tout. La place qu'elle
     utilise doit être rendue pour être réutilisée par d'autres lignes afin
-    d'éviter un accroissement constant du volume occupé sur le disque. Cela est
+    d'éviter un accroissement constant, sans limite du volume occupé sur le disque. Cela est
     réalisé en exécutant <command>VACUUM</command>.
    </para>
 
@@ -178,16 +175,10 @@
     d'exploitation, sauf dans le cas spécial où des pages à la fin d'une table
     deviennent totalement vides et on peut facilement obtenir un verrou exclusif
     sur la table. Par opposition, <command>VACUUM FULL</command> compacte
-    activement les tables en déplaçant les enregistrements vers des pages plus
-    proches du début de la table. Il est par conséquent capable de forcer les pages
-    de la fin de la table à être entièrement vides, grâce à quoi il pourra les
-    rendre au système d'exploitation. Toutefois, si de nombreux enregistrements
-    doivent être déplacés, l'opération peut durer très longtemps. Par ailleurs,
-    déplacer un enregistrement demande de créer des entrées d'index dupliquées
-    pour lui de façon temporaire (l'entrée pointant vers sa nouvelle adresse
-    doit être crée avant que l'ancienne entrée ne puisse être supprimée)&nbsp;;
-    la conséquence est que déplacer un grand nombre d'enregistrement peut faire
-    fortement grossir l'index.
+    activement les tables writing a complete new version of the table file with no dead
+    space.  This minimizes the size of the table, but can take a long time.
+    It also requires extra disk space for the new copy of the table, until
+    the operation completes.
    </para>
 
    <para>
@@ -235,32 +226,31 @@
     des VACUUM toutes les quelques minutes.) Si vous avez plusieurs bases dans
     un cluster, n'oubliez pas d'exécuter un <command>VACUUM</command> sur
     chacune d'elles&nbsp;; le programme <xref
-    linkend="app-vacuumdb" endterm="app-vacuumdb-title"/> pourrait être utile.
+    linkend="app-vacuumdb"/> pourrait être utile.
    </para>
 
    <tip>
    <para>
-    Aucune des deux formes de <command>VACUUM</command> n'est entièrement
+    Le <command>VACUUM</command> simple pourrait ne pas être
     satisfaisante quand une table contient un grand nombre d'enregistrements
     morts comme conséquence d'une mise à jour ou suppression massive.
     Si vous avez une table de ce genre, et que vous avez besoin de récupérer
-    l'espace disque gaspillé, la meilleure façon est d'utiliser 
-    <xref linkend="sql-cluster" endterm="sql-cluster-title"/> ou une des
-    variantes de <xref linkend="sql-altertable" endterm="sql-altertable-title"/>.
+    l'espace disque gaspillé, you will need
+    to use <command>VACUUM FULL</command>, or alternatively
+    <xref linkend="sql-cluster"/> ou une des
+    variantes de <xref linkend="sql-altertable"/>.
     Ces commandes écrivent une nouvelle copie de la table et créent de nouveaux
-    index pour elle. Comme <command>VACUUM FULL</command>, elles nécessitent
-    un verrou exclusif. Notez qu'elles utilisent aussi temporairement de
-    l'espace disque supplémentaire, puisque les anciennes copies de la table et des
-    index ne peuvent être rendues tant que les nouvelles ne sont pas complètes.
-    Dans le pire des scénarios, si votre disque est presque plein,
-    <command>VACUUM FULL</command> peut être la seule alternative envisageable.
+    index pour elle. All these options require exclusive lock.  Note that
+    they also temporarily use extra disk space approximately equal to the size
+    of the table, since the old copies of the table and indexes can't be
+    released until the new ones are complete.
    </para>
    </tip>
 
    <tip>
    <para>
     Si vous avez une table dont le contenu entier est supprimé sur une base périodique,
-    considérez de le faire avec <xref linkend="sql-truncate" endterm="sql-truncate-title"/> plutôt qu'avec
+    considérez de le faire avec <xref linkend="sql-truncate"/> plutôt qu'avec
     <command>DELETE</command> suivi par un <command>VACUUM</command>.
     <command>TRUNCATE</command> supprime le contenu entier de la table
     immédiatement sans nécessiter un <command>VACUUM</command> ou
@@ -272,7 +262,7 @@
   </sect2>
 
   <sect2 id="vacuum-for-statistics">
-   <title id="vacuum-for-statistics-title">Maintenir les statistiques du planificateur</title>
+   <title>Maintenir les statistiques du planificateur</title>
 
    <indexterm zone="vacuum-for-statistics">
     <primary>statistiques</primary>
@@ -287,8 +277,7 @@
     L'optimiseur de requêtes de <productname>PostgreSQL</productname> s'appuie
     sur des informations statistiques sur le contenu des tables dans l'optique
     de générer des plans d'exécutions efficaces pour les requêtes. Ces
-    statistiques sont collectées par la commande <xref linkend="sql-analyze"
-    endterm="sql-analyze-title"/>, qui peut
+    statistiques sont collectées par la commande <xref linkend="sql-analyze"/>, qui peut
     être invoquée seule ou comme une option de <command>VACUUM</command>. Il est
     important d'avoir des statistiques relativement à jour sans quoi des mauvais
     choix dans les plans d'exécution pourraient pénaliser les performances de la
@@ -343,6 +332,14 @@
      ou modifier les paramètres par défaut de la base de données en utilisant le
      paramètre de configuration <xref linkend="guc-default-statistics-target"/>.
     </para>
+
+    <para>
+     Also, by default there is limited information available about
+     the selectivity of functions.  However, if you create an expression
+     index that uses a function call, useful statistics will be
+     gathered about the function, which can greatly improve query
+     plans that use the expression index.
+    </para>
    </tip>
   </sect2>
 
@@ -361,7 +358,7 @@
     nombre croissant&nbsp;: la version d'une ligne dont le XID d'insertion est
     supérieur au XID de la transaction en cours est <quote>dans le futur</quote> et
     ne doit pas être visible de la transaction courante. Comme les identifiants
-    ont une taille limitée (32 bits à ce jour), un groupe qui est en activité
+    ont une taille limitée (32 bits), un groupe qui est en activité
     depuis longtemps (plus de 4 milliards de transactions) pourrait connaître un
     cycle des identifiants de transaction&nbsp;: le XID reviendra à 0 et
     soudainement les transactions du passé sembleront appartenir au futur - ce
@@ -374,8 +371,9 @@
 
    <para>
     La raison pour laquelle un VACUUM périodique résout le problème est que
-    <productname>PostgreSQL</productname> distingue un ID de transaction spécial,
-    <literal>FrozenXID</literal>. Ce XID est toujours considéré comme plus âgé
+    <productname>PostgreSQL</productname> réserve un ID de transaction spécial,
+    <literal>FrozenXID</literal>. Ce XID does not follow the normal XID
+    comparison rules and est toujours considéré comme plus âgé
     que les XID normaux. Les XID normaux sont comparés sur une base
     modulo-2<superscript>31</superscript>. Cela signifie
     que pour chaque XID normal, il y en a deux milliards qui sont plus vieux et
@@ -385,7 +383,7 @@
     comme appartenant au passé pour les deux milliards de transactions qui
     suivront quelque soit le XID. Si la ligne existe encore après deux milliards
     de transactions, elle apparaîtra soudainement comme appartenant au futur.
-    Pour éviter la disparition des données, les versions trop anciennes doivent
+    Pour éviter ceci, les versions trop anciennes doivent
     se voir affecter le XID <literal>FrozenXID</literal> avant d'atteindre le seuil
     fatidique des deux milliards de transactions. Une fois qu'elles ont ce XID
     spécifique, elles appartiendront au passé pour toutes les transactions même
@@ -526,8 +524,8 @@
     dernier VACUUM mais <structfield>relfrozenxid</structfield> peut seulement
     être avancé quand la table est parcourue complètement. La table est parcourue
     entièrement quand <structfield>relfrozenxid</structfield> est agée de plus
-    de <varname>vacuum_freeze_table_age</varname> transactions, quand la commande
-    <command>VACUUM FREEZE</command> est utilisée ou quand toutes les pages se
+    de <varname>vacuum_freeze_table_age</varname> transactions, quand l'option
+    <literal>FREEZE</literal> de la commande <command>VACUUM</command> est utilisée ou quand toutes les pages se
     trouvent nécessiter un VACUUM pour supprimer les versions mortes des lignes.
     Après que <command>VACUUM</command> ait parcouru la table complète
     <literal>age(relfrozenxid)</literal> devrait être un peu plus grande que
@@ -555,7 +553,7 @@
     elle échouera à mettre à jour les catalogues systèmes et ne pourra donc pas faire
     avancer le <structfield>datfrozenxid</structfield> de la base.)
     Si ces avertissements sont ignorés, le système s'arrêtera et refusera
-    d'exécuter toute nouvelle transaction dès qu'il n'en restera qu'un
+    de commencer toute nouvelle transaction dès qu'il n'en restera qu'un
     million avant la réinitialisation&nbsp;:
 
 <programlisting>
@@ -576,7 +574,7 @@
   </sect2>
 
   <sect2 id="autovacuum">
-   <title id="autovacuum-title">Le démon auto-vacuum</title>
+   <title>Le démon auto-vacuum</title>
 
    <indexterm>
     <primary>autovacuum</primary>
@@ -599,14 +597,17 @@
    <para>
     Le <quote>démon autovacuum</quote> est constitué de plusieurs processus.
     Un processus démon permanent appelé <firstterm>autovacuum launcher</firstterm>
-    (autrement dit le lanceur d'autovacuum), qui
-    est en charge de lancer un processus travailleur (<firstterm>autovacuum
+    (autrement dit le lanceur d'autovacuum)
+    est en charge de lancer des processus travailleur (<firstterm>autovacuum
     worker</firstterm>) pour toutes les bases de données. Le lanceur distribuera
     le travail dans le temps mais essaiera de lancer un nouveau travailleur sur
     chaque base de données chaque <xref linkend="guc-autovacuum-naptime"/>
-    secondes. Un travailleur sera lancé pour chaque base de données, avec un
-    maximum de <xref linkend="guc-autovacuum-max-workers"/> processus fonctionnant
-    en même temps. S'il y a plus de <xref linkend="guc-autovacuum-max-workers"/>
+    secondes. (Therefore, if the installation has <replaceable>N</replaceable> databases,
+    a new worker will be launched every
+    <varname>autovacuum_naptime</varname>/<replaceable>N</replaceable> seconds.)
+    A maximum of <xref linkend="guc-autovacuum-max-workers"/> worker processes
+    are allowed to run at the same time. S'il y a plus de
+    <varname>autovacuum_max_workers</varname>
     bases à traiter, la prochaine base de données sera traitée dès qu'un autre
     travailleur a terminé. Chaque processus travailleur vérifiera chaque table de
     leur base de données et exécutera un <command>VACUUM</command> et/ou un
@@ -614,19 +615,15 @@
    </para>
 
    <para>
-    Le paramètre <xref linkend="guc-autovacuum-max-workers"/> limite le
-    nombre maximum de travailleurs pouvant être lancés à tout moment. Si
-    plusieurs grosses tables deviennent toutes éligibles pour un VACUUM dans
-    un court espace de table, tous les travailleurs de l'autovacuum pourraient
-    ne s'occuper que de ces tables pour un très long moment. Ceci aurait pour
-    conséquences que les autres tables et bases ne seraient plus l'objet
-    d'opérations de VACUUM jusqu'à la disponibilité d'un travailleur. Il
-    n'y a pas de limite au nombre de travailleurs sur une seule base mais
-    les travailleurs tentent d'éviter de répéter le travail qui a déjà été
-    réalisé par d'autres travailleurs. Notez que le nombre de travailleurs
-    en cours d'exécution ne comptent pas dans les limites <xref
-    linkend="guc-max-connections"/> et <xref
-    linkend="guc-superuser-reserved-connections"/>.
+    If several large tables all become eligible for vacuuming in a short
+    amount of time, all autovacuum workers might become occupied with
+    vacuuming those tables for a long period.  This would result
+    in other tables and databases not being vacuumed until a worker became
+    available. There is no limit on how many workers might be in a
+    single database, but workers do try to avoid repeating work that has
+    already been done by other workers. Note that the number of running
+    workers does not count towards <xref linkend="guc-max-connections"/> or
+    <xref linkend="guc-superuser-reserved-connections"/> limits.
    </para>
 
    <para>
@@ -667,6 +664,12 @@
    </para>
 
    <para>
+    Temporary tables cannot be accessed by autovacuum.  Therefore,
+    appropriate vacuum and analyze operations should be performed via
+    session SQL commands.
+   </para>
+
+   <para>
     Les limites et facteurs d'échelle par défaut sont pris dans
     <filename>postgresql.conf</filename>, mais il est possible de les surcharger
     table par table&nbsp;; voir
@@ -691,8 +694,8 @@
     et la limite du coût du VACUUM
     (<literal>autovacuum_vacuum_cost_limit</literal>),
     sont utilisés pour configurer des valeurs spécifiques aux tables pour
-    la fonctionnalité <xref linkend="runtime-config-resource-vacuum-cost"
-    endterm="runtime-config-resource-vacuum-cost-title"/>.
+    cost-based vacuum delay feature
+    (see <xref linkend="runtime-config-resource-vacuum-cost"/>).
     <literal>autovacuum_freeze_min_age</literal>,
     <literal>autovacuum_freeze_max_age</literal> et
     <literal>autovacuum_freeze_table_age</literal>
@@ -721,41 +724,27 @@
 
   <para>
    Dans certains cas, reconstruire périodiquement les index par la commande
-   <xref linkend="sql-reindex" endterm="sql-reindex-title"/> vaut la peine.
+   <xref linkend="sql-reindex"/> vaut la peine.
   </para>
 
   <para>
-   Dans les versions <productname>PostgreSQL</productname> antérieures à la 7.4, la
-   réindexation périodique était fréquemment nécessaire pour éviter
-   l'<quote>inflation des index</quote>, à cause d'un manque de récupération de
-   l'espace interne dans les index B-tree. Toutes les situations dans lesquelles
-   l'échelle des clés d'index change dans le temps &mdash; par exemple, un index
-   sur l'horodatage dans une table où les anciennes entrées sont finalement
-   supprimées &mdash; pourraient résulter en une inflation car les pages d'index
-   des portions inutilisées de cet ensemble n'étaient pas réclamées pour être
-   ré-utilisées. Au bout d'un certain temps, la taille de l'index pouvait
-   devenir indéfiniment plus large que les données utiles qu'elle contient.
+   B-tree index pages that have become completely empty are reclaimed for
+   re-use.  However, there is still a possibility
+   of inefficient use of space: if all but a few index keys on a page have
+   been deleted, the page remains allocated.  Therefore, a usage
+   pattern in which most, but not all, keys in each range are eventually
+   deleted will see poor use of space.  For such usage patterns,
+   periodic reindexing is recommended.
   </para>
 
   <para>
-   Dans les versions 7.4 et ultérieures de <productname>PostgreSQL</productname>, les
-   pages d'index qui sont devenues complètement vides sont récupérées pour être
-   réutilisées. Il existe toujours une possibilité d'une utilisation inefficace
-   de l'espace&nbsp;: si pratiquement toutes les clés d'index d'une page ont été
-   supprimées, la page reste allouée. Donc, le cas d'une utilisation où la
-   majorité des clés de l'index d'une page est supprimée est un cas où l'espace
-   sera mal utilisé. Pour de tels usages, une réindexation périodique est
-   recommandée.
-  </para>
-
-  <para>
    Le potentiel d'inflation des index qui ne sont pas des index B-tree n'a pas
-   été particulièrement analysé. Garder un &oelig;il sur la taille physique de
+   été particulièrement analysé. Surveiller périodiquement la taille physique de
    ces index est une bonne idée.
   </para>
 
   <para>
-   De plus, pour les index B-tree, un index tout juste construit est quelque peu
+   De plus, pour les index B-tree, un index tout juste construit est légèrement
    plus rapide qu'un index qui a été mis à jour plusieurs fois parce que
    les pages adjacentes logiquement sont habituellement aussi physiquement
    adjacentes dans un index nouvellement créé (cette considération ne s'applique
@@ -803,7 +792,8 @@
    paramètres de contrôle pour ce programme sont décrits dans <xref
    linkend="runtime-config-logging-where"/>. Vous pouvez aussi utiliser cette
    approche pour capturer les données des journaux applicatifs dans un format
-   CSV lisible par une machine
+   <acronym>CSV</acronym>
+   (comma-separated values) lisible par une machine
   </para>
 
   <para>
@@ -840,7 +830,7 @@
    tronquer ou supprimer des messages au moment où vous en aurez le plus besoin.
    De plus, sur <productname>Linux</productname>, <application>syslog</application> synchronisera tout
    message sur disque, amenant des performances assez pauvres. (Vous pouvez
-   utiliser un <literal>-</literal> au début du nom de fichier dans le fichier de
+   utiliser un <quote><literal>-</literal></quote> au début du nom de fichier dans le fichier de
    configuration <application>syslog</application> pour désactiver la synchronisation.)
   </para>
 
@@ -848,7 +838,7 @@
    Notez que toutes les solutions décrites ci-dessus font attention à lancer de
    nouveaux journaux de traces à des intervalles configurables mais ils ne
    gèrent pas la suppression des vieux fichiers de traces, qui ne sont
-   probablement plus très intéressants. Vous voudrez probablement configurer
+   probablement plus très utiles. Vous voudrez probablement configurer
    un script pour supprimer périodiquement les anciens journaux. Une autre
    possibilité est de configurer le programme de rotation pour que les anciens
    journaux de traces soient écrasés de façon cyclique.

Modified: traduc/trunk/postgresql/manage-ag.xml
===================================================================
--- traduc/trunk/postgresql/manage-ag.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/manage-ag.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -32,7 +32,7 @@
    <acronym>SQL</acronym> (<quote>objets de base de
    données</quote>). En général, chaque objet de base de données
    (table, fonction etc.) appartient à une et une seule base de
-   données (mais certains catalogues système, par exemple
+   données (néanmoins certains catalogues système, par exemple
    <literal>pg_database</literal>, appartiennent à tout le groupe et sont
    accessibles depuis toutes les bases de données du groupe). Plus
    précisément, une base de données est une collection de schémas et
@@ -45,9 +45,9 @@
    Lors de la connexion au serveur de bases de données, une application cliente
    doit spécifier dans sa requête de connexion la base de données à laquelle
    elle veut se connecter. Il n'est pas possible d'accéder à plus
-   d'une base de données via la même connexion (mais une application
+   d'une base de données via la même connexion. Néanmoins une application
    n'est pas limitée dans le nombre de connexions qu'elle établit avec
-   une ou plusieurs bases de données). Les bases de
+   une ou plusieurs bases de données. Les bases de
    données sont séparées physiquement et le contrôle d'accès est géré
    au niveau de la connexion. Si une instance de serveur
    <productname>PostgreSQL</productname> doit héberger des projets ou des
@@ -94,8 +94,7 @@
 
   <para>
    Les bases de données sont créées à l'aide de la commande SQL
-   <xref linkend="sql-createdatabase"
-   endterm="sql-createdatabase-title"/>:<indexterm><primary>CREATE
+   <xref linkend="sql-createdatabase"/>:<indexterm><primary>CREATE
    DATABASE</primary></indexterm>
     <synopsis>CREATE DATABASE <replaceable>nom</replaceable>;</synopsis>
    ou <replaceable>nom</replaceable> suit les règles habituelles pour les
@@ -127,14 +126,14 @@
   <para>
    Une deuxième base de données,
    <literal>template1</literal>,<indexterm><primary>template1</primary></indexterm>
-   est aussi créée par <command>initdb</command>. Quand une nouvelle base de données
+   est aussi créée durant l'initialisation du cluster de bases de données. Quand
+   une nouvelle base de données
    est créée à l'intérieur du groupe, <literal>template1</literal> est
    généralement cloné. Cela signifie que tous les changements effectués sur
    <literal>template1</literal> sont propagés à toutes les bases de
-   données créées ultérieurement. Du coup, il est déconseillé d'utiliser
-   <literal>template1</literal> pour votre travail
-   quotidien mais cette propriété, utilisée judicieusement, peut être
-   utile. Pour plus de détails, voir la <xref
+   données créées ultérieurement. Because of this,
+   avoid creating objects in <literal>template1</literal> unless you want them
+   propagated to every newly created database. Pour plus de détails, voir la <xref
    linkend="manage-ag-templatedbs"/>.
   </para>
 
@@ -148,8 +147,7 @@
    <command>CREATE DATABASE</command>, exactement comme ci-dessus. La page de
    référence sur <xref linkend="app-createdb"/> contient les détails de son
    invocation. Notez que <command>createdb</command> sans aucun argument
-   crée une base de donnée portant le nom de l'utilisateur courant,
-   ce qui n'est peut-être pas ce que vous voulez.
+   crée une base de donnée portant le nom de l'utilisateur courant.
   </para>
 
   <note>
@@ -168,7 +166,7 @@
     <programlisting>CREATE DATABASE <replaceable>nom_base</replaceable> OWNER <replaceable>nom_role</replaceable>;</programlisting>
    dans l'environment SQL ou
     <programlisting>createdb -O <replaceable>nom_role</replaceable> <replaceable>nom_base</replaceable></programlisting>
-   dans le shell. Vous devez être super-utilisateur pour créer une
+   dans le shell. Seul le super-utilisateur est autorisé à créer une
    base de données pour quelqu'un d'autre c'est-à-dire pour un rôle
    dont vous n'êtes pas membre.
   </para>
@@ -190,7 +188,7 @@
    données utilisateur créées ultérieurement. Ce comportement permet
    d'apporter des modifications locales au jeu standard d'objets des
    bases de données. Par exemple, si vous installez le langage de
-   procédures <application>PL/pgSQL</application> dans <literal>template1</literal>, celui-ci
+   procédures <application>PL/Perl</application> dans <literal>template1</literal>, celui-ci
    sera automatiquement disponible dans les bases de données
    utilisateur sans qu'il soit nécessaire de faire quelque chose de
    spécial au moment où ces bases de données sont créées.
@@ -203,7 +201,8 @@
    de <literal>template1</literal>, c'est-à-dire seulement les objets
    standards prédéfinis dans votre version de
    <productname>PostgreSQL</productname>. <literal>template0</literal> ne
-   devrait jamais être modifiée après <command>initdb</command>. En indiquant
+   devrait jamais être modifiée après que le cluster des bases de données ait été
+   créé. En indiquant
    à <command>CREATE DATABASE</command> de copier <literal>template0</literal> au
    lieu de <literal>template1</literal>, vous pouvez créer une base de
    données utilisateur <quote>vierge</quote> qui ne contient aucun des
@@ -245,8 +244,8 @@
    La principale limitation est qu'aucune autre session ne peut être connectée
    à la base source tant qu'elle est copiée. <command>CREATE
    DATABASE</command> échouera si une autre connexion existe à son lancement.
-   Sinon, les nouvelles connexions à la base source sont verrouillées jusqu'à
-   la fin de <command>CREATE DATABASE</command>.
+   Lors de l'opération de copie, les nouvelles connexions à la base source sont
+   empêchées.
   </para>
 
   <para>
@@ -263,7 +262,7 @@
    de la base de données peuvent la cloner. Si
    <literal>datallowconn</literal> est positionné à faux, alors aucune
    nouvelle connexion à cette base de données n'est autorisée (mais
-   les sessions existantes ne sont pas tuées simplement en
+   les sessions existantes ne sont pas terminées simplement en
    positionnant ce drapeau à faux). La base de données
    <literal>template0</literal> est normalement marquée
    <literal>datallowconn = false</literal> pour empêcher qu'elle ne soit
@@ -320,12 +319,12 @@
    Cela sauvegarde le réglage (mais ne l'applique pas immédiatement).
    Lors des connexions ultérieures à cette base de données, tout se passe
    comme si la commande
-   <literal>SET geqo TO off;</literal> est exécutée juste avant de commencer
+   <literal>SET geqo TO off</literal> est exécutée juste avant de commencer
    la session. Notez que les utilisateurs peuvent cependant modifier ce
    réglage pendant la session&nbsp;; il s'agit seulement d'un réglage par
    défaut. Pour annuler un tel réglage par défaut, utilisez <literal>ALTER
    DATABASE <replaceable>nom_base</replaceable> RESET
-   <replaceable>nomvariable</replaceable>;</literal>.
+   <replaceable>nomvariable</replaceable></literal>.
   </para>
 
  </sect1>
@@ -335,7 +334,7 @@
 
   <para>
    Les bases de données sont détruites avec la commande
-   <xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/>&nbsp;:<indexterm><primary>DROP  
+   <xref linkend="sql-dropdatabase"/>&nbsp;:<indexterm><primary>DROP  
    DATABASE</primary></indexterm>
 <synopsis>DROP DATABASE <replaceable>nom</replaceable>;</synopsis>
    Seul le propriétaire de la base de données ou un superutilisateur peut
@@ -398,11 +397,11 @@
 
    <para>
     Pour définir un tablespace, utilisez la commande <xref
-    linkend="sql-createtablespace" endterm="sql-createtablespace-title"/>, par exemple&nbsp;:
+    linkend="sql-createtablespace"/>, par exemple&nbsp;:
     <indexterm><primary>CREATE TABLESPACE</primary></indexterm>
 <programlisting>CREATE TABLESPACE espace_rapide LOCATION '/mnt/sda1/postgresql/data';</programlisting>
     L'emplacement doit être un répertoire existant, possédé par l'utilisateur
-    système <productname>PostgreSQL</productname>. Tous les objets créés par la suite dans
+    système d'exploitation de <productname>PostgreSQL</productname>. Tous les objets créés par la suite dans
     le tablespace seront stockés dans des fichiers contenus dans ce
     répertoire.
    </para>
@@ -469,7 +468,8 @@
    </para>
 
    <para>
-    Deux tablespaces sont automatiquement créés par <literal>initdb</literal>.
+    Deux tablespaces sont automatiquement créés lors de l'initialisation du
+    cluster de bases de données.
     Le tablespace <literal>pg_global</literal> est utilisé pour les catalogues
     système partagés. Le tablespace <literal>pg_default</literal> est l'espace
     logique par défaut des bases de données <literal>template1</literal> et
@@ -488,7 +488,7 @@
 
    <para>
     Pour supprimer un tablespace vide, utilisez la commande <xref
-    linkend="sql-droptablespace" endterm="sql-droptablespace-title"/>.
+    linkend="sql-droptablespace"/>.
    </para>
 
    <para>

Modified: traduc/trunk/postgresql/monitoring.xml
===================================================================
--- traduc/trunk/postgresql/monitoring.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/monitoring.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -32,7 +32,7 @@
    <command>top</command>, <command>iostat</command> et <command>vmstat</command>. De plus, une fois
    qu'une requête peu performante a été identifiée, des investigations
    supplémentaires pourraient être nécessaires en utilisant la commande <xref
-   linkend="sql-explain" endterm="sql-explain-title"/> de
+   linkend="sql-explain"/> de
    <productname>PostgreSQL</productname>. La <xref linkend="using-explain"/>
    discute de <command>EXPLAIN</command> et des autres méthodes pour comprendre le
    comportement d'une seule requête.
@@ -47,7 +47,7 @@
   </indexterm>
 
   <para>
-   Sur la plupart des plateformes, <productname>PostgreSQL</productname> modifie
+   Sur la plupart des plateformes Unix, <productname>PostgreSQL</productname> modifie
    son titre de commande reporté par <command>ps</command> de façon à ce que les
    processus serveur individuels puissent être rapidement identifiés. Voici un
    affichage d'exemple&nbsp;:
@@ -75,14 +75,14 @@
 
 <screen>postgres: <replaceable>utilisateur</replaceable> <replaceable>base_de_données</replaceable> <replaceable>hôte</replaceable> <replaceable>activité</replaceable></screen>
 
-  L'utilisateur, la base de données et les éléments de l'hôte de connexion
+  L'utilisateur, la base de données et les éléments de l'hôte (client)
   restent identiques pendant toute la vie de connexion du client mais
   l'indicateur d'activité change. L'activité pourrait être <literal>idle</literal>
   (c'est-à-dire en attente d'une commande du client), <literal>idle in
   transaction</literal> (en attente du client à l'intérieur d'un bloc de
   <command>BEGIN</command>/<command>COMMIT</command>) ou un nom de commande du type
-  <literal>SELECT</literal>. De plus, <literal>waiting</literal> est attaché si le processus
-  serveur est en attente d'un verrou détenu par un autre processus serveur.
+  <literal>SELECT</literal>. De plus, <literal>waiting</literal> est ajouté si le processus
+  serveur est en attente d'un verrou détenu par une autre session.
   Dans l'exemple ci-dessus, nous pouvons supposer que le processus 1003 attend
   que le processus 1016 ait terminé sa transaction et, du coup, libère un verrou.
   </para>
@@ -168,7 +168,7 @@
    <filename>postgresql.conf</filename> de façon à ce qu'ils s'appliquent à tous les
    processus serveur mais il est possible de les activer/désactiver sur des
    sessions individuelles en utilisant la commande <xref
-   linkend="sql-set" endterm="sql-set-title"/> (pour empêcher les utilisateurs
+   linkend="sql-set"/> (pour empêcher les utilisateurs
    ordinaires de cacher leur activité à l'administrateur, seuls les
    superutilisateurs sont autorisés à modifier ces paramètres avec
    <command>SET</command>).
@@ -220,8 +220,8 @@
    la fin de sa transaction en cours. De façon similaire, les informations sur
    les requêtes en cours, quelque soit le processus, sont récupérées quand une
    telle information est demandée dans une transaction, et cette même information
-   sera affichée lors de la transaction. Donc, les statistiques ne sembleront pas
-   changer tant que vous restez dans la même transaction. Ceci est une
+   sera affichée lors de la transaction. Donc, les statistiques afficheront des
+   informations statiques tant que vous restez dans la même transaction. Ceci est une
    fonctionnalité, et non pas un bogue, car il vous permet de traiter plusieurs
    requêtes sur les statistiques et de corréler les résultats sans vous
    inquiéter que les nombres aient pu changer. Mais si vous voulez voir les
@@ -250,10 +250,10 @@
       <entry><structname>pg_stat_activity</structname></entry>
       <entry>Une ligne par processus serveur, affichant l'OID de la base de
       données, le nom de la base, l'<acronym>ID</acronym> du processus, l'OID de
-      l'utilisateur, son nom, la requête en cours, l'état d'attente de la requête,
-      le moment où a commencé l'exécution de la requête et de la transaction, le
-	  moment où le processus serveur a été lancé ainsi que l'adresse
-      et le numéro de port du client. Les colonnes renvoyant des données sur la
+      l'utilisateur, son nom, application name,
+      client's address and port number, times at which the server process,
+      current transaction, and current query began execution, process's waiting
+      status, and text of the current query. Les colonnes renvoyant des données sur la
       requête en cours sont disponibles sauf si le paramètre
       <varname>track_activities</varname> a été désactivé. De
       plus, ces colonnes sont seulement visibles si l'utilisateur examinant
@@ -513,7 +513,7 @@
       <entry><literal><function>pg_stat_get_db_xact_commit</function>(<type>oid</type>)</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Transactions validées dans la base de données
+       Nombre de transactions validées dans la base de données
       </entry>
      </row>
 
@@ -521,7 +521,7 @@
       <entry><literal><function>pg_stat_get_db_xact_rollback</function>(<type>oid</type>)</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Transactions annulées dans la base de données
+       Nombre de transactions annulées dans la base de données
       </entry>
      </row>
 
@@ -755,8 +755,8 @@
       <entry>
        Renvoie un ensemble d'informations sur le processus serveur correspondant
        au PID indiqué, ou un enregistrement pour chaque processus serveur actif
-       sur le système si le PID vaut NULL. Les champs renvoyés sont les mêmes
-       que ceux de la vue <structname>pg_stat_activity</structname>
+       sur le système si le PID vaut NULL. Les champs renvoyés sont un
+       sous-ensemble de ceux proposés par la vue <structname>pg_stat_activity</structname>
       </entry>
      </row>
 
@@ -907,7 +907,7 @@
       <entry><literal><function>pg_stat_get_bgwriter_requested_checkpoints</function>()</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Le nombre de fois où le processus d'écriture en tâche de fond a lancé des points de vérification en se
+       Nombre de fois où le processus d'écriture en tâche de fond a lancé des points de vérification en se
        basant sur les demandes des processus serveur parce que
        <varname>checkpoint_segments</varname> a été dépassé ou parce que la
        commande <command>CHECKPOINT</command> a été lancée
@@ -918,7 +918,7 @@
       <entry><literal><function>pg_stat_get_bgwriter_buf_written_checkpoints</function>()</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Le nombre de tampons écrits par le processus d'écriture en tâche de fond lors de points de vérification
+       Nombre de tampons écrits par le processus d'écriture en tâche de fond lors de points de vérification
       </entry>
      </row>
 
@@ -926,7 +926,7 @@
       <entry><literal><function>pg_stat_get_bgwriter_buf_written_clean</function>()</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Le nombre de tampons écrits par le processus d'écriture en tâche de fond pour le nettoyage de routine
+       Nombre de tampons écrits par le processus d'écriture en tâche de fond pour le nettoyage de routine
        des pages sales
       </entry>
      </row>
@@ -935,7 +935,7 @@
       <entry><literal><function>pg_stat_get_bgwriter_maxwritten_clean</function>()</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Le nombre de fois où le processus d'écriture en tâche de fond est arrêté son parcours de nettoyage parce
+       Nombre de fois où le processus d'écriture en tâche de fond est arrêté son parcours de nettoyage parce
        qu'il a écrit plus de tampons que ce qui est spécifié par le paramètre
        <varname>bgwriter_lru_maxpages</varname>
       </entry>
@@ -945,7 +945,7 @@
       <entry><literal><function>pg_stat_get_buf_written_backend</function>()</literal></entry>
       <entry><type>bigint</type></entry>
       <entry>
-       Le nombre de tampons écrits par les processus serveur parce qu'ils ont
+       Nombre de tampons écrits par les processus serveur parce qu'ils ont
        besoin d'allouer un nouveau tampon
       </entry>
      </row>
@@ -974,6 +974,35 @@
        données actuelle (nécessite les droits superutilisateur)
       </entry>
      </row>
+
+     <row>
+      <entry><literal><function>pg_stat_reset_shared</function>(text)</literal></entry>
+      <entry><type>void</type></entry>
+      <entry>
+       Reset some of the shared statistics counters for the database cluster to
+       zero (requires superuser privileges).  Calling
+       <literal>pg_stat_reset_shared('bgwriter')</literal> will zero all the values shown by
+       <structname>pg_stat_bgwriter</structname>.
+      </entry>
+     </row>
+
+     <row>
+      <entry><literal><function>pg_stat_reset_single_table_counters</function>(oid)</literal></entry>
+      <entry><type>void</type></entry>
+      <entry>
+       Reset statistics for a single table or index in the current database to
+       zero (requires superuser privileges)
+      </entry>
+     </row>
+
+     <row>
+      <entry><literal><function>pg_stat_reset_single_function_counters</function>(oid)</literal></entry>
+      <entry><type>void</type></entry>
+      <entry>
+       Reset statistics for a single function in the current database to
+       zero (requires superuser privileges)
+      </entry>
+     </row>
     </tbody>
    </tgroup>
   </table>

Modified: traduc/trunk/postgresql/mvcc.xml
===================================================================
--- traduc/trunk/postgresql/mvcc.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/mvcc.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -239,8 +239,7 @@
 
     <para>
     Pour initialiser le niveau d'isolation d'une transaction, utilisez la
-    commande <xref linkend="sql-set-transaction"
-    endterm="sql-set-transaction-title"/>.
+    commande <xref linkend="sql-set-transaction"/>.
     </para>
 
   <sect2 id="xact-read-committed">
@@ -573,7 +572,7 @@
     contextes dans lesquels ils sont automatiquement utilisés par
     <productname>PostgreSQL</productname>. Vous pouvez aussi acquérir
     explicitement n'importe lequel de ces verrous avec la commande <xref
-    linkend="sql-lock" endterm="sql-lock-title"/>. Rappelez-vous que tous ces modes de
+    linkend="sql-lock"/>. Rappelez-vous que tous ces modes de
     verrous sont des verrous au niveau table, même si le nom contient le mot
     <quote>row</quote> (NdT&nbsp;: ligne)&nbsp;; les noms des modes de verrous
     sont historiques. Dans une certaine mesure, les noms reflètent l'utilisation

Modified: traduc/trunk/postgresql/nls.xml
===================================================================
--- traduc/trunk/postgresql/nls.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/nls.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -157,7 +157,7 @@
     <filename><replaceable>langue</replaceable>.po</filename>, où
     <replaceable>langue</replaceable> est le code de langue sur deux
     caractères  (en minuscules) tel que défini par l'<ulink
-    url="http://lcweb.loc.gov/standards/iso639-2/englangn.html">
+    url="http://www.loc.gov/standards/iso639-2/php/English_list.php">
     ISO 639-1, le code du pays composé de deux lettres en minuscule</ulink>,
     c'est-à-dire <filename>fr.po</filename> pour
     le français. S'il existe réellement un besoin pour plus d'une
@@ -165,7 +165,7 @@
     <filename><replaceable>langue</replaceable>_<replaceable>region</replaceable>.po</filename>
     où <replaceable>region</replaceable> est le code de langue sur deux
     caractères (en majuscules), tel que défini par l'<ulink
-    url="http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html">ISO 3166-1,
+    url="http://www.iso.org/iso/english_country_names_and_code_elements">ISO 3166-1,
     le code du payes sur deux lettres en majuscule</ulink>,
     c'est-à-dire <filename>pt_BR.po</filename> pour le portugais du Brésil. Si vous
     trouvez la langue que vous souhaitez, vous pouvez commencer à travailler

Modified: traduc/trunk/postgresql/oid2name.xml
===================================================================
--- traduc/trunk/postgresql/oid2name.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/oid2name.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -35,119 +35,119 @@
   <para>
    <application>oid2name</application> se connecte à une base de données
    cible et extrait OID, filenode, et/ou nom de table. Vous pouvez aussi
-   afficher les OID des bases et des tablespaces. Le programme est contrôlé
-   par un grand nombre d'options en ligne de commandes que montre
-   <xref linkend="oid2name-switches"/>.
+   afficher les OID des bases et des tablespaces.
   </para>
 
-  <table id="oid2name-switches">
-   <title>Options de <application>oid2name</application></title>
-   <tgroup cols="2">
-    <thead>
-     <row>
-      <entry>Option</entry>
-      <entry>Description</entry>
-     </row>
-    </thead>
+ </sect2>
 
-    <tbody>
-     <row>
-      <entry><literal>-o</literal> <replaceable>oid</replaceable></entry>
-      <entry>affiche des informations pour la table dont l'OID est
-      <replaceable>oid</replaceable></entry>
-     </row>
+ <sect2>
+  <title><application>oid2name</application> options</title>
 
-     <row>
-      <entry><literal>-f</literal> <replaceable>filenode</replaceable></entry>
-      <entry>affiche des informations pour la table dont le filenode est
-      <replaceable>filenode</replaceable></entry>
-     </row>
+  <para>
+   <application>oid2name</application> accepts the following command-line arguments:
 
-     <row>
-      <entry><literal>-t</literal> <replaceable>tablename_pattern</replaceable></entry>
-      <entry>affiche des informations pour les tables dont le nom correspond
-      au modèle <replaceable>tablename_pattern</replaceable></entry>
-     </row>
+   <variablelist>
 
-     <row>
-      <entry><literal>-s</literal></entry>
-      <entry>affiche les OID des tablespaces</entry>
-     </row>
+    <varlistentry>
+     <term><option>-o</option> <replaceable>oid</replaceable></term>
+     <listitem><para>show info for table with OID <replaceable>oid</replaceable></para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-S</literal></entry>
-      <entry>inclut les objets système (ceux des schémas
-       <literal>information_schema</literal>, <literal>pg_toast</literal>
-       et <literal>pg_catalog</literal>)
-      </entry>
-     </row>
+    <varlistentry>
+     <term><option>-f</option> <replaceable>filenode</replaceable></term>
+     <listitem><para>show info for table with filenode <replaceable>filenode</replaceable></para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-i</literal></entry>
-      <entry>inclut les index et les séquences dans la liste</entry>
-     </row>
+    <varlistentry>
+     <term><option>-t</option> <replaceable>tablename_pattern</replaceable></term>
+     <listitem><para>show info for table(s) matching <replaceable>tablename_pattern</replaceable></para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-x</literal></entry>
-      <entry>affiche plus d'informations sur chaque objet montré&nbsp;: nom
-       du tablespace, nom du schéma et OID
-      </entry>
-     </row>
+    <varlistentry>
+     <term><option>-s</option></term>
+     <listitem><para>show tablespace OIDs</para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-q</literal></entry>
-      <entry>supprime les en-têtes (utile pour l'écriture de scripts)</entry>
-     </row>
+    <varlistentry>
+     <term><option>-S</option></term>
+     <listitem><para>include system objects (those in
+      <option>information_schema</option>, <option>pg_toast</option>
+      and <option>pg_catalog</option> schemas)
+     </para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-d</literal> <replaceable>database</replaceable></entry>
-      <entry>la base de données de connexion</entry>
-     </row>
+    <varlistentry>
+     <term><option>-i</option></term>
+     <listitem><para>include indexes and sequences in the listing</para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-H</literal> <replaceable>host</replaceable></entry>
-      <entry>serveur</entry>
-     </row>
+    <varlistentry>
+     <term><option>-x</option></term>
+     <listitem><para>display more information about each object shown: tablespace name,
+      schema name, and OID
+     </para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-p</literal> <replaceable>port</replaceable></entry>
-      <entry>port du serveur</entry>
-     </row>
+    <varlistentry>
+     <term><option>-q</option></term>
+     <listitem><para>omit headers (useful for scripting)</para></listitem>
+    </varlistentry>
 
-     <row>
-      <entry><literal>-U</literal> <replaceable>username</replaceable></entry>
-      <entry>nom d'utilisateur pour la connexion</entry>
-     </row>
-    </tbody>
-   </tgroup>
-  </table>
+    <varlistentry>
+     <term><option>-d</option> <replaceable>database</replaceable></term>
+     <listitem><para>database to connect to</para></listitem>
+    </varlistentry>
 
+    <varlistentry>
+     <term><option>-H</option> <replaceable>host</replaceable></term>
+     <listitem><para>database server's host</para></listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><option>-p</option> <replaceable>port</replaceable></term>
+     <listitem><para>database server's port</para></listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><option>-U</option> <replaceable>username</replaceable></term>
+     <listitem><para>username to connect as</para></listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><option>-P</option> <replaceable>password</replaceable></term>
+     <listitem><para>password (deprecated &mdash; putting this on the command line
+      is a security hazard)</para></listitem>
+    </varlistentry>
+
+   </variablelist>
+  </para>
+
   <para>
    Pour afficher des tables spécifiques, sélectionnez les tables à afficher
-   en utilisant <literal>-o</literal>, <literal>-f</literal> et/ou
-   <literal>-t</literal>.
-   <literal>-o</literal> prend un OID,
-   <literal>-f</literal> prend un filenode,
-   et <literal>-t</literal> prend un nom de table (en fait, c'est un modèle
-   de type LIKE, donc vous pouvez utiliser <literal>foo%</literal> par
+   en utilisant <option>-o</option>, <option>-f</option> et/ou
+   <option>-t</option>.
+   <option>-o</option> prend un OID,
+   <option>-f</option> prend un filenode,
+   et <option>-t</option> prend un nom de table (en fait, c'est un modèle
+   de type LIKE, donc vous pouvez utiliser <option>foo%</option> par
    exemple). Vous pouvez utiliser autant d'options que vous le souhaitez, et
    la liste incluera tous les objets en se basant sur chaque options. Mais
    notez que ces options peuvent seulement afficher des objets appartenant
-   à la base de données indiquée par l'option <literal>-d</literal>.
+   à la base de données indiquée par l'option <option>-d</option>.
   </para>
 
   <para>
-   Si vous n'utilisez pas <literal>-o</literal>, <literal>-f</literal> et
-   <literal>-t</literal>, mais que vous passez l'option <literal>-d</literal>,
+   Si vous n'utilisez pas <option>-o</option>, <option>-f</option> et
+   <option>-t</option>, mais que vous passez l'option <option>-d</option>,
    cela listera toutes les tables dans la base nommée par l'option
-   <literal>-d</literal>. Dans ce mode, les options <literal>-S</literal> et
-   <literal>-i</literal> contrôlent ce qui est listé.
+   <option>-d</option>. Dans ce mode, les options <option>-S</option> et
+   <option>-i</option> contrôlent ce qui est listé.
   </para>
 
   <para>
-   Si vous ne passez pas non plus <literal>-d</literal>, cela affichera une
+   Si vous ne passez pas non plus <option>-d</option>, cela affichera une
    liste des OID de bases de données. Autrement, vous pouvez passer l'option
-   <literal>-s</literal> pour obtenir une liste des tablespaces.
+   <option>-s</option> pour obtenir une liste des tablespaces.
   </para>
  </sect2>
 

Added: traduc/trunk/postgresql/passwordcheck.xml
===================================================================
--- traduc/trunk/postgresql/passwordcheck.xml	                        (rev 0)
+++ traduc/trunk/postgresql/passwordcheck.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,62 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/passwordcheck.sgml,v 1.2 2010-04-03 07:22:55 petere Exp $ -->
+
+<sect1 id="passwordcheck">
+ <title>passwordcheck</title>
+
+ <indexterm zone="passwordcheck">
+  <primary>passwordcheck</primary>
+ </indexterm>
+
+ <para>
+  The <filename>passwordcheck</filename> module checks users' passwords
+  whenever they are set with
+  <xref linkend="SQL-CREATEROLE" /> or
+  <xref linkend="SQL-ALTERROLE" />.
+  If a password is considered too weak, it will be rejected and
+  the command will terminate with an error.
+ </para>
+
+ <para>
+  To enable this module, add <literal>'$libdir/passwordcheck'</literal>
+  to <xref linkend="guc-shared-preload-libraries" /> in
+  <filename>postgresql.conf</filename>, then restart the server.
+ </para>
+
+ <para>
+  You can adapt this module to your needs by changing the source code.
+  For example, you can use
+  <ulink url="http://sourceforge.net/projects/cracklib/">CrackLib</ulink>
+  to check passwords &mdash; this only requires uncommenting
+  two lines in the <filename>Makefile</filename> and rebuilding the
+  module.  (We cannot include <productname>CrackLib</productname>
+  by default for license reasons.)
+  Without <productname>CrackLib</productname>, the module enforces a few
+  simple rules for password strength, which you can modify or extend
+  as you see fit.
+ </para>
+
+ <caution>
+  <para>
+   To prevent unencrypted passwords from being sent across the network,
+   written to the server log or otherwise stolen by a database administrator,
+   <productname>PostgreSQL</productname> allows the user to supply
+   pre-encrypted passwords. Many client programs make use of this
+   functionality and encrypt the password before sending it to the server.
+  </para>
+  <para>
+   This limits the usefulness of the <filename>passwordcheck</filename>
+   module, because in that case it can only try to guess the password.
+   For this reason, <filename>passwordcheck</filename> is not
+   recommendable if your security requirements are high.
+   It is more secure to use an external authentication method such as Kerberos
+   (see <xref linkend="client-authentication" />) than to rely on
+   passwords within the database.
+  </para>
+  <para>
+   Alternatively, you could modify <filename>passwordcheck</filename>
+   to reject pre-encrypted passwords, but forcing users to set their
+   passwords in clear text carries its own security risks.
+  </para>
+ </caution>
+
+</sect1>

Modified: traduc/trunk/postgresql/perform.xml
===================================================================
--- traduc/trunk/postgresql/perform.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/perform.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -37,7 +37,7 @@
     données est absolument critique pour de bonnes performances, donc le système
     inclut un <firstterm>planificateur</firstterm> complexe qui tente de choisir
     les bons plans. Vous pouvez
-    utiliser la commande <xref linkend="sql-explain" endterm="sql-explain-title"/>
+    utiliser la commande <xref linkend="sql-explain"/>
     pour voir quel plan de requête le planificateur crée pour une requête particulière.
     La lecture du plan est un art qui mérite un tutoriel complet, ce que vous
     n'aurez pas là&nbsp;; ici ne se trouvent que des informations de base.
@@ -558,15 +558,32 @@
    pour afficher seulement les lignes des tables lisibles par l'utilisateur courant).
    Par exemple, nous pourrions lancer&nbsp;:
 
-<screen>SELECT attname, n_distinct, most_common_vals
+<screen>SELECT attname, inherited, n_distinct,
+       array_to_string(most_common_vals, E'\n') as most_common_vals
 FROM pg_stats
 WHERE tablename = 'road';
 
- attname | n_distinct |                                                                                                                                                                                  most_common_vals                                                                                                                                                                                   
----------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- name    |  -0.467008 | {"I- 580                        Ramp","I- 880                        Ramp","Sp Railroad                       ","I- 580                            ","I- 680                        Ramp","I- 80                         Ramp","14th                          St  ","5th                           St  ","Mission                       Blvd","I- 880                            "}
- thepath |         20 | {"[(-122.089,37.71),(-122.0886,37.711)]"}
-(2 rows)</screen>
+ attname | inherited | n_distinct |          most_common_vals          
+---------+-----------+------------+------------------------------------
+ name    | f         |  -0.363388 | I- 580                        Ramp+
+         |           |            | I- 880                        Ramp+
+         |           |            | Sp Railroad                       +
+         |           |            | I- 580                            +
+         |           |            | I- 680                        Ramp
+ name    | t         |  -0.284859 | I- 880                        Ramp+
+         |           |            | I- 580                        Ramp+
+         |           |            | I- 680                        Ramp+
+         |           |            | I- 580                            +
+         |           |            | State Hwy 13                  Ramp
+(2 rows)
+</screen>
+
+   Note that two rows are displayed for the same column, one corresponding
+   to the complete inheritance hierarchy starting at the
+   <literal>road</literal> table (<literal>inherited</literal>=<literal>t</literal>),
+   and another one including only the <literal>road</literal> table itself
+   (<literal>inherited</literal>=<literal>f</literal>).
+
   </para>
 
   <para>
@@ -804,7 +821,7 @@
    <title>Utilisez <command>COPY</command></title>
 
    <para>
-    Utilisez <xref linkend="sql-copy" endterm="sql-copy-title"/> pour charger
+    Utilisez <xref linkend="sql-copy"/> pour charger
     toutes les lignes en une seule commande, plutôt que d'utiliser une série
     de commandes <command>INSERT</command>. La commande <command>COPY</command>
     est optimisée pour charger un grand nombre de lignes&nbsp;; elle est moins
@@ -817,7 +834,7 @@
 
    <para>
     Si vous ne pouvez pas utiliser <command>COPY</command>, utiliser <xref
-    linkend="sql-prepare" endterm="sql-prepare-title"/> pourrait vous aider à
+    linkend="sql-prepare"/> pourrait vous aider à
     créer une instruction préparée <command>INSERT</command>, puis utilisez
     <command>EXECUTE</command> autant de fois que nécessaire. Ceci évite
     certaines surcharges lors d'une analyse et d'une planification répétées
@@ -839,8 +856,8 @@
     <command>TRUNCATE</command> précédente. Dans ce cas, les journaux de
     transactions ne sont pas impactés car, en cas d'erreur, les fichiers
     contenant les données nouvellement chargées seront supprimés de toute
-    façon. Néanmoins, cette considération ne s'applique pas quand
-    <xref linkend="guc-archive-mode"/> est activé, car toutes les
+    façon. Néanmoins, cette considération ne s'applique que quand
+    <xref linkend="guc-wal-level"/> vaut <literal>minimal</literal>, car toutes les
     commandes doivent écrire dans les journaux de transaction dans ce cas.
    </para>
 
@@ -914,26 +931,28 @@
   </sect2>
 
   <sect2 id="populate-pitr">
-   <title>Désactiver <varname>archive_mode</varname></title>
+   <title>Disable WAL archival and streaming replication</title>
 
    <para>
-    Lors du chargement de grosses quantités de données dans un cluster qui
-    utiliser l'archive des journaux de transaction, vous pouvez souhaiter
-    désactiver l'archivage (désactiver le paramètre <xref
-    linkend="guc-archive-mode"/>) lors du chargement. Il peut être
-    plus rapide de réaliser une nouvelle sauvegarde de base une fois le
-    chargement terminé plutôt que de traiter un grand nombre de données WAL
-    incrémentales. Mais notez qu'activer et désactiver
-    <varname>archive_mode</varname> demande un redémarrage du serveur.
+    When loading large amounts of data into an installation that uses
+    WAL archiving or streaming replication, it might be faster to take a
+    new base backup after the load has completed than to process a large
+    amount of incremental WAL data. You might want to disable archiving
+    and streaming replication while loading, by setting
+    <xref linkend="guc-wal-level"/> to <literal>minimal</literal>,
+    <xref linkend="guc-archive-mode"/> <literal>off</literal>, and
+    <xref linkend="guc-max-wal-senders"/> to zero).
+    But note that changing these settings requires a server restart.
    </para>
 
    <para>
-    En dehors d'éviter le temps de traitement des données WAL, la désactivation
-    rendra certaines commandes plus rapides car elles sont conçues pour ne
-    pas écrire dans les WAL si <varname>archive_mode</varname> est désactivé
-    (elles peuvent garantir une certaine immunité aux arrêts brutaux en
-    exécutant un <function>fsync</function> à la fin plutôt que d'écrire dans
-    les WAL.) Ceci s'applique aux commandes suivantes&nbsp;:
+    Aside from avoiding the time for the archiver or WAL sender to
+    process the WAL data,
+    doing this will actually make certain commands faster, because they
+    are designed not to write WAL at all if <varname>wal_level</varname>
+    is <literal>minimal</literal>.  (They can guarantee crash safety more cheaply
+    by doing an <function>fsync</function> at the end than by writing WAL.)
+    Ceci s'applique aux commandes suivantes&nbsp;:
     <itemizedlist>
      <listitem>
       <para>
@@ -971,8 +990,8 @@
 
    <para>
      Quand vous avez changé significativement la distribution des données à
-     l'intérieur d'une table, lancer <xref linkend="sql-analyze"
-     endterm="sql-analyze-title"/> est fortement recommandée. Ceci inclut le
+     l'intérieur d'une table, lancer <xref linkend="sql-analyze"/> est fortement
+     recommandée. Ceci inclut le
      chargement de grosses quantités de données dans la table. Lancer
      <command>ANALYZE</command> (ou <command>VACUUM ANALYZE</command>) vous
      assure que le planificateur dispose de statistiques à jour sur la table.
@@ -981,9 +1000,8 @@
      requête, amenant des performances pauvres sur toutes les tables sans
      statistiques ou avec des statistiques inexactes. Notez que si le démon
      autovacuum est désactivée, il pourrait exécuter <command>ANALYZE</command>
-     automatiquement&nbsp;; voir <xref linkend="vacuum-for-statistics"
-     endterm="vacuum-for-statistics-title"/> et <xref linkend="autovacuum"
-     endterm="autovacuum-title"/> pour plus d'informations.
+     automatiquement&nbsp;; voir <xref linkend="vacuum-for-statistics"/> et
+     <xref linkend="autovacuum"/> pour plus d'informations.
    </para>
   </sect2>
 
@@ -1019,10 +1037,12 @@
      </listitem>
      <listitem>
       <para>
-       Si vous utilisez l'archivage des WAL, considérez sa désactivation lors
-       de la restauration. Pour cela, désactiver <varname>archive_mode</varname>
-       avant de charger le script de sauvegarde, puis ré-activez-le et réalisez
-       une sauvegarde de base.
+       If using WAL archiving or streaming replication, consider disabling
+       them during the restore. To do that, set <varname>archive_mode</varname> off,
+       <varname>wal_level</varname> to <literal>minimal</literal>, and
+       <varname>max_wal_senders</varname> zero before loading the dump script,
+       and afterwards set them back to the right values and take a fresh
+       base backup.
       </para>
      </listitem>
      <listitem>
@@ -1038,6 +1058,9 @@
        <command>COPY</command> s'exécuteront plus rapidement si vous utilisez une
        transaction simple et que vous avez désactivé l'archivage des journaux de
        transaction.
+       <application>pg_restore</application> also has a <option>--jobs</option> option
+       which allows concurrent data loading and index creation, and has
+       the performance advantages of doing COPY in a single transaction.
       </para>
      </listitem>
      <listitem>
@@ -1071,11 +1094,9 @@
     <varname>maintenance_work_mem</varname>&nbsp;; en fait, vous le ferez lors
     d'une nouvelle création manuelle des index et des clés étrangères. Et
     n'oubliez pas <command>ANALYZE</command> une fois que vous avez terminé&nbsp;;
-    voir <xref linkend="vacuum-for-statistics"
-    endterm="vacuum-for-statistics-title"/> et <xref linkend="autovacuum"
-    endterm="autovacuum-title"/> pour plus d'informations.
+    voir <xref linkend="vacuum-for-statistics"/> et <xref linkend="autovacuum"/>
+    pour plus d'informations.
    </para>
   </sect2>
-  </sect1>
-
- </chapter>
+ </sect1>
+</chapter>

Modified: traduc/trunk/postgresql/pgbench.xml
===================================================================
--- traduc/trunk/postgresql/pgbench.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/pgbench.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -32,13 +32,14 @@
 scaling factor: 10
 query mode: simple
 number of clients: 10
+number of threads: 1
 number of transactions per client: 1000
 number of transactions actually processed: 10000/10000
 tps = 85.184871 (including connections establishing)
 tps = 85.296346 (excluding connections establishing)
  </programlisting>
 
-  Les cinq premières lignes indiquent simplement certains des paramètres
+  Les six premières lignes indiquent simplement certains des paramètres
   les plus importants. La ligne suivant rapporte le nombre de transactions
   terminées et souhaitées (le dernier étant juste le produit du nombre
   de clients avec le nombre de transactions par client)&nbsp;; ils doivent être égaux
@@ -181,6 +182,16 @@
       </entry>
      </row>
      <row>
+      <entry><literal>-j</literal> <replaceable>threads</replaceable></entry>
+      <entry>
+       Number of worker threads within <application>pgbench</application>.
+       Using more than one thread can be helpful on multi-CPU machines.
+       The number of clients must be a multiple of the number of threads,
+       since each thread is given the same number of client sessions to manage.
+       Default is 1.
+      </entry>
+     </row>
+     <row>
       <entry><literal>-t</literal> <replaceable>transactions</replaceable></entry>
       <entry>
        Nombre de transactions exécutées par chaque client. Par défaut, 10.
@@ -272,7 +283,7 @@
       <entry><literal>-C</literal></entry>
       <entry>
        Établie une connexion pour chaque transaction, plutôt que de se
-       connecter une fois par client du thread. Ceci est utile pour mesurer la
+       connecter une fois par client de la session. Ceci est utile pour mesurer la
        charge occasionnée par la connexion.
       </entry>
      </row>
@@ -475,6 +486,54 @@
      </para>
     </listitem>
    </varlistentry>
+
+   <varlistentry>
+    <term>
+     <literal>\setshell <replaceable>varname</replaceable> <replaceable>command</replaceable> [ <replaceable>argument</replaceable> ... ]</literal>
+    </term>
+
+    <listitem>
+     <para>
+      Sets variable <replaceable>varname</replaceable> to the result of the shell command
+      <replaceable>command</replaceable>. The command must return an integer value
+      through its standard output.
+     </para>
+
+     <para>
+      <replaceable>argument</replaceable> can be either a text constant or a
+      <literal>:</literal><replaceable>variablename</replaceable> reference to a variable of
+      any types. If you want to use <replaceable>argument</replaceable> starting with
+      colons, you need to add an additional colon at the beginning of
+      <replaceable>argument</replaceable>.
+     </para>
+
+     <para>
+      Example:
+      <programlisting>
+\setshell variable_to_be_assigned command literal_argument :variable ::literal_starting_with_colon
+      </programlisting>
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     <literal>\shell <replaceable>command</replaceable> [ <replaceable>argument</replaceable> ... ]</literal>
+    </term>
+
+    <listitem>
+     <para>
+      Same as <literal>\setshell</literal>, but the result is ignored.
+     </para>
+
+     <para>
+      Example:
+      <programlisting>
+\shell command literal_argument :variable ::literal_starting_with_colon
+      </programlisting>
+     </para>
+    </listitem>
+   </varlistentry>
   </variablelist>
 
   <para>
@@ -514,9 +573,19 @@
    écrit le temps pris par chaque transaction dans un journal applicatif.
    Le journal sera nommé
    <filename>pgbench_log.<replaceable>nnn</replaceable></filename>, où
-   <replaceable>nnn</replaceable> est le PID du processus pgbench. Le format
-   de ce journal est&nbsp;:
+   <replaceable>nnn</replaceable> est le PID du processus pgbench.
+   If the <literal>-j</literal> option is 2 or higher, creating multiple worker
+   threads, each will have its own log file. The first worker will use the
+   same name for its log file as in the standard single worker case.  
+   The additional log files for the other workers will be named
+   <filename>pgbench_log.<replaceable>nnn</replaceable>.<replaceable>mmm</replaceable></filename>,
+   where <replaceable>mmm</replaceable> is a sequential number for each worker starting
+   with 1.
+  </para>
 
+  <para>
+   Le format de ce journal est&nbsp;:
+
    <programlisting>
     <replaceable>client_id</replaceable> <replaceable>transaction_no</replaceable> <replaceable>time</replaceable> <replaceable>file_no</replaceable> <replaceable>time_epoch</replaceable> <replaceable>time_us</replaceable>
    </programlisting>

Modified: traduc/trunk/postgresql/pgbuffercache.xml
===================================================================
--- traduc/trunk/postgresql/pgbuffercache.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/pgbuffercache.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -61,7 +61,7 @@
       <entry><structfield>relfilenode</structfield></entry>
       <entry><type>oid</type></entry>
       <entry><literal>pg_class.relfilenode</literal></entry>
-      <entry>Champ relfilenode de la relation</entry>
+      <entry>Numéro filenode de la relation</entry>
      </row>
 
      <row>
@@ -145,7 +145,7 @@
   <programlisting>
   regression=# SELECT c.relname, count(*) AS buffers
                FROM pg_buffercache b INNER JOIN pg_class c
-               ON b.relfilenode = c.relfilenode AND
+               ON b.relfilenode = pg_relation_filenode(c.oid) AND
                   b.reldatabase IN (0, (SELECT oid FROM pg_database
                                         WHERE datname = current_database()))
                GROUP BY c.relname

Modified: traduc/trunk/postgresql/pgstatstatements.xml
===================================================================
--- traduc/trunk/postgresql/pgstatstatements.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/pgstatstatements.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -91,7 +91,63 @@
       <entry></entry>
       <entry>Nombre total de lignes renvoyées ou affectées par l'ordre SQL</entry>
      </row>
+     
+     <row>
+      <entry><structfield>shared_blks_hit</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of shared blocks hits by the statement</entry>
+     </row>
 
+     <row>
+      <entry><structfield>shared_blks_read</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of shared blocks reads by the statement</entry>
+     </row>
+
+     <row>
+      <entry><structfield>shared_blks_written</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of shared blocks writes by the statement</entry>
+     </row>
+
+     <row>
+      <entry><structfield>local_blks_hit</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of local blocks hits by the statement</entry>
+     </row>
+
+     <row>
+      <entry><structfield>local_blks_read</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of local blocks reads by the statement</entry>
+     </row>
+
+     <row>
+      <entry><structfield>local_blks_written</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of local blocks writes by the statement</entry>
+     </row>
+
+     <row>
+      <entry><structfield>temp_blks_read</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of temp blocks reads by the statement</entry>
+     </row>
+
+     <row>
+      <entry><structfield>temp_blks_written</structfield></entry>
+      <entry><type>bigint</type></entry>
+      <entry></entry>
+      <entry>Total number of temp blocks writes by the statement</entry>
+     </row>
+
     </tbody>
    </tgroup>
   </table>
@@ -185,6 +241,23 @@
 
    <varlistentry>
     <term>
+     <varname>pg_stat_statements.track_utility</varname> (<type>boolean</type>)
+    </term>
+
+    <listitem>
+     <para>
+      <varname>pg_stat_statements.track_utility</varname> controls whether
+      utility commands are tracked by the module.  Utility commands are
+      all those other than <command>SELECT</command>, <command>INSERT</command>,
+      <command>UPDATE</command> and <command>DELETE</command>.
+      The default value is <literal>on</literal>.
+      Only superusers can change this setting.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
      <varname>pg_stat_statements.save</varname> (<type>boolean</type>)
     </term>
 
@@ -232,36 +305,45 @@
  <sect2>
   <title>Exemple de sortie</title>
 
-  <programlisting>
+  <programlisting>bench=# SELECT pg_stat_statements_reset();
+
 $ pgbench -i bench
-
-postgres=# SELECT pg_stat_statements_reset();
-
 $ pgbench -c10 -t300 -M prepared bench
 
-postgres=# \x
-postgres=# SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
--[ RECORD 1 ]------------------------------------------------------------
-userid     | 10
-dbid       | 63781
-query      | UPDATE branches SET bbalance = bbalance + $1 WHERE bid = $2;
-calls      | 3000
-total_time | 20.716706
-rows       | 3000
--[ RECORD 2 ]------------------------------------------------------------
-userid     | 10
-dbid       | 63781
-query      | UPDATE tellers SET tbalance = tbalance + $1 WHERE tid = $2;
-calls      | 3000
-total_time | 17.1107649999999
-rows       | 3000
--[ RECORD 3 ]------------------------------------------------------------
-userid     | 10
-dbid       | 63781
-query      | UPDATE accounts SET abalance = abalance + $1 WHERE aid = $2;
-calls      | 3000
-total_time | 0.645601
-rows       | 3000
+bench=# \x
+bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit /
+               nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
+          FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;
+-[ RECORD 1 ]---------------------------------------------------------------------
+query       | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2;
+calls       | 3000
+total_time  | 9.60900100000002
+rows        | 2836
+hit_percent | 99.9778970000200936
+-[ RECORD 2 ]---------------------------------------------------------------------
+query       | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2;
+calls       | 3000
+total_time  | 8.015156
+rows        | 2990
+hit_percent | 99.9731126579631345
+-[ RECORD 3 ]---------------------------------------------------------------------
+query       | copy pgbench_accounts from stdin
+calls       | 1
+total_time  | 0.310624
+rows        | 100000
+hit_percent | 0.30395136778115501520
+-[ RECORD 4 ]---------------------------------------------------------------------
+query       | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2;
+calls       | 3000
+total_time  | 0.271741999999997
+rows        | 3000
+hit_percent | 93.7968855088209426
+-[ RECORD 5 ]---------------------------------------------------------------------
+query       | alter table pgbench_accounts add primary key (aid)
+calls       | 1
+total_time  | 0.08142
+rows        | 0
+hit_percent | 34.4947735191637631
   </programlisting>
  </sect2>
 

Added: traduc/trunk/postgresql/pgupgrade.xml
===================================================================
--- traduc/trunk/postgresql/pgupgrade.xml	                        (rev 0)
+++ traduc/trunk/postgresql/pgupgrade.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,530 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgupgrade.sgml,v 1.9 2010-05-19 20:47:18 momjian Exp $ -->
+
+<sect1 id="pgupgrade">
+ <title>pg_upgrade</title>
+
+ <indexterm zone="pgupgrade">
+  <primary>pg_upgrade</primary>
+ </indexterm>
+
+ <para>
+  <application>pg_upgrade</application> (formerly called pg_migrator) allows data
+  stored in <productname>PostgreSQL</productname> data files to be migrated to a later <productname>PostgreSQL</productname>
+  major version without the data dump/reload typically required for
+  major version upgrades, e.g. from 8.4.7 to the current major release
+  of <productname>PostgreSQL</productname>.  It is not required for minor version upgrades, e.g
+  9.0.1 -> 9.0.4.
+ </para>
+
+ <sect2>
+  <title>Supported Versions</title>
+
+  <para>
+   pg_upgrade supports upgrades from 8.3.X and later to the current
+   major release of <productname>PostgreSQL</productname>, including snapshot and alpha releases.
+
+  </para>
+
+ </sect2>
+
+ <sect2>
+  <title><application>pg_upgrade</application> options</title>
+
+   <para>
+    <application>pg_upgrade</application> accepts the following command-line arguments:
+
+    <variablelist>
+
+     <varlistentry>
+      <term><option>-d</option> <replaceable>OLDDATADIR</replaceable></term>
+      <term><option>--old-datadir</option> <replaceable>OLDDATADIR</replaceable></term>
+      <listitem><para>specify the old cluster data directory</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-D</option> <replaceable>NEWDATADIR</replaceable></term>
+      <term><option>--new-datadir</option> <replaceable>NEWDATADIR</replaceable></term>
+      <listitem><para>specify the new cluster data directory</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-b</option> <replaceable>OLDBINDIR</replaceable></term>
+      <term><option>--old-bindir</option> <replaceable>OLDBINDIR</replaceable></term>
+      <listitem><para>specify the old cluster executable directory</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-B</option> <replaceable>NEWBINDIR</replaceable></term>
+      <term><option>--new-bindir</option> <replaceable>NEWBINDIR</replaceable></term>
+      <listitem><para>specify the new cluster executable directory</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-p</option> <replaceable>portnum</replaceable></term>
+      <term><option>--old-port</option> <replaceable>portnum</replaceable></term>
+      <listitem><para>specify the old cluster port number</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-P</option> <replaceable>portnum</replaceable></term>
+      <term><option>--new-port</option> <replaceable>portnum</replaceable></term>
+      <listitem><para>specify the new cluster port number</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-u</option> <replaceable>username</replaceable></term>
+      <term><option>--user</option> <replaceable>username</replaceable></term>
+      <listitem><para>clusters superuser</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-c</option></term>
+      <term><option>--check</option></term>
+      <listitem><para>check clusters only, don't change any data</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-d</option></term>
+      <term><option>--debug</option></term>
+      <listitem><para>enable debugging</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-G</option> <replaceable>DEBUGFILENAME</replaceable></term>
+      <term><option>--debugfile</option> <replaceable>DEBUGFILENAME</replaceable></term>
+      <listitem><para>output debugging activity to file</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-k</option></term>
+      <term><option>--link</option></term>
+      <listitem><para>link instead of copying files to new cluster</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-l</option> <replaceable>LOGFILENAME</replaceable></term>
+      <term><option>--logfile</option> <replaceable>LOGFILENAME</replaceable></term>
+      <listitem><para>log session activity to file</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-v</option></term>
+      <term><option>--verbose</option></term>
+      <listitem><para>enable verbose output</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-V</option></term>
+      <term><option>--version</option></term>
+      <listitem><para>display version information, then exit</para></listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-h</option></term>
+      <term><option>--help</option></term>
+      <listitem><para>show help, then exit</para></listitem>
+     </varlistentry>
+
+    </variablelist>
+   </para>
+
+ </sect2>
+
+ <sect2>
+  <title>Upgrade Steps</title>
+
+  <orderedlist>
+   <listitem>
+    <para>
+     Optionally move the old cluster
+    </para>
+ 
+    <para>
+     If you are using a version-specific installation directory, e.g.
+     /opt/PostgreSQL/8.4, you do not need to move the old cluster. The
+     one-click installers all use version-specific install directories.
+    </para>
+ 
+    <para>    
+     If your installation directory is not version-specific, e.g.
+     /usr/local/pgsql, it is necessary to move the current PostgreSQL install
+     directory so it does not interfere with the new <productname>PostgreSQL</productname> installation.
+     Once the current <productname>PostgreSQL</productname> server is shut down, it is safe to rename the
+     PostgreSQL install directory; assuming the old directory is
+     /usr/local/pgsql, you can do:
+ 
+<programlisting>
+mv /usr/local/pgsql /usr/local/pgsql.old
+</programlisting>
+     to rename the directory.
+    </para>
+ 
+   </listitem>
+ 
+   <listitem>
+    <para>
+     For source installs, build the new version
+    </para>
+ 
+    <para>
+     Build the new PostgreSQL source with configure flags that are compatible
+     with the old cluster. <application>pg_upgrade</application> will check <command>pg_controldata</command> to make
+     sure all settings are compatible before starting the upgrade.
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Install the new PostgreSQL binaries
+    </para>
+ 
+    <para>
+     Install the new server's binaries and support files. You can use the
+     same port numbers for both clusters, typically 5432, because the old and
+     new clusters will not be running at the same time.
+    </para>
+ 
+    <para>
+     For source installs, if you wish to install the new server in a custom
+     location, use 'prefix':
+ 
+<programlisting>
+gmake prefix=/usr/local/pgsql.new install
+</programlisting>
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Install <application>pg_upgrade</application> and
+     <application>pg_upgrade_support</application> in the new PostgreSQL cluster
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Initialize the new PostgreSQL cluster
+    </para>
+ 
+    <para>
+     Initialize the new cluster <xref
+   linkend="app-initdb" />,<indexterm><primary>initdb</primary></indexterm>.
+     Again, use compatible initdb
+     flags that match the old cluster. Many
+     prebuilt installers do this step automatically. There is no need to
+     start the new cluster.
+    </para>
+ 
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Install custom shared object files (or DLLs)
+    </para>
+ 
+    <para>
+     Install any custom shared object files (or DLLs) used by the old cluster
+     into the new cluster, e.g. pgcrypto.so, whether they are from /contrib
+     or some other source. Do not install the schema definitions, e.g.
+     pgcrypto.sql --- these will be migrated from the old cluster.
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Adjust authentication
+    </para>
+ 
+    <para>
+     pg_upgrade will connect to the old and new servers several times,
+     so you might want to set authentication to <literal>trust</literal> in
+     <filename>pg_hba.conf</filename>, or if using <literal>md5</literal> authentication,
+     use a <filename>~/.pgpass</filename> file (see <xref linkend="libpq-pgpass" />)
+     to avoid being prompted repeatedly for a password.
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Stop both servers
+    </para>
+ 
+    <para>
+     Make sure both database servers are stopped using on Unix, e.g.:
+ 
+<programlisting>
+pg_ctl --pgdata /opt/PostgreSQL/8.4 stop
+pg_ctl --pgdata /opt/PostgreSQL/9.0 stop
+</programlisting>
+ 
+     or on Windows
+ 
+<programlisting>
+NET STOP postgresql-8.4
+NET STOP postgresql-9.0
+</programlisting>
+ 
+     or
+ 
+<programlisting>
+NET STOP pgsql-8.3  (<productname>PostgreSQL</productname> 8.3 and older used a different service name)
+</programlisting>
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Run <application>pg_upgrade</application>
+    </para>
+ 
+    <para>
+     Always run the <application>pg_upgrade</application> binary in the new server, not the old one.
+     <application>pg_upgrade</application> requires the specification of the old and new cluster's
+     <varname>PGDATA</varname> and executable (/bin) directories. You can also specify separate
+     user and port values, and whether you want the data linked instead of
+     copied (the default). If you use linking, the migration will be much
+     faster (no data copying), but you will no longer be able to access your
+     old cluster once you start the new cluster after the upgrade. See
+     pg_upgrade --help for a full list of options.
+    </para>
+ 
+    <para>
+     For Windows users, you must be logged into an administrative account, and
+     then start a shell as the 'postgres' user and set the proper path:
+ 
+<programlisting>
+RUNAS /USER:postgres "CMD.EXE"
+SET PATH=%PATH%;C:\Program Files\PostgreSQL\9.0\bin;
+</programlisting>
+ 
+     and then run <application>pg_upgrade</application> with quoted directories, e.g.:
+ 
+<programlisting>
+pg_upgrade.exe
+        --old-datadir "C:/Program Files/PostgreSQL/8.4/data"
+        --new-datadir "C:/Program Files/PostgreSQL/9.0/data"
+        --old-bindir "C:/Program Files/PostgreSQL/8.4/bin"
+        --new-bindir "C:/Program Files/PostgreSQL/9.0/bin"
+</programlisting>
+ 
+     Once started, pg_upgrade will verify the two clusters are compatible
+     and then do the migration. You can use pg_upgrade <option>--check</option>
+     to perform only the checks, even if the old server is still
+     running. pg_upgrade <option>--check</option> will also outline any
+     manual adjustments you will need to make after the migration.
+    </para>
+ 
+    <para>
+     Obviously, no one should be accessing the clusters during the migration.
+    </para>
+ 
+    <para>
+     If an error occurs while restoring the database schema, pg_upgrade will
+     exit and you will have to revert to the old cluster as outlined in step
+     #15 below. To try pg_upgrade again, you will need to modify the old
+     cluster so the pg_upgrade schema restore succeeds. If the problem is a
+     /contrib module, you might need to uninstall the /contrib module from
+     the old cluster and install it in the new cluster after the migration,
+     assuming the module is not being used to store user data.
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Restore <filename>pg_hba.conf</filename>
+    </para>
+ 
+    <para>
+     If you modified <filename>pg_hba.conf</filename> to use <literal>trust</literal>,
+     restore its original authentication settings.
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Post-Migration processing
+    </para>
+ 
+    <para>
+     If any post-migration processing is required, pg_upgrade will issue
+     warnings as it completes. It will also generate script files that must
+     be run by the administrator. The script files will connect to each
+     database that needs post-migration processing. Each script should be
+     run using:
+ 
+<programlisting>
+psql --username postgres --file script.sql postgres
+</programlisting>
+ 
+     The scripts can be run in any order and can be deleted once they have
+     been run.
+    </para>
+
+    <caution> 
+    <para>
+     In general it is unsafe to access tables referenced in rebuild scripts
+     until the rebuild scripts have run to completion; doing so could yield
+     incorrect results or poor performance. Tables not referenced in rebuild
+     scripts can be accessed immediately.
+    </para>
+    </caution>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Statistics
+    </para>
+    <caution> 
+    <para>
+     Because optimizer statistics are not transferred by pg_upgrade, you will
+     be instructed to run a command to regenerate that information at the end
+     of the migration.
+    </para>
+    </caution>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Delete old cluster
+    </para>
+ 
+    <para>
+     Once you are satisfied with the upgrade, you can delete the old
+     cluster's data directories by running the script mentioned when
+     pg_upgrade completes. You will need to manually delete the old install
+     directories, e.g. /bin, /share.
+    </para>
+   </listitem>
+ 
+   <listitem>
+    <para>
+     Reverting to old cluster
+    </para>
+ 
+    <para>
+     If, after running pg_upgrade, you wish to revert to the old cluster,
+     there are several options.
+    </para>
+ 
+    <para>
+     If you ran pg_upgrade with <option>--check</option>, no modifications
+     were made to the old cluster and you can re-use it anytime.
+    </para>
+ 
+    <para>
+     If you ran pg_upgrade with <option>--link</option>, the data files
+     are shared between the old and new cluster. If you started
+     the new cluster, the new server has written to those shared
+     files and it is unsafe to use the old cluster.
+    </para>
+ 
+    <para>
+     If you ran pg_upgrade <emphasis>without</emphasis>_ <option>--link</option>
+     or did not start the new server, the old cluster was not
+     modified except that an <literal>.old</literal> suffix was appended
+     to <filename>$PGDATA/global/pg_control</filename> and perhaps tablespace
+     directories. To reuse the old cluster, remove the ".old"
+     suffix from <filename>$PGDATA/global/pg_control</filename>. and, if
+     migrating to 8.4 or earlier, remove the tablespace directories
+     created by the migration and remove the ".old" suffix from
+     the tablespace directory names; then you can restart the old
+     cluster.
+    </para>
+ 
+   </listitem>
+  </orderedlist>
+ 
+  </sect2>
+ 
+  <sect2>
+  <title>Limitations in migrating <emphasis>from</emphasis> PostgreSQL 8.3</title>
+ 
+ 
+  <para>
+   pg_upgrade will not work for a migration from 8.3 if a user column
+   is defined as:
+   <itemizedlist>
+    <listitem>
+     <para>
+      a <type>tsquery</type> data type
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      data type <type>name</type> and is not the first column
+     </para>
+    </listitem>
+   </itemizedlist>
+  </para>
+
+  <para>
+   You must drop any such columns and migrate them manually.
+  </para>
+ 
+  <para>
+   pg_upgrade will require a table rebuild if:
+   <itemizedlist>
+    <listitem>
+     <para>
+      a user column is of data type tsvector
+     </para>
+    </listitem>
+   </itemizedlist>
+  </para>
+ 
+  <para>
+   pg_upgrade will require a reindex if:
+   <itemizedlist>
+    <listitem>
+     <para>
+      an index is of type hash or gin
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      an index uses <function>bpchar_pattern_ops</function>
+     </para>
+    </listitem>
+   </itemizedlist>
+  </para>
+ 
+  <para>
+   Also, the default datetime storage format changed to integer after
+   <productname>PostgreSQL</productname> 8.3. pg_upgrade will check that the datetime storage format
+   used by the old and new clusters match. Make sure your new cluster is
+   built with the configure flag <option>--disable-integer-datetimes</option>.
+  </para>
+ 
+  <para>
+   For Windows users, note that due to different integer datetimes settings
+   used by the one-click installer and the MSI installer, it is only
+   possible to upgrade from version 8.3 of the one-click distribution to
+   version 8.4 of the one-click distribution. It is not possible to upgrade
+   from the MSI installer to the one-click installer.
+  </para>
+ 
+  <para>  
+   All failure, rebuild, and reindex cases will be reported by <application>pg_upgrade</application>
+   if they affect your installation; post-migration scripts to rebuild
+   tables and indexes will be automatically generated. 
+  </para>
+ 
+  <para>
+   For deployment testing, create a schema-only copy of the old cluster,
+   insert dummy data, and migrate that. 
+  </para>
+ 
+  <para>  
+   If you want to use link mode and you don't want your old cluster
+   to be modified when the new cluster is started, make a copy of the
+   old cluster and migrate that with link mode. To make a valid copy
+   of the old cluster, use <application>rsync</application> to create a dirty
+   copy of the old cluster while the server is running, then shut down
+   the old server and run rsync again to update the copy with any
+   changes to make it consistent.
+  </para>
+ 
+ </sect2>
+ 
+</sect1>
+ 

Modified: traduc/trunk/postgresql/plhandler.xml
===================================================================
--- traduc/trunk/postgresql/plhandler.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/plhandler.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -115,6 +115,10 @@
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
 
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
 PG_FUNCTION_INFO_V1(plsample_call_handler);
 
 Datum
@@ -160,9 +164,70 @@
    </para>
 
    <para>
+    Although providing a call handler is sufficient to create a minimal
+    procedural language, there are two other functions that can optionally
+    be provided to make the language more convenient to use.  These
+    are a <firstterm>validator</firstterm> and an
+    <firstterm>inline handler</firstterm>.  A validator can be provided
+    to allow language-specific checking to be done during
+    <xref linkend="sql-createfunction"/>.
+    An inline handler can be provided to allow the language to support
+    anonymous code blocks executed via the <xref linkend="sql-do"
+   /> command.
+   </para>
+
+   <para>
+    If a validator is provided by a procedural language, it
+    must be declared as a function taking a single parameter of type
+    <type>oid</type>.  The validator's result is ignored, so it is customarily
+    declared to return <type>void</type>.  The validator will be called at
+    the end of a <command>CREATE FUNCTION</command> command that has created
+    or updated a function written in the procedural language.
+    The passed-in OID is the OID of the function's <classname>pg_proc</classname>
+    row.  The validator must fetch this row in the usual way, and do
+    whatever checking is appropriate.  Typical checks include verifying
+    that the function's argument and result types are supported by the
+    language, and that the function's body is syntactically correct
+    in the language.  If the validator finds the function to be okay,
+    it should just return.  If it finds an error, it should report that
+    via the normal <function>ereport()</function> error reporting mechanism.
+    Throwing an error will force a transaction rollback and thus prevent
+    the incorrect function definition from being committed.
+   </para>
+
+   <para>
+    Validator functions should typically honor the <xref
+    linkend="guc-check-function-bodies"/> parameter: if it is turned off then
+    any expensive or context-sensitive checking should be skipped.
+    In particular, this parameter is turned off by <application>pg_dump</application>
+    so that it can load procedural language functions without worrying
+    about possible dependencies of the function bodies on other database
+    objects.  (Because of this requirement, the call handler should avoid
+    assuming that the validator has fully checked the function.  The point
+    of having a validator is not to let the call handler omit checks, but
+    to notify the user immediately if there are obvious errors in a
+    <command>CREATE FUNCTION</command> command.)
+   </para>
+
+   <para>
+    If an inline handler is provided by a procedural language, it
+    must be declared as a function taking a single parameter of type
+    <type>internal</type>.  The inline handler's result is ignored, so it is
+    customarily declared to return <type>void</type>.  The inline handler
+    will be called when a <command>DO</command> statement is executed specifying
+    the procedural language.  The parameter actually passed is a pointer
+    to an <structname>InlineCodeBlock</structname> struct, which contains information
+    about the <command>DO</command> statement's parameters, in particular the
+    text of the anonymous code block to be executed.  The inline handler
+    should execute this code and return.
+   </para>
+
+   <para>
     Les langages procéduraux inclus dans la distribution standard sont de
     bons points de départ à l'écriture de son propre gestionnaire
-    d'appels. Les sources se trouvent dans le répertoire <filename>src/pl</filename>.
+    de langage. Les sources se trouvent dans le répertoire <filename>src/pl</filename>.
+    The <xref linkend="sql-createlanguage"/>
+    reference page also has some useful details.
    </para>
 
  </chapter>

Modified: traduc/trunk/postgresql/plperl.xml
===================================================================
--- traduc/trunk/postgresql/plperl.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/plperl.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -18,7 +18,7 @@
   <para>
    PL/Perl est un langage de procédures chargeable qui vous permet d'écrire des
    fonctions <productname>PostgreSQL</productname> dans le <ulink
-   url="http://www.perl.com">langage de programmation Perl</ulink>.
+   url="http://www.perl.org">langage de programmation Perl</ulink>.
   </para>
 
   <para>
@@ -57,8 +57,7 @@
 
   <para>
    Pour créer une fonction dans le langage PL/Perl, utilisez la syntaxe
-   standard <xref linkend="sql-createfunction"
-   endterm="sql-createfunction-title"/>&nbsp;:
+   standard <xref linkend="sql-createfunction"/>&nbsp;:
 <programlisting>CREATE FUNCTION <replaceable>nom_fonction</replaceable> (<replaceable>types-arguments</replaceable>) RETURNS
 <replaceable>type-retour</replaceable> AS $$
     # Corps de la fonction PL/Perl
@@ -66,21 +65,38 @@
 </programlisting>
    Le corps de la fonction est du code Perl normal. En fait, le code
    supplémentaire PL/Perl l'emballe dans une sous-routine Perl. Une fonction
-   PL/Perl doit toujours renvoyer une valeur scalaire. Vous pouvez renvoyer
-   des structures plus complexes (tableaux, enregistrements et ensembles) en
-   renvoyant une référence comme indiqué ci-dessous. Ne renvoyez jamais une
-   liste.
+   PL/Perl is
+   called in a scalar context, so it can't return a list.  You can return
+   non-scalar values (arrays, records, and sets) by returning a reference,
+   as discussed below.
   </para>
 
+  <para>
+   PL/Perl also supports anonymous code blocks called with the
+   <xref linkend="sql-do"/> statement:
+
+<programlisting>
+DO $$
+    # PL/Perl code
+$$ LANGUAGE plperl;
+</programlisting>
+
+   An anonymous code block receives no arguments, and whatever value it
+   might return is discarded.  Otherwise it behaves just like a function.
+  </para>
+
   <note>
    <para>
     L'utilisation de sous-routines nommées est dangereux en Perl, spécialement
     si elles font références à des variables lexicales dans la partie
     englobante. Comme une fonction PL/Perl est englobée dans une sous-routine,
-    toute sous-routine nommée que vous créez sera englobée. En général, il est
-    bien plus sûr de créer des sous-routines anonymes que vous appelerez via
-    un <quote>coderef</quote>. Voir la page man de <literal>perldiag</literal>
-    pour les détails.
+    any named subroutine you place inside
+    one will be nested. In general, it is far safer to create anonymous
+    subroutines which you call via a coderef. For more information, see the
+    entries for <literal>Variable "%s" will not stay shared</literal> and
+    <literal>Variable "%s" is not available</literal> in the
+    <citerefentry><refentrytitle>perldiag</refentrytitle></citerefentry> man page, or
+    search the Internet for <quote>perl nested named subroutine</quote>.
    </para>
   </note>
 
@@ -131,13 +147,13 @@
    écrit&nbsp;:
 
 <programlisting>CREATE FUNCTION perl_max (integer, integer) RETURNS integer AS $$
-    my ($x,$y) = @_;
-    if (! defined $x) {
-        if (! defined $y) { return undef; }
+    my ($x, $y) = @_;
+    if (not defined $x) {
+        return undef if not defined $y;
         return $y;
     }
-    if (! defined $y) { return $x; }
-    if ($x &gt; $y) { return $x; }
+    return $x if not defined $y;
+    return $x if $x &gt; $y;
     return $y;
 $$ LANGUAGE plperl;
 </programlisting>
@@ -152,26 +168,18 @@
    <productname>PostgreSQL</productname> pour ce type de données. Dans le cas
    de types numériques ou texte, Perl fera ce qu'il faut et le programmeur
    n'aura pas à s'en soucier. Néanmoins, dans d'autres cas, l'argument aura
-   besoin d'être converti dans une forme qui est plus utilisable que Perl. Par
-   exemple, voici comment convertir un argument du type <type>bytea</type> dans
-   des données binaires non échappées&nbsp;:
-
-<programlisting>    my $arg = shift;
-    $arg =~ s!\\(?:\\|(\d{3}))!$1 ? chr(oct($1)) : "\\"!ge;
-</programlisting>
-
+   besoin d'être converti dans une forme qui est plus utilisable que Perl.
+   For example, the <function>decode_bytea</function>
+   function can be used to convert an argument of
+   type <type>bytea</type> into unescaped binary.
   </para>
 
   <para>
    De façon similaire, les valeurs renvoyées à
    <productname>PostgreSQL</productname> doivent être dans le format textuel.
-   Par exemple, voici comment échapper des données binaires pour une valeur de
-   retour de type <type>bytea</type>&nbsp;:
-
-<programlisting>    $retval =~ s!(\\|[^ -~])!sprintf("\\%03o",ord($1))!ge;
-    return $retval;
-</programlisting>
-
+   For example, the
+   <function>encode_bytea</function> function can be used to
+   to escape binary data for a return value of type <type>bytea</type>.
   </para>
 
   <para>
@@ -281,26 +289,44 @@
 
   <para>
    Si vous souhaitez utiliser le pragma <literal>strict</literal> dans votre code,
-   la façon la plus simple de le faire est de configurer (<command>SET</command>)
-   <literal>plperl.use_strict</literal> à true. Ce paramètre affecte les
+    you 
+   have a few options. For temporary global use you can (<command>SET</command>)
+   <literal>plperl.use_strict</literal> à true. Ce paramètre affectera les
    compilations suivantes de fonctions <application>PL/Perl</application>, mais
-   pas les fonctions déjà compilées dans la session en cours. Pour configurer
-   le paramètre avant que <application>PL/Perl</application> ne soit chargé, il est
-   nécessaire d'avoir ajouté <quote><literal>plperl</literal></quote> dans la liste <xref
-   linkend="guc-custom-variable-classes"/> de
-   <filename>postgresql.conf</filename>.
+   pas les fonctions déjà compilées dans la session en cours.
+   For permanent global use you can set <literal>plperl.use_strict</literal>
+   to true in the <filename>postgresql.conf</filename> file.
   </para>
 
   <para>
-   Une autre façon d'utiliser le pragma <literal>strict</literal> est de
-   placer&nbsp;:
+   For permanent use in specific functions you can simply put:
 <programlisting>use strict;
 </programlisting>
-   dans le corps de la fonction.
+   en haut du corps de la fonction.
   </para>
+  
+  <para>
+  The <literal>feature</literal> pragma is also available to <function>use</function> if your Perl is version 5.10.0 or higher.
+  </para>
  </sect1>
 
- <sect1 id="plperl-database">
+ <sect1 id="plperl-data">
+  <title>Data Values in PL/Perl</title>
+
+  <para>
+   The argument values supplied to a PL/Perl function's code are
+   simply the input arguments converted to text form (just as if they
+   had been displayed by a <command>SELECT</command> statement).
+   Conversely, the <function>return</function> and <function>return_next</function>
+   commands will accept any string that is acceptable input format
+   for the function's declared return type.
+  </para>
+ </sect1>
+
+ <sect1 id="plperl-builtins">
+  <title>Built-in Functions</title>
+
+ <sect2 id="plperl-database">
   <title>Accès à la base de données depuis PL/Perl</title>
 
   <para>
@@ -572,7 +598,13 @@
     </para>
     </listitem>
     </varlistentry>
+   </variablelist>
+ </sect2>
 
+ <sect2 id="plperl-utility-functions">
+  <title>Utility functions in PL/Perl</title>
+
+   <variablelist>
     <varlistentry>
      <term><literal><function>elog</function>(<replaceable>level</replaceable>,
      <replaceable>msg</replaceable>)</literal></term>
@@ -601,23 +633,144 @@
       </para>
      </listitem>
     </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>quote_literal</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>quote_literal</function>(<replaceable>string</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Return the given string suitably quoted to be used as a string literal in an SQL
+        statement string. Embedded single-quotes and backslashes are properly doubled.
+        Note that <function>quote_literal</function> returns undef on undef input; if the argument
+        might be undef, <function>quote_nullable</function> is often more suitable.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>quote_nullable</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>quote_nullable</function>(<replaceable>string</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Return the given string suitably quoted to be used as a string literal in an SQL
+        statement string; or, if the argument is undef, return the unquoted string "NULL".
+        Embedded single-quotes and backslashes are properly doubled.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>quote_ident</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>quote_ident</function>(<replaceable>string</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Return the given string suitably quoted to be used as an identifier in
+        an SQL statement string. Quotes are added only if necessary (i.e., if
+        the string contains non-identifier characters or would be case-folded).
+        Embedded quotes are properly doubled.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>decode_bytea</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>decode_bytea</function>(<replaceable>string</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Return the unescaped binary data represented by the contents of the given string,
+        which should be bytea encoded.
+        </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>encode_bytea</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>encode_bytea</function>(<replaceable>string</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Return the bytea encoded form of the binary data contents of the given string.
+        </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>encode_array_literal</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>encode_array_literal</function>(<replaceable>array</replaceable>)</literal></term>
+     <term><literal><function>encode_array_literal</function>(<replaceable>array</replaceable>, <replaceable>delimiter</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Returns the contents of the referenced array as a string in array literal format
+        (see <xref linkend="arrays-input"/>).
+        Returns the argument value unaltered if it's not a reference to an array.
+        The delimiter used between elements of the array literal defaults to "<literal>, </literal>"
+        if a delimiter is not specified or is undef.
+        </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>encode_array_constructor</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>encode_array_constructor</function>(<replaceable>array</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Returns the contents of the referenced array as a string in array constructor format
+        (see <xref linkend="sql-syntax-array-constructors"/>).
+        Individual values are quoted using <function>quote_nullable</function>.
+        Returns the argument value, quoted using <function>quote_nullable</function>,
+        if it's not a reference to an array.
+        </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <indexterm>
+      <primary>looks_like_number</primary>
+      <secondary>in PL/Perl</secondary>
+     </indexterm>
+
+     <term><literal><function>looks_like_number</function>(<replaceable>string</replaceable>)</literal></term>
+     <listitem>
+      <para>
+        Returns a true value if the content of the given string looks like a
+        number, according to Perl, returns false otherwise.
+        Returns undef if the argument is undef.  Leading and trailing space is
+        ignored. <literal>Inf</literal> and <literal>Infinity</literal> are regarded as numbers.
+        </para>
+     </listitem>
+    </varlistentry>
+
    </variablelist>
+ </sect2>
  </sect1>
 
- <sect1 id="plperl-data">
-   <title>Valeurs des données dans PL/Perl</title>
-   
-   <para>
-     Les valeurs de l'argument fournies au code d'une fonction PL/Perl sont
-     simplement les arguments en entrée convertis dans la forme textuelle
-     (comme si elles avaient été affichées par une instruction 
-     <command>SELECT</command>). En revanche, une commande <literal>return</literal>
-     acceptera toute chaîne dont le format en entrée est acceptable pour le
-     type déclaré en retour. Donc, à l'intérieur de la fonction PL/Perl,
-     toutes les valeurs sont simplement des chaînes de texte.
-   </para>
- </sect1>
-
 <sect1 id="plperl-global">
   <title>Valeurs globales dans PL/Perl</title>
   
@@ -671,6 +824,13 @@
     <literal>return $_SHARED{myquote}-&gt;($_[0]);</literal>
     au prix d'une mauvaise lisibilité.)
   </para>
+
+  <para>
+    The <varname>%_SHARED</varname> variable and other global state within
+    the language is public data, available to all PL/Perl functions within a
+    session. Use with care, especially in situations that involve use of 
+    multiple roles or <literal>SECURITY DEFINER</literal> functions.
+  </para>
 </sect1>
 
  <sect1 id="plperl-trusted">
@@ -738,6 +898,13 @@
    le langage <literal>plperlu</literal>, l'exécution de celle-ci réussira.
   </para>
 
+  <para>
+   In the same way, anonymous code blocks written in Perl can use
+   restricted operations if the language is specified as
+   <literal>plperlu</literal> rather than <literal>plperl</literal>, but the caller
+   must be a superuser.
+  </para>
+
   <note>
     <para>
       Pour des raisons de sécurité, pour stopper une faille des opérations
@@ -751,10 +918,11 @@
       place. En conséquence, dans une telle installation, vous ne pouvez pas
       utiliser à la fois <application>PL/PerlU</application> et
       <application>PL/Perl</application> dans le même processus serveur. Le
-      remède à ceci est d'obtenir une installation Perl créée avec les options
-      appropriées, nommément soit <literal>usemultiplicity</literal> soit
-      <literal>usethreads</literal> et <literal>useithreads</literal>. Pour plus
-      de détails, voir la page man de <literal>perlembed</literal>.
+      remède à ceci est d'obtenir une installation Perl configurée avec les options
+      appropriées, nommément <literal>usemultiplicity</literal> ou
+      <literal>useithreads</literal>. <literal>usemultiplicity</literal> is preferred
+      unless you actually need to use threads. For more details, see the
+      <citerefentry><refentrytitle>perlembed</refentrytitle></citerefentry> man page.
     </para>
   </note>
 
@@ -952,7 +1120,131 @@
    </para>
  </sect1>
 
- <sect1 id="plperl-missing">
+ <sect1 id="plperl-under-the-hood">
+  <title>PL/Perl Under the Hood</title>
+
+ <sect2 id="plperl-config">
+  <title>Configuration</title>
+
+  <para>
+  This section lists configuration parameters that affect <application>PL/Perl</application>.
+  To set any of these parameters before <application>PL/Perl</application> has been loaded,
+  it is necessary to have added <quote><literal>plperl</literal></quote> to the
+  <xref linkend="guc-custom-variable-classes"/> list in
+  <filename>postgresql.conf</filename>.
+  </para>
+
+  <variablelist>
+
+     <varlistentry id="guc-plperl-on-init" xreflabel="plperl.on_init">
+      <term><varname>plperl.on_init</varname> (<type>string</type>)</term>
+      <indexterm>
+       <primary><varname>plperl.on_init</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+       Specifies Perl code to be executed when a Perl interpreter is first initialized
+       and before it is specialized for use by <literal>plperl</literal> or <literal>plperlu</literal>.
+       The SPI functions are not available when this code is executed.
+       If the code fails with an error it will abort the initialization of the interpreter
+       and propagate out to the calling query, causing the current transaction
+       or subtransaction to be aborted.
+       </para>
+       <para>
+       The Perl code is limited to a single string. Longer code can be placed
+       into a module and loaded by the <literal>on_init</literal> string.
+       Examples:
+<programlisting>
+plperl.on_init = 'require "plperlinit.pl"'
+plperl.on_init = 'use lib "/my/app"; use MyApp::PgInit;'
+</programlisting>
+       </para>
+       <para>
+       Any modules loaded by <literal>plperl.on_init</literal>, either directly or
+       indirectly, will be available for use by <literal>plperl</literal>.  This may
+       create a security risk. To see what modules have been loaded you can use:
+<programlisting>
+DO 'elog(WARNING, join ", ", sort keys %INC)' language plperl;
+</programlisting>
+       </para>
+       <para>
+       Initialization will happen in the postmaster if the plperl library is included
+       in <literal>shared_preload_libraries</literal> (see <xref linkend="guc-shared-preload-libraries"/>),
+       in which case extra consideration should be given to the risk of destabilizing the postmaster.
+       </para>
+       <para>
+       This parameter can only be set in the postgresql.conf file or on the server command line.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="guc-plperl-on-plperl-init" xreflabel="plperl.on_plperl_init">
+      <term><varname>plperl.on_plperl_init</varname> (<type>string</type>)</term>
+      <term><varname>plperl.on_plperlu_init</varname> (<type>string</type>)</term>
+      <indexterm>
+       <primary><varname>plperl.on_plperl_init</varname> configuration parameter</primary>
+      </indexterm>
+      <indexterm>
+       <primary><varname>plperl.on_plperlu_init</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+       These parameters specify Perl code to be executed when the
+       <literal>plperl</literal>, or <literal>plperlu</literal> language is first used in a
+       session.  Changes to these parameters after the corresponding language
+       has been used will have no effect.
+       The SPI functions are not available when this code is executed.
+       Only superusers can change these settings.
+       The Perl code in <literal>plperl.on_plperl_init</literal> can only perform trusted operations.
+       </para>
+       <para>
+       The effect of setting these parameters is very similar to executing a
+       <literal>DO</literal> command with the Perl code before any other use of the
+       language.  The parameters are useful when you want to execute the Perl
+       code automatically on every connection, or when a connection is not
+       interactive. The parameters can be used by non-superusers by having a
+       superuser execute an <literal>ALTER USER ... SET ...</literal> command.
+       For example:
+<programlisting>
+ALTER USER joe SET plperl.on_plperl_init = '$_SHARED{debug} = 1';
+</programlisting>
+       </para>
+       <para>
+       If the code fails with an error it will abort the initialization and
+       propagate out to the calling query, causing the current transaction or
+       subtransaction to be aborted. Any changes within Perl won't be undone.
+       If the language is used again the initialization will be repeated.
+       </para>
+       <para>
+       The difference between these two settings and the 
+       <literal>plperl.on_init</literal> setting is that these can be used for
+       settings specific to the trusted or untrusted language variant, such
+       as setting values in the <varname>%_SHARED</varname> variable. By contrast,
+       <literal>plperl.on_init</literal> is more useful for doing things like
+       setting the library search path for <productname>Perl</productname> or 
+       loading Perl modules that don't interact directly with 
+       <productname>PostgreSQL</productname>.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="guc-plperl-use-strict" xreflabel="plperl.use_strict">
+      <term><varname>plperl.use_strict</varname> (<type>boolean</type>)</term>
+      <indexterm>
+       <primary><varname>plperl.use_strict</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+       When set true subsequent compilations of PL/Perl functions have the <literal>strict</literal> pragma enabled.
+       This parameter does not affect functions already compiled in the current session.
+       </para>
+      </listitem>
+     </varlistentry>
+
+  </variablelist>
+</sect2>
+
+ <sect2 id="plperl-missing">
   <title>Limitations et fonctionnalités absentes</title>
 
   <para>
@@ -962,9 +1254,7 @@
    <itemizedlist>
     <listitem>
      <para>
-      Les fonctions PL/Perl ne peuvent pas s'appeler entre elles (parce
-      qu'elles sont considérées comme des sous-routines anonymes au sein de
-      Perl).
+      Les fonctions PL/Perl ne peuvent pas s'appeler entre elles.
      </para>
     </listitem>
 
@@ -990,8 +1280,19 @@
         indiqué précédemment.
      </para>
     </listitem>
+
+     <listitem>
+      <para>
+        When a session ends normally, not due to a fatal error, any
+        <literal>END</literal> blocks that have been defined are executed.
+        Currently no other actions are performed. Specifically, 
+        file handles are not automatically flushed and objects are 
+        not automatically destroyed.
+      </para>
+     </listitem>
    </itemizedlist>
   </para>
+ </sect2>
  </sect1>
 
 </chapter>

Modified: traduc/trunk/postgresql/plpgsql.xml
===================================================================
--- traduc/trunk/postgresql/plpgsql.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/plpgsql.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -70,6 +70,13 @@
     ou de les utiliser dans des expressions d'index.
    </para>
 
+   <para>
+    In <productname>PostgreSQL</productname> 9.0 and later,
+    <application>PL/pgSQL</application> is installed by default.
+    However it is still a loadable module, so especially security-conscious
+    administrators could choose to remove it.
+   </para>
+
   <sect2 id="plpgsql-advantages">
    <title>Avantages de l'utilisation de <application>PL/pgSQL</application></title>
 
@@ -144,7 +151,7 @@
      <type>anyarray</type>, <type>anynonarray</type> et <type>anyenum</type>.
      Le type de données réel géré par une fonction polymorphe peut varier
      d'appel en appel (voir la <xref linkend="extend-types-polymorphic"/>).
-     Voir l'exemple de la <xref linkend="plpgsql-declaration-aliases"/>.
+     Voir l'exemple de la <xref linkend="plpgsql-declaration-parameters"/>.
     </para>
 
     <para>
@@ -174,7 +181,7 @@
 
     <para>
      Des exemples spécifiques apparaissent dans la
-     <xref linkend="plpgsql-declaration-aliases"/> et la
+     <xref linkend="plpgsql-declaration-parameters"/> et la
      <xref linkend="plpgsql-statements-returning"/>.
     </para>
   </sect2>
@@ -229,10 +236,11 @@
     </para>
 
     <para>
-     Il y a deux types de commentaires dans <application>PL/pgSQL</application>. Un double
-     tiret (<literal>--</literal>) débute une ligne de commentaire qui s'étend
-     jusqu'à la fin de la ligne. Un <literal>/*</literal> débute un bloc de commentaire
-     qui s'étend jusqu'à la prochaine occurrence de <literal>*/</literal>.
+     Comments work the same way in <application>PL/pgSQL</application> code as in
+     ordinary SQL.  A double dash (<literal>--</literal>) starts a comment
+     that extends to the end of the line. A <literal>/*</literal> starts a
+     block comment that extends to the matching occurrence of
+     <literal>*/</literal>.  Block comments nest.
     </para>
 
     <para>
@@ -361,8 +369,8 @@
 </programlisting>
      </para>
 
-    <sect2 id="plpgsql-declaration-aliases">
-     <title>Alias de paramètres de fonctions</title>
+    <sect2 id="plpgsql-declaration-parameters">
+     <title>Déclarer des paramètres de fonctions</title>
 
      <para>
       Les paramètres passés aux fonctions sont nommés par les identifiants 
@@ -406,7 +414,7 @@
       Ces deux exemples ne sont pas complètement identiques. Dans le premier cas,
       <literal>sous_total</literal> peut être référencé comme
       <literal>taxe_ventes.sous_total</literal>, alors que ce n'est pas possible
-      dans le second cas. (Si nous avions attaché un label au bloc,
+      dans le second cas. (Si nous avions attaché un label au bloc interne,
       <literal>sous_total</literal> aurait pu utiliser ce label à la place.)
      </para>
     </note>
@@ -476,9 +484,11 @@
       TABLE</literal>&nbsp;:
 
 <programlisting>
-CREATE FUNCTION extended_sales(p_itemno int) RETURNS TABLE(quantity int, total numeric) AS $$
+CREATE FUNCTION extended_sales(p_itemno int)
+RETURNS TABLE(quantity int, total numeric) AS $$
 BEGIN
-    RETURN QUERY SELECT quantity, quantity * price FROM sales WHERE itemno = p_itemno;
+    RETURN QUERY SELECT quantity, quantity * price FROM sales
+                 WHERE itemno = p_itemno;
 END;
 $$ LANGUAGE plpgsql;
 </programlisting>
@@ -531,6 +541,38 @@
      </para>
     </sect2>
 
+  <sect2 id="plpgsql-declaration-alias">
+   <title><literal>ALIAS</literal></title>
+
+<synopsis>
+<replaceable>newname</replaceable> ALIAS FOR <replaceable>oldname</replaceable>;
+</synopsis>
+
+   <para>
+    The <literal>ALIAS</literal> syntax is more general than is suggested in the
+    previous section: you can declare an alias for any variable, not just
+    function parameters.  The main practical use for this is to assign
+    a different name for variables with predetermined names, such as
+    <varname>NEW</varname> or <varname>OLD</varname> within
+    a trigger procedure.
+   </para>
+
+   <para>
+    Examples:
+<programlisting>
+DECLARE
+  prior ALIAS FOR old;
+  updated ALIAS FOR new;
+</programlisting>
+   </para>
+
+   <para>
+    Since <literal>ALIAS</literal> creates two different ways to name the same
+    object, unrestricted use can be confusing.  It's best to use it only
+    for the purpose of overriding predetermined names.
+   </para>
+   </sect2>
+
   <sect2 id="plpgsql-declaration-type">
    <title>Copie de types</title>
 
@@ -659,37 +701,6 @@
     analysée, alors qu'une variable record peut changer sa structure de ligne à la volée.
    </para>
   </sect2>
-
-    <sect2 id="plpgsql-declaration-renaming-vars">
-     <title><literal>RENAME</literal></title>
-
-<synopsis>RENAME <replaceable>ancien nom</replaceable> TO <replaceable>nouveau nom</replaceable>;
-</synopsis>
-
-     <para>
-      En utilisant la déclaration <literal>RENAME</literal>, vous pouvez changer le nom d'une variable,
-      d'un record ou d'un ligne (ROW). C'est particulièrement utile si
-      <varname>NEW</varname> ou <varname>OLD</varname> doivent
-      être référencés par un autre nom dans une procédure trigger. Voir
-      aussi <literal>ALIAS</literal>.
-     </para>
-
-     <para>
-      Exemples&nbsp;:
-<programlisting>RENAME id TO id_utilisateur;
-RENAME cette_var TO cette_autre_var;
-</programlisting>
-     </para>
-
-    <note>
-    <para>
-	  <literal>RENAME</literal> semble ne pas fonctionner dans <productname>PostgreSQL</productname> 7.3. Cette
-	  correction est de faible priorité, <literal>ALIAS</literal> couvrant la plupart des utilisations
-	  pratiques de <literal>RENAME</literal>. 
-    </para>
-    </note>
-
-    </sect2>
   </sect1>
 
   <sect1 id="plpgsql-expressions">
@@ -716,7 +727,7 @@
 <programlisting>
 IF x &lt; y THEN ...
 </programlisting>
-     ce qui se passe en arrière plan est ceci&nbsp;:
+     ce qui se passe en arrière plan est équivalent à&nbsp;:
 <programlisting>
 PREPARE <replaceable>nom_instruction</replaceable>(integer, integer) AS SELECT $1 &lt; $2;
 </programlisting>
@@ -751,12 +762,16 @@
 
     <para>
      L'affectation d'une valeur à une variable <application>PL/pgSQL</application>
-     ou à un champ row/record s'écrit ainsi&nbsp;:
+     s'écrit ainsi&nbsp;:
 <synopsis><replaceable>variable</replaceable> := <replaceable>expression</replaceable>;
 </synopsis>
-     Comme expliqué plus haut, l'expression dans cette instruction est évaluée au 
+     Comme expliqué précédemment, l'expression dans cette instruction est évaluée au 
      moyen de la commande SQL <command>SELECT</command> envoyée au moteur principal de
-     bases de données. L'expression ne doit manier qu'une seule valeur.
+     bases de données. L'expression ne doit manier qu'une seule valeur (possibly
+     a row value, if the variable is a row or record variable).  The target
+     variable can be a simple variable (optionally qualified with a block
+     name), a field of a row or record variable, or an element of an array
+     that is a simple variable or field.
     </para>
 
     <para>
@@ -790,35 +805,13 @@
 
     <para>
      Tout nom de variable <application>PL/pgSQL</application> apparaissant
-     dans le texte de la commande est remplacé par un symbole de paramètre,
+     dans le texte de la commande est traité comme un paramètre,
      puis la valeur actuelle de la variable est fournie comme valeur du
      paramètre à l'exécution. C'est le traitement exact décrit précédemment pour
      les expressions. Pour les détails, voir la <xref
-     linkend="plpgsql-var-subst"/>. Par exemple, si vous écrivez
-<programlisting>DECLARE
-    cle TEXT;
-    delta INTEGER;
-BEGIN
-    ...
-    UPDATE matable SET val = val + delta WHERE id = cle;
-</programlisting>
-      le texte de la commande envoyée par le moteur SQL ressemble à ceci&nbsp;:
-<programlisting>    UPDATE matable SET val = val + $1 WHERE id = $2;
-</programlisting>
-      Bien que vous n'ayez pas à y penser, il est utile de le savoir pour mieux
-      comprendre les messages d'erreur de syntaxe.
-     </para>
-
-    <caution>
-     <para>
-      <application>PL/pgSQL</application> substitutera à tout identifiant
-      une variable déclarée de la fonction. Du coup, une mauvaise idée serait
-      d'utiliser un nom de variable identique à celui d'une table, d'une
-      colonne ou d'une fonction que vous avez besoin d'utiliser dans des
-	  commandes de la fonction. Pour plus d'informations, voir la <xref linkend="plpgsql-var-subst"/>.
-     </para>
-    </caution>
-
+     linkend="plpgsql-var-subst"/>.
+    </para>
+    
     <para>
      Lors de l'exécution d'une commande SQL de cette façon,
      <application>PL/pgSQL</application> planifie la commande une fois et
@@ -1076,7 +1069,9 @@
    INTO c
    USING utilisateur_verifie, date_verifiee;
 </programlisting>
+    </para>
 
+    <para>
      Notez que les symboles de paramètres peuvent seulement être utilisés pour
      des valeurs de données &mdash; si vous voulez utiliser des noms de tables
      et/ou colonnes déterminés dynamiquement, vous devez les insérer dans la
@@ -1090,6 +1085,11 @@
    INTO c
    USING utilisateur_verifie, date_verifiee;
 </programlisting>
+     Another restriction on parameter symbols is that they only work in
+     <command>SELECT</command>, <command>INSERT</command>, <command>UPDATE</command>, and
+     <command>DELETE</command> commands.  In other statement
+     types (generically called utility statements), you must insert
+     values textually even if they are just data values.
     </para>
 
     <para>
@@ -1119,7 +1119,7 @@
     <para>
      L'instruction <command>EXECUTE</command> de
      <application>PL/pgSQL</application> n'a pas de relation avec l'instruction
-     SQL <xref linkend="sql-execute" endterm="sql-execute-title"/> supportée
+     SQL <xref linkend="sql-execute"/> supportée
      par le serveur <productname>PostgreSQL</productname>. L'instruction
      <command>EXECUTE</command> du serveur ne peut pas être utilisée directement
      dans les fonctions <application>PL/pgSQL</application>. En fait, elle n'est pas
@@ -1354,6 +1354,15 @@
           </listitem>
 	 </itemizedlist>
 	 
+
+     Other <application>PL/pgSQL</application> statements do not change
+     the state of <literal>FOUND</literal>.
+     Note in particular that <command>EXECUTE</command>
+     changes the output of <command>GET DIAGNOSTICS</command>, but
+     does not change <literal>FOUND</literal>.
+    </para>
+
+    <para>
      <literal>FOUND</literal> est une variable locale à l'intérieur de chaque
      fonction <application>PL/pgSQL</application>&nbsp;; chaque changement qui
      y est fait n'affecte que la fonction en cours.
@@ -1429,7 +1438,7 @@
      <para>
       <command>RETURN</command> accompagné d'une expression termine la fonction et 
       renvoie le valeur de l'<replaceable>expression</replaceable> à l'appelant.
-      Cette forme est à utiliser avec des fonctions <application>PL/pgSQL</application>
+      Cette forme doit être utilisée avec des fonctions <application>PL/pgSQL</application>
       qui ne renvoient pas d'ensemble de valeurs.
      </para>
 
@@ -2121,9 +2130,12 @@
 
         -- À présent vues_mat contient un enregistrement de cs_vues_materialisees
 
-	PERFORM cs_log('Rafraichissement de la vue matérialisée ' || quote_ident(vues_mat.vm_nom) || '...');
-	EXECUTE 'TRUNCATE TABLE  ' || quote_ident(vues_mat.vm_nom);
-	EXECUTE 'INSERT INTO ' || quote_ident(vues_mat.vm_nom) || ' ' || vues_mat.vm_requete;
+	    PERFORM cs_log('Rafraichissement de la vue matérialisée '
+	                   || quote_ident(vues_mat.vm_nom) || '...');
+	    EXECUTE 'TRUNCATE TABLE  ' || quote_ident(vues_mat.vm_nom);
+	    EXECUTE 'INSERT INTO '
+	            || quote_ident(vues_mat.vm_nom) || ' '
+	            || vues_mat.vm_requete;
     END LOOP;
 
     PERFORM cs_log('Fin du rafraichissement des vues matérialisées.');
@@ -2456,7 +2468,8 @@
     <sect3>
      <title><command>OPEN FOR EXECUTE</command></title>
 
-<synopsis>OPEN <replaceable>var_curseur_nonlie</replaceable> <optional> <optional> NO </optional> SCROLL </optional> FOR EXECUTE <replaceable class="command">requete</replaceable>;
+<synopsis>OPEN <replaceable>var_curseur_nonlie</replaceable> <optional> <optional> NO </optional> SCROLL </optional> FOR EXECUTE <replaceable class="command">requete</replaceable>
+                                     <optional> USING <replaceable>expression</replaceable> <optional>, ... </optional> </optional>;
 </synopsis>
 
 	 <para>
@@ -2469,15 +2482,22 @@
 	  assez de flexibilité pour que le plan de la requête puisse changer d'une
 	  exécution à l'autre (voir la <xref linkend="plpgsql-plan-caching"/>),
 	  et cela signifie aussi que la substitution de variable n'est pas faite
-	  sur la chaîne de commande. Les options <literal>SCROLL</literal> et
+	  sur la chaîne de commande. As with <command>EXECUTE</command>, parameter values
+      can be inserted into the dynamic command via <literal>USING</literal>.
+      Les options <literal>SCROLL</literal> et
 	  <literal>NO SCROLL</literal> ont la même signification que pour un
 	  curseur lié.
        </para>
 
        <para>
        Exemple&nbsp;:
-<programlisting>OPEN curs1 FOR EXECUTE 'SELECT * FROM ' || quote_ident($1);
+<programlisting>OPEN curs1 FOR EXECUTE 'SELECT * FROM ' || quote_ident(tabname) 
+                                        || ' WHERE col1 = $1' USING keyvalue;
 </programlisting>
+        In this example, the table name is inserted into the query textually,
+        so use of <function>quote_ident()</function> is recommended to guard against
+        SQL injection.  The comparison value for <literal>col1</literal> is inserted
+        via a <literal>USING</literal> parameter, so it needs no quoting.
        </para>
      </sect3>
 
@@ -2563,8 +2583,8 @@
 
     <para>
      La clause <replaceable>direction</replaceable> peut être une des
-     variantes suivantes autorisées pour la commande SQL <xref linkend="sql-fetch"
-     endterm="sql-fetch-title"/> sauf celles qui peuvent récupérer plus
+     variantes suivantes autorisées pour la commande SQL <xref
+     linkend="sql-fetch"/> sauf celles qui peuvent récupérer plus
      d'une ligne&nbsp;; nommément, cela peut être
      <literal>NEXT</literal>,
      <literal>PRIOR</literal>,
@@ -2613,16 +2633,18 @@
     </para>
 
     <para>
-     Les options pour la clause <replaceable>direction</replaceable> sont
-     identiques à celles de la commande <command>FETCH</command>, nommément
+     The <replaceable>direction</replaceable> clause can be any of the
+     variants allowed in the SQL <xref linkend="sql-fetch"/>
+     command, nommément
      <literal>NEXT</literal>,
      <literal>PRIOR</literal>,
      <literal>FIRST</literal>,
      <literal>LAST</literal>,
      <literal>ABSOLUTE</literal> <replaceable>nombre</replaceable>,
      <literal>RELATIVE</literal> <replaceable>nombre</replaceable>,
-     <literal>FORWARD</literal> ou
-     <literal>BACKWARD</literal>.
+     <literal>ALL</literal>,
+     <literal>FORWARD</literal> <optional> <replaceable>count</replaceable> | <literal>ALL</literal> </optional>, ou
+     <literal>BACKWARD</literal> <optional> <replaceable>count</replaceable> | <literal>ALL</literal> </optional>.
      Omettre <replaceable>direction</replaceable> est identique à spécifier
      <literal>NEXT</literal>.
      Les valeurs <replaceable>direction</replaceable> qui nécessitent de se
@@ -2636,6 +2658,7 @@
 MOVE curs1;
 MOVE LAST FROM curs3;
 MOVE RELATIVE -2 FROM curs4;
+MOVE FORWARD 2 FROM curs4;
 </programlisting>
        </para>
      </sect3>
@@ -2654,8 +2677,8 @@
 	la ligne. Il existe des restrictions sur ce que peut être la requête
 	du curseur (en particulier, pas de regroupement) et il est mieux
 	d'utiliser <literal>FOR UPDATE</literal> dans le curseur. Pour des
-	informations supplémentaires, voir la page de référence
-        <xref linkend="sql-declare" endterm="sql-declare-title"/>.
+	informations supplémentaires, voir la page de référence <xref
+	linkend="sql-declare"/>.
        </para>
 
        <para>
@@ -2757,6 +2780,7 @@
 END;
 $$ LANGUAGE plpgsql;
 
+-- need to be in a transaction to use cursors.
 BEGIN;
 SELECT fonction_reference2();
 
@@ -2907,7 +2931,8 @@
     Cet exemple annulera la transaction avec le message d'erreur et l'astuce
     donnés&nbsp;:
 <programlisting>
-RAISE EXCEPTION 'Nonexistent ID --> %', user_id USING HINT = 'Please check your user id';
+RAISE EXCEPTION 'Nonexistent ID --> %', user_id
+      USING HINT = 'Please check your user id';
 </programlisting>
    </para>
 
@@ -3141,16 +3166,26 @@
     <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command> ne se font pas pour cette 
     ligne). Si une valeur non NULL est renvoyée alors l'opération se déroule avec cette
     valeur ligne. Renvoyer une valeur ligne différente de la valeur originale de 
-    <varname>NEW</varname> modifie la ligne qui sera insérée ou mise à jour (mais n'a
-    pas d'effet sur le cas <command>DELETE</command>). Pour modifier la ligne à
-    stocker, il est possible de remplacer des valeurs seules directement dans
-    <varname>NEW</varname> et de renvoyer <varname>NEW</varname>, ou de construire un nouveau
-    record/ligne à renvoyer.
+    <varname>NEW</varname> modifie la ligne qui sera insérée ou mise à jour.
+    Thus, if the trigger function wants the triggering
+    action to succeed normally without altering the row
+    value, <varname>NEW</varname> (or a value equal thereto) has to be
+    returned.  To alter the row to be stored, it is possible to
+    replace single values directly in <varname>NEW</varname> and return the
+    modified <varname>NEW</varname>, or to build a complete new record/row to
+    return.  In the case of a before-trigger
+    on <command>DELETE</command>, the returned value has no direct
+    effect, but it has to be nonnull to allow the trigger action to
+    proceed.  Note that <varname>NEW</varname> is null
+    in <command>DELETE</command> triggers, so returning that is
+    usually not sensible.  A useful idiom in <command>DELETE</command>
+    triggers might be to return <varname>OLD</varname>.
    </para>
 
    <para>
-    La valeur de retour d'un trigger de niveau instruction <literal>BEFORE</literal> ou
-    <literal>AFTER</literal> ou un trigger de niveau ligne <literal>AFTER</literal> est
+    The return value of a row-level trigger
+    fired <literal>AFTER</literal> or a statement-level trigger
+    fired <literal>BEFORE</literal> or <literal>AFTER</literal> est
     toujours ignoré&nbsp;; il pourrait aussi bien être NULL. Néanmoins, tous les
     types de triggers peuvent toujours annuler l'opération complète en
     envoyant une erreur.
@@ -3328,7 +3363,8 @@
 -- Fonction et trigger pour amender les colonnes résumées
 -- pour un UPDATE, INSERT, DELETE.
 --
-CREATE OR REPLACE FUNCTION maint_sales_summary_bytime() RETURNS TRIGGER AS $maint_sales_summary_bytime$
+CREATE OR REPLACE FUNCTION maint_sales_summary_bytime() RETURNS TRIGGER
+AS $maint_sales_summary_bytime$
 DECLARE
   delta_time_key          integer;
   delta_amount_sold       numeric(15,2);
@@ -3350,7 +3386,8 @@
     -- (probablement pas trop cher, car DELETE + INSERT est la façon la plus
     -- probable de réaliser les modifications).
     IF ( OLD.time_key != NEW.time_key) THEN
-      RAISE EXCEPTION 'Update of time_key : % -&gt; % not allowed', OLD.time_key, NEW.time_key;
+      RAISE EXCEPTION 'Update of time_key : % -&gt; % not allowed',
+                      OLD.time_key, NEW.time_key;
     END IF;
 
     delta_time_key = OLD.time_key;
@@ -3434,136 +3471,163 @@
    <title>Substitution de variables</title>
 
    <para>
-    Quand <application>PL/pgSQL</application> prépare l'exécution d'une
-    instruction SQL ou d'une expression, tout nom de variable
-    <application>PL/pgSQL</application> apparaissant dans l'instruction ou
-    l'expression est remplacée par un symbole de paramètre,
-    <literal>$<replaceable>n</replaceable></literal>. La valeur actuelle de
-    la variable est alors fournie en tant que valeur du paramètre quand
-    l'instruction ou l'expression est exécutée. Comme exemple, considérez
-    la fonction suivante&nbsp;:
+    SQL statements and expressions within a <application>PL/pgSQL</application> function
+    can refer to variables and parameters of the function.  Behind the scenes,
+    <application>PL/pgSQL</application> substitutes query parameters for such references.
+    Parameters will only be substituted in places where a parameter or
+    column reference is syntactically allowed.  As an extreme case, consider
+    this example of poor programming style:
 <programlisting>
-CREATE FUNCTION logfunc(logtxt text) RETURNS void AS $$
-    DECLARE
-        curtime timestamp := now();
-    BEGIN
-        INSERT INTO logtable VALUES (logtxt, curtime);
-    END;
-$$ LANGUAGE plpgsql;
+        INSERT INTO foo (foo) VALUES (foo);
 </programlisting>
-    L'instruction <command>INSERT</command> sera en fait traitée comme&nbsp;:
-<programlisting>
-PREPARE <replaceable>nom_instruction</replaceable>(text, timestamp) AS
-  INSERT INTO logtable VALUES ($1, $2);
-</programlisting>
-    suivie par chaque exécution (<command>EXECUTE</command>) avec les
-    valeurs réelles des deux variables. (Note&nbsp;: ici nous parlons de la commande
-    <xref linkend="sql-execute" endterm="sql-execute-title"/> du moteur SQL,
-    pas du <command>EXECUTE</command> de <application>PL/pgSQL</application>.)
+    The first occurrence of <literal>foo</literal> must syntactically be a table
+    name, so it will not be substituted, even if the function has a variable
+    named <literal>foo</literal>.  The second occurrence must be the name of a
+    column of the table, so it will not be substituted either.  Only the
+    third occurrence is a candidate to be a reference to the function's
+    variable.
    </para>
 
+   <note>
+    <para>
+     <productname>PostgreSQL</productname> versions before 9.0 would try
+     to substitute the variable in all three cases, leading to syntax errors.
+    </para>
+   </note>
+
    <para>
-    <emphasis>Le mécanisme de substitution remplacera tout jeton qui correspond
-    au nom d'une variable connue.</emphasis> Ceci est un risque pour le débutant.
-    Par exemple, c'est une mauvaise idée d'utiliser un nom de variable qui est
-    identique à un nom de table ou de colonne que vous comptez référencer dans
-    les requêtes d'une fonction car ce que vous pensez être un nom de table ou
-    de colonne sera toujours remplacé. Dans l'exemple ci-dessus, supposez que
-    <structname>logtable</structname> a les colonnes
-    <structfield>logtxt</structfield> et <structfield>logtime</structfield>,
-    et que nous essayons d'écrire un <command>INSERT</command> ainsi&nbsp;:
+    Since the names of variables are syntactically no different from the names
+    of table columns, there can be ambiguity in statements that also refer to
+    tables: is a given name meant to refer to a table column, or a variable?
+    Let's change the previous example to
 <programlisting>
-        INSERT INTO logtable (logtxt, logtime) VALUES (logtxt, curtime);
+        INSERT INTO dest (col) SELECT foo + bar FROM src;
 </programlisting>
-    Ceci sera renvoyé à l'analyseur SQL de cette façon&nbsp;:
-<programlisting>
-        INSERT INTO logtable ($1, logtime) VALUES ($1, $2);
-</programlisting>
-    résultant en l'erreur de syntaxe suivante&nbsp;:
-<screen>
-ERROR:  syntax error at or near "$1"
-LINE 1: INSERT INTO logtable ( $1 , logtime) VALUES ( $1 ,  $2 )
-                               ^
-QUERY:  INSERT INTO logtable ( $1 , logtime) VALUES ( $1 ,  $2 )
-CONTEXT:  SQL statement in PL/PgSQL function "logfunc2" near line 5
-</screen>
+    Here, <literal>dest</literal> and <literal>src</literal> must be table names, and
+    <literal>col</literal> must be a column of <literal>dest</literal>, but <literal>foo</literal>
+    and <literal>bar</literal> might reasonably be either variables of the function
+    or columns of <literal>src</literal>.
    </para>
 
    <para>
-    Cet exemple est assez simple à diagnostiquer car il ramène une erreur de
-    syntaxe évidente. Il existe des cas plus complexes où la substitution est
-    syntaxiquement autorisée car le seul symptome est un comportement erroné
-    de la fonction. Dans un cas, un utilisateur avait écrit ceci&nbsp;:
+    By default, <application>PL/pgSQL</application> will report an error if a name
+    in a SQL statement could refer to either a variable or a table column.
+    You can fix such a problem by renaming the variable or column,
+    or by qualifying the ambiguous reference, or by telling
+    <application>PL/pgSQL</application> which interpretation to prefer.
+   </para>
+
+   <para>
+    The simplest solution is to rename the variable or column.
+    A common coding rule is to use a
+    different naming convention for <application>PL/pgSQL</application>
+    variables than you use for column names.  For example,
+    if you consistently name function variables
+    <literal>v_<replaceable>something</replaceable></literal> while none of your
+    column names start with <literal>v_</literal>, no conflicts will occur.
+   </para>
+
+   <para>
+    Alternatively you can qualify ambiguous references to make them clear.
+    In the above example, <literal>src.foo</literal> would be an unambiguous reference
+    to the table column.  To create an unambiguous reference to a variable,
+    declare it in a labeled block and use the block's label
+    (see <xref linkend="plpgsql-structure"/>).  For example,
 <programlisting>
+    &lt;&lt;block&gt;&gt;
     DECLARE
-        val text;
-        search_key integer;
+        foo int;
     BEGIN
-        ...
-        FOR val IN SELECT val FROM table WHERE key = search_key LOOP ...
+        foo := ...;
+        INSERT INTO dest (col) SELECT block.foo + bar FROM src;
 </programlisting>
-    et se demandait pourquoi toutes ses entrées de table semblaient valoir
-    NULL. Bien sûr, ce qui était survenu était la transformation suivante
-    de la requête&nbsp;:
-<programlisting>
-        SELECT $1 FROM table WHERE key = $2
-</programlisting>
-    et, du coup, c'était juste une façon complexe d'affecter la valeur courante
-    de <literal>val</literal> à elle-même pour chaque ligne.
+    Here <literal>block.foo</literal> means the variable even if there is a column
+    <literal>foo</literal> in <literal>src</literal>.  Function parameters, as well as
+    special variables such as <literal>FOUND</literal>, can be qualified by the
+    function's name, because they are implicitly declared in an outer block
+    labeled with the function's name.
    </para>
 
    <para>
-    Une règle de codage généralement acceptée pour éviter ce type de problème
-    est d'utiliser une convention de nommage différente pour les variables
-    <application>PL/pgSQL</application> et pour celles de vos tables et
-    colonnes. Par exemple, si toutes vos variables sont nommées
-    <literal>v_<replaceable>quelquechose</replaceable></literal> alors qu'aucune
-    de vos tables ou colonnes ne commence par <literal>v_</literal>, le risque
-    est bien moindre.
+    Sometimes it is impractical to fix all the ambiguous references in a
+    large body of <application>PL/pgSQL</application> code.  In such cases you can
+    specify that <application>PL/pgSQL</application> should resolve ambiguous references
+    as the variable (which is compatible with <application>PL/pgSQL</application>'s
+    behavior before <productname>PostgreSQL</productname> 9.0), or as the
+    table column (which is compatible with some other systems such as
+    <productname>Oracle</productname>).
    </para>
 
+   <indexterm>
+     <primary><varname>plpgsql.variable_conflict</varname> configuration parameter</primary>
+   </indexterm>
+
    <para>
-    Un autre contournement est d'utiliser des noms qualifiés pour les entités
-    SQL. Par exemple, l'exemple suivant peut être ré-écrit de la façon
-    suivante&nbsp;:
-<programlisting>
-        FOR val IN SELECT table.val FROM table WHERE key = search_key LOOP ...
-</programlisting>
-    parce que <application>PL/pgSQL</application> ne substitutera pas une
-    variable pour le composant de fin d'un nom qualifié. Néanmoins, cette
-    solution ne fonctionne pas dans tous les cas &mdash; vous ne pouvez pas
-    qualifier un nom dans la liste des colonnes d'une commande
-    <command>INSERT</command> par exemple. Un autre point est que les noms
-    de variables record ou ligne correspondront aux premiers composants des
-    noms qualifiés, donc un nom SQL qualifié est toujours vulnérable dans
-    certains cas. En fait, dans certains cas, choisir un nom de variable
-    sans conflit est le seul moyen.
+    To change this behavior on a system-wide basis, set the configuration
+    parameter <literal>plpgsql.variable_conflict</literal> to one of
+    <literal>error</literal>, <literal>use_variable</literal>, or
+    <literal>use_column</literal> (where <literal>error</literal> is the factory default).
+    This parameter affects subsequent compilations
+    of statements in <application>PL/pgSQL</application> functions, but not statements
+    already compiled in the current session.  To set the parameter before
+    <application>PL/pgSQL</application> has been loaded, it is necessary to have added
+    <quote><literal>plpgsql</literal></quote> to the <xref
+    linkend="guc-custom-variable-classes"/> list in
+    <filename>postgresql.conf</filename>.  Because changing this setting
+    can cause unexpected changes in the behavior of <application>PL/pgSQL</application>
+    functions, it can only be changed by a superuser.
    </para>
 
    <para>
-    Une autre technique que vous pouvez utiliser est d'attacher un label au
-    bloc dans lequel sont déclarées vos variables, puis de qualifier les noms
-    des variables dans vos commandes SQL (voir la <xref linkend="plpgsql-structure"/>).
-    Par exemple&nbsp;:
+    You can also set the behavior on a function-by-function basis, by
+    inserting one of these special commands at the start of the function
+    text:
 <programlisting>
-    &lt;&lt;pl&gt;&gt;
+#variable_conflict error
+#variable_conflict use_variable
+#variable_conflict use_column
+</programlisting>
+    These commands affect only the function they are written in, and override
+    the setting of <literal>plpgsql.variable_conflict</literal>.  An example is
+<programlisting>
+CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$
+    #variable_conflict use_variable
     DECLARE
-        val text;
+        curtime timestamp := now();
     BEGIN
-        ...
-        UPDATE table SET col = pl.val WHERE ...
+        UPDATE users SET last_modified = curtime, comment = comment
+          WHERE users.id = id;
+    END;
+$$ LANGUAGE plpgsql;
 </programlisting>
-    Ce n'est pas en soi une solution au problème des conflits car un nom non
-    qualifié dans une commande SQL courera toujours le risque d'être interprétée
-    de la <quote>mauvaise</quote> façon. Par contre, c'est utile pour clarifier
-    le but d'un code potentiellement ambigü.
+    In the <literal>UPDATE</literal> command, <literal>curtime</literal>, <literal>comment</literal>,
+    and <literal>id</literal> will refer to the function's variable and parameters
+    whether or not <literal>users</literal> has columns of those names.  Notice
+    that we had to qualify the reference to <literal>users.id</literal> in the
+    <literal>WHERE</literal> clause to make it refer to the table column.
+    But we did not have to qualify the reference to <literal>comment</literal>
+    as a target in the <literal>UPDATE</literal> list, because syntactically
+    that must be a column of <literal>users</literal>.  We could write the same
+    function without depending on the <literal>variable_conflict</literal> setting
+    in this way:
+<programlisting>
+CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$
+    &lt;&lt;fn&gt;&gt;
+    DECLARE
+        curtime timestamp := now();
+    BEGIN
+        UPDATE users SET last_modified = fn.curtime, comment = stamp_user.comment
+          WHERE users.id = stamp_user.id;
+    END;
+$$ LANGUAGE plpgsql;
+</programlisting>
    </para>
-
+   
    <para>
     La substitution de variable n'arrive pas dans la chaîne de commande donnée
     à <command>EXECUTE</command> ou une de ces variantes. Si vous avez
     besoin d'insérer une valeur dans une telle commande, faites-le lors de la
-    construction d'une valeur de chaîne, illustrée dans la
+    construction d'une valeur de chaîne, or use <literal>USING</literal>, illustrée dans la
     <xref linkend="plpgsql-statements-executing-dyn"/>.
    </para>
 
@@ -3571,7 +3635,7 @@
     La substitution de variable fonctionne seulement dans les commandes
     <command>SELECT</command>, <command>INSERT</command>, <command>UPDATE</command>
     et <command>DELETE</command> parce que le moteur SQL principal autorise
-    les symboles de paramètres seulement dans ces commandes. Pour utiliser un
+    les paramètres de la requête seulement dans ces commandes. Pour utiliser un
     nom variable ou une valeur dans les autres types d'instructions (généralement
     appelées des instructions utilitaires), vous devez construire l'instruction
     en question comme une chaîne et l'exécuter via <command>EXECUTE</command>.
@@ -3617,49 +3681,17 @@
    </para>
 
    <para>
-    Une fois que <application>PL/pgSQL</application> a réalisé un plan
-    d'exécution pour une commande particulière d'une fonction, il ré-utilisera
-    ce plan pour toute la durée de vie de la connexion à la base. Ceci est
-    un gain majeur pour les performances mais cela posera des problèmes si
-    vous modifiez dynamiquement votre schéma de bases de données. Par
-    exemple&nbsp;:
-
-<programlisting>
-CREATE FUNCTION peupler() RETURNS integer AS $$
-DECLARE
-    -- declarations
-BEGIN
-    PERFORM ma_fonction();
-END;
-$$ LANGUAGE plpgsql;
-</programlisting>
-
-    Si vous exécutez la fonction ci-dessus, elle référencera l'OID de la fonction
-    <function>ma_fonction()</function> dans le plan d'exécution produit par
-    l'instruction <command>PERFORM</command>. Plus tard, si vous supprimez
-    puis re-créez la fonction <function>ma_fonction()</function>, alors
-    <function>peupler()</function> ne sera plus capable de trouver
-    <function>ma_fonction()</function>. Vous devrez alors commencer une
-    nouvelle session à la base de données pour que <function>peupler()</function>
-    soit compilée de nouveau et qu'elle soit de nouveau
-    utilisable. Vous pouvez éviter ce problème en utilisant <command>CREATE
-    OR REPLACE FUNCTION</command> lors de la mise à jour de la définition de
-<function>ma_fonction</function> car, quand une fonction est
-    <quote>remplacée</quote>, son OID n'est pas modifié.
+    A saved plan will be re-planned automatically if there is any schema
+    change to any table used in the query, or if any user-defined function
+    used in the query is redefined.  This makes the re-use of prepared plans
+    transparent in most cases, but there are corner cases where a stale plan
+    might be re-used.  An example is that dropping and re-creating a
+    user-defined operator won't affect already-cached plans; they'll continue
+    to call the original operator's underlying function, if that has not been
+    changed.  When necessary, the cache can be flushed by starting a fresh
+    database session.
    </para>
 
-   <note>
-    <para>
-     Dans <productname>PostgreSQL</productname> 8.3 et ultérieur, les plans
-     sauvegardés peuvent être remplacés quand des modifications du schéma
-     surviennent sur les tables qu'elles référencent. Ceci élimine un des
-     gros inconvénients des plans sauvegardés. Néanmoins, il n'existe pas
-     le même type de mécanisme pour les références de fonction. Du coup,
-     l'exemple ci-dessus impliquant la référence a une fonction supprimée
-     est toujours valide.
-    </para>
-   </note>
-
    <para>
     Comme <application>PL/pgSQL</application> sauvegarde les plans d'exécution
     de cette façon, les commandes SQL qui apparaissent directement dans une
@@ -4000,11 +4032,16 @@
       <para>
        Si un nom utilisé dans une commande SQL peut être soit un nom de colonne
        d'une table soit une référence à une variable de la fonction,
-       <application>PL/SQL</application> le traite comme un nom de commande
-       alors que <application>PL/pgSQL</application> le traite comme un nom de
-       variable. Il est préférable d'éviter les ambiguïtés en premier mais, si
-       c'est nécessaire, vous pouvez corriger cela en qualifiant correctement
-       le nom ambigü. (Voir <xref linkend="plpgsql-var-subst"/>.)
+       <application>PL/SQL</application> le traite comme un nom de commande.
+       This corresponds
+       to <application>PL/pgSQL</application>'s
+       <literal>plpgsql.variable_conflict</literal> = <literal>use_column</literal>
+       behavior, which is not the default,
+       as explained in <xref linkend="plpgsql-var-subst"/>.
+       It's often best to avoid such ambiguities in the first place,
+       but if you have to port a large amount of code that depends on
+       this behavior, setting <literal>variable_conflict</literal> may be the
+       best solution.
       </para>
      </listitem>
 
@@ -4471,7 +4508,8 @@
        différents de ceux d'Oracle. L'ensemble de noms d'exceptions intégré
        est plus important (voir l'<xref linkend="errcodes-appendix"/>).
        Il n'existe actuellement pas de façon de déclarer des noms
-       d'exceptions définis par l'utilisateur.
+       d'exceptions définis par l'utilisateur,
+       although you can throw user-chosen SQLSTATE values instead.
 	  </para>
      </callout>
     </calloutlist>
@@ -4547,7 +4585,7 @@
      (la fonction renvoie toujours le même
      résultat quand on lui donne les mêmes arguments) et la <quote>rigueur</quote> (une 
      fonction renvoie NULL si tous ses arguments sont NULL).  Consultez la
-     page de référence de <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/> pour les détails.
+     page de référence de <xref linkend="sql-createfunction"/> pour les détails.
     </para>
 
     <para>

Modified: traduc/trunk/postgresql/plpython.xml
===================================================================
--- traduc/trunk/postgresql/plpython.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/plpython.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -13,7 +13,8 @@
  <para>
   Le langage de procédures <application>PL/Python</application> permet l'écriture
   de fonctions <productname>PostgreSQL</productname> avec le
-  <ulink url="http://www.python.org">langage Python</ulink>.
+  <ulink url="http://www.python.org">langage Python</ulink> (but
+  see also <xref linkend="plpython-python23"/>).
  </para>
 
  <para>
@@ -34,7 +35,12 @@
   qu'il n'offre aucun moyen de restreindre ce que les utilisateurs en font). Il
   a donc été renommé en <literal>plpythonu</literal>. La variante de confiance
   <literal>plpython</literal> pourrait être de nouveau disponible dans le futur, si un
-  nouveau mécanisme sécurisé d'exécution est développé dans Python.
+  nouveau mécanisme sécurisé d'exécution est développé dans Python. The
+  writer of a function in untrusted PL/Python must take care that the
+  function cannot be used to do anything unwanted, since it will be
+  able to do anything that could be done by a user logged in as the
+  database administrator.  Only superusers can create functions in
+  untrusted languages such as <literal>plpythonu</literal>.
  </para>
 
  <note>
@@ -46,12 +52,118 @@
   </para>
  </note>
 
+ <sect1 id="plpython-python23">
+  <title>Python 2 vs. Python 3</title>
+
+  <para>
+   PL/Python supports both the Python 2 and Python 3 language
+   variants.  (The PostgreSQL installation instructions might contain
+   more precise information about the exact supported minor versions
+   of Python.)  Because the Python 2 and Python 3 language variants
+   are incompatible in some important aspects, the following naming
+   and transitioning scheme is used by PL/Python to avoid mixing them:
+
+   <itemizedlist>
+    <listitem>
+     <para>
+      The PostgreSQL language named <literal>plpython2u</literal>
+      implements PL/Python based on the Python 2 language variant.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      The PostgreSQL language named <literal>plpython3u</literal>
+      implements PL/Python based on the Python 3 language variant.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      The language named <literal>plpythonu</literal> implements
+      PL/Python based on the default Python language variant, which is
+      currently Python 2.  (This default is independent of what any
+      local Python installations might consider to be
+      their <quote>default</quote>, for example,
+      what <filename>/usr/bin/python</filename> might be.)  The
+      default will probably be changed to Python 3 in a distant future
+      release of PostgreSQL, depending on the progress of the
+      migration to Python 3 in the Python community.
+     </para>
+    </listitem>
+   </itemizedlist>
+
+   It depends on the build configuration or the installed packages
+   whether PL/Python for Python 2 or Python 3 or both are available.
+  </para>
+
+  <para>
+   This results in the following usage and migration strategy:
+
+   <itemizedlist>
+    <listitem>
+     <para>
+      Existing users and users who are currently not interested in
+      Python 3 use the language name <literal>plpythonu</literal> and
+      don't have to change anything for the foreseeable future.  It is
+      recommended to gradually <quote>future-proof</quote> the code
+      via migration to Python 2.6/2.7 to simplify the eventual
+      migration to Python 3.
+     </para>
+
+     <para>
+      In practice, many PL/Python functions will migrate to Python 3
+      with few or no changes.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Users who know that they have heavily Python 2 dependent code
+      and don't plan to ever change it can make use of
+      the <literal>plpython2u</literal> language name.  This will
+      continue to work into the very distant future, until Python 2
+      support might be completely dropped by PostgreSQL.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Users who want to dive into Python 3 can use
+      the <literal>plpython3u</literal> language name, which will keep
+      working forever by today's standards.  In the distant future,
+      when Python 3 might become the default, they might like to
+      remove the <quote>3</quote> for aesthetic reasons.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Daredevils, who want to build a Python-3-only operating system
+      environment, can change the build scripts to
+      make <literal>plpythonu</literal> be equivalent
+      to <literal>plpython3u</literal>, keeping in mind that this
+      would make their installation incompatible with most of the rest
+      of the world.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </para>
+
+  <para>
+   See also the
+   document <ulink url="http://docs.python.org/dev/3.0/whatsnew/3.0.html">What's
+   New In Python 3.0</ulink> for more information about porting to
+   Python 3.
+  </para>
+ </sect1>
+
  <sect1 id="plpython-funcs">
   <title>Fonctions PL/Python</title>
 
   <para>
    Les fonctions PL/Python sont déclarées via la syntaxe standard <xref
-   linkend="sql-createfunction" endterm="sql-createfunction-title"/>&nbsp;:
+   linkend="sql-createfunction"/>&nbsp;:
 <programlisting>CREATE FUNCTION <replaceable>nom_fonction</replaceable> (<replaceable>liste-arguments</replaceable>)
   RETURNS <replaceable>return-type</replaceable>
 AS $$
@@ -63,11 +175,15 @@
   <para>
    Le corps d'une fonction est tout simplement un script Python. Quand la
    fonction est appelée, ses arguments sont passés au script Python comme des
-   éléments du tableau <varname>args[]</varname>&nbsp;; les arguments nommés
-   sont en plus passés comme des variables ordinaires. Le résultat est renvoyé
+   éléments da la liste <varname>args</varname>&nbsp;; les arguments nommés
+   sont en plus passés comme des variables ordinaires. Use of named arguments is
+   usually more readable.  Le résultat est renvoyé
    par le code Python de la façon habituelle, avec <literal>return</literal> ou
    <literal>yield</literal> (dans le cas d'une instruction avec un ensemble
-   de résultats).
+   de résultats). If
+   you do not provide a return value, Python returns the default
+   <symbol>None</symbol>. <application>PL/Python</application> translates
+   Python's <symbol>None</symbol> into the SQL null value.
   </para>
 
   <para>
@@ -97,16 +213,181 @@
   </para>
 
   <para>
-   Les paramètres de fonction <productname>PostgreSQL</productname> sont
-   disponibles dans la liste globale <varname>args</varname>. Dans l'exemple
-   <function>pymax</function>, <varname>args[0]</varname> contient tout ce qui
-   a été passé comme premier argument et <varname>args[1]</varname> contient la
-   valeur du deuxième argument. Sinon, vous pouvez utiliser les paramètres
-   nommés comme le montre l'exemple ci-dessus. L'utilisation de paramètres
-   nommés est habituellement plus lisible.
+   The arguments are set as global variables.  Because of the scoping
+   rules of Python, this has the subtle consequence that an argument
+   variable cannot be reassigned inside the function to the value of
+   an expression that involves the variable name itself, unless the
+   variable is redeclared as global in the block.  For example, the
+   following won't work:
+<programlisting>
+CREATE FUNCTION pystrip(x text)
+  RETURNS text
+AS $$
+  x = x.strip()  # error
+  return x
+$$ LANGUAGE plpythonu;
+</programlisting>
+   because assigning to <varname>x</varname>
+   makes <varname>x</varname> a local variable for the entire block,
+   and so the <varname>x</varname> on the right-hand side of the
+   assignment refers to a not-yet-assigned local
+   variable <varname>x</varname>, not the PL/Python function
+   parameter.  Using the <literal>global</literal> statement, this can
+   be made to work:
+<programlisting>
+CREATE FUNCTION pystrip(x text)
+  RETURNS text
+AS $$
+  global x
+  x = x.strip()  # ok now
+  return x
+$$ LANGUAGE plpythonu;
+</programlisting>
+   But it is advisable not to rely on this implementation detail of
+   PL/Python.  It is better to treat the function parameters as
+   read-only.
   </para>
+ </sect1>
 
+ <sect1 id="plpython-data">
+  <title>Data Values</title>
   <para>
+   Generally speaking, the aim of PL/Python is to provide
+   a <quote>natural</quote> mapping between the PostgreSQL and the
+   Python worlds.  This informs the data mapping rules described
+   below.
+  </para>
+
+  <sect2>
+   <title>Data Type Mapping</title>
+   <para>
+    Function arguments are converted from their PostgreSQL type to a
+    corresponding Python type:
+    <itemizedlist>
+     <listitem>
+      <para>
+       PostgreSQL <type>boolean</type> is converted to Python <type>bool</type>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       PostgreSQL <type>smallint</type> and <type>int</type> are
+       converted to Python <type>int</type>.
+       PostgreSQL <type>bigint</type> is converted
+       to <type>long</type> in Python 2 and to <type>int</type> in
+       Python 3.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       PostgreSQL <type>real</type>, <type>double</type>,
+       and <type>numeric</type> are converted to
+       Python <type>float</type>.  Note that for
+       the <type>numeric</type> this loses information and can lead to
+       incorrect results.  This might be fixed in a future
+       release.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       PostgreSQL <type>bytea</type> is converted to
+       Python <type>str</type> in Python 2 and to <type>bytes</type>
+       in Python 3.  In Python 2, the string should be treated as a
+       byte sequence without any character encoding.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       All other data types, including the PostgreSQL character string
+       types, are converted to a Python <type>str</type>.  In Python
+       2, this string will be in the PostgreSQL server encoding; in
+       Python 3, it will be a Unicode string like all strings.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       For nonscalar data types, see below.
+      </para>
+     </listitem>
+    </itemizedlist>
+   </para>
+
+   <para>
+    Function return values are converted to the declared PostgreSQL
+    return data type as follows:
+    <itemizedlist>
+     <listitem>
+      <para>
+       When the PostgreSQL return type is <type>boolean</type>, the
+       return value will be evaluated for truth according to the
+       <emphasis>Python</emphasis> rules.  That is, 0 and empty string
+       are false, but notably <literal>'f'</literal> is true.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       When the PostgreSQL return type is <type>bytea</type>, the
+       return value will be converted to a string (Python 2) or bytes
+       (Python 3) using the respective Python builtins, with the
+       result being converted <type>bytea</type>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       For all other PostgreSQL return types, the returned Python
+       value is converted to a string using the Python
+       builtin <literal>str</literal>, and the result is passed to the
+       input function of the PostgreSQL data type.
+      </para>
+
+      <para>
+       Strings in Python 2 are required to be in the PostgreSQL server
+       encoding when they are passed to PostgreSQL.  Strings that are
+       not valid in the current server encoding will raise an error,
+       but not all encoding mismatches can be detected, so garbage
+       data can still result when this is not done correctly.  Unicode
+       strings are converted to the correct encoding automatically, so
+       it can be safer and more convenient to use those.  In Python 3,
+       all strings are Unicode strings.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       For nonscalar data types, see below.
+      </para>
+     </listitem>
+    </itemizedlist>
+
+    Note that logical mismatches between the declared PostgreSQL
+    return type and the Python data type of the actual return object
+    are not flagged; the value will be converted in any case.
+   </para>
+
+   <tip>
+    <para>
+     <application>PL/Python</application> functions cannot return
+     either type <type>RECORD</type> or <type>SETOF RECORD</type>.  A
+     workaround is to write a <application>PL/pgSQL</application>
+     function that creates a temporary table, have it call the
+     <application>PL/Python</application> function to fill the table,
+     and then have the <application>PL/pgSQL</application> function
+     return the generic <type>RECORD</type> from the temporary table.
+    </para>
+   </tip>
+  </sect2>
+
+  <sect2>
+   <title>Null, None</title>
+
+  <para>
    Si une valeur SQL NULL<indexterm><primary>valeur NULL</primary><secondary
    sortas="PL/Python">PL/Python</secondary></indexterm> est passée à une fonction,
    la valeur de l'argument apparaîtra comme <symbol>None</symbol> au niveau de
@@ -135,7 +416,51 @@
    se faire que la fonction soit stricte ou non.
   </para>
 
+  </sect2>
+
+  <sect2 id="plpython-arrays">
+   <title>Arrays, Lists</title>
   <para>
+   SQL array values are passed into PL/Python as a Python list.  To
+   return an SQL array value out of a PL/Python function, return a
+   Python sequence, for example a list or tuple:
+
+<programlisting>
+CREATE FUNCTION return_arr()
+  RETURNS int[]
+AS $$
+return (1, 2, 3, 4, 5)
+$$ LANGUAGE plpythonu;
+
+SELECT return_arr();
+ return_arr  
+-------------
+ {1,2,3,4,5}
+(1 row)
+</programlisting>
+
+   Note that in Python, strings are sequences, which can have
+   undesirable effects that might be familiar to Python programmers:
+
+<programlisting>
+CREATE FUNCTION return_str_arr()
+  RETURNS varchar[]
+AS $$
+return "hello"
+$$ LANGUAGE plpythonu;
+
+SELECT return_str_arr();
+ return_str_arr
+----------------
+ {h,e,l,l,o}
+(1 row)
+</programlisting>
+  </para>
+  </sect2>
+
+  <sect2>
+   <title>Composite Types</title>
+  <para>
    Les arguments de type composite sont passés à la fonction via une
    correspondance Python. Les noms d'élément de la correspondance sont les noms
    d'attribut du type composite. Si un attribut a une valeur NULL dans la ligne
@@ -253,13 +578,11 @@
    </variablelist>
   </para>
 
-  <para>
-   Si vous ne fournissez pas de valeur de retour,
-   <application>PL/Python</application> renvoie par défaut
-   <symbol>None</symbol>. Le module du langage traduit le
-   <symbol>None</symbol> de Python en la valeur NULL en SQL.
-  </para>
+  </sect2>
 
+  <sect2>
+   <title>Set-Returning Functions</title>
+
   <para>
    Une fonction <application>PL/Python</application> peut aussi renvoyer des
    ensembles scalaires ou des types composites. Il existe plusieurs façon de
@@ -334,7 +657,7 @@
 
        <warning>
         <para>
-         Actuellement, à cause du
+         À cause du
          <ulink url="http://bugs.python.org/issue1483133">bogue #1483133</ulink> de Python,
          certaines versions de débogage de Python 2.4
          (configuré et compilé avec l'option <literal>--with-pydebug</literal>)
@@ -351,6 +674,12 @@
    </variablelist>
   </para>
 
+  </sect2>
+ </sect1>
+
+ <sect1 id="plpython-sharing">
+  <title>Sharing Data</title>
+  
   <para>
    Le dictionnaire global <varname>SD</varname> est disponible pour stocker des
    données entres les appels de fonctions. Cette variable est une donnée
@@ -370,6 +699,24 @@
   </para>
  </sect1>
 
+ <sect1 id="plpython-do">
+  <title>Anonymous Code Blocks</title>
+
+  <para>
+   PL/Python also supports anonymous code blocks called with the
+   <xref linkend="sql-do"/> statement:
+
+<programlisting>
+DO $$
+    # PL/Python code
+$$ LANGUAGE plpythonu;
+</programlisting>
+
+   An anonymous code block receives no arguments, and whatever value it
+   might return is discarded.  Otherwise it behaves just like a function.
+  </para>
+ </sect1>
+
  <sect1 id="plpython-trigger">
   <title>Fonctions de déclencheurs</title>
 
@@ -379,28 +726,99 @@
   </indexterm>
 
   <para>
-   Quand une fonction est utilisée comme un déclencheur, le dictionnaire
-   <literal>TD</literal> contient des valeurs relatives au déclencheur.
-   <literal>TD["event"]</literal> contient l'événement en tant que chaîne
-   (<literal>INSERT</literal>, <literal>UPDATE</literal>,
-   <literal>DELETE</literal>, <literal>TRUNCATE</literal> ou <literal>UNKNOWN</literal>).
-   <literal>TD["when"]</literal> contient soit <literal>BEFORE</literal>, soit
-   <literal>AFTER</literal> soit <literal>UNKNOWN</literal>.
-   <literal>TD["level"]</literal> contient une valeur parmi <literal>ROW</literal>,
-   <literal>STATEMENT</literal> et <literal>UNKNOWN</literal>.
-   Pour un trigger niveau ligne, les lignes du trigger sont dans
-   <literal>TD["new"]</literal> et/ou <literal>TD["old"]</literal> suivant
-   l'événement qui a déclenché le trigger.
-   <literal>TD["name"]</literal> contient le nom du déclencheur,
-   <literal>TD["table_name"]</literal> contient le nom de la table pour laquelle
-   a été exécuté le déclencheur,
-   <literal>TD["table_schema"]</literal> contient le schéma de la table pour laquelle
-   a été exécuté le déclencheur,
-   <literal>TD["relid"]</literal> l'OID de la table sur lequel le déclencheur a été
-   activé. Si la commande <command>CREATE TRIGGER</command> incluait des
-   arguments, ils sont disponibles dans les variables de
-   <literal>TD["args"][0]</literal> à
-   <literal>TD["args"][<replaceable>n</replaceable>-1]</literal>.
+   When a function is used as a trigger, the dictionary
+   <literal>TD</literal> contains trigger-related values:
+   <variablelist>
+    <varlistentry>
+     <term><literal>TD["event"]</literal></term>
+     <listitem>
+      <para>
+       contains the event as a string:
+       <literal>INSERT</literal>, <literal>UPDATE</literal>,
+       <literal>DELETE</literal>, <literal>TRUNCATE</literal>,
+       or <literal>UNKNOWN</literal>.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["when"]</literal></term>
+     <listitem>
+      <para>
+       contains one of <literal>BEFORE</literal>, <literal>AFTER</literal>,
+       or <literal>UNKNOWN</literal>.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["level"]</literal></term>
+     <listitem>
+      <para>
+       contains one of <literal>ROW</literal>,
+       <literal>STATEMENT</literal>, or <literal>UNKNOWN</literal>.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["new"]</literal></term>
+     <term><literal>TD["old"]</literal></term>
+     <listitem>
+      <para>
+       For a row-level trigger, one or both of these fields contain
+       the respective trigger rows, depending on the trigger event.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["name"]</literal></term>
+     <listitem>
+      <para>
+       contains the trigger name.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["table_name"]</literal></term>
+     <listitem>
+      <para>
+       contains the name of the table on which the trigger occurred.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["table_schema"]</literal></term>
+     <listitem>
+      <para>
+       contains the schema of the table on which the trigger occurred.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["relid"]</literal></term>
+     <listitem>
+      <para>
+       contains the OID of the table on which the trigger occurred.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><literal>TD["args"]</literal></term>
+     <listitem>
+      <para>
+       If the <command>CREATE TRIGGER</command> command
+       included arguments, they are available in <literal>TD["args"][0]</literal> to
+       <literal>TD["args"][<replaceable>n</replaceable>-1]</literal>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
   </para>
 
   <para>
@@ -421,117 +839,116 @@
    Le module du langage PL/Python importe automatiquement un module Python
    appelé <literal>plpy</literal>. Les fonctions et constantes de ce module
    vous sont accessibles dans le code Python via
-   <literal>plpy.<replaceable>foo</replaceable></literal>. Actuellement,
-   <literal>plpy</literal> implémente les fonctions
-   <literal>plpy.debug(<replaceable>msg</replaceable>)</literal>,
-   <literal>plpy.log(<replaceable>msg</replaceable>)</literal>,
-   <literal>plpy.info(<replaceable>msg</replaceable>)</literal>,
-   <literal>plpy.notice(<replaceable>msg</replaceable>)</literal>,
-   <literal>plpy.warning(<replaceable>msg</replaceable>)</literal>,
-   <literal>plpy.error(<replaceable>msg</replaceable>)</literal> et
-   <literal>plpy.fatal(<replaceable>msg</replaceable>)</literal>.
-   <indexterm><primary>elog</primary><secondary>dans PL/Python</secondary></indexterm>
-   <function>plpy.error</function> et <literal>plpy.fatal("msg")</literal>
-   lèvent une exception Python qui, si non attrapée, se propage à la requête
-   appelante causant l'annulation de la transaction ou sous-transaction en
-   cours.  <literal>raise plpy.ERROR(<replaceable>msg</replaceable>)</literal> et
-   <literal>raise plpy.FATAL(<replaceable>msg</replaceable>)</literal> sont équivalent à
-   appeler, respectivement, <function>plpy.error</function> et
-   <function>plpy.fatal</function>. Les autres fonctions génèrent uniquement
-   des messages de
-   niveaux de priorité différents. Que les messages d'une priorité particulière
-   soient reportés au client, écrit dans les journaux du serveur ou les deux,
-   cette configuration est contrôlée par les variables <xref
-   linkend="guc-log-min-messages"/> et <xref linkend="guc-client-min-messages"/>.
-   Voir le <xref linkend="runtime-config"/> pour plus d'informations.
+   <literal>plpy.<replaceable>foo</replaceable></literal>. 
   </para>
 
   <para>
-   De plus, le module <literal>plpy</literal> fournit deux fonctions appelées
-   <function>execute</function> et <function>prepare</function>. Appeler
-   <function>plpy.execute</function> avec une chaîne de requête et un argument
-   de limite optionnel fait que la requête est lancée et que le résultat est
-   renvoyé dans un objet résultat. L'objet résultat émule une liste ou un objet
-   dictionnaire. L'objet résultat est accessible par le numéro de ligne et le
-   nom de la colonne. Il a plusieurs méthodes supplémentaires&nbsp;:
-   <function>nrows</function> qui renvoie le nombre de lignes retournées par la
-   requête et <function>status</function> qui est le code de retour de
-   <function>SPI_execute()</function>. L'objet résultat peut être modifié.
+   The <literal>plpy</literal> module provides two
+   functions called <function>execute</function> and
+   <function>prepare</function>.  Calling
+   <function>plpy.execute</function> with a query string and an
+   optional limit argument causes that query to be run and the result
+   to be returned in a result object.  The result object emulates a
+   list or dictionary object.  The result object can be accessed by
+   row number and column name.  It has these additional methods:
+   <function>nrows</function> which returns the number of rows
+   returned by the query, and <function>status</function> which is the
+   <function>SPI_execute()</function> return value.  The result object
+   can be modified.
   </para>
 
   <para>
-   Par exemple&nbsp;:
-<programlisting>rv = plpy.execute("SELECT * FROM ma_table", 5)
+   For example:
+<programlisting>
+rv = plpy.execute("SELECT * FROM my_table", 5)
 </programlisting>
-   renvoie cinq lignes de <literal>ma_table</literal>. Si
-   <literal>ma_table</literal> dispose d'une colonne
-   <literal>ma_colonne</literal>, elle sera accessible avec&nbsp;:
-<programlisting>foo = rv[i]["ma_colonne"]
+   returns up to 5 rows from <literal>my_table</literal>.  If
+   <literal>my_table</literal> has a column
+   <literal>my_column</literal>, it would be accessed as:
+<programlisting>
+foo = rv[i]["my_column"]
 </programlisting>
   </para>
 
   <para>
-   <indexterm><primary>préparer une requête</primary><secondary>en
-PL/Python</secondary></indexterm>
-   La seconde fonction, <function>plpy.prepare</function>, prépare le plan
-   d'exécution pour une requête. Il est appelé avec une chaîne contenant la
-   requête et une liste des types de paramètres si vous avez des références de
-   paramètres dans la requête. Par exemple&nbsp;:
-<programlisting>plan = plpy.prepare("SELECT nom FROM mes_utilisateurs WHERE prenom = $1", [
-"text" ])
+   <indexterm><primary>preparing a query</primary><secondary>in PL/Python</secondary></indexterm>
+   The second function, <function>plpy.prepare</function>, prepares
+   the execution plan for a query.  It is called with a query string
+   and a list of parameter types, if you have parameter references in
+   the query.  For example:
+<programlisting>
+plan = plpy.prepare("SELECT last_name FROM my_users WHERE first_name = $1", [ "text" ])
 </programlisting>
-   <literal>text</literal> est le type de la variable que vous voulez passer via
-   <literal>$1</literal>. Après avoir préparé une instruction, vous utilisez la
-   fonction <function>plpy.execute</function> pour l'exécuter&nbsp;:
-<programlisting>rv = plpy.execute(plan, [ "nom" ], 5)
+   <literal>text</literal> is the type of the variable you will be
+   passing for <literal>$1</literal>.  After preparing a statement, you
+   use the function <function>plpy.execute</function> to run it:
+<programlisting>
+rv = plpy.execute(plan, [ "name" ], 5)
 </programlisting>
-   Le troisième argument est la limite et est optionnelle.
+   The third argument is the limit and is optional.
   </para>
 
   <para>
-   Lorsque vous préparez un plan en utilisant le module PL/Python, il est
-   automatiquement sauvegardé. Lisez la documentation SPI (<xref
-   linkend="spi"/>) pour une description de ce que cela signifie. Pour faire
-   réellement usage de ceci dans les appels de fonction, vous avez besoin
-   d'utiliser un des dictionnaires à stockage permanent
-   <literal>SD</literal> ou <literal>GD</literal> (voir le
-   <xref linkend="plpython-funcs"/>). Par exemple&nbsp;:
-<programlisting>CREATE FUNCTION utiliseplansauvegarde() RETURNS trigger AS $$
+   Query parameters and result row fields are converted between
+   PostgreSQL and Python data types as described
+   in <xref linkend="plpython-data"/>.  The exception is that composite
+   types are currently not supported: They will be rejected as query
+   parameters and are converted to strings when appearing in a query
+   result.  As a workaround for the latter problem, the query can
+   sometimes be rewritten so that the composite type result appears as
+   a result row rather than as a field of the result row.
+   Alternatively, the resulting string could be parsed apart by hand,
+   but this approach is not recommended because it is not
+   future-proof.
+  </para>
+
+  <para>
+   When you prepare a plan using the PL/Python module it is
+   automatically saved.  Read the SPI documentation (<xref
+   linkend="spi"/>) for a description of what this means.
+   In order to make effective use of this across function calls
+   one needs to use one of the persistent storage dictionaries
+   <literal>SD</literal> or <literal>GD</literal> (see
+   <xref linkend="plpython-sharing"/>). For example:
+<programlisting>
+CREATE FUNCTION usesavedplan() RETURNS trigger AS $$
     if SD.has_key("plan"):
         plan = SD["plan"]
     else:
         plan = plpy.prepare("SELECT 1")
         SD["plan"] = plan
-    # reste de la fonction
+    # rest of function
 $$ LANGUAGE plpythonu;
 </programlisting>
   </para>
  </sect1>
 
-<!-- [IGNORE[ NOT CURRENTLY SUPPORTED
-
- <sect1 id="plpython-trusted">
-  <title>Restricted Environment</title>
-
+ <sect1 id="plpython-util">
+  <title>Utility Functions</title>
   <para>
-   The current version of <application>PL/Python</application>
-   functions as a trusted language only; access to the file system and
-   other local resources is disabled.  Specifically,
-   <application>PL/Python</application> uses the Python restricted
-   execution environment, further restricts it to prevent the use of
-   the file <function>open</function> call, and allows only modules from a
-   specific list to be imported.  Presently, that list includes:
-   <literal>array</literal>, <literal>bisect</literal>, <literal>binascii</literal>,
-   <literal>calendar</literal>, <literal>cmath</literal>, <literal>codecs</literal>,
-   <literal>errno</literal>, <literal>marshal</literal>, <literal>math</literal>, <literal>md5</literal>,
-   <literal>mpz</literal>, <literal>operator</literal>, <literal>pcre</literal>,
-   <literal>pickle</literal>, <literal>random</literal>, <literal>re</literal>, <literal>regex</literal>,
-   <literal>sre</literal>, <literal>sha</literal>, <literal>string</literal>, <literal>StringIO</literal>,
-   <literal>struct</literal>, <literal>time</literal>, <literal>whrandom</literal>, and
-   <literal>zlib</literal>.
+   The <literal>plpy</literal> module also provides  les fonctions
+   <literal>plpy.debug(<replaceable>msg</replaceable>)</literal>,
+   <literal>plpy.log(<replaceable>msg</replaceable>)</literal>,
+   <literal>plpy.info(<replaceable>msg</replaceable>)</literal>,
+   <literal>plpy.notice(<replaceable>msg</replaceable>)</literal>,
+   <literal>plpy.warning(<replaceable>msg</replaceable>)</literal>,
+   <literal>plpy.error(<replaceable>msg</replaceable>)</literal> et
+   <literal>plpy.fatal(<replaceable>msg</replaceable>)</literal>.
+   <indexterm><primary>elog</primary><secondary>dans PL/Python</secondary></indexterm>
+   <function>plpy.error</function> et <literal>plpy.fatal("msg")</literal>
+   lèvent une exception Python qui, si non attrapée, se propage à la requête
+   appelante causant l'annulation de la transaction ou sous-transaction en
+   cours.  <literal>raise plpy.ERROR(<replaceable>msg</replaceable>)</literal> et
+   <literal>raise plpy.FATAL(<replaceable>msg</replaceable>)</literal> sont équivalent à
+   appeler, respectivement, <function>plpy.error</function> et
+   <function>plpy.fatal</function>. Les autres fonctions génèrent uniquement
+   des messages de
+   niveaux de priorité différents. Que les messages d'une priorité particulière
+   soient reportés au client, écrit dans les journaux du serveur ou les deux,
+   cette configuration est contrôlée par les variables <xref
+   linkend="guc-log-min-messages"/> et <xref linkend="guc-client-min-messages"/>.
+   Voir le <xref linkend="runtime-config"/> pour plus d'informations.
   </para>
  </sect1>
 
--->
-
 </chapter>

Modified: traduc/trunk/postgresql/pltcl.xml
===================================================================
--- traduc/trunk/postgresql/pltcl.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/pltcl.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -85,8 +85,7 @@
 
     <para>
      Pour créer une fonction dans le langage <application>PL/Tcl</application>, utilisez
-     la syntaxe standard de <xref linkend="sql-createfunction"
-     endterm="sql-createfunction-title"/>&nbsp;:
+     la syntaxe standard de <xref linkend="sql-createfunction"/>&nbsp;:
 
 <programlisting>CREATE FUNCTION <replaceable>nom_fonction</replaceable> (<replaceable>types_arguments</replaceable>) RETURNS
 <replaceable>type_en_retour</replaceable> AS $$

Modified: traduc/trunk/postgresql/postgres.xml
===================================================================
--- traduc/trunk/postgresql/postgres.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/postgres.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -34,6 +34,8 @@
 signifiant très certainement mondial ;-) SAS 20051108-->
  <bookinfo>
   <corpauthor>The PostgreSQL Global Development Group</corpauthor>
+  <productname>PostgreSQL</productname>
+  <productnumber>&version;</productnumber>
   &legal;
  </bookinfo>
 
@@ -185,6 +187,7 @@
   &maintenance;
   &backup;
   &high-availability;
+  &recovery-config;
   &monitoring;
   &diskusage;
   &wal;

Modified: traduc/trunk/postgresql/protocol.xml
===================================================================
--- traduc/trunk/postgresql/protocol.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/protocol.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -32,13 +32,6 @@
   souhaite utiliser. Le serveur suivra ce protocole s'il en est capable.
  </para>
 
- <para>
-  Les fonctionnalités de haut niveau construites sur ce protocole
-  (par exemple, la façon dont <application>libpq</application> passe certaines
-  variables d'environnement à l'établissement de la connexion) ne sont pas couvertes
-  par ce chapitre.
- </para>
-
   <para>
    Pour répondre efficacement à de multiples clients, le serveur lance un
    nouveau serveur (<quote>backend</quote>) pour chaque client. dans l'implémentation
@@ -698,6 +691,24 @@
        les constantes chaînes littérales non typées.
       </para>
 
+   <note>
+    <para>
+     A parameter data type can be left unspecified by setting it to zero,
+     or by making the array of parameter type OIDs shorter than the
+     number of parameter symbols (<literal>$</literal><replaceable>n</replaceable>)
+     used in the query string.  Another special case is that a parameter's
+     type can be specified as <type>void</type> (that is, the OID of the
+     <type>void</type> pseudotype).  This is meant to allow parameter symbols
+     to be used for function parameters that are actually OUT parameters.
+     Ordinarily there is no context in which a <type>void</type> parameter
+     could be used, but if such a parameter symbol appears in a function's
+     parameter list, it is effectively ignored.  For example, a function
+     call such as <literal>foo($1,$2,$3,$4)</literal> could match a function with
+     two IN and two OUT arguments, if <literal>$3</literal> and <literal>$4</literal>
+     are specified as having type <type>void</type>.
+    </para>
+   </note>
+
       <note>
        <para>
         La chaîne contenue dans un message Parse ne peut pas inclure plus d'une
@@ -740,11 +751,42 @@
        <para>
         Le choix entre sortie texte et binaire est déterminé par les codes
         de format donnés dans Bind, quelque soit la commande SQL impliquée.
-        L'attribut <literal>binary</literal> dans les déclarations du curseur n'est pas
+        L'attribut <literal>BINARY</literal> dans les déclarations du curseur n'est pas
         pertinent lors de l'utilisation du protocole de requête étendue.
        </para>
       </note>
 
+   <para>
+    Query planning for named prepared-statement objects occurs when the Parse
+    message is processed. If a query will be repeatedly executed with
+    different parameters, it might be beneficial to send a single Parse message
+    containing a parameterized query, followed by multiple Bind
+    and Execute messages. This will avoid replanning the query on each
+    execution.
+   </para>
+
+   <para>
+    The unnamed prepared statement is likewise planned during Parse processing
+    if the Parse message defines no parameters.  But if there are parameters,
+    query planning occurs every time Bind parameters are supplied.  This allows the
+    planner to make use of the actual values of the parameters provided by
+    each Bind message, rather than use generic estimates.
+   </para>
+
+   <note>
+    <para>
+     Query plans generated from a parameterized query might be less
+     efficient than query plans generated from an equivalent query with actual
+     parameter values substituted. The query planner cannot make decisions
+     based on actual parameter values (for example, index selectivity) when
+     planning a parameterized query assigned to a named prepared-statement
+     object.  This possible penalty is avoided when using the unnamed
+     statement, since it is not planned until actual parameter values are
+     available.  The cost is that planning must occur afresh for each Bind,
+     even if the query stays the same.
+    </para>
+   </note>
+
       <para>
        En cas de succès de sa création, un objet portail nommé dure jusqu'à la fin
        de la transaction courante sauf s'il est explicitement détruit. Un
@@ -1078,8 +1120,9 @@
        À ce jour, il existe un certain nombre de paramètres codés en dur pour
        lesquels des messages ParameterStatus seront engendrés&nbsp;: on trouve
        <literal>server_version</literal>,
+       <literal>server_encoding</literal>,
        <literal>client_encoding</literal>,
-       <literal>server_encoding</literal>,
+       <literal>application_name</literal>,
        <literal>is_superuser</literal>,
        <literal>session_authorization</literal> et
        <literal>session_authorization</literal>,
@@ -1092,7 +1135,8 @@
        sorties avant la 8.0&nbsp;; <literal>standard_conforming_strings</literal>
        n'a pas été reporté par les sorties avant la 8.1&nbsp;;
        <literal>IntervalStyle</literal> n'a pas été reporté par les sorties
-       avant la 8.4.). Notez que
+       avant la 8.4;
+    <literal>application_name</literal> was not reported by releases before 9.0.). Notez que
        <literal>server_version</literal>,
        <literal>server_encoding</literal> et
        <literal>integer_datetimes</literal> sont des pseudo-paramètres qui ne peuvent pas
@@ -1106,7 +1150,7 @@
        Si un client lance une commande <command>listen</command>, alors le serveur
        enverra un message NotificationResponse (à ne pas confondre avec
        NoticeResponse&nbsp;!) à chaque fois qu'une commande
-       <command>notify</command> est exécutée pour la notification de même nom.
+       <command>notify</command> est exécutée pour le canal de même nom.
       </para>
 
       <note>
@@ -2204,6 +2248,12 @@
        </para>
 
        <para>
+        For a <command>SELECT</command> or <command>CREATE TABLE AS</command>
+        command, the tag is <literal>SELECT <replaceable>rows</replaceable></literal>
+        where <replaceable>rows</replaceable> is the number of rows retrieved.
+       </para>
+
+       <para>
         Pour une commande <command>move</command>, la balise est
         <literal>move <replaceable>lignes</replaceable></literal> où
         <replaceable>lignes</replaceable> est le nombre de lignes de déplacement
@@ -2392,7 +2442,7 @@
  		séparées par des retours chariot, colonnes séparées par des
  		caractères de séparation, etc). 1 indique que le format de copie
  		complet est binaire (similaire au format DataRow).
- 		Voir <xref linkend="sql-copy" endterm="sql-copy-title"/> pour
+ 		Voir <xref linkend="sql-copy"/> pour
  		plus d'informations.
 </para>
 </listitem>
@@ -2466,7 +2516,7 @@
 		séparées par des retours chariots, colonnes séparées par des
 		caractères séparateur, etc). 1 indique que le format de copie
 		complet est binaire (similaire au format DataRow).
-		Voir <xref linkend="sql-copy" endterm="sql-copy-title"/> pour
+		Voir <xref linkend="sql-copy"/> pour
 		plus d'informations.
 </para>
 </listitem>
@@ -3150,7 +3200,7 @@
 </term>
 <listitem>
 <para>
-                Nom de la condition à l'origine de la notification.
+                Nom du canal à l'origine de la notification.
 </para>
 </listitem>
 </varlistentry>
@@ -3160,9 +3210,7 @@
 </term>
 <listitem>
 <para>
-                Information supplémentaire provenant du processus à l'origine de
-		la notification (cette fonctionnalité n'est, à ce jour, pas
-		implantée, le champ est donc toujours constitué d'une chaîne vide).
+                The <quote>payload</quote> string passed from the notifying process.
 </para>
 </listitem>
 </varlistentry>
@@ -4116,7 +4164,121 @@
 
 </sect1>
 
+<sect1 id="protocol-replication">
+<title>Streaming Replication Protocol</title>
 
+<para>
+To initiate streaming replication, the frontend sends the "replication"
+parameter in the startup message. This tells the backend to go into
+walsender mode, where a small set of replication commands can be issued
+instead of SQL statements. Only the simple query protocol can be used in
+walsender mode.
+
+The commands accepted in walsender mode are:
+
+<variablelist>
+  <varlistentry>
+    <term>IDENTIFY_SYSTEM</term>
+    <listitem>
+     <para>
+      Requests the server to identify itself. Server replies with a result
+      set of a single row, and two fields:
+
+      systemid: The unique system identifier identifying the cluster. This
+      can be used to check that the base backup used to initialize the
+      slave came from the same cluster.
+
+      timeline: Current TimelineID. Also used to check that the slave is
+      consistent with the master.
+     </para>
+    </listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term>START_REPLICATION XXX/XXX</term>
+    <listitem>
+     <para>
+      Instructs backend to start streaming WAL, starting at point XXX/XXX.
+      Server can reply with an error e.g if the requested piece of WAL has
+      already been recycled. On success, server responds with a
+      CopyOutResponse message, and backend starts to stream WAL as CopyData
+      messages.
+      The payload in CopyData message consists of the following format.
+     </para>
+
+     <para>
+      <variablelist>
+      <varlistentry>
+      <term>
+          XLogData (B)
+      </term>
+      <listitem>
+      <para>
+      <variablelist>
+      <varlistentry>
+      <term>
+          Byte1('w')
+      </term>
+      <listitem>
+      <para>
+          Identifies the message as WAL data.
+      </para>
+      </listitem>
+      </varlistentry>
+      <varlistentry>
+      <term>
+          Int32
+      </term>
+      <listitem>
+      <para>
+          The log file number of the LSN, indicating the starting point of
+          the WAL in the message.
+      </para>
+      </listitem>
+      </varlistentry>
+      <varlistentry>
+      <term>
+          Int32
+      </term>
+      <listitem>
+      <para>
+          The byte offset of the LSN, indicating the starting point of
+          the WAL in the message.
+      </para>
+      </listitem>
+      </varlistentry>
+      <varlistentry>
+      <term>
+          Byte<replaceable>n</replaceable>
+      </term>
+      <listitem>
+      <para>
+          Data that forms part of WAL data stream.
+      </para>
+      </listitem>
+      </varlistentry>
+      </variablelist>
+      </para>
+      </listitem>
+      </varlistentry>
+      </variablelist>
+     </para>
+     <para>
+       A single WAL record is never split across two CopyData messages. When
+       a WAL record crosses a WAL page boundary, however, and is therefore
+       already split using continuation records, it can be split at the page
+       boundary. In other words, the first main WAL record and its
+       continuation records can be split across different CopyData messages.
+     </para>
+    </listitem>
+  </varlistentry>
+</variablelist>
+
+</para>
+
+</sect1>
+
+
 <sect1 id="protocol-changes">
 <title>Résumé des modifications depuis le protocole 2.0</title>
 
@@ -4215,8 +4377,8 @@
 
    <para>
    Le message NotificationResponse ('<literal>a</literal>') a un champ de type chaîne
-   supplémentaire, actuellement vide mais qui pourrait à terme transporter des
-   données supplémentaires engendrées par l'émetteur de l'événement <command>notify</command>.
+   supplémentaire, which can carry a <quote>payload</quote> string passed par
+   l'émetteur de l'événement <command>notify</command>.
    </para>
 
    <para>

Modified: traduc/trunk/postgresql/queries.xml
===================================================================
--- traduc/trunk/postgresql/queries.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/queries.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -28,8 +28,8 @@
 
   <para>
    Le processus et la commande de récupération des données sont appelés une
-   <firstterm>requête</firstterm>. En SQL, la commande <xref linkend="sql-select"
-   endterm="sql-select-title"/> est utilisée pour spécifier des requêtes. La
+   <firstterm>requête</firstterm>. En SQL, la commande <xref
+   linkend="sql-select"/> est utilisée pour spécifier des requêtes. La
    syntaxe générale de la commande <command>SELECT</command> est
 <synopsis>
 <optional>WITH <replaceable>with_requêtes</replaceable></optional> SELECT <replaceable>liste_select</replaceable> FROM <replaceable>expression_table</replaceable> <optional><replaceable>specification_tri</replaceable></optional>
@@ -105,7 +105,7 @@
    <title>Clause <literal>FROM</literal></title>
  
    <para>
-    La <xref linkend="sql-from" endterm="sql-from-title"/> dérive une
+    La <xref linkend="sql-from"/> dérive une
     table à partir d'une ou plusieurs tables données dans une liste de
     référence dont les tables sont séparées par des virgules.
 <synopsis>FROM <replaceable>reference_table</replaceable> <optional>, <replaceable>reference_table</replaceable> <optional>, ...</optional></optional></synopsis>
@@ -546,20 +546,13 @@
     </para>
 
     <para>
-     L'alias devient le nouveau nom de référence de la table pour la requête
-     courante &mdash; il n'est plus possible de référencer la table avec son nom
-     d'origine. Du coup&nbsp;:
-<programlisting>SELECT * FROM ma_table AS m WHERE ma_table.a &gt; 5;</programlisting>
-     n'est pas valide suivant le standard SQL. Dans
-     <productname>PostgreSQL</productname>, ceci amènera une erreur si la variable
-     <xref linkend="guc-add-missing-from"/> est désactivée (<literal>off</literal>,
-     valeur par défaut).
-     S'il est activé (<literal>on</literal>), une référence vers une table
-     implicite sera ajoutée à la clause <literal>FROM</literal>, de façon à ce que
-     la requête soit exécutée comme si elle était écrite ainsi&nbsp;:
-<programlisting>SELECT * FROM ma_table AS m, ma_table AS ma_table WHERE ma_table.a &gt; 5;</programlisting>
-     Cela résultera en une jointure croisée, ce qui n'est habituellement pas
-     ce que vous voulez.
+     The alias becomes the new name of the table reference so far as the
+     current query is concerned &mdash; it is not allowed to refer to the
+     table by the original name elsewhere in the query.  Thus, this is not
+     valid:
+<programlisting>
+SELECT * FROM my_table AS m WHERE my_table.a &gt; 5;    -- wrong
+</programlisting>
     </para>
 
     <para>
@@ -723,7 +716,7 @@
    </indexterm>
 
    <para>
-    La syntaxe de la <xref linkend="sql-where" endterm="sql-where-title"/> est
+    La syntaxe de la <xref linkend="sql-where"/> est
 <synopsis>WHERE <replaceable>condition_recherche</replaceable></synopsis>
     où <replaceable>condition_recherche</replaceable> est toute expression de
     valeur (voir la <xref linkend="sql-expressions"/>) renvoyant une valeur
@@ -820,7 +813,7 @@
     GROUP BY <replaceable>reference_colonne_regroupement</replaceable><optional>,<replaceable>reference_colonne_regroupement</replaceable></optional>...</synopsis>
 
    <para>
-    La <xref linkend="sql-groupby" endterm="sql-groupby-title"/> est
+    La <xref linkend="sql-groupby"/> est
     utilisée pour regrouper les lignes d'une table qui ont les mêmes valeurs
     dans toutes les colonnes précisées. L'ordre dans lequel ces colonnes sont
     indiquées importe peu. L'effet est de combiner chaque ensemble de lignes
@@ -1496,8 +1489,7 @@
   </para>
 
   <para>
-   Pour plus d'informations, voir <xref linkend="sql-values"
-   endterm="sql-values-title"/>.
+   Pour plus d'informations, voir <xref linkend="sql-values"/>.
   </para>
 
  </sect1>

Modified: traduc/trunk/postgresql/query.xml
===================================================================
--- traduc/trunk/postgresql/query.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/query.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -33,7 +33,9 @@
    <para>
     Les exemples dans ce manuel peuvent aussi être trouvés dans le
     répertoire <filename>src/tutorial/</filename> de la
-    distribution source de <productname>PostgreSQL</productname>.
+    distribution source de <productname>PostgreSQL</productname>. (Binary
+    distributions of <productname>PostgreSQL</productname> might not
+    compile these files.) 
     Pour utiliser ces fichiers, commencez par changer de répertoire et lancez
     <application>make</application>&nbsp;:
 
@@ -41,11 +43,7 @@
 <prompt>$</prompt> <userinput>make</userinput></screen>
 
     Ceci crée les scripts et compile les fichiers C contenant des fonctions et
-    types définis par l'utilisateur. (Si vous avez installé une version binaire
-    de <productname>PostgreSQL</productname> plutôt que de la construire à
-    partir des sources, cherchez un répertoire nommé <filename>tutorial</filename>
-    dans la documentation de <productname>PostgreSQL</productname>. Le
-    <quote>make</quote> a certainement dû être fait pour vous.) Puis, pour lancer
+    types définis par l'utilisateur. Puis, pour lancer
     le tutoriel, faites ce qui suit&nbsp;:
 
 <screen><prompt>$</prompt> <userinput>cd <replaceable>....</replaceable>/tutorial</userinput>
@@ -268,7 +266,7 @@
     où le nom du fichier source doit être disponible sur la
     machine serveur et non pas sur le client puisque le serveur lit le
     fichier directement. Vous avez plus d'informations sur la commande
-    <command>COPY</command> dans <xref linkend="sql-copy" endterm="sql-copy-title"/>.
+    <command>COPY</command> dans <xref linkend="sql-copy"/>.
    </para>
   </sect1>
 

Added: traduc/trunk/postgresql/recovery-config.xml
===================================================================
--- traduc/trunk/postgresql/recovery-config.xml	                        (rev 0)
+++ traduc/trunk/postgresql/recovery-config.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,300 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/recovery-config.sgml,v 2.6 2010-04-28 07:34:11 heikki Exp $ -->
+
+<chapter Id="recovery-config">
+  <title>Recovery Configuration</title>
+
+  <indexterm>
+   <primary>configuration</primary>
+   <secondary>of recovery</secondary>
+   <tertiary>of a standby server</tertiary>
+  </indexterm>
+
+   <para>
+    This chapter describes the settings available in the
+    <filename>recovery.conf</filename> file. They apply only for the duration of the
+    recovery.  They must be reset for any subsequent recovery you wish to
+    perform.  They cannot be changed once recovery has begun.
+   </para>
+
+   <para>
+     Settings in <filename>recovery.conf</filename> are specified in the format
+     <literal>name = 'value'</literal>. One parameter is specified per line.
+     Hash marks (<literal>#</literal>) designate the rest of the
+     line as a comment.  To embed a single quote in a parameter
+     value, write two quotes (<literal>''</literal>).
+   </para>
+
+   <para>
+    A sample file, <filename>share/recovery.conf.sample</filename>,
+    is provided in the installation's <filename>share/</filename> directory.
+   </para>
+
+  <sect1 id="archive-recovery-settings">
+
+    <title>Archive recovery settings</title>
+     <variablelist>
+
+     <varlistentry id="restore-command" xreflabel="restore_command">
+      <term><varname>restore_command</varname> (<type>string</type>)</term>
+      <indexterm>
+        <primary><varname>restore_command</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        The shell command to execute to retrieve an archived segment of
+        the WAL file series. This parameter is required for archive recovery,
+        but optional for streaming replication.
+        Any <literal>%f</literal> in the string is
+        replaced by the name of the file to retrieve from the archive,
+        and any <literal>%p</literal> is replaced by the copy destination path name
+        on the server.
+        (The path name is relative to the current working directory,
+        i.e., the cluster's data directory.)
+        Any <literal>%r</literal> is replaced by the name of the file containing the
+        last valid restart point. That is the earliest file that must be kept
+        to allow a restore to be restartable, so this information can be used
+        to truncate the archive to just the minimum required to support
+        restarting from the current restore. <literal>%r</literal> is typically only
+        used by warm-standby configurations
+        (see <xref linkend="warm-standby" />).
+        Write <literal>%%</literal> to embed an actual <literal>%</literal> character.
+       </para>
+
+       <para>
+        It is important for the command to return a zero exit status
+        only if it succeeds.  The command <emphasis>will</emphasis> be asked for file
+        names that are not present in the archive; it must return nonzero
+        when so asked.  Examples:
+<programlisting>
+restore_command = 'cp /mnt/server/archivedir/%f "%p"'
+restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows
+</programlisting>
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="restartpoint-command" xreflabel="restartpoint_command">
+      <term><varname>restartpoint_command</varname> (<type>string</type>)</term>
+      <indexterm>
+        <primary><varname>restartpoint_command</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        This parameter specifies a shell command that will be executed at
+        every restartpoint. This parameter is optional. The purpose of the
+        <varname>restartpoint_command</varname> is to provide a mechanism for cleaning
+        up old archived WAL files that are no longer needed by the standby
+        server.
+        Any <literal>%r</literal> is replaced by the name of the file
+        containing the last valid restart point. That is the earliest file that
+        must be kept to allow a restore to be restartable, so this information
+        can be used to truncate the archive to just the minimum required to
+        support restart from the current restore. <literal>%r</literal> would
+        typically be used in a warm-standby configuration
+        (see <xref linkend="warm-standby" />).
+        Write <literal>%%</literal> to embed an actual <literal>%</literal> character
+        in the command.
+       </para>
+       <para>
+        If the command returns a non-zero exit status then a WARNING log
+        message will be written.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="recovery-end-command" xreflabel="recovery_end_command">
+      <term><varname>recovery_end_command</varname> (<type>string</type>)</term>
+      <indexterm>
+        <primary><varname>recovery_end_command</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        This parameter specifies a shell command that will be executed once only
+        at the end of recovery. This parameter is optional. The purpose of the
+        <varname>recovery_end_command</varname> is to provide a mechanism for cleanup
+        following replication or recovery.
+        Any <literal>%r</literal> is replaced by the name of the file containing the
+        last valid restart point, like in <xref linkend="restartpoint-command" />.
+       </para>
+       <para>
+        If the command returns a non-zero exit status then a WARNING log
+        message will be written and the database will proceed to start up
+        anyway.  An exception is that if the command was terminated by a
+        signal, the database will not proceed with startup.
+       </para>
+      </listitem>
+     </varlistentry>
+
+    </variablelist>
+
+  </sect1>
+
+  <sect1 id="recovery-target-settings">
+
+    <title>Recovery target settings</title>
+     <variablelist>
+
+     <varlistentry id="recovery-target-time" xreflabel="recovery_target_time">
+      <term><varname>recovery_target_time</varname>
+           (<type>timestamp</type>)
+      </term>
+      <indexterm>
+        <primary><varname>recovery_target_time</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        This parameter specifies the time stamp up to which recovery
+        will proceed.
+        At most one of <varname>recovery_target_time</varname> and
+        <xref linkend="recovery-target-xid" /> can be specified.
+        The default is to recover to the end of the WAL log.
+        The precise stopping point is also influenced by
+        <xref linkend="recovery-target-inclusive" />.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="recovery-target-xid" xreflabel="recovery_target_xid">
+      <term><varname>recovery_target_xid</varname> (<type>string</type>)</term>
+      <indexterm>
+        <primary><varname>recovery_target_xid</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        This parameter specifies the transaction ID up to which recovery
+        will proceed. Keep in mind
+        that while transaction IDs are assigned sequentially at transaction
+        start, transactions can complete in a different numeric order.
+        The transactions that will be recovered are those that committed
+        before (and optionally including) the specified one.
+        At most one of <varname>recovery_target_xid</varname> and
+        <xref linkend="recovery-target-time" /> can be specified.
+        The default is to recover to the end of the WAL log.
+        The precise stopping point is also influenced by
+        <xref linkend="recovery-target-inclusive" />.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="recovery-target-inclusive"
+                   xreflabel="recovery_target_inclusive">
+      <term><varname>recovery_target_inclusive</varname>
+        (<type>boolean</type>)
+      </term>
+      <indexterm>
+        <primary><varname>recovery_target_inclusive</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Specifies whether we stop just after the specified recovery target
+        (<literal>true</literal>), or just before the recovery target
+        (<literal>false</literal>).
+        Applies to both <xref linkend="recovery-target-time" />
+        and <xref linkend="recovery-target-xid" />, whichever one is
+        specified for this recovery.  This indicates whether transactions
+        having exactly the target commit time or ID, respectively, will
+        be included in the recovery.  Default is <literal>true</literal>.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="recovery-target-timeline"
+                   xreflabel="recovery_target_timeline">
+      <term><varname>recovery_target_timeline</varname>
+        (<type>string</type>)
+      </term>
+      <indexterm>
+        <primary><varname>recovery_target_timeline</varname> recovery parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Specifies recovering into a particular timeline.  The default is
+        to recover along the same timeline that was current when the
+        base backup was taken.  You only need to set this parameter
+        in complex re-recovery situations, where you need to return to
+        a state that itself was reached after a point-in-time recovery.
+        See <xref linkend="backup-timelines" /> for discussion.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     </variablelist>
+   </sect1>
+
+  <sect1 id="standby-settings">
+
+    <title>Standby server settings</title>
+     <variablelist>
+
+       <varlistentry id="standby-mode" xreflabel="standby_mode">
+        <term><varname>standby_mode</varname> (<type>boolean</type>)</term>
+        <indexterm>
+          <primary><varname>standby_mode</varname> recovery parameter</primary>
+        </indexterm>
+        <listitem>
+         <para>
+          Specifies whether to start the <productname>PostgreSQL</productname> server as
+          a standby. If this parameter is <literal>on</literal>, the server will
+          not stop recovery when the end of archived WAL is reached, but
+          will keep trying to continue recovery by fetching new WAL segments
+          using <varname>restore_command</varname>
+          and/or by connecting to the primary server as specified by the
+          <varname>primary_conninfo</varname> setting.
+         </para>
+        </listitem>
+       </varlistentry>
+       <varlistentry id="primary-conninfo" xreflabel="primary_conninfo">
+        <term><varname>primary_conninfo</varname> (<type>string</type>)</term>
+        <indexterm>
+          <primary><varname>primary_conninfo</varname> recovery parameter</primary>
+        </indexterm>
+        <listitem>
+         <para>
+          Specifies a connection string to be used for the standby server
+          to connect with the primary. This string is in the format
+          accepted by the libpq <function>PQconnectdb</function> function,
+          described in <xref linkend="libpq-connect" />. If any option is
+          unspecified in this string, then the corresponding environment
+          variable (see <xref linkend="libpq-envars" />) is checked. If the
+          environment variable is not set either, then
+          defaults are used.
+         </para>
+         <para>
+          The connection string should specify the host name (or address)
+          of the primary server, as well as the port number if it is not
+          the same as the standby server's default.
+          Also specify a user name corresponding to a role that has the
+          <literal>SUPERUSER</literal> and <literal>LOGIN</literal> privileges on the
+          primary (see
+          <xref linkend="streaming-replication-authentication" />).
+          A password needs to be provided too, if the primary demands password
+          authentication.  (The password can be provided either in
+          the <varname>primary_conninfo</varname> string or in a separate
+          <filename>~/.pgpass</filename> file on the standby server.)
+          Do not specify a database name in the
+          <varname>primary_conninfo</varname> string.
+         </para>
+         <para>
+          This setting has no effect if <varname>standby_mode</varname> is <literal>off</literal>.
+         </para>
+        </listitem>
+       </varlistentry>
+       <varlistentry id="trigger-file" xreflabel="trigger_file">
+        <term><varname>trigger_file</varname> (<type>string</type>)</term>
+        <indexterm>
+          <primary><varname>trigger_file</varname> recovery parameter</primary>
+        </indexterm>
+        <listitem>
+         <para>
+          Specifies a trigger file whose presence ends recovery in the
+          standby. If no trigger file is specified, the standby never exits
+          recovery.
+          This setting has no effect if <varname>standby_mode</varname> is <literal>off</literal>.
+         </para>
+        </listitem>
+       </varlistentry>
+
+     </variablelist>
+   </sect1>
+
+</chapter>

Modified: traduc/trunk/postgresql/ref/abort.xml
===================================================================
--- traduc/trunk/postgresql/ref/abort.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/abort.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -3,11 +3,10 @@
      le       $Date$
      par      $Author$
      révision $Revision$ -->
-<!-- SAS 20060616 -->
 
 <refentry id="sql-abort">
  <refmeta>
-  <refentrytitle id="sql-abort-title">ABORT</refentrytitle>
+  <refentrytitle>ABORT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -33,7 +32,7 @@
    toutes les mises à jour effectuées pendant cette transaction.
    Cette commande a un comportement identique
    à la commande <acronym>SQL</acronym> 
-   <xref linkend="sql-rollback" endterm="sql-rollback-title"/>.
+   <xref linkend="sql-rollback"/>.
    Elle n'est présente que pour des raisons historiques.
   </para>
  </refsect1>
@@ -58,7 +57,7 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-commit" endterm="sql-commit-title"/> est utilisé
+   <xref linkend="sql-commit"/> est utilisé
    pour terminer avec succès une transaction.
   </para>
 
@@ -92,9 +91,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-rollback"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/allfiles.xml
===================================================================
--- traduc/trunk/postgresql/ref/allfiles.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/allfiles.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -9,12 +9,14 @@
 <!ENTITY alterAggregate           SYSTEM "alter_aggregate.xml">
 <!ENTITY alterConversion          SYSTEM "alter_conversion.xml">
 <!ENTITY alterDatabase            SYSTEM "alter_database.xml">
+<!ENTITY alterDefaultPrivileges   SYSTEM "alter_default_privileges.xml">
 <!ENTITY alterDomain              SYSTEM "alter_domain.xml">
 <!ENTITY alterForeignDataWrapper  SYSTEM "alter_foreign_data_wrapper.xml">
 <!ENTITY alterFunction            SYSTEM "alter_function.xml">
 <!ENTITY alterGroup               SYSTEM "alter_group.xml">
 <!ENTITY alterIndex               SYSTEM "alter_index.xml">
 <!ENTITY alterLanguage            SYSTEM "alter_language.xml">
+<!ENTITY alterLargeObject         SYSTEM "alter_large_object.xml">
 <!ENTITY alterOperator            SYSTEM "alter_operator.xml">
 <!ENTITY alterOperatorClass       SYSTEM "alter_opclass.xml">
 <!ENTITY alterOperatorFamily      SYSTEM "alter_opfamily.xml">
@@ -77,6 +79,7 @@
 <!ENTITY declare                  SYSTEM "declare.xml">
 <!ENTITY delete                   SYSTEM "delete.xml">
 <!ENTITY discard                  SYSTEM "discard.xml">
+<!ENTITY do                       SYSTEM "do.xml">
 <!ENTITY dropAggregate            SYSTEM "drop_aggregate.xml">
 <!ENTITY dropCast                 SYSTEM "drop_cast.xml">
 <!ENTITY dropConversion           SYSTEM "drop_conversion.xml">

Modified: traduc/trunk/postgresql/ref/alter_aggregate.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_aggregate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_aggregate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alteraggregate">
  <refmeta>
-  <refentrytitle id="sql-alteraggregate-title">ALTER AGGREGATE</refentrytitle>
+  <refentrytitle>ALTER AGGREGATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -145,8 +145,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"/></member>
-   <member><xref linkend="sql-dropaggregate" endterm="sql-dropaggregate-title"/></member>
+   <member><xref linkend="sql-createaggregate"/></member>
+   <member><xref linkend="sql-dropaggregate"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_conversion.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_conversion.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_conversion.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterconversion">
  <refmeta>
-  <refentrytitle id="sql-alterconversion-title">ALTER CONVERSION</refentrytitle>
+  <refentrytitle>ALTER CONVERSION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -112,8 +112,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createconversion" endterm="sql-createconversion-title"/></member>
-   <member><xref linkend="sql-dropconversion" endterm="sql-dropconversion-title"/></member>
+   <member><xref linkend="sql-createconversion"/></member>
+   <member><xref linkend="sql-dropconversion"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_database.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_database.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_database.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterdatabase">
  <refmeta>
-  <refentrytitle id="sql-alterdatabase-title">ALTER DATABASE</refentrytitle>
+  <refentrytitle>ALTER DATABASE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>ALTER DATABASE <replaceable class="parameter">nom</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">option</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">option</replaceable> peut être&nbsp;:</phrase>
 
     CONNECTION LIMIT <replaceable class="parameter">limite_connexion</replaceable>
 
@@ -162,7 +162,7 @@
        </para>
 
        <para>
-        Voir <xref linkend="sql-set" endterm="sql-set-title"/> et <xref linkend="runtime-config"/> pour plus d'informations sur les noms
+        Voir <xref linkend="sql-set"/> et <xref linkend="runtime-config"/> pour plus d'informations sur les noms
 	de paramètres et valeurs autorisées.
        </para>
       </listitem>
@@ -175,7 +175,7 @@
 
   <para>
    Il est possible de lier une valeur de session par défaut à un rôle plutôt qu'à
-   une base. Voir <xref linkend="sql-alterrole" endterm="sql-alterrole-title"/>
+   une base. Voir <xref linkend="sql-alterrole"/>
    à ce propos. En cas de conflit, les configurations spécifiques au rôle
    l'emportent sur celles spécifiques à la base.
   </para>
@@ -206,10 +206,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/></member>
-   <member><xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/></member>
-   <member><xref linkend="sql-set" endterm="sql-set-title"/></member>
-   <member><xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/></member>
+   <member><xref linkend="sql-createdatabase"/></member>
+   <member><xref linkend="sql-dropdatabase"/></member>
+   <member><xref linkend="sql-set"/></member>
+   <member><xref linkend="sql-createtablespace"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Added: traduc/trunk/postgresql/ref/alter_default_privileges.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_default_privileges.xml	                        (rev 0)
+++ traduc/trunk/postgresql/ref/alter_default_privileges.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,212 @@
+<!--
+$PostgreSQL: pgsql/doc/src/sgml/ref/alter_default_privileges.sgml,v 1.5 2010-04-05 01:58:03 tgl Exp $
+PostgreSQL documentation
+-->
+
+<refentry id="SQL-ALTERDEFAULTPRIVILEGES">
+ <refmeta>
+  <refentrytitle>ALTER DEFAULT PRIVILEGES</refentrytitle>
+  <manvolnum>7</manvolnum>
+  <refmiscinfo>SQL - Language Statements</refmiscinfo>
+ </refmeta>
+
+ <refnamediv>
+  <refname>ALTER DEFAULT PRIVILEGES</refname>
+  <refpurpose>define default access privileges</refpurpose>
+ </refnamediv>
+
+ <indexterm zone="sql-alterdefaultprivileges">
+  <primary>ALTER DEFAULT PRIVILEGES</primary>
+ </indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+ALTER DEFAULT PRIVILEGES
+    [ FOR { ROLE | USER } <replaceable>target_role</replaceable> [, ...] ]
+    [ IN SCHEMA <replaceable>schema_name</replaceable> [, ...] ]
+    <replaceable class="parameter">abbreviated_grant_or_revoke</replaceable>
+
+<phrase>where <replaceable class="parameter">abbreviated_grant_or_revoke</replaceable> is one of:</phrase>
+
+GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON TABLES
+    TO { [ GROUP ] <replaceable class="PARAMETER">role_name</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { { USAGE | SELECT | UPDATE }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON SEQUENCES
+    TO { [ GROUP ] <replaceable class="PARAMETER">role_name</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { EXECUTE | ALL [ PRIVILEGES ] }
+    ON FUNCTIONS
+    TO { [ GROUP ] <replaceable class="PARAMETER">role_name</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON TABLES
+    FROM { [ GROUP ] <replaceable class="PARAMETER">role_name</replaceable> | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { { USAGE | SELECT | UPDATE }
+    [,...] | ALL [ PRIVILEGES ] }
+    ON SEQUENCES
+    FROM { [ GROUP ] <replaceable class="PARAMETER">role_name</replaceable> | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+    { EXECUTE | ALL [ PRIVILEGES ] }
+    ON FUNCTIONS
+    FROM { [ GROUP ] <replaceable class="PARAMETER">role_name</replaceable> | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1 id="sql-alterdefaultprivileges-description">
+  <title>Description</title>
+
+  <para>
+   <command>ALTER DEFAULT PRIVILEGES</command> allows you to set the privileges
+   that will be applied to objects created in the future.  (It does not
+   affect privileges assigned to already-existing objects.)  Currently,
+   only the privileges for tables (including views), sequences, and
+   functions can be altered.
+  </para>
+
+  <para>
+   You can change default privileges only for objects that will be created by
+   yourself or by roles that you are a member of.  The privileges can be set
+   globally (i.e., for all objects created in the current database),
+   or just for objects created in specified schemas.  Default privileges
+   that are specified per-schema are added to whatever the global default
+   privileges are for the particular object type.
+  </para>
+
+  <para>
+   As explained under <xref linkend="sql-grant" />,
+   the default privileges for any object type normally grant all grantable
+   permissions to the object owner, and may grant some privileges to
+   <literal>PUBLIC</literal> as well.  However, this behavior can be changed by
+   altering the global default privileges with
+   <command>ALTER DEFAULT PRIVILEGES</command>.
+  </para>
+
+ <refsect2>
+  <title>Parameters</title>
+
+  <variablelist>
+   <varlistentry>
+    <term><replaceable>target_role</replaceable></term>
+    <listitem>
+     <para>
+      The name of an existing role of which the current role is a member.
+      If <literal>FOR ROLE</literal> is omitted, the current role is assumed.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable>schema_name</replaceable></term>
+    <listitem>
+     <para>
+      The name of an existing schema.  Each <replaceable>target_role</replaceable>
+      must have <literal>CREATE</literal> privileges for each specified schema.
+      If <literal>IN SCHEMA</literal> is omitted, the global default privileges
+      are altered.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable>role_name</replaceable></term>
+    <listitem>
+     <para>
+      The name of an existing role to grant or revoke privileges for.
+      This parameter, and all the other parameters in
+      <replaceable class="parameter">abbreviated_grant_or_revoke</replaceable>,
+      act as described under
+      <xref linkend="sql-grant" /> or
+      <xref linkend="sql-revoke" />,
+      except that one is setting permissions for a whole class of objects
+      rather than specific named objects.
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect2>
+ </refsect1>
+
+ <refsect1 id="sql-alterdefaultprivileges-notes">
+  <title>Notes</title>
+
+  <para>
+   Use <xref linkend="app-psql" />'s <command>\ddp</command> command
+   to obtain information about existing assignments of default privileges.
+   The meaning of the privilege values is the same as explained for
+   <command>\dp</command> under
+   <xref linkend="sql-grant" />.
+  </para>
+
+  <para>
+   If you wish to drop a role for which the default privileges have been
+   altered, it is necessary to reverse the changes in its default privileges
+   or use <command>DROP OWNED BY</command> to get rid of the default privileges entry
+   for the role.
+  </para>
+ </refsect1>
+
+ <refsect1 id="sql-alterdefaultprivileges-examples">
+  <title>Examples</title>
+
+  <para>
+   Grant SELECT privilege to everyone for all tables (and views) you
+   subsequently create in schema <literal>myschema</literal>, and allow
+   role <literal>webuser</literal> to INSERT into them too:
+
+<programlisting>
+ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
+ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;
+</programlisting>
+  </para>
+
+  <para>
+   Undo the above, so that subsequently-created tables won't have any
+   more permissions than normal:
+
+<programlisting>
+ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
+ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;
+</programlisting>
+  </para>
+
+  <para>
+   Remove the public EXECUTE permission that is normally granted on functions,
+   for all functions subsequently created by role <literal>admin</literal>:
+
+<programlisting>
+ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
+</programlisting>
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>Compatibility</title>
+
+  <para>
+   There is no <command>ALTER DEFAULT PRIVILEGES</command> statement in the SQL
+   standard.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>See Also</title>
+
+  <simplelist type="inline">
+   <member><xref linkend="sql-grant" /></member>
+   <member><xref linkend="sql-revoke" /></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>

Modified: traduc/trunk/postgresql/ref/alter_domain.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_domain.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_domain.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterdomain">
  <refmeta>
-  <refentrytitle id="sql-alterdomain-title">ALTER DOMAIN</refentrytitle>
+  <refentrytitle>ALTER DOMAIN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -77,7 +77,7 @@
     <listitem>
      <para>
       Cette forme ajoute une nouvelle contrainte à un domaine avec la même
-      syntaxe que <xref linkend="sql-createdomain" endterm="sql-createdomain-title"/>.
+      syntaxe que <xref linkend="sql-createdomain"/>.
       Ceci ne fonctionne que lorsque toutes
       les colonnes qui utilisent le domaine satisfont à la nouvelle contrainte.
      </para>
@@ -259,8 +259,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createdomain" endterm="sql-createdomain-title"/></member>
-   <member><xref linkend="sql-dropdomain" endterm="sql-dropdomain-title"/></member>
+   <member><xref linkend="sql-createdomain"/></member>
+   <member><xref linkend="sql-dropdomain"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_foreign_data_wrapper.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_foreign_data_wrapper.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_foreign_data_wrapper.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-alterforeigndatawrapper">
  <refmeta>
-  <refentrytitle id="sql-alterforeigndatawrapper-title">ALTER FOREIGN DATA WRAPPER</refentrytitle>
+  <refentrytitle>ALTER FOREIGN DATA WRAPPER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -137,8 +137,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createforeigndatawrapper" endterm="sql-createforeigndatawrapper-title"/></member>
-   <member><xref linkend="sql-dropforeigndatawrapper" endterm="sql-dropforeigndatawrapper-title"/></member>
+   <member><xref linkend="sql-createforeigndatawrapper"/></member>
+   <member><xref linkend="sql-dropforeigndatawrapper"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_function.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_function.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_function.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterfunction">
  <refmeta>
-  <refentrytitle id="sql-alterfunction-title">ALTER FUNCTION</refentrytitle>
+  <refentrytitle>ALTER FUNCTION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -27,7 +27,7 @@
 ALTER FUNCTION <replaceable>nom</replaceable> ( [ [ <replaceable class="parameter">modearg</replaceable> ] [ <replaceable class="parameter">nomarg</replaceable> ] <replaceable class="parameter">typearg</replaceable> [, ...] ] )
     SET SCHEMA <replaceable>nouveau_schema</replaceable>
 
-où <replaceable class="parameter">action</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">action</replaceable> peut être&nbsp;:</phrase>
 
     CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
     IMMUTABLE | STABLE | VOLATILE
@@ -161,7 +161,7 @@
        <literal>STRICT</literal> modifie la fonction pour qu'elle ne soit pas
        appelée si un des arguments est NULL&nbsp;; un résultat NULL
        est alors automatiquement déterminé. Voir
-       <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>
+       <xref linkend="sql-createfunction"/>
        pour plus d'informations.
       </para>
      </listitem>
@@ -175,7 +175,7 @@
      <listitem>
       <para>
        Modifie la volatilité de la fonction. Voir
-       <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>
+       <xref linkend="sql-createfunction"/>
        pour plus d'informations.
       </para>
     </listitem>
@@ -190,8 +190,8 @@
       Précise si la fonction doit être appelée avec les droits de l'utilisateur
       qui l'a créée.
       Le mot clé <literal>EXTERNAL</literal>, ignoré, existe pour des raisons
-      de compatibilité SQL. Voir <xref linkend="sql-createfunction"
-      endterm="sql-createfunction-title"/> pour plus d'informations.
+      de compatibilité SQL. Voir <xref linkend="sql-createfunction"/> pour plus
+      d'informations.
      </para>
     </listitem>
    </varlistentry>
@@ -202,8 +202,7 @@
      <listitem>
       <para>
        Modifie l'estimation du coût d'exécution de la fonction.
-       Voir <xref linkend="sql-createfunction"
-       endterm="sql-createfunction-title"/> pour plus d'informations.
+       Voir <xref linkend="sql-createfunction"/> pour plus d'informations.
       </para>
      </listitem>
    </varlistentry>
@@ -214,8 +213,7 @@
      <listitem>
       <para>
        Modifie l'estimation du nombre de lignes renvoyées par une fonction SRF.
-       Voir <xref linkend="sql-createfunction"
-       endterm="sql-createfunction-title"/> pour plus d'informations.
+       Voir <xref linkend="sql-createfunction"/> pour plus d'informations.
       </para>
      </listitem>
    </varlistentry>
@@ -237,7 +235,7 @@
        </para>
 
        <para>
-        Voir <xref linkend="sql-set" endterm="sql-set-title"/> et
+        Voir <xref linkend="sql-set"/> et
         <xref linkend="runtime-config"/> pour plus d'informations sur les
 	noms des paramètres et les valeurs autorisés.
        </para>
@@ -319,8 +317,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"/></member>
-   <member><xref linkend="sql-dropfunction" endterm="sql-dropfunction-title"/></member>
+   <member><xref linkend="sql-createfunction"/></member>
+   <member><xref linkend="sql-dropfunction"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_group.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_group.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_group.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-altergroup">
  <refmeta>
-  <refentrytitle id="sql-altergroup-title">ALTER GROUP</refentrytitle>
+  <refentrytitle>ALTER GROUP</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -43,14 +43,14 @@
    Tout rôle peut être ici <quote>utilisateur</quote> ou <quote>groupe</quote>.
    Ces variantes sont réellement équivalentes à la promotion ou la révocation de l'appartenance
    au rôle nommé <quote>groupe</quote>&nbsp;; il est donc préférable d'utiliser
-   <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-   <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour le faire.
+   <xref linkend="sql-grant"/> et
+   <xref linkend="sql-revoke"/> pour le faire.
   </para>
 
   <para>
    La troisième forme change le nom du groupe. Elle est strictement équivalente
    au renommage du rôle par
-   <xref linkend="sql-alterrole" endterm="sql-alterrole-title"/>.
+   <xref linkend="sql-alterrole"/>.
   </para>
  </refsect1>
 
@@ -117,9 +117,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-grant" endterm="sql-grant-title"/></member>
-   <member><xref linkend="sql-revoke" endterm="sql-revoke-title"/></member>
-   <member><xref linkend="sql-alterrole" endterm="sql-alterrole-title"/></member>
+   <member><xref linkend="sql-grant"/></member>
+   <member><xref linkend="sql-revoke"/></member>
+   <member><xref linkend="sql-alterrole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_index.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_index.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_index.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterindex">
  <refmeta>
-  <refentrytitle id="sql-alterindex-title">ALTER INDEX</refentrytitle>
+  <refentrytitle>ALTER INDEX</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -54,7 +54,7 @@
       Cette forme remplace le tablespace de l'index par le tablespace
       spécifié et déplace le(s) fichier(s) de données associé(s) à l'index
       dans le nouveau tablespace. Voir aussi 
-      <xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/>.
+      <xref linkend="sql-createtablespace"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -65,11 +65,11 @@
      <para>
       Cette forme modifie un ou plusieurs paramètres spécifiques à la
       méthode d'indexage de cet index. Voir
-      <xref linkend="sql-createindex" endterm="sql-createindex-title"/>
+      <xref linkend="sql-createindex"/>
       pour les détails sur les paramètres disponibles. Notez que le contenu de
       l'index ne sera pas immédiatement modifié par cette commande&nbsp;;
       suivant le paramètre, vous pouvez avoir besoin de reconstruire l'index
-      avec <xref linkend="sql-reindex" endterm="sql-reindex-title"/> pour
+      avec <xref linkend="sql-reindex"/> pour
       obtenir l'effet désiré.
      </para>
     </listitem>
@@ -154,7 +154,7 @@
 
    <para>
     Ces opérations sont aussi possibles en utilisant
-    <xref linkend="sql-altertable" endterm="sql-altertable-title"/>.
+    <xref linkend="sql-altertable"/>.
     <command>ALTER INDEX</command> n'est en fait qu'un alias pour les formes
     d'<command>ALTER TABLE</command> qui s'appliquent aux index.
    </para>
@@ -209,8 +209,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createindex" endterm="sql-createindex-title"/></member>
-   <member><xref linkend="sql-reindex" endterm="sql-reindex-title"/></member>
+   <member><xref linkend="sql-createindex"/></member>
+   <member><xref linkend="sql-reindex"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_language.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_language.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_language.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterlanguage">
  <refmeta>
-  <refentrytitle id="sql-alterlanguage-title">ALTER LANGUAGE</refentrytitle>
+  <refentrytitle>ALTER LANGUAGE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -83,8 +83,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"/></member>
-   <member><xref linkend="sql-droplanguage" endterm="sql-droplanguage-title"/></member>
+   <member><xref linkend="sql-createlanguage"/></member>
+   <member><xref linkend="sql-droplanguage"/></member>
   </simplelist>
  </refsect1>
 

Added: traduc/trunk/postgresql/ref/alter_large_object.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_large_object.xml	                        (rev 0)
+++ traduc/trunk/postgresql/ref/alter_large_object.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,80 @@
+<!--
+$PostgreSQL: pgsql/doc/src/sgml/ref/alter_large_object.sgml,v 1.3 2010-04-03 07:22:57 petere Exp $
+PostgreSQL documentation
+-->
+
+<refentry id="SQL-ALTERLARGEOBJECT">
+ <refmeta>
+  <refentrytitle>ALTER LARGE OBJECT</refentrytitle>
+  <manvolnum>7</manvolnum>
+  <refmiscinfo>SQL - Language Statements</refmiscinfo>
+ </refmeta>
+
+ <refnamediv>
+  <refname>ALTER LARGE OBJECT</refname>
+  <refpurpose>change the definition of a large object</refpurpose>
+ </refnamediv>
+
+ <indexterm zone="sql-alterlargeobject">
+  <primary>ALTER LARGE OBJECT</primary>
+ </indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+ALTER LARGE OBJECT <replaceable class="PARAMETER">large_object_oid</replaceable> OWNER TO <replaceable>new_owner</replaceable>
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+  <title>Description</title>
+
+  <para>
+   <command>ALTER LARGE OBJECT</command> changes the definition of a
+   large object. The only functionality is to assign a new owner.
+   You must be superuser or owner of the large object to use
+   <command>ALTER LARGE OBJECT</command>.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>Parameters</title>
+
+  <variablelist>
+   <varlistentry>
+    <term><replaceable>large_object_oid</replaceable></term>
+    <listitem>
+     <para>
+      OID of the large object to be altered
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable>new_owner</replaceable></term>
+    <listitem>
+     <para>
+      The new owner of the large object
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1>
+  <title>Compatibility</title>
+    
+  <para>
+   There is no <command>ALTER LARGE OBJECT</command> statement in the SQL
+   standard.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>See Also</title>
+
+  <simplelist type="inline">
+   <member><xref linkend="largeobjects" /></member>
+  </simplelist>
+ </refsect1>
+
+</refentry>

Modified: traduc/trunk/postgresql/ref/alter_opclass.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_opclass.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_opclass.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alteropclass">
  <refmeta>
-  <refentrytitle id="sql-alteropclass-title">ALTER OPERATOR CLASS</refentrytitle>
+  <refentrytitle>ALTER OPERATOR CLASS</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -101,9 +101,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"/></member>
-   <member><xref linkend="sql-dropopclass" endterm="sql-dropopclass-title"/></member>
-   <member><xref linkend="sql-alteropfamily" endterm="sql-alteropfamily-title"/></member>
+   <member><xref linkend="sql-createopclass"/></member>
+   <member><xref linkend="sql-dropopclass"/></member>
+   <member><xref linkend="sql-alteropfamily"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_operator.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_operator.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_operator.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 <!-- SAS 20060616 -->
 
-<refentry id="sql-alteroperator">
+<refentry>
  <refmeta>
   <refentrytitle id="sql-alteroperator-title">ALTER OPERATOR</refentrytitle>
   <manvolnum>7</manvolnum>
@@ -18,7 +18,7 @@
  </refnamediv>  
 
  <refsynopsisdiv>
-<synopsis>ALTER OPERATOR <replaceable>name</replaceable> ( { <replaceable>typegauche</replaceable> | NONE } , { <replaceable>typedroit</replaceable> | NONE } ) OWNER TO <replaceable>nouveau_propriétaire</replaceable>
+<synopsis>ALTER OPERATOR <replaceable>name</replaceable> ( { <replaceable>type_gauche</replaceable> | NONE } , { <replaceable>type_droit</replaceable> | NONE } ) OWNER TO <replaceable>nouveau_propriétaire</replaceable>
 </synopsis>
  </refsynopsisdiv>
 
@@ -60,7 +60,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">typegauche</replaceable></term>
+    <term><replaceable class="parameter">type_gauche</replaceable></term>
     <listitem>
      <para>
       Le type de données de l'opérande gauche de l'opérateur&nbsp;; 
@@ -70,7 +70,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">typedroit</replaceable></term>
+    <term><replaceable class="parameter">type_droit</replaceable></term>
     <listitem>
      <para>
       Le type de données de l'opérande droit de l'opérateur&nbsp;;
@@ -114,8 +114,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createoperator" endterm="sql-createoperator-title"/></member>
-   <member><xref linkend="sql-dropoperator" endterm="sql-dropoperator-title"/></member>
+   <member><xref linkend="sql-createoperator"/></member>
+   <member><xref linkend="sql-dropoperator"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_opfamily.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_opfamily.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_opfamily.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 <refentry id="sql-alteropfamily">
  <refmeta>
-  <refentrytitle id="sql-alteropfamily-title">ALTER OPERATOR FAMILY</refentrytitle>
+  <refentrytitle>ALTER OPERATOR FAMILY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage SQL</refmiscinfo>
  </refmeta>
@@ -23,7 +23,7 @@
  
 <synopsis>
 ALTER OPERATOR FAMILY <replaceable>nom</replaceable> USING <replaceable class="parameter">methode_indexage</replaceable> ADD
-  {  OPERATOR <replaceable class="parameter">numero_strategie</replaceable> <replaceable class="parameter">nom_operateur</replaceable> ( <replaceable class="parameter">tpe_op</replaceable>, <replaceable class="parameter">type_op</replaceable> )
+  {  OPERATOR <replaceable class="parameter">numero_strategie</replaceable> <replaceable class="parameter">nom_operateur</replaceable> ( <replaceable class="parameter">type_op</replaceable>, <replaceable class="parameter">type_op</replaceable> )
    | FUNCTION <replaceable class="parameter">numero_support</replaceable> [ ( <replaceable class="parameter">type_op</replaceable> [ , <replaceable class="parameter">type_op</replaceable> ] ) ] <replaceable class="parameter">nom_fonction</replaceable> ( <replaceable class="parameter">type_argument</replaceable> [, ...] )
   } [, ... ]
 ALTER OPERATOR FAMILY <replaceable>nom</replaceable> USING <replaceable class="parameter">methode_indexage</replaceable> DROP
@@ -54,7 +54,7 @@
    ne sont pas requis pour un fonctionnement correct d'un index spécifique.
    (Les opérateurs et fonctions qui sont ainsi nécessaires doivent être
    déclarés comme faisant partie d'une classe d'opérateur&nbsp;; voir
-   <xref linkend="sql-createopclass" endterm="sql-createopclass-title"/>.)
+   <xref linkend="sql-createopclass"/>.)
    <productname>PostgreSQL</productname> la suppression des membres lâches
    d'une famille à tout moment, mais les membres d'une classe d'opérateur ne
    peuvent pas être supprimés sans supprimer toute la classe et les index
@@ -318,11 +318,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createopfamily" endterm="sql-createopfamily-title"/></member>
-   <member><xref linkend="sql-dropopfamily" endterm="sql-dropopfamily-title"/></member>
-   <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"/></member>
-   <member><xref linkend="sql-alteropclass" endterm="sql-alteropclass-title"/></member>
-   <member><xref linkend="sql-dropopclass" endterm="sql-dropopclass-title"/></member>
+   <member><xref linkend="sql-createopfamily"/></member>
+   <member><xref linkend="sql-dropopfamily"/></member>
+   <member><xref linkend="sql-createopclass"/></member>
+   <member><xref linkend="sql-alteropclass"/></member>
+   <member><xref linkend="sql-dropopclass"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_role.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_role.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_role.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterrole">
  <refmeta>
-  <refentrytitle id="sql-alterrole-title">ALTER ROLE</refentrytitle>
+  <refentrytitle>ALTER ROLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>ALTER ROLE <replaceable class="parameter">nom</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">option</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">option</replaceable> peut être&nbsp;:</phrase>
     
       SUPERUSER | NOSUPERUSER
     | CREATEDB | NOCREATEDB
@@ -32,12 +32,12 @@
     | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="parameter">motdepasse</replaceable>'
     | VALID UNTIL '<replaceable class="parameter">dateheure</replaceable>' 
 
-ALTER ROLE <replaceable class="parameter">nom</replaceable> RENAME TO <replaceable>nouveaunom</replaceable>
+ALTER ROLE <replaceable class="parameter">nom</replaceable> RENAME TO <replaceable>nouveau_nom</replaceable>
 
-ALTER ROLE <replaceable class="parameter">nom</replaceable> SET <replaceable>parametre_configuration</replaceable> { TO | = } { <replaceable>valeur</replaceable> | DEFAULT }
-ALTER ROLE <replaceable class="parameter">nom</replaceable> SET <replaceable>parametre_configuration</replaceable> FROM CURRENT
-ALTER ROLE <replaceable class="parameter">nom</replaceable> RESET <replaceable>parametre_configuration</replaceable>
-ALTER ROLE <replaceable class="parameter">nom</replaceable> RESET ALL
+ALTER ROLE <replaceable class="parameter">nom</replaceable> [ IN DATABASE <replaceable class="PARAMETER">database_name</replaceable> ] SET <replaceable>parametre_configuration</replaceable> { TO | = } { <replaceable>valeur</replaceable> | DEFAULT }
+ALTER ROLE <replaceable class="parameter">nom</replaceable> [ IN DATABASE <replaceable class="PARAMETER">database_name</replaceable> ] SET <replaceable>parametre_configuration</replaceable> FROM CURRENT
+ALTER ROLE <replaceable class="parameter">nom</replaceable> [ IN DATABASE <replaceable class="PARAMETER">database_name</replaceable> ] RESET <replaceable>parametre_configuration</replaceable>
+ALTER ROLE <replaceable class="parameter">nom</replaceable> [ IN DATABASE <replaceable class="PARAMETER">database_name</replaceable> ] RESET ALL
 </synopsis>
  </refsynopsisdiv>
 
@@ -56,11 +56,11 @@
   <para>
    La première variante listée dans le synopsis, permet de 
    modifier la plupart des attributs de rôle spécifiables dans la
-   commande <xref linkend="sql-createrole" endterm="sql-createrole-title"/> (à
+   commande <xref linkend="sql-createrole"/> (à
    lire pour plus de détails). (Tous les attributs possibles sont couverts, à l'exception 
    de la gestion des appartenances&nbsp;;
-   <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-   <xref linkend="sql-revoke" endterm="sql-revoke-title"/> sont utilisés pour cela.)
+   <xref linkend="sql-grant"/> et
+   <xref linkend="sql-revoke"/> sont utilisés pour cela.)
    Les attributs qui ne sont pas mentionnés dans
    la commande conservent leur paramètrage précédent. Tous ces attributs peuvent
    âtre modifiés pour tout rôle par les superutilisateurs de
@@ -83,17 +83,22 @@
 
   <para>
    Les autres variantes modifient la valeur par défaut d'une
-   variable de configuration de session pour un rôle. Quand le rôle
+   variable de configuration de session pour un rôle, either for all databases or, when the <literal>IN
+   DATABASE</literal> clause is specified, only for sessions in
+   the named database. Quand le rôle
    lance une nouvelle session après cela, la valeur spécifiée devient la valeur
    par défaut de la session, surchargeant tout paramètrage présent dans
    <filename>postgresql.conf</filename> ou provenant de la ligne de
-   commande de postgres. Ceci arrive seulement lors de la connexion, donc les
-   paramètres de configuration associés à un rôle pour lequel vous avez utilisé
-   <xref linkend="sql-set-role" endterm="sql-set-role-title"/> seront ignorés.
+   commande de postgres. Ceci arrive seulement lors de la connexion; executing
+   <xref linkend="sql-set-role"/> or
+   <xref linkend="sql-set-session-authorization"/> does not cause new
+   configuration values to be set.
+   Settings set for all databases are overridden by database-specific settings
+   attached to a role.
    Les superutilisateurs peuvent modifier les valeurs de session de
    n'importe quel utilisateur. Les rôles disposant du droit <literal>CREATEROLE</literal>
    peuvent modifier les valeurs par défaut pour les rôles ordinaires (non
-   superutilisateurs). Certaines variables ne peuvent être configurées de cette
+   superutilisateurs). Ordinary roles can only set defaults for themselves.Certaines variables ne peuvent être configurées de cette
    façon ou seulement par un superutilisateur.
   </para>
  </refsect1>
@@ -132,7 +137,7 @@
       <listitem>
        <para>
         Ces clauses modifient les attributs originairement configurés par
-        <xref linkend="sql-createrole" endterm="sql-createrole-title"/>. Pour
+        <xref linkend="sql-createrole"/>. Pour
 	plus d'informations, voir la page de référence <command>CREATE
 	ROLE</command>.
        </para>
@@ -140,7 +145,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><replaceable>nouveaunom</replaceable></term>
+      <term><replaceable>nouveau_nom</replaceable></term>
       <listitem>
        <para>
         Le nouveau nom du rôle.
@@ -149,6 +154,15 @@
      </varlistentry>
 
      <varlistentry>
+       <term><replaceable>database_name</replaceable></term>
+       <listitem>
+         <para>
+           The name of the database the configuration variable should be set in.
+         </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term><replaceable>paramètre_configuration</replaceable></term>
       <term><replaceable>valeur</replaceable></term>
       <listitem>
@@ -163,16 +177,18 @@
         paramètrages rôle.
         <literal>SET FROM CURRENT</literal> sauvegarde la valeur de la session
 	de ce paramètre en tant que valeur du rôle.
+        If <literal>IN DATABASE</literal> is specified, the configuration
+        parameter is set or removed for the given role and database only.
        </para>
 
        <para>
         Les paramètres spécifiques au rôle ne prennent effet qu'à la
-	connexion&nbsp;; <xref linkend="sql-set-role"
-	endterm="sql-set-role-title"/> ne traite pas les paramètres de rôles.
+	connexion&nbsp;; <xref linkend="sql-set-role"/>  et
+        <xref linkend="sql-set-session-authorization"/> ne traitent pas les paramètres de rôles.
        </para>
 
        <para>
-        Voir <xref linkend="sql-set" endterm="sql-set-title"/> et <xref linkend="runtime-config"/>
+        Voir <xref linkend="sql-set"/> et <xref linkend="runtime-config"/>
 	pour plus d'informations sur les noms et les valeurs autorisés pour les paramètres.
        </para>
       </listitem>
@@ -184,14 +200,14 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-createrole" endterm="sql-createrole-title"/> est utilisé pour
-   ajouter de nouveaux rôles et <xref linkend="sql-droprole" endterm="sql-droprole-title"/> pour les supprimer.
+   <xref linkend="sql-createrole"/> est utilisé pour
+   ajouter de nouveaux rôles et <xref linkend="sql-droprole"/> pour les supprimer.
   </para>
 
   <para>
    <command>ALTER ROLE</command> ne peut pas modifier les appartenances à un rôle.
-   <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-   <xref linkend="sql-revoke" endterm="sql-revoke-title"/> sont conçus pour cela.
+   <xref linkend="sql-grant"/> et
+   <xref linkend="sql-revoke"/> sont conçus pour cela.
   </para>
 
   <para>
@@ -199,17 +215,17 @@
    cette commande. Le mot de passe sera transmis en clair au serveur. Il
    pourrait se trouver tracer dans l'historique des commandes du client
    et dans les traces du serveur. <xref linkend="app-psql"
-   endterm="app-psql-title"/> contient une commande
+  /> contient une commande
    <command>\password</command> qui peut être utilisé pour changer le mot de
-   passe d'un rôle en toute sécurité.
+   passe d'un rôle without exposing the cleartext password.
   </para>
 
   <para>
    Il est également possible de lier une valeur de session par défaut à
    une base de données plutôt qu'à un rôle&nbsp;; voir
-   <xref linkend="sql-alterdatabase" endterm="sql-alterdatabase-title"/>.
-   En cas de conflit, les
-   paramétrages de rôles surchargent ceux de base de données.
+   <xref linkend="sql-alterdatabase"/>.
+   If there is a conflict, database-role-specific settings override role-specific
+   ones, which in turn override database-specific ones.
   </para>
  </refsect1>
 
@@ -260,6 +276,15 @@
 <programlisting>ALTER ROLE worker_bee SET maintenance_work_mem = 100000;
 </programlisting>
   </para>
+
+  <para>
+   Give a role a non-default, database-specific setting of the
+   <xref linkend="guc-client-min-messages"/> parameter:
+
+<programlisting>
+ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;
+</programlisting>
+  </para>
  </refsect1>
 
  <refsect1>
@@ -275,9 +300,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createrole" endterm="sql-createrole-title"/></member>
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
-   <member><xref linkend="sql-set" endterm="sql-set-title"/></member>
+   <member><xref linkend="sql-createrole"/></member>
+   <member><xref linkend="sql-droprole"/></member>
+   <member><xref linkend="sql-set"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_schema.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_schema.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_schema.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alterschema">
  <refmeta>
-  <refentrytitle id="sql-alterschema-title">ALTER SCHEMA</refentrytitle>
+  <refentrytitle>ALTER SCHEMA</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -89,8 +89,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createschema" endterm="sql-createschema-title"/></member>
-   <member><xref linkend="sql-dropschema" endterm="sql-dropschema-title"/></member>
+   <member><xref linkend="sql-createschema"/></member>
+   <member><xref linkend="sql-dropschema"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_sequence.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_sequence.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_sequence.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-altersequence">
  <refmeta>
-  <refentrytitle id="sql-altersequence-title">ALTER SEQUENCE</refentrytitle>
+  <refentrytitle>ALTER SEQUENCE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -301,8 +301,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createsequence" endterm="sql-createsequence-title"/></member>
-   <member><xref linkend="sql-dropsequence" endterm="sql-dropsequence-title"/></member>
+   <member><xref linkend="sql-createsequence"/></member>
+   <member><xref linkend="sql-dropsequence"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_server.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_server.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_server.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-alterserver">
  <refmeta>
-  <refentrytitle id="sql-alterserver-title">ALTER SERVER</refentrytitle>
+  <refentrytitle>ALTER SERVER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -22,9 +22,9 @@
 
  <refsynopsisdiv>
 <synopsis>
-ALTER SERVER <replaceable class="parameter">nomserver</replaceable> [ VERSION 'nouvelleversion' ]
+ALTER SERVER <replaceable class="parameter">nom_serveur</replaceable> [ VERSION '<replaceable class="parameter">nouvelle_version</replaceable>' ]
     [ OPTIONS ( [ ADD | SET | DROP ] <replaceable class="PARAMETER">option</replaceable> ['<replaceable class="PARAMETER">valeur</replaceable>'] [, ... ] ) ]
-ALTER SERVER <replaceable class="PARAMETER">nomserveur</replaceable> OWNER TO <replaceable>nouveau_propriétaire</replaceable>
+ALTER SERVER <replaceable class="PARAMETER">nom_serveur</replaceable> OWNER TO <replaceable>nouveau_propriétaire</replaceable>
 </synopsis>
  </refsynopsisdiv>
 
@@ -53,7 +53,7 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nomserveur</replaceable></term>
+    <term><replaceable class="parameter">nom_serveur</replaceable></term>
     <listitem>
      <para>
       Le nom d'un serveur existant.
@@ -62,7 +62,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">versionserveur</replaceable></term>
+    <term><replaceable class="parameter">nouvelle_version</replaceable></term>
     <listitem>
      <para>
       Nouvelle version du serveur.
@@ -118,8 +118,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createserver" endterm="sql-createserver-title"/></member>
-   <member><xref linkend="sql-dropserver" endterm="sql-dropserver-title"/></member>
+   <member><xref linkend="sql-createserver"/></member>
+   <member><xref linkend="sql-dropserver"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_table.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_table.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_table.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-altertable">
  <refmeta>
-  <refentrytitle id="sql-altertable-title">ALTER TABLE</refentrytitle>
+  <refentrytitle>ALTER TABLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Commandes du langage</refmiscinfo>
  </refmeta>
@@ -27,18 +27,20 @@
 ALTER TABLE <replaceable class="parameter">nom</replaceable>
     SET SCHEMA <replaceable class="parameter">nouveau_schema</replaceable>
 
-où <replaceable class="parameter">action</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">action</replaceable> peut être&nbsp;:</phrase>
 
     ADD [ COLUMN ] <replaceable class="parameter">colonne</replaceable> <replaceable class="parameter">type</replaceable> [ <replaceable class="parameter">contrainte_colonne</replaceable> [ ... ] ]
-    DROP [ COLUMN ] <replaceable class="parameter">colonne</replaceable> [ RESTRICT | CASCADE ]
+    DROP [ COLUMN ] [ IF EXISTS ] <replaceable class="parameter">colonne</replaceable> [ RESTRICT | CASCADE ]
     ALTER [ COLUMN ] <replaceable class="parameter">colonne</replaceable> [ SET DATA ] TYPE <replaceable class="parameter">type</replaceable> [ USING <replaceable class="parameter">expression</replaceable> ]
     ALTER [ COLUMN ] <replaceable class="parameter">colonne</replaceable> SET DEFAULT <replaceable class="parameter">expression</replaceable>
     ALTER [ COLUMN ] <replaceable class="parameter">colonne</replaceable> DROP DEFAULT
     ALTER [ COLUMN ] <replaceable class="parameter">colonne</replaceable> { SET | DROP } NOT NULL
     ALTER [ COLUMN ] <replaceable class="parameter">colonne</replaceable> SET STATISTICS <replaceable class="parameter">entier</replaceable>
+    ALTER [ COLUMN ] <replaceable class="parameter">column</replaceable> SET ( <replaceable class="parameter">attribute_option</replaceable> = <replaceable class="parameter">value</replaceable> [, ... ] )
+    ALTER [ COLUMN ] <replaceable class="parameter">column</replaceable> RESET ( <replaceable class="parameter">attribute_option</replaceable> [, ... ] )
     ALTER [ COLUMN ] <replaceable class="parameter">colonne</replaceable> SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
     ADD <replaceable class="parameter">contrainte_table</replaceable>
-    DROP CONSTRAINT <replaceable class="parameter">nom_contrainte</replaceable> [ RESTRICT | CASCADE ]
+    DROP CONSTRAINT [ IF EXISTS ] <replaceable class="parameter">nom_contrainte</replaceable> [ RESTRICT | CASCADE ]
     DISABLE TRIGGER [ <replaceable class="parameter">nom_declencheur</replaceable> | ALL | USER ]
     ENABLE TRIGGER [ <replaceable class="parameter">nom_declencheur</replaceable> | ALL | USER ]
     ENABLE REPLICA TRIGGER <replaceable class="parameter">nom_trigger</replaceable>
@@ -76,13 +78,13 @@
     <listitem>
      <para>
       Ajoute une nouvelle colonne à la table en utilisant une syntaxe identique à celle de
-       <xref linkend="sql-createtable" endterm="sql-createtable-title"/>.
+       <xref linkend="sql-createtable"/>.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>DROP COLUMN</literal></term>
+    <term><literal>DROP COLUMN [ IF EXISTS ]</literal></term>
     <listitem>
      <para>
       Supprime une colonne de la table. Les index et les 
@@ -90,6 +92,9 @@
       L'option <literal>CASCADE</literal> doit être utilisée lorsque des objets en dehors
       de la table dépendent de cette colonne, comme par exemple des références
       de clés étrangères ou des vues.
+      If <literal>IF EXISTS</literal> is specified and the column
+      does not exist, no error is thrown. In this case a notice
+      is issued instead.
      </para>
     </listitem>
    </varlistentry>
@@ -143,7 +148,7 @@
      <para>
       Permet de modifier l'objectif de collecte de statistiques
       par colonne pour les opérations d'analyse 
-      (<xref linkend="sql-analyze" endterm="sql-analyze-title"/>) ultérieures.
+      (<xref linkend="sql-analyze"/>) ultérieures.
       L'objectif prend une valeur entre 0 et 10000. il est positionné à -1 pour utiliser
       l'objectif de statistiques par défaut du système
       (<xref linkend="guc-default-statistics-target"/>). Pour plus d'informations sur
@@ -154,6 +159,38 @@
    </varlistentry>
 
    <varlistentry>
+    <term><literal>SET ( <replaceable class="PARAMETER">attribute_option</replaceable> = <replaceable class="PARAMETER">value</replaceable> [, ... ] )</literal></term>
+    <term><literal>RESET ( <replaceable class="PARAMETER">attribute_option</replaceable> [, ... ] )</literal></term>
+    <listitem>
+     <para>
+      This form sets or resets attribute-level options.  Currently, the only
+      define attribute-level options are <literal>n_distinct</literal> and
+      <literal>n_distinct_inherited</literal>, which override the
+      number-of-distinct-values estimate made by subsequent
+      <xref linkend="sql-analyze"/>
+      operations.  <literal>n_distinct</literal> affects the statistics for the table
+      itself, while <literal>n_distinct_inherited</literal> affects the statistics
+      gathered for the table and its inheritance children.  When set to a
+      positive value, <command>ANALYZE</command> will assume that the column contains
+      exactly the specified number of distinct nonnull values.  When set to a
+      negative value, which must be greater
+      than or equal to -1, <command>ANALYZE</command> will assume that the number of
+      distinct nonnull values in the column is linear in the size of the
+      table; the exact count is to be computed by multiplying the estimated
+      table size by the absolute value of the given number.  For example,
+      a value of -1 implies that all values in the column are distinct, while
+      a value of -0.5 implies that each value appears twice on the average.
+      This can be useful when the size of the table changes over time, since
+      the multiplication by the number of rows in the table is not performed
+      until query planning time.  Specify a value of 0 to revert to estimating
+      the number of distinct values normally.  For more information on the use
+      of statistics by the <productname>PostgreSQL</productname> query
+      planner, refer to <xref linkend="planner-stats"/>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term><literal>SET STORAGE</literal></term>
     <listitem>
     <indexterm>
@@ -188,16 +225,18 @@
     <listitem>
      <para>
       Ajoute une nouvelle contrainte à une table en utilisant une
-      syntaxe identique à <xref linkend="sql-createtable" endterm="sql-createtable-title"/>. 
+      syntaxe identique à <xref linkend="sql-createtable"/>. 
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>DROP CONSTRAINT</literal></term>
+    <term><literal>DROP CONSTRAINT [ IF EXISTS ]</literal></term>
     <listitem>
      <para>
       Supprime la contrainte de table précisée.
+      If <literal>IF EXISTS</literal> is specified and the constraint
+      does not exist, no error is thrown. In this case a notice is issued instead.
      </para>
     </listitem>
    </varlistentry>
@@ -252,7 +291,7 @@
     <listitem>
      <para>
       Sélectionne l'index par défaut pour les prochaines
-      opérations <xref linkend="sql-cluster" endterm="sql-cluster-title"/>.
+      opérations <xref linkend="sql-cluster"/>.
       La table n'est pas réorganisée.
      </para>
     </listitem>
@@ -263,7 +302,7 @@
     <listitem>
      <para>
       Supprime de la table la spécification d'index
-	  <xref linkend="sql-cluster" endterm="sql-cluster-title"/> la plus récemment
+	  <xref linkend="sql-cluster"/> la plus récemment
       utilisée. Cela agit sur les opérations de réorganisation suivantes qui ne spécifient pas d'index.
      </para>
     </listitem>
@@ -303,12 +342,12 @@
      <para>
       Cette forme modifie un ou plusieurs paramètres de stockage pour la table.
       Voir <xref linkend="sql-createtable-storage-parameters"
-      endterm="sql-createtable-title-storage-parameters"/>
+     />
       pour les détails sur les paramètres disponibles. Notez que le contenu de
       la table ne sera pas modifié immédiatement par cette commande&nbsp;;
       suivant le paramètre, vous aurez besoin de réécrire la table pour
       obtenir les effets désirés. Ceci peut se faire avec <xref
-      linkend="sql-cluster" endterm="sql-cluster-title"/> ou une des formes
+      linkend="sql-cluster"/> ou une des formes
       d'<command>ALTER TABLE</command> qui force une réécriture de la table.
      </para>
 
@@ -393,7 +432,7 @@
       vers le nouveau tablespace. Les index de la table, s'il y en a, ne
       sont pas déplacés&nbsp;; mais ils peuvent l'être séparément à l'aide
       de commandes <literal>SET TABLESPACE</literal> supplémentaires. Voir aussi
-      <xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/>.
+      <xref linkend="sql-createtablespace"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -757,7 +796,7 @@
    </para>
 
    <para>
-    Voir la commande <xref linkend="sql-createtable" endterm="sql-createtable-title"/> pour avoir une 
+    Voir la commande <xref linkend="sql-createtable"/> pour avoir une 
     description plus complète des paramètres valides.
     <xref linkend="ddl"/> fournit de plus amples informations sur l'héritage.
    </para>

Modified: traduc/trunk/postgresql/ref/alter_tablespace.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_tablespace.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_tablespace.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-altertablespace">
  <refmeta>
-  <refentrytitle id="sql-altertablespace-title">ALTER TABLESPACE</refentrytitle>
+  <refentrytitle>ALTER TABLESPACE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,6 +20,8 @@
  <refsynopsisdiv>
 <synopsis>ALTER TABLESPACE <replaceable>nom</replaceable> RENAME TO <replaceable>nouveau_nom</replaceable>
 ALTER TABLESPACE <replaceable>nom</replaceable> OWNER TO <replaceable>nouveau_propriétaire</replaceable>
+ALTER TABLESPACE <replaceable>name</replaceable> SET ( <replaceable class="parameter">tablespace_option</replaceable> = <replaceable class="PARAMETER">value</replaceable> [, ... ] )
+ALTER TABLESPACE <replaceable>name</replaceable> RESET ( <replaceable class="parameter">tablespace_option</replaceable> [, ... ] )
 </synopsis>
  </refsynopsisdiv>
 
@@ -73,6 +75,24 @@
      </para>
     </listitem>
    </varlistentry>
+   
+   <varlistentry>
+    <term><replaceable class="parameter">tablespace_parameter</replaceable></term>
+    <listitem>
+     <para>
+      A tablespace parameter to be set or reset.  Currently, the only
+      available parameters are <varname>seq_page_cost</varname> and
+      <varname>random_page_cost</varname>.  Setting either value for a particular
+      tablespace will override the planner's usual estimate of the cost of
+      reading pages from tables in that tablespace, as established by
+      the configuration parameters of the same name (see
+      <xref linkend="guc-seq-page-cost"/>,
+      <xref linkend="guc-random-page-cost"/>).  This may be useful if one
+      tablespace is located on a disk which is faster or slower than the
+      remainder of the I/O subsystem.
+     </para>
+    </listitem>
+   </varlistentry>
   </variablelist>
  </refsect1>
 
@@ -107,8 +127,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/></member>
-   <member><xref linkend="sql-droptablespace" endterm="sql-droptablespace-title"/></member>
+   <member><xref linkend="sql-createtablespace"/></member>
+   <member><xref linkend="sql-droptablespace"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_trigger.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_trigger.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_trigger.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-altertrigger">
  <refmeta>
-  <refentrytitle id="sql-altertrigger-title">ALTER TRIGGER</refentrytitle>
+  <refentrytitle>ALTER TRIGGER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -77,7 +77,7 @@
 
    <para>
     La possibilité d'activer ou de désactiver temporairement un déclencheur est
-    offerte par <xref linkend="sql-altertable" endterm="sql-altertable-title"/>,
+    offerte par <xref linkend="sql-altertable"/>,
     et non par <command>ALTER TRIGGER</command> qui ne permet pas
     d'agir sur tous les déclencheurs d'une table en une seule opération.
    </para>
@@ -105,7 +105,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertable" endterm="sql-altertable-title"/></member>
+   <member><xref linkend="sql-altertable"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_tsconfig.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_tsconfig.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_tsconfig.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-altertsconfig">
  <refmeta>
-  <refentrytitle id="sql-altertsconfig-title">ALTER TEXT SEARCH CONFIGURATION</refentrytitle>
+  <refentrytitle>ALTER TEXT SEARCH CONFIGURATION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -177,8 +177,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtsconfig" endterm="sql-createtsconfig-title"/></member>
-   <member><xref linkend="sql-droptsconfig" endterm="sql-droptsconfig-title"/></member>
+   <member><xref linkend="sql-createtsconfig"/></member>
+   <member><xref linkend="sql-droptsconfig"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_tsdictionary.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_tsdictionary.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_tsdictionary.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-altertsdictionary">
  <refmeta>
-  <refentrytitle id="sql-altertsdictionary-title">ALTER TEXT SEARCH DICTIONARY</refentrytitle>
+  <refentrytitle>ALTER TEXT SEARCH DICTIONARY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -159,8 +159,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtsdictionary" endterm="sql-createtsdictionary-title"/></member>
-   <member><xref linkend="sql-droptsdictionary" endterm="sql-droptsdictionary-title"/></member>
+   <member><xref linkend="sql-createtsdictionary"/></member>
+   <member><xref linkend="sql-droptsdictionary"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_tsparser.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_tsparser.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_tsparser.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-altertsparser">
  <refmeta>
-  <refentrytitle id="sql-altertsparser-title">ALTER TEXT SEARCH PARSER</refentrytitle>
+  <refentrytitle>ALTER TEXT SEARCH PARSER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -80,8 +80,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtsparser" endterm="sql-createtsparser-title"/></member>
-   <member><xref linkend="sql-droptsparser" endterm="sql-droptsparser-title"/></member>
+   <member><xref linkend="sql-createtsparser"/></member>
+   <member><xref linkend="sql-droptsparser"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_tstemplate.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_tstemplate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_tstemplate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-altertstemplate">
  <refmeta>
-  <refentrytitle id="sql-altertstemplate-title">ALTER TEXT SEARCH TEMPLATE</refentrytitle>
+  <refentrytitle>ALTER TEXT SEARCH TEMPLATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -79,8 +79,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtstemplate" endterm="sql-createtstemplate-title"/></member>
-   <member><xref linkend="sql-droptstemplate" endterm="sql-droptstemplate-title"/></member>
+   <member><xref linkend="sql-createtstemplate"/></member>
+   <member><xref linkend="sql-droptstemplate"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_type.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_type.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_type.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-altertype">
  <refmeta>
-  <refentrytitle id="sql-altertype-title">ALTER TYPE</refentrytitle>
+  <refentrytitle>ALTER TYPE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>

Modified: traduc/trunk/postgresql/ref/alter_user.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_user.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_user.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-alteruser">
  <refmeta>
-  <refentrytitle id="sql-alteruser-title">ALTER USER</refentrytitle>
+  <refentrytitle>ALTER USER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Commandes du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>ALTER USER <replaceable class="parameter">nom</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">option</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">option</replaceable> peut être&nbsp;:</phrase>
 
       SUPERUSER | NOSUPERUSER
     | CREATEDB | NOCREATEDB
@@ -32,7 +32,7 @@
     | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="parameter">motdepasse</replaceable>'
     | VALID UNTIL '<replaceable class="parameter">dateheure</replaceable>' 
 
-ALTER USER <replaceable class="parameter">nom</replaceable> RENAME TO <replaceable>nouveaunom</replaceable>
+ALTER USER <replaceable class="parameter">nom</replaceable> RENAME TO <replaceable>nouveau_nom</replaceable>
 
 ALTER USER <replaceable class="parameter">nom</replaceable> SET <replaceable>parametre_configuration</replaceable> { TO | = } { <replaceable>valeur</replaceable> | DEFAULT }
 ALTER USER <replaceable class="parameter">nom</replaceable> SET <replaceable>parametre_configuration</replaceable> FROM CURRENT
@@ -49,7 +49,7 @@
 
   <para>
    <command>ALTER USER</command> est désormais un alias de
-   <xref linkend="sql-alterrole" endterm="sql-alterrole-title"/>.
+   <xref linkend="sql-alterrole"/>.
   </para>
 
  </refsect1>
@@ -68,7 +68,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterrole" endterm="sql-alterrole-title"/></member>
+   <member><xref linkend="sql-alterrole"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/alter_user_mapping.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_user_mapping.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_user_mapping.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-alterusermapping">
  <refmeta>
-  <refentrytitle id="sql-alterusermapping-title">ALTER USER MAPPING</refentrytitle>
+  <refentrytitle>ALTER USER MAPPING</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -22,8 +22,8 @@
 
  <refsynopsisdiv>
 <synopsis>
-ALTER USER MAPPING FOR { <replaceable class="parameter">nomutilisateur</replaceable> | USER | CURRENT_USER | PUBLIC }
-    SERVER <replaceable class="parameter">nomserveur</replaceable>
+ALTER USER MAPPING FOR { <replaceable class="parameter">nom_utilisateur</replaceable> | USER | CURRENT_USER | PUBLIC }
+    SERVER <replaceable class="parameter">nom_serveur</replaceable>
     OPTIONS ( [ ADD | SET | DROP ] <replaceable class="PARAMETER">option</replaceable> ['<replaceable class="PARAMETER">valeur</replaceable>'] [, ... ] )
 </synopsis>
  </refsynopsisdiv>
@@ -50,7 +50,7 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nomutilisateur</replaceable></term>
+    <term><replaceable class="parameter">nom_utilisateur</replaceable></term>
     <listitem>
      <para>
       Nom d'utilisateur de la correspondance. <literal>CURRENT_USER</literal>
@@ -62,7 +62,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">nomserveur</replaceable></term>
+    <term><replaceable class="parameter">nom_serveur</replaceable></term>
     <listitem>
      <para>
       Nom du serveur de la correspondance d'utilisateur.
@@ -119,8 +119,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createusermapping" endterm="sql-createusermapping-title"/></member>
-   <member><xref linkend="sql-dropusermapping" endterm="sql-dropusermapping-title"/></member>
+   <member><xref linkend="sql-createusermapping"/></member>
+   <member><xref linkend="sql-dropusermapping"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/alter_view.xml
===================================================================
--- traduc/trunk/postgresql/ref/alter_view.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/alter_view.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-alterview">
  <refmeta>
-  <refentrytitle id="sql-alterview-title">ALTER VIEW</refentrytitle>
+  <refentrytitle>ALTER VIEW</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -144,8 +144,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createview" endterm="sql-createview-title"/></member>
-   <member><xref linkend="sql-dropview" endterm="sql-dropview-title"/></member>
+   <member><xref linkend="sql-createview"/></member>
+   <member><xref linkend="sql-dropview"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/analyze.xml
===================================================================
--- traduc/trunk/postgresql/ref/analyze.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/analyze.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -98,7 +98,7 @@
 
   <para>
    Dans la configuration par défaut de <productname>PostgreSQL</productname>,
-   <xref linkend="autovacuum" endterm="autovacuum-title"/> s'occupe de
+   le démon autovacumm (voir <xref linkend="autovacuum"/>)
    l'analyse automatique des tables quand elle est remplie de données sont la
    première fois, puis à chaque fois qu'elles sont modifiées via les opérations
    habituelles. Quand l'autovacuum est désactivé,
@@ -107,7 +107,7 @@
    Des statistiques à jour aident l'optimiseur à choisir le plan de
    requête le plus approprié et améliorent ainsi la vitesse du traitement
    des requêtes. Une stratégie habituelle consiste à lancer 
-   <xref linkend="sql-vacuum" endterm="sql-vacuum-title"/> et
+   <xref linkend="sql-vacuum"/> et
    <command>ANALYZE</command> une fois par jour, au moment où le serveur est le
    moins sollicité.
   </para>
@@ -136,7 +136,7 @@
    Néanmoins, les statistiques ne sont qu'approximatives et changent légèrement à chaque fois
    qu'<command>ANALYZE</command> est lancé, même si le contenu réel de la table
    n'a pas changé. Cela peut résulter en de petites modifications dans les
-   coûts estimés par l'optimiseur affichés par <xref linkend="sql-explain" endterm="sql-explain-title"/>. Dans
+   coûts estimés par l'optimiseur affichés par <xref linkend="sql-explain"/>. Dans
    de rares situations, ce non-déterminisme entraîne le choix par l'optimiseur
    d'un plan de requête différent entre deux lancements
    d'<command>ANALYZE</command>. Afin d'éviter cela, le nombre de
@@ -149,7 +149,7 @@
    de configuration <xref linkend="guc-default-statistics-target"/> ou colonne
    par colonne en initialisant la cible des statistiques par colonne avec
    <command>ALTER TABLE ... ALTER COLUMN ... SET STATISTICS</command> (voir
-   <xref linkend="sql-altertable" endterm="sql-altertable-title"/>). Cette valeur
+   <xref linkend="sql-altertable"/>). Cette valeur
    cible initialise le nombre maximum d'entrées dans la liste des valeurs les
    plus communes et le nombre maximum de points dans l'histogramme. La valeur
    cible par défaut est fixée à 100 mais elle peut être ajustée vers le haut
@@ -170,6 +170,17 @@
    proportionnelle du temps et de l'espace nécessaires à 
    l'exécution d'<command>ANALYZE</command>.
   </para>
+
+  <para>
+   One of the values estimated by <command>ANALYZE</command> is the number of
+   distinct values that appear in each column.  Because only a subset of the
+   rows are examined, this estimate can sometimes be quite inaccurate, even
+   with the largest possible statistics target.  If this inaccuracy leads to
+   bad query plans, a more accurate value can be determined manually and then
+   installed with
+   <command>ALTER TABLE ... ALTER COLUMN ... SET (n_distinct = ...)</command>
+   (see <xref linkend="sql-altertable"/>).
+  </para>
  </refsect1>
 
  <refsect1>
@@ -185,10 +196,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-vacuum" endterm="sql-vacuum-title"/></member>
-   <member><xref linkend="app-vacuumdb" endterm="app-vacuumdb-title"/></member>
-   <member><xref linkend="runtime-config-resource-vacuum-cost" endterm="runtime-config-resource-vacuum-cost-title"/></member>
-   <member><xref linkend="autovacuum" endterm="autovacuum-title"/></member>
+   <member><xref linkend="sql-vacuum"/></member>
+   <member><xref linkend="app-vacuumdb"/></member>
+   <member><xref linkend="runtime-config-resource-vacuum-cost"/></member>
+   <member><xref linkend="autovacuum"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/begin.xml
===================================================================
--- traduc/trunk/postgresql/ref/begin.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/begin.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-begin">
  <refmeta>
-  <refentrytitle id="sql-begin-title">BEGIN</refentrytitle>
+  <refentrytitle>BEGIN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>BEGIN [ WORK | TRANSACTION ] [ <replaceable class="parameter">mode_transaction</replaceable> [, ...] ]
 
-où <replaceable class="parameter">mode_transaction</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">mode_transaction</replaceable> peut être&nbsp;:</phrase>
 
     ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
     READ WRITE | READ ONLY
@@ -37,8 +37,8 @@
    <command>BEGIN</command> initie un bloc de transaction, c'est-à-dire que
    toutes les instructions apparaissant après la commande <command>BEGIN</command> sont
    exécutées dans une seule transaction jusqu'à ce qu'un
-   <xref linkend="sql-commit" endterm="sql-commit-title"/> ou
-   <xref linkend="sql-rollback" endterm="sql-rollback-title"/> explicite soit exécuté.
+   <xref linkend="sql-commit"/> ou
+   <xref linkend="sql-rollback"/> explicite soit exécuté.
    Par défaut (sans <command>BEGIN</command>),
    <productname>PostgreSQL</productname> exécute les
    transactions en mode <quote>autocommit</quote>, c'est-à-dire que chaque
@@ -60,7 +60,7 @@
   <para>
    Si le niveau d'isolation ou le mode lecture/écriture est spécifié, la
    nouvelle transaction possède ces caractéristiques, comme si
-   <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"/> était
+   <xref linkend="sql-set-transaction"/> était
    exécutée.
   </para>
  </refsect1>
@@ -81,7 +81,7 @@
   </variablelist>
 
   <para>
-   <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"/>
+   <xref linkend="sql-set-transaction"/>
    présente la signification des autres paramètres de cette instruction.
   </para>
    
@@ -91,13 +91,13 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-start-transaction" endterm="sql-start-transaction-title"/>
+   <xref linkend="sql-start-transaction"/>
    a la même fonctionnalité que <command>BEGIN</command>.
   </para>
    
   <para>
-   <xref linkend="sql-commit" endterm="sql-commit-title"/> ou
-   <xref linkend="sql-rollback" endterm="sql-rollback-title"/> sont utilisés
+   <xref linkend="sql-commit"/> ou
+   <xref linkend="sql-rollback"/> sont utilisés
    pour terminer un bloc de transaction.
   </para>
 
@@ -106,7 +106,7 @@
    provoque l'apparition d'un message d'avertissement, mais l'état de la
    transaction n'en est pas affecté. Pour intégrer des transactions à
    l'intérieur d'un bloc de transaction, les points de sauvegarde sont
-   utilisés (voir <xref linkend="sql-savepoint" endterm="sql-savepoint-title"/>).
+   utilisés (voir <xref linkend="sql-savepoint"/>).
   </para>
 
   <para>
@@ -133,7 +133,7 @@
   <para>
    <command>BEGIN</command>, qui est une extension
    <productname>PostgreSQL</productname>, est  équivalent à la commande 
-   <xref linkend="sql-start-transaction" endterm="sql-start-transaction-title"/>
+   <xref linkend="sql-start-transaction"/>
    du standard SQL. La page de référence de cette commande contient des
    informations de compatibilité supplémentaires.
   </para>
@@ -157,10 +157,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
-   <member><xref linkend="sql-start-transaction" endterm="sql-start-transaction-title"/></member>
-   <member><xref linkend="sql-savepoint" endterm="sql-savepoint-title"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-rollback"/></member>
+   <member><xref linkend="sql-start-transaction"/></member>
+   <member><xref linkend="sql-savepoint"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/checkpoint.xml
===================================================================
--- traduc/trunk/postgresql/ref/checkpoint.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/checkpoint.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-checkpoint">
  <refmeta>
-  <refentrytitle id="sql-checkpoint-title">CHECKPOINT</refentrytitle>
+  <refentrytitle>CHECKPOINT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -47,6 +47,11 @@
   </para>
 
   <para>
+   If executed during recovery, the <command>CHECKPOINT</command> command
+   will force a restartpoint rather than writing a new checkpoint.
+  </para>
+
+  <para>
    Seuls les superutilisateurs peuvent appeler <command>CHECKPOINT</command>.
    Cette commande ne doit pas être utilisée en fonctionnement normal.
   </para>

Modified: traduc/trunk/postgresql/ref/close.xml
===================================================================
--- traduc/trunk/postgresql/ref/close.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/close.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-close">
  <refmeta>
-  <refentrytitle id="sql-close-title">CLOSE</refentrytitle>
+  <refentrytitle>CLOSE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -83,7 +83,7 @@
    <productname>PostgreSQL</productname> ne possède pas d'instruction
    explicite d'ouverture (<command>OPEN</command>) de curseur&nbsp;; un curseur
    est considéré ouvert à sa déclaration. Un curseur est déclaré à l'aide de l'instruction
-   <xref linkend="sql-declare" endterm="sql-declare-title"/>.
+   <xref linkend="sql-declare"/>.
   </para>
 
   <para>
@@ -123,9 +123,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-declare" endterm="sql-declare-title"/></member>
-   <member><xref linkend="sql-fetch" endterm="sql-fetch-title"/></member>
-   <member><xref linkend="sql-move" endterm="sql-move-title"/></member>
+   <member><xref linkend="sql-declare"/></member>
+   <member><xref linkend="sql-fetch"/></member>
+   <member><xref linkend="sql-move"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/cluster.xml
===================================================================
--- traduc/trunk/postgresql/ref/cluster.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/cluster.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-cluster">
  <refmeta>
-  <refentrytitle id="sql-cluster-title">CLUSTER</refentrytitle>
+  <refentrytitle>CLUSTER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>CLUSTER [VERBOSE] <replaceable class="PARAMETER">nomtable</replaceable> [ USING <replaceable class="PARAMETER">nomindex</replaceable> ]
+<synopsis>CLUSTER [VERBOSE] <replaceable class="PARAMETER">nom_table</replaceable> [ USING <replaceable class="PARAMETER">nom_index</replaceable> ]
 CLUSTER [VERBOSE]
 </synopsis>
  </refsynopsisdiv>
@@ -31,9 +31,9 @@
 
   <para>
    <command>CLUSTER</command> réorganise (groupe) la table 
-   <replaceable class="parameter">nomtable</replaceable>
-   en fonction de l'index <replaceable class="parameter">nomindex</replaceable>. L'index doit avoir été 
-   préalablement défini sur <replaceable class="parameter">nomtable</replaceable>.
+   <replaceable class="parameter">nom_table</replaceable>
+   en fonction de l'index <replaceable class="parameter">nom_index</replaceable>. L'index doit avoir été 
+   préalablement défini sur <replaceable class="parameter">nom_table</replaceable>.
   </para>
 
   <para>
@@ -45,14 +45,17 @@
    obtenue en relançant la commande aussi souvent que souhaité. De plus,
    configurer le paramètre <literal>FILLFACTOR</literal> à moins de 100%
    peut aider à préserver l'ordre du cluster lors des mises à jour car les
-   lignes mises à jour sont conservées de préférence dans la même page.)
+   lignes mises à jour sont conservées dans la même page if enough space is available there.)
   </para>
 
   <para>
    Quand une table est réorganisée, <productname>PostgreSQL</productname> 
    enregistre l'index utilisé à cet effet. La forme
-   <command>CLUSTER <replaceable class="parameter">nomtable</replaceable></command>
-   réorganise la table en utilisant le même index qu'auparavant.
+   <command>CLUSTER <replaceable class="parameter">nom_table</replaceable></command>
+   réorganise la table en utilisant le même index qu'auparavant. You can also
+   use the <literal>CLUSTER</literal> or <literal>SET WITHOUT CLUSTER</literal>
+   forms of <xref linkend="SQL-ALTERTABLE"/> to set the index to be used for
+   future cluster operations, or to clear any previous setting.
   </para>
 
   <para>
@@ -76,7 +79,7 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nomtable</replaceable></term>
+    <term><replaceable class="parameter">nom_table</replaceable></term>
     <listitem>
      <para>
       Le nom d'une table (éventuellement qualifié du nom du schéma).
@@ -85,7 +88,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">nomindex</replaceable></term>
+    <term><replaceable class="parameter">nom_index</replaceable></term>
     <listitem>
      <para>
       Le nom d'un index.
@@ -139,7 +142,7 @@
    <para>
     Puisque le planificateur enregistre les statistiques d'ordonnancement
     des tables, il est conseillé de lancer
-    <xref linkend="sql-analyze" endterm="sql-analyze-title"/> sur la table
+    <xref linkend="sql-analyze"/> sur la table
     nouvellement réorganisée. Dans le cas contraire, les plans de requêtes
     peuvent être mal choisis par le planificateur.
    </para>
@@ -212,7 +215,7 @@
   <para>
    La syntaxe
 <synopsis>
-CLUSTER <replaceable class="parameter">nomindex</replaceable> ON <replaceable class="parameter">nomtable</replaceable>
+CLUSTER <replaceable class="parameter">nom_index</replaceable> ON <replaceable class="parameter">nom_table</replaceable>
 </synopsis>
   est aussi supportée pour la compatibilité avec les versions de
   <productname>PostgreSQL</productname> antérieures à la 8.3.
@@ -223,7 +226,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="app-clusterdb" endterm="app-clusterdb-title"/></member>
+   <member><xref linkend="app-clusterdb"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/clusterdb.xml
===================================================================
--- traduc/trunk/postgresql/ref/clusterdb.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/clusterdb.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-clusterdb">
  <refmeta>
-  <refentrytitle id="app-clusterdb-title"><application>clusterdb</application></refentrytitle>
+  <refentrytitle><application>clusterdb</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -28,8 +28,8 @@
    <sbr/>
    <command>clusterdb</command>
    <arg rep="repeat"><replaceable>options_connexion</replaceable></arg>
+   <group><arg>--verbose</arg><arg>-v</arg></group>
    <group><arg>--all</arg><arg>-a</arg></group>
-   <group><arg>--verbose</arg><arg>-v</arg></group>
   </cmdsynopsis>
  </refsynopsisdiv>
 
@@ -50,7 +50,7 @@
 
   <para>
    <application>clusterdb</application> est un enrobage de la commande
-   SQL <xref linkend="sql-cluster" endterm="sql-cluster-title"/>. Il n'y a pas
+   SQL <xref linkend="sql-cluster"/>. Il n'y a pas
    de différence réelle entre le groupage de bases par cet outil ou par
    d'autres méthodes d'accès au serveur.
   </para>
@@ -131,6 +131,27 @@
       </listitem>
      </varlistentry>
 
+    <varlistentry>
+      <term><option>-V</option></term>
+      <term><option>--version</option></term>
+      <listitem>
+      <para>
+      Print the <application>clusterdb</application> version and exit.
+      </para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>-?</option></term>
+      <term><option>--help</option></term>
+      <listitem>
+      <para>
+      Show help about <application>clusterdb</application> command line
+      arguments, and exit.
+      </para>
+      </listitem>
+    </varlistentry>
+
     </variablelist>
    </para>
 
@@ -243,7 +264,7 @@
 
   <para>
    En cas de difficulté, voir
-   <xref linkend="sql-cluster" endterm="sql-cluster-title"/> et <xref linkend="app-psql"/>
+   <xref linkend="sql-cluster"/> et <xref linkend="app-psql"/>
    qui présentent les problèmes et messages d'erreur éventuels. Le serveur de
    bases de données doit fonctionner sur l'hôte cible. De plus,
    toutes les configurations de connexion par défaut et variables
@@ -276,7 +297,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-cluster" endterm="sql-cluster-title"/></member>
+   <member><xref linkend="sql-cluster"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/comment.xml
===================================================================
--- traduc/trunk/postgresql/ref/comment.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/comment.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-comment">
  <refmeta>
-  <refentrytitle id="sql-comment-title">COMMENT</refentrytitle>
+  <refentrytitle>COMMENT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -23,7 +23,7 @@
   TABLE <replaceable class="parameter">nom_objet</replaceable> |
   COLUMN <replaceable class="parameter">nom_table</replaceable>.<replaceable class="parameter">nom_colonne</replaceable> |
   AGGREGATE <replaceable class="parameter">nom_agrégat</replaceable> (<replaceable class="parameter">type_agrégat</replaceable> [, ...] ) |
-  CAST (<replaceable>typesource</replaceable> AS <replaceable>typecible</replaceable>) |
+  CAST (<replaceable>type_source</replaceable> AS <replaceable>type_cible</replaceable>) |
   CONSTRAINT <replaceable class="parameter">nom_contrainte</replaceable> ON <replaceable class="parameter">nom_table</replaceable> |
   CONVERSION <replaceable class="parameter">nom_objet</replaceable> |
   DATABASE <replaceable class="parameter">nom_objet</replaceable> |
@@ -46,7 +46,7 @@
   TRIGGER <replaceable class="parameter">nom_déclencheur</replaceable> ON <replaceable class="parameter">nom_table</replaceable> |
   TYPE <replaceable class="parameter">nom_objet</replaceable> |
   VIEW <replaceable class="parameter">nom_objet</replaceable>
-} IS <replaceable class="parameter">'texte'</replaceable>
+} IS '<replaceable class="parameter">texte</replaceable>'
 </synopsis>
  </refsynopsisdiv>
 
@@ -117,7 +117,7 @@
    </varlistentry>
 
    <varlistentry>
-     <term><replaceable>typesource</replaceable></term>
+     <term><replaceable>type_source</replaceable></term>
      <listitem>
       <para>
        Le nom du type de donnée source du transtypage.
@@ -126,7 +126,7 @@
     </varlistentry>
 
     <varlistentry>
-     <term><replaceable>typecible</replaceable></term>
+     <term><replaceable>type_cible</replaceable></term>
      <listitem>
       <para>
        Le nom du type de données cible du transtypage.

Modified: traduc/trunk/postgresql/ref/commit.xml
===================================================================
--- traduc/trunk/postgresql/ref/commit.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/commit.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-commit">
  <refmeta>
-  <refentrytitle id="sql-commit-title">COMMIT</refentrytitle>
+  <refentrytitle>COMMIT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -56,7 +56,7 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-rollback" endterm="sql-rollback-title"/> est utilisé pour
+   <xref linkend="sql-rollback"/> est utilisé pour
    annuler une transaction.
   </para>
 
@@ -91,8 +91,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-rollback"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/commit_prepared.xml
===================================================================
--- traduc/trunk/postgresql/ref/commit_prepared.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/commit_prepared.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-commit-prepared">
  <refmeta>
-  <refentrytitle id="sql-commit-prepared-title">COMMIT PREPARED</refentrytitle>
+  <refentrytitle>COMMIT PREPARED</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -83,8 +83,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-prepare-transaction" endterm="sql-prepare-transaction-title"/></member>
-   <member><xref linkend="sql-rollback-prepared" endterm="sql-rollback-prepared-title"/></member>
+   <member><xref linkend="sql-prepare-transaction"/></member>
+   <member><xref linkend="sql-rollback-prepared"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/copy.xml
===================================================================
--- traduc/trunk/postgresql/ref/copy.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/copy.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-copy">
  <refmeta>
-  <refentrytitle id="sql-copy-title">COPY</refentrytitle>
+  <refentrytitle>COPY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,29 +18,26 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>COPY <replaceable class="parameter">nomtable</replaceable> [ ( <replaceable class="parameter">colonne</replaceable> [, ...] ) ]
-    FROM { '<replaceable class="parameter">nomfichier</replaceable>' | STDIN }
-    [ [ WITH ] 
-        [ BINARY ] 
-	[ OIDS ]
-	[ DELIMITER [ AS ] '<replaceable class="parameter">délimiteur</replaceable>' ]
-	[ NULL [ AS ] '<replaceable class="parameter">chaîne NULL</replaceable>' ]
-	[ CSV [ HEADER ]
-	      [ QUOTE [ AS ] '<replaceable class="parameter">guillemet</replaceable>' ] 
-	      [ ESCAPE [ AS ] '<replaceable class="parameter">échappement</replaceable>' ]
-	      [ FORCE NOT NULL <replaceable class="parameter">colonne</replaceable> [, ...] ]
+<synopsis>
+COPY <replaceable class="parameter">nom_table</replaceable> [ ( <replaceable class="parameter">colonne</replaceable> [, ...] ) ]
+    FROM { '<replaceable class="parameter">nom_fichier</replaceable>' | STDIN }
+    [ [ WITH ] ( <replaceable class="parameter">option</replaceable> [, ...] ) ]
 
-COPY { <replaceable class="parameter">nomtable</replaceable> [ ( <replaceable class="parameter">colonne</replaceable> [, ...] ) ] | ( <replaceable class="parameter">requête</replaceable> ) }
-    TO { '<replaceable class="parameter">nomfichier</replaceable>' | STDOUT }
-    [ [ WITH ] 
-        [ BINARY ]
-	[ OIDS ]
-	[ DELIMITER [ AS ] '<replaceable class="parameter">délimiteur</replaceable>' ]
-	[ NULL [ AS ] '<replaceable class="parameter">chaîne NULL</replaceable>' ]
-	[ CSV [ HEADER ]
-	      [ QUOTE [ AS ] '<replaceable class="parameter">guillemet</replaceable>' ] 
-	      [ ESCAPE [ AS ] '<replaceable class="parameter">échappement</replaceable>' ]
-	      [ FORCE QUOTE <replaceable class="parameter">colonne</replaceable> [, ...] ]
+COPY { <replaceable class="parameter">nom_table</replaceable> [ ( <replaceable class="parameter">colonne</replaceable> [, ...] ) ] | ( <replaceable class="parameter">requête</replaceable> ) }
+    TO { '<replaceable class="parameter">nom_fichier</replaceable>' | STDOUT }
+    [ [ WITH ] ( <replaceable class="parameter">option</replaceable> [, ...] ) ]
+
+<phrase>where <replaceable class="parameter">option</replaceable> can be one of:</phrase>
+
+    FORMAT <replaceable class="parameter">nom_format</replaceable>
+    OIDS [ <replaceable class="parameter">oids</replaceable> ]
+    DELIMITER '<replaceable class="parameter">caractère_délimiteur</replaceable>'
+    NULL '<replaceable class="parameter">chaîne_null</replaceable>'
+    HEADER [ <replaceable class="parameter">booléean</replaceable> ]
+    QUOTE '<replaceable class="parameter">caractère_guillemet</replaceable>'
+    ESCAPE '<replaceable class="parameter">caractère_échappement</replaceable>'
+    FORCE_QUOTE { ( <replaceable class="parameter">colonne</replaceable> [, ...] ) | * }
+    FORCE_NOT_NULL ( <replaceable class="parameter">colonne</replaceable> [, ...] )
 </synopsis>
  </refsynopsisdiv>
  
@@ -81,7 +78,7 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nomtable</replaceable></term>
+    <term><replaceable class="parameter">nom_table</replaceable></term>
     <listitem>
      <para>
      Le nom de la table (éventuellement qualifié du nom du schéma).
@@ -103,8 +100,8 @@
     <term><replaceable class="parameter">requête</replaceable></term>
     <listitem>
      <para>
-      Une commande <xref linkend="sql-select" endterm="sql-select-title"/> ou
-      <xref linkend="sql-values" endterm="sql-values-title"/> dont les résultats
+      Une commande <xref linkend="sql-select"/> ou
+      <xref linkend="sql-values"/> dont les résultats
       doivent être copiés. Notez que les parenthèses sont requises autour de la
       requête.
      </para>
@@ -112,12 +109,12 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">nomfichier</replaceable></term>
+    <term><replaceable class="parameter">nom_fichier</replaceable></term>
     <listitem>
      <para>
       Le chemin absolu du fichier en entrée ou en sortie. Les utilisateurs sous
       Windows peuvent avoir besoin d'utiliser une chaîne <literal>E''</literal>
-      et de doubler les antislashs utilisés comme
+      et de doubler tous les antislashs utilisés comme
       séparateurs de chemin.
      </para>
     </listitem>
@@ -142,18 +139,33 @@
    </varlistentry>
 
    <varlistentry>
-    <term><literal>BINARY</literal></term>
+    <term><replaceable class="parameter">boolean</replaceable></term>
     <listitem>
      <para>
-      Les données sont stockées ou lues au format binaire, non
-      en texte. Les options
-      <option>DELIMITER</option>, <option>NULL</option> ou <option>CSV</option>
-      ne peuvent pas être utilisées dans ce mode.
+      Specifies whether the selected option should be turned on or off.
+      You can write <literal>TRUE</literal>, <literal>ON</literal>, or
+      <literal>1</literal> to enable the option, and <literal>FALSE</literal>,
+      <literal>OFF</literal>, or <literal>0</literal> to disable it.  The
+      <replaceable class="parameter">boolean</replaceable> value can also
+      be omitted, in which case <literal>TRUE</literal> is assumed.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
+    <term><literal>FORMAT</literal></term>
+    <listitem>
+     <para>
+      Selects the data format to be read or written:
+      <literal>text</literal>,
+      <literal>csv</literal> (Comma Separated Values),
+      or <literal>binary</literal>.
+      The default is <literal>text</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term><literal>OIDS</literal></term>
     <listitem>
      <para>
@@ -166,27 +178,28 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">délimiteur</replaceable></term>
+    <term><literal>DELIMITER</literal></term>
     <listitem>
      <para>
-      Le caractère simple ASCII qui sépare les colonnes sur une ligne de
-      fichier.
-      En mode texte, la valeur par défaut est un caractère de tabulation.
-      En mode <literal>CSV</literal>, c'est une virgule.
+      Specifies the character that separates columns within each row
+      (line) of the file.  The default is a tab character in text format,
+      a comma in <literal>CSV</literal> format.
+      This must be a single one-byte character.
+      This option is not allowed when using <literal>binary</literal> format.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">chaîne NULL</replaceable></term>
+    <term><literal>NULL</literal></term>
     <listitem>
      <para>
-      La chaîne qui représente une valeur NULL. Par défaut, 
-      <literal>\N</literal> (antislash-N) en mode texte, une chaîne sans
-      guillemets en mode <literal>CSV</literal>.
-      Il est possible d'utiliser une chaîne
-      vide même en mode texte si la distinction entre valeurs NULL et chaînes vides
-      n'est pas souhaitée.
+      Specifies the string that represents a null value. The default is
+      <literal>\N</literal> (backslash-N) in text format, and an unquoted empty
+      string in <literal>CSV</literal> format. You might prefer an
+      empty string even in text format for cases where you don't want to
+      distinguish nulls from empty strings.
+      This option is not allowed when using <literal>binary</literal> format.
      </para>
 
      <note>
@@ -201,71 +214,70 @@
    </varlistentry>
 
    <varlistentry>
-    <term><literal>CSV</literal></term>
-    <listitem>
-     <para>
-      Mode <literal>CSV</literal> (NDT&nbsp;: Comma Separated Values, en anglais&nbsp;; soit en français, valeurs séparées par des virgules).
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
     <term><literal>HEADER</literal></term>
     <listitem>
      <para>
       Le fichier contient une ligne d'en-tête avec les noms de chaque
       colonne. En sortie, la première ligne contient les noms de
       colonne de la table. En entrée, elle est ignorée.
+      This option is allowed only when using <literal>CSV</literal> format.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">quote</replaceable></term>
+    <term><literal>QUOTE</literal></term>
     <listitem>
      <para>
-      Le caractère ASCII guillemet du mode <literal>CSV</literal>. Par
-      défaut, il s'agit du guillemet double.
+      Specifies the quoting character to be used when a data value is quoted.
+      The default is double-quote.
+      This must be a single one-byte character.
+      This option is allowed only when using <literal>CSV</literal> format.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">escape</replaceable></term>
+    <term><literal>ESCAPE</literal></term>
     <listitem>
      <para>
-      Le caractère ASCII qui apparaît devant un caractère <literal>guillemet</literal>
-      de données
-      (<literal>QUOTE</literal>) en mode <literal>CSV</literal>. Par défaut, il s'agit de
-      la valeur <literal>QUOTE</literal> (habituellement un guillemet double).
+      Specifies the character that should appear before a
+      data character that matches the <literal>QUOTE</literal> value.
+      The default is the same as the <literal>QUOTE</literal> value (so that
+      the quoting character is doubled if it appears in the data).
+      This must be a single one-byte character.
+      This option is allowed only when using <literal>CSV</literal> format.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>FORCE QUOTE</literal></term>
+    <term><literal>FORCE_QUOTE</literal></term>
     <listitem>
      <para>
-      L'utilisation de guillemets autour des valeurs non-<literal>NULL</literal>
-      de chaque colonne précisée est 
-      forcée pour le mode <literal>CSV</literal> de <command>COPY TO</command>.
-      Une sortie <literal>NULL</literal> n'est jamais entre guillemets.
+      Forces quoting to be
+      used for all non-<literal>NULL</literal> values in each specified column.
+      <literal>NULL</literal> output is never quoted. If <literal>*</literal> is specified,
+      non-<literal>NULL</literal> values will be quoted in all columns.
+      This option is allowed only in <command>COPY TO</command>, and only when
+      using <literal>CSV</literal> format.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>FORCE NOT NULL</literal></term>
+    <term><literal>FORCE_NOT_NULL</literal></term>
     <listitem>
      <para>
-      En mode <literal>CSV</literal> avec <command>COPY FROM</command> chaque colonne précisée
-      est considérée entre guillemets, donc non-<literal>NULL</literal>.
-      La chaîne NULL par défaut du mode <literal>CSV</literal> (<literal>''</literal>)
-      est de ce fait comprise comme une chaîne de longueur nulle.
+      Do not match the specified columns' values against the null string.
+      In the default case where the null string is empty, this means that
+      empty values will be read as zero-length strings rather than nulls,
+      even when they are not quoted.
+      This option is allowed only in <command>COPY FROM</command>, and only when
+      using <literal>CSV</literal> format.
      </para>
     </listitem>
    </varlistentry>
-
   </variablelist>
  </refsect1>
 
@@ -293,16 +305,13 @@
    </para>
 
    <para>
-    Le mot clé <literal>BINARY</literal> impose que les données soient
-    stockées/lues dans un format binaire, non en texte. C'est quelque peu
-    plus rapide qu'en mode texte, mais un fichier binaire est moins
-    portable au travers des architectures machine et des versions de
-    <productname>PostgreSQL</productname>.
-    De plus, le format binaire est spécifique au type de données. Par exemple,
-    enregistrer une donnée binaire provenant d'une colonne de type
-    <type>smallint</type> dans une colonne de type <type>integer</type> ne
-    fonctionnera pas, même si cela pourrait fonctionner très bien avec le
-    format texte.
+    <command>COPY</command> only deals with the specific table named;
+    it does not copy data to or from child tables.  Thus for example
+    <literal>COPY <replaceable class="parameter">table</replaceable> TO</literal>
+    shows the same data as <literal>SELECT * FROM ONLY <replaceable
+    class="parameter">table</replaceable></literal>.  But <literal>COPY
+    (SELECT * FROM <replaceable class="parameter">table</replaceable>) TO ...</literal>
+    can be used to dump all of the data in an inheritance hierarchy.
    </para>
 
    <para>
@@ -367,6 +376,13 @@
    </para>
 
    <para>
+    Input data is interpreted according to the current client encoding,
+    and output data is encoded in the current client encoding, even
+    if the data does not pass through the client but is read from or
+    written to a file directly by the server.
+   </para>
+
+   <para>
     <command>COPY</command> stoppe l'opération à la première erreur. Si cela ne
     porte pas à conséquence dans le cas d'un <command>COPY TO</command>, il en va
     différemment dans le cas d'un <command>COPY FROM</command>. Dans ce cas, la table cible
@@ -392,8 +408,7 @@
    <title>Format texte</title>
 
    <para>
-    Lorsque <command>COPY</command> est utilisé sans l'option <literal>BINARY</literal>
-    ou l'option <literal>CSV</literal>, les données sont lues ou écrites dans un 
+    When the <literal>text</literal> format is used, les données sont lues ou écrites dans un 
     fichier texte, chaque ligne correspondant à une ligne de la table. Les colonnes
     sont séparées, dans une ligne, par le caractère de délimitation. Les valeurs
     des colonnes sont des chaînes, engendrées par la fonction de sortie ou utilisables
@@ -539,7 +554,7 @@
    de fichier <literal>CSV</literal> (acronyme de
    <foreignphrase>Comma Separated Value</foreignphrase>, littéralement
    valeurs séparées par des virgules). Ce format est utilisé par un grand nombre de
-   programmes, tels les tableurs. À la place de l'échappement utilisé par le mode
+   programmes, tels les tableurs. À la place des règles d'échappement utilisées par le format
    texte standard de <productname>PostgreSQL</productname>, il produit et
    reconnaît le mécanisme d'échappement habituel de CSV.
   </para>
@@ -585,7 +600,7 @@
 
    <note>
     <para>
-     Dans le mode <literal>CSV</literal>, tous les caractères sont significatifs.
+     Dans le format <literal>CSV</literal>, tous les caractères sont significatifs.
      Une valeur entre guillemets entourée d'espaces ou de tout
      autre caractère différent de <literal>DELIMITER</literal> inclut ces caractères.
      Cela peut être source d'erreurs en cas d'import de données à partir d'un système
@@ -598,10 +613,10 @@
 
   <note>
    <para>
-    Le mode CSV sait reconnaître et produire des fichiers CSV dont les valeurs entre
+    Le format CSV sait reconnaître et produire des fichiers CSV dont les valeurs entre
     guillemets contiennent des retours chariot et des sauts de ligne. De ce fait,
     les fichiers ne contiennent pas strictement une ligne par ligne de table comme
-    les fichiers du mode texte.
+    les fichiers du format texte.
    </para>
   </note>
 
@@ -621,13 +636,30 @@
    <title>Format binaire</title>
 
    <para>
-    Le format de fichier utilisé pour <command>COPY BINARY</command> a été
-    modifié dans <productname>PostgreSQL</productname> 7.4. Le nouveau format
-    consiste en un en-tête de fichier, des tuples (éventuellement aucun) qui contiennent
-    les données de la ligne et une queue de fichier. Les en-têtes et les données sont
-    désormais dans l'ordre des octets réseau.
+    The <literal>binary</literal> format option causes all data to be
+    stored/read as binary format rather than as text.  It is
+    somewhat faster than the text and <literal>CSV</literal> formats,
+    but a binary-format file is less portable across machine architectures and
+    <productname>PostgreSQL</productname> versions.
+    Also, the binary format is very data type specific; for example
+    it will not work to output binary data from a <type>smallint</type> column
+    and read it into an <type>integer</type> column, even though that would work
+    fine in text format.
    </para>
 
+   <para>
+    The <literal>binary</literal> file format consists
+    of a file header, zero or more tuples containing the row data, and
+    a file trailer.  Headers and data are in network byte order.
+   </para>
+
+   <note>
+    <para>
+     <productname>PostgreSQL</productname> releases before 7.4 used a
+     different binary file format.
+    </para>
+   </note>
+
    <refsect3>
     <title>Entête du fichier</title>
 
@@ -734,8 +766,8 @@
     </para>
 
     <para>
-     Actuellement, toutes les valeurs d'un fichier <command>COPY BINARY</command> sont supposées être dans un format binaire
-     (code de format).
+     Actuellement, toutes les valeurs d'un fichier d'un format binaire sont
+     supposées être dans un format binaire (code de format).
      Il est probable qu'une extension future ajoute un champ d'en-tête
      autorisant la spécification de codes de format par colonne.
     </para>
@@ -783,7 +815,7 @@
   <para>
    Copier une table vers le client en utilisant la barre
    verticale (<literal>|</literal>) comme délimiteur de champ&nbsp;:
-<programlisting>COPY pays TO STDOUT WITH DELIMITER '|';
+<programlisting>COPY pays TO STDOUT (DELIMITER '|');
 </programlisting>
   </para>
 
@@ -840,17 +872,52 @@
   </para>
 
   <para>
+   The following syntax was used before <productname>PostgreSQL</productname>
+   version 9.0 and is still supported:
+
+<synopsis>
+COPY <replaceable class="parameter">table_name</replaceable> [ ( <replaceable class="parameter">column</replaceable> [, ...] ) ]
+    FROM { '<replaceable class="parameter">filename</replaceable>' | STDIN }
+    [ [ WITH ]
+          [ BINARY ]
+          [ OIDS ]
+          [ DELIMITER [ AS ] '<replaceable class="parameter">delimiter</replaceable>' ]
+          [ NULL [ AS ] '<replaceable class="parameter">null string</replaceable>' ]
+          [ CSV [ HEADER ]
+                [ QUOTE [ AS ] '<replaceable class="parameter">quote</replaceable>' ]
+                [ ESCAPE [ AS ] '<replaceable class="parameter">escape</replaceable>' ]
+                [ FORCE NOT NULL <replaceable class="parameter">column</replaceable> [, ...] ]
+
+COPY { <replaceable class="parameter">table_name</replaceable> [ ( <replaceable class="parameter">column</replaceable> [, ...] ) ] | ( <replaceable class="parameter">query</replaceable> ) }
+    TO { '<replaceable class="parameter">filename</replaceable>' | STDOUT }
+    [ [ WITH ]
+          [ BINARY ]
+          [ OIDS ]
+          [ DELIMITER [ AS ] '<replaceable class="parameter">delimiter</replaceable>' ]
+          [ NULL [ AS ] '<replaceable class="parameter">null string</replaceable>' ]
+          [ CSV [ HEADER ]
+                [ QUOTE [ AS ] '<replaceable class="parameter">quote</replaceable>' ]
+                [ ESCAPE [ AS ] '<replaceable class="parameter">escape</replaceable>' ]
+                [ FORCE QUOTE { <replaceable class="parameter">column</replaceable> [, ...] | * } ]
+</synopsis>
+
+   Note that in this syntax, <literal>BINARY</literal> and <literal>CSV</literal> are
+   treated as independent keywords, not as arguments of a <literal>FORMAT</literal>
+   option.
+  </para>
+
+  <para>
    La syntaxe suivante, utilisée avant <productname>PostgreSQL</productname>
    version 7.3, est toujours supportée&nbsp;:
 
-<synopsis>COPY [ BINARY ] <replaceable class="parameter">nomtable</replaceable> [ WITH OIDS ]
-    FROM { '<replaceable class="parameter">nomfichier</replaceable>' | STDIN }
-    [ [USING] DELIMITERS '<replaceable class="parameter">délimiteur</replaceable>' ]
+<synopsis>COPY [ BINARY ] <replaceable class="parameter">nom_table</replaceable> [ WITH OIDS ]
+    FROM { '<replaceable class="parameter">nom_fichier</replaceable>' | STDIN }
+    [ [USING] DELIMITERS '<replaceable class="parameter">caractère_délimiteur</replaceable>' ]
     [ WITH NULL AS '<replaceable class="parameter">chaîne NULL</replaceable>' ]
 
-COPY [ BINARY ] <replaceable class="parameter">nomtable</replaceable> [ WITH OIDS ]
-    TO { '<replaceable class="parameter">nomfichier</replaceable>' | STDOUT }
-    [ [USING] DELIMITERS '<replaceable class="parameter">délimiteur</replaceable>' ]
+COPY [ BINARY ] <replaceable class="parameter">nom_table</replaceable> [ WITH OIDS ]
+    TO { '<replaceable class="parameter">nom_fichier</replaceable>' | STDOUT }
+    [ [USING] DELIMITERS '<replaceable class="parameter">caractère_délimiteur</replaceable>' ]
     [ WITH NULL AS '<replaceable class="parameter">chaîne NULL</replaceable>' ]
 </synopsis>
   </para>

Modified: traduc/trunk/postgresql/ref/create_aggregate.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_aggregate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_aggregate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createaggregate">
  <refmeta>
-  <refentrytitle id="sql-createaggregate-title">CREATE AGGREGATE</refentrytitle>
+  <refentrytitle>CREATE AGGREGATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -304,8 +304,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteraggregate" endterm="sql-alteraggregate-title"/></member>
-   <member><xref linkend="sql-dropaggregate" endterm="sql-dropaggregate-title"/></member>
+   <member><xref linkend="sql-alteraggregate"/></member>
+   <member><xref linkend="sql-dropaggregate"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_cast.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_cast.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_cast.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createcast">
  <refmeta>
-  <refentrytitle id="sql-createcast-title">CREATE CAST</refentrytitle>
+  <refentrytitle>CREATE CAST</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -19,7 +19,7 @@
 
  <refsynopsisdiv>
 <synopsis>CREATE CAST (<replaceable>type_source</replaceable> AS <replaceable>type_cible</replaceable>)
-    WITH FUNCTION <replaceable>nomfonction</replaceable> (<replaceable>argtype</replaceable>)
+    WITH FUNCTION <replaceable>nom_fonction</replaceable> (<replaceable>type_argument</replaceable> [, ...])
     [ AS ASSIGNMENT | AS IMPLICIT ]
 
 CREATE CAST (<replaceable>type_source</replaceable> AS <replaceable>type_cible</replaceable>)
@@ -152,7 +152,7 @@
     peuvent alors entraîner des ambiguités qui ne peuvent être évitées, comme ci-dessus. L'analyseur
     possède pour ces cas une heuristique de secours s'appuyant sur les <firstterm>catégories de types</firstterm>
     et les <firstterm>types préférés</firstterm>, qui peut aider à fournir le comportement attendu
-    dans ce genre de cas. Voir <xref linkend="sql-createtype" endterm="sql-createtype-title"/>
+    dans ce genre de cas. Voir <xref linkend="sql-createtype"/>
     pour plus de détails.
    </para>
   </note>
@@ -190,8 +190,8 @@
     </varlistentry>
 
     <varlistentry>    
-     <term><replaceable>nomfonction</replaceable>
-      (<replaceable>type_argument</replaceable>)</term>
+     <term><replaceable>nom_fonction</replaceable>
+      (<replaceable>type_argument</replaceable> [, ...])</term>
 
      <listitem>
       <para>
@@ -294,7 +294,7 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-dropcast" endterm="sql-dropcast-title"/> est utilisé pour
+   <xref linkend="sql-dropcast"/> est utilisé pour
    supprimer les transtypages utilisateur.
   </para>
 
@@ -410,9 +410,9 @@
   <title>Voir aussi</title>
 
   <para>
-   <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>,
-   <xref linkend="sql-createtype" endterm="sql-createtype-title"/>,
-   <xref linkend="sql-dropcast" endterm="sql-dropcast-title"/>
+   <xref linkend="sql-createfunction"/>,
+   <xref linkend="sql-createtype"/>,
+   <xref linkend="sql-dropcast"/>
   </para>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_constraint.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_constraint.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_constraint.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createconstraint">
  <refmeta>
-  <refentrytitle id="sql-createconstraint-title">CREATE CONSTRAINT TRIGGER</refentrytitle>
+  <refentrytitle>CREATE CONSTRAINT TRIGGER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -29,7 +29,8 @@
     [ FROM <replaceable class="parameter">table_référencée</replaceable> ]
     { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
     FOR EACH ROW
-    EXECUTE PROCEDURE <replaceable class="parameter">fonction</replaceable> ( <replaceable class="parameter">arguments</replaceable> )
+    [ WHEN ( <replaceable class="parameter">condition</replaceable> ) ]
+    EXECUTE PROCEDURE <replaceable class="parameter">nom_fonction</replaceable> ( <replaceable class="parameter">arguments</replaceable> )
 </synopsis>
  </refsynopsisdiv>
 
@@ -43,7 +44,7 @@
    <command>CREATE CONSTRAINT TRIGGER</command> crée un
    <firstterm>trigger de contrainte</firstterm>. C'est identique à un trigger
    standard sauf que le moment de l'exécution du trigger est ajustable en
-   utilisant <xref linkend="sql-set-constraints" endterm="sql-set-constraints-title"/>.
+   utilisant <xref linkend="sql-set-constraints"/>.
    Les triggers de contraintes doivent être des triggers <literal>AFTER
    ROW</literal>. Ils peuvent être déclenchés soit à la fin de l'instruction
    l'ayant déclenché soit à la fin de la transaction le contenant&nbsp;; dans
@@ -111,18 +112,34 @@
        <para>
 	Le moment d'exécution par défaut du trigger.
         Voir la documentation de <xref linkend="sql-createtable"
-        endterm="sql-createtable-title"/> pour les détails sur ces options de
+       /> pour les détails sur ces options de
         contraintes.
        </para>
       </listitem>
      </varlistentry>
 
    <varlistentry>
+    <term><replaceable class="parameter">condition</replaceable></term>
+    <listitem>
+     <para>
+      A Boolean expression that determines whether the trigger function
+      will actually be executed.  This acts the same as in <xref
+      linkend="SQL-CREATETRIGGER"/>.
+      Note in particular that evaluation of the <literal>WHEN</literal>
+      condition is not deferred, but occurs immediately after the row
+      update operation is performed.  If the condition does not evaluate
+      to <literal>true</literal> then the trigger is not queued for deferred
+      execution.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term><replaceable class="parameter">nom_fonction</replaceable></term>
     <listitem>
      <para>
       La fonction à appeler quand le trigger est déclenché. Voir <xref
-      linkend="sql-createtrigger" endterm="sql-createtrigger-title"/> pour
+      linkend="sql-createtrigger"/> pour
       les détails.
      </para>
     </listitem>
@@ -133,7 +150,7 @@
     <listitem>
      <para>
       Chaînes optionnelles d'argument à passer à la fonction trigger. Voir <xref
-      linkend="sql-createtrigger" endterm="sql-createtrigger-title"/> pour plus
+      linkend="sql-createtrigger"/> pour plus
       de détails.
      </para>
     </listitem>
@@ -153,9 +170,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"/></member>
-   <member><xref linkend="sql-droptrigger" endterm="sql-droptrigger-title"/></member>
-   <member><xref linkend="sql-set-constraints" endterm="sql-set-constraints-title"/></member>
+   <member><xref linkend="sql-createtrigger"/></member>
+   <member><xref linkend="sql-droptrigger"/></member>
+   <member><xref linkend="sql-set-constraints"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_conversion.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_conversion.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_conversion.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createconversion">
  <refmeta>
-  <refentrytitle id="sql-createconversion-title">CREATE CONVERSION</refentrytitle>
+  <refentrytitle>CREATE CONVERSION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -19,7 +19,7 @@
 
  <refsynopsisdiv>
 <synopsis>CREATE [ DEFAULT ] CONVERSION <replaceable>nom</replaceable>
-    FOR <replaceable>codage_source</replaceable> TO <replaceable>codage_dest</replaceable> FROM <replaceable>fonction</replaceable>
+    FOR <replaceable>codage_source</replaceable> TO <replaceable>codage_dest</replaceable> FROM <replaceable>nom_fonction</replaceable>
 </synopsis>
  </refsynopsisdiv>
   
@@ -99,7 +99,7 @@
     </varlistentry>
 
     <varlistentry>
-     <term><replaceable>fonction</replaceable></term>
+     <term><replaceable>nom_fonction</replaceable></term>
 
      <listitem>
       <para>
@@ -165,9 +165,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterconversion" endterm="sql-alterconversion-title"/></member>
-   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"/></member>
-   <member><xref linkend="sql-dropconversion" endterm="sql-dropconversion-title"/></member>
+   <member><xref linkend="sql-alterconversion"/></member>
+   <member><xref linkend="sql-createfunction"/></member>
+   <member><xref linkend="sql-dropconversion"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_database.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_database.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_database.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createdatabase">
  <refmeta>
-  <refentrytitle id="sql-createdatabase-title">CREATE DATABASE</refentrytitle>
+  <refentrytitle>CREATE DATABASE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -19,7 +19,7 @@
 
  <refsynopsisdiv>
 <synopsis>CREATE DATABASE <replaceable class="parameter">nom</replaceable>
-    [ [ WITH ] [ OWNER [=] <replaceable class="parameter">propriétaire</replaceable> ]
+    [ [ WITH ] [ OWNER [=] <replaceable class="parameter">nom_utilisateur</replaceable> ]
                [ TEMPLATE [=] <replaceable class="parameter">modèle</replaceable> ]
                [ ENCODING [=] <replaceable class="parameter">codage</replaceable> ]
            [ LC_COLLATE [=] <replaceable class="parameter">lc_collate</replaceable> ]
@@ -43,7 +43,7 @@
   <para>
    Pour créer une base de données, il faut être superutilisateur
    ou avoir le droit spécial <literal>CREATEDB</literal>.
-   Voir à ce sujet <xref linkend="sql-createuser" endterm="sql-createuser-title"/>.
+   Voir à ce sujet <xref linkend="sql-createuser"/>.
   </para>
 
   <para>
@@ -81,7 +81,7 @@
       </listitem>
      </varlistentry>
      <varlistentry>
-      <term><replaceable class="parameter">propriétaire</replaceable></term>
+      <term><replaceable class="parameter">nom_utilisateur</replaceable></term>
       <listitem>
        <para>
         Le nom de l'utilisateur propriétaire de la
@@ -150,7 +150,7 @@
         données ou <literal>DEFAULT</literal> pour le tablespace de
         la base de données modèle. Ce tablespace est celui par
         défaut pour les objets créés dans cette base de données. Voir
-        <xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/>
+        <xref linkend="sql-createtablespace"/>
 	pour plus d'informations.
        </para>
       </listitem>
@@ -190,12 +190,12 @@
 
    <para>
     L'instruction
-    <xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/>
+    <xref linkend="sql-dropdatabase"/>
     est utilisée pour supprimer la base de données.
    </para>
 
    <para>
-    Le programme <xref linkend="app-createdb" endterm="app-createdb-title"/> est
+    Le programme <xref linkend="app-createdb"/> est
     un enrobage de cette commande fourni par commodité.
    </para>
 
@@ -298,8 +298,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterdatabase" endterm="sql-alterdatabase-title"/></member>
-   <member><xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/></member>
+   <member><xref linkend="sql-alterdatabase"/></member>
+   <member><xref linkend="sql-dropdatabase"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_domain.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_domain.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_domain.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createdomain">
  <refmeta>
-  <refentrytitle id="sql-createdomain-title">CREATE DOMAIN</refentrytitle>
+  <refentrytitle>CREATE DOMAIN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -22,7 +22,7 @@
     [ DEFAULT <replaceable>expression</replaceable> ]
     [ <replaceable class="parameter">contrainte</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">contrainte</replaceable> est&nbsp;:
+<phrase>où <replaceable class="parameter">contrainte</replaceable> est&nbsp;:</phrase>
 
 [ CONSTRAINT <replaceable class="parameter">nom_contrainte</replaceable> ]
 { NOT NULL | NULL | CHECK (<replaceable class="parameter">expression</replaceable>) }
@@ -202,8 +202,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterdomain" endterm="sql-alterdomain-title"/></member>
-   <member><xref linkend="sql-dropdomain" endterm="sql-dropdomain-title"/></member>
+   <member><xref linkend="sql-alterdomain"/></member>
+   <member><xref linkend="sql-dropdomain"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_foreign_data_wrapper.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_foreign_data_wrapper.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_foreign_data_wrapper.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createforeigndatawrapper">
  <refmeta>
-  <refentrytitle id="sql-createforeigndatawrapper-title">CREATE FOREIGN DATA WRAPPER</refentrytitle>
+  <refentrytitle>CREATE FOREIGN DATA WRAPPER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -172,10 +172,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterforeigndatawrapper" endterm="sql-alterforeigndatawrapper-title"/></member>
-   <member><xref linkend="sql-dropforeigndatawrapper" endterm="sql-dropforeigndatawrapper-title"/></member>
-   <member><xref linkend="sql-createserver" endterm="sql-createserver-title"/></member>
-   <member><xref linkend="sql-createusermapping" endterm="sql-createusermapping-title"/></member>
+   <member><xref linkend="sql-alterforeigndatawrapper"/></member>
+   <member><xref linkend="sql-dropforeigndatawrapper"/></member>
+   <member><xref linkend="sql-createserver"/></member>
+   <member><xref linkend="sql-createusermapping"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_function.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_function.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_function.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createfunction">
  <refmeta>
-  <refentrytitle id="sql-createfunction-title">CREATE FUNCTION</refentrytitle>
+  <refentrytitle>CREATE FUNCTION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -19,10 +19,10 @@
 
  <refsynopsisdiv>
 <synopsis>CREATE [ OR REPLACE ] FUNCTION
-    <replaceable class="parameter">nom</replaceable> ( [ [ <replaceable class="parameter">modearg</replaceable> ] [ <replaceable class="parameter">nomarg</replaceable> ] <replaceable class="parameter">typearg</replaceable>  [ { DEFAULT | = } <replaceable class="parameter">defexpr</replaceable> ] [, ...] ] ) ] )
+    <replaceable class="parameter">nom</replaceable> ( [ [ <replaceable class="parameter">modearg</replaceable> ] [ <replaceable class="parameter">nomarg</replaceable> ] <replaceable class="parameter">typearg</replaceable>  [ { DEFAULT | = } <replaceable class="parameter">expression_par_defaut</replaceable> ] [, ...] ] ) ] )
     [ RETURNS <replaceable class="parameter">type_ret</replaceable>
       | RETURNS TABLE ( <replaceable class="parameter">nom_colonne</replaceable> <replaceable class="parameter">type_colonne</replaceable> [, ...] ) ]
-  { LANGUAGE <replaceable class="parameter">nomlang</replaceable>
+  { LANGUAGE <replaceable class="parameter">nom_lang</replaceable>
     | WINDOW
     | IMMUTABLE | STABLE | VOLATILE
     | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
@@ -47,6 +47,8 @@
    <command>CREATE FUNCTION</command> définit une nouvelle fonction.
    <command>CREATE OR REPLACE FUNCTION</command> crée une nouvelle fonction
    ou la remplace si elle existe déjà.
+   To be able to define a function, the user must have the
+   <literal>USAGE</literal> privilege on the language.
   </para>
 
   <para>
@@ -66,12 +68,20 @@
    même, <command>CREATE OR REPLACE FUNCTION</command> ne permet pas
    de modifier le type retour d'une fonction existante. Pour cela, il est nécessaire
    de supprimer et de recréer la fonction. (Lors de l'utilisation de paramètres
-   <literal>OUT</literal>, cela signifie que le nom ou le
-   type d'un paramètre <literal>OUT</literal> ne peut être modifié que par 
+   <literal>OUT</literal>, cela signifie que le type d'un paramètre
+   <literal>OUT</literal> ne peut être modifié que par 
    la suppression de la fonction.)
   </para>
 
   <para>
+   When <command>CREATE OR REPLACE FUNCTION</command> is used to replace an
+   existing function, the ownership and permissions of the function
+   do not change.  All other function properties are assigned the
+   values specified or implied in the command.  You must own the function
+   to replace it (this includes being a member of the owning role).
+  </para>
+
+  <para>
    En cas de suppression et de recréaction d'une fonction, la nouvelle fonction n'est pas
    la même entité que l'ancienne&nbsp;; il faut supprimer les règles, vues,
    déclencheurs, etc. qui référencent l'ancienne fonction. 
@@ -126,7 +136,10 @@
        Le nom d'un argument. Quelques langages (seul
        PL/pgSQL, en réalité) permettent d'utiliser ce nom dans le corps de la fonction.
        Pour les autres langages, le nom d'un argument en entrée est 
-       purement documentaire. En revanche, le nom d'un argument en sortie
+       purement documentaire, so far as
+       the function itself is concerned; but you can use input argument names
+       when calling a function to improve readability (see <xref
+       linkend="sql-syntax-calling-funcs"/>). Dans tous les cas, le nom d'un argument en sortie
        a une utilité car il définit le nom de la colonne dans la ligne résultat.
        (En cas d'omission du nom d'un argument en
        sortie, le système choisit un nom de colonne par défaut.)
@@ -153,7 +166,7 @@
       </para>
       <para>
        Il est fait référence au type d'une colonne par
-       <literal><replaceable class="parameter">nomtable</replaceable>.<replaceable class="parameter">nomcolonne</replaceable>%TYPE</literal>. 
+       <literal><replaceable class="parameter">nom_table</replaceable>.<replaceable class="parameter">nomcolonne</replaceable>%TYPE</literal>. 
        Cette fonctionnalité peut servir à rendre une fonction
        indépendante des modifications de la définition d'une table.
       </para>
@@ -161,7 +174,7 @@
     </varlistentry>
 
     <varlistentry>
-     <term><replaceable class="parameter">defexpr</replaceable></term>
+     <term><replaceable class="parameter">expression_par_defaut</replaceable></term>
 
      <listitem>
       <para>
@@ -202,7 +215,7 @@
       </para>
       <para>
        Il est fait référence au type d'une colonne par 
-       <literal><replaceable class="parameter">nomtable</replaceable>.<replaceable class="parameter">nomcolonne</replaceable>%TYPE</literal>.
+       <literal><replaceable class="parameter">nom_table</replaceable>.<replaceable class="parameter">nomcolonne</replaceable>%TYPE</literal>.
       </para>
      </listitem>
     </varlistentry>
@@ -231,7 +244,7 @@
     </varlistentry>
 
     <varlistentry>
-     <term><replaceable class="parameter">nomlang</replaceable></term>
+     <term><replaceable class="parameter">nom_lang</replaceable></term>
 
      <listitem>
       <para>
@@ -288,7 +301,9 @@
        mais celui-ci varie en fonction des instructions SQL.
        Cette option est appropriée pour les fonctions
        dont les résultats dépendent des recherches en base, des
-       variables de paramètres (tel que la zone horaire courante), etc. La 
+       variables de paramètres (tel que la zone horaire courante), etc. (It is
+       inappropriate for <literal>AFTER</literal> triggers that wish to
+       query rows modified by the current command.) La 
        famille de fonctions <function>current_timestamp</function> est qualifiée
        de stable car les valeurs de ces fonctions ne changent pas à l'intérieur d'une transaction.
       </para>
@@ -396,7 +411,19 @@
       </para>
 
       <para>
-       Voir <xref linkend="sql-set" endterm="sql-set-title"/> et
+       If a <literal>SET</literal> clause is attached to a function, then
+       the effects of a <command>SET LOCAL</command> command executed inside the
+       function for the same variable are restricted to the function: the
+       configuration parameter's prior value is still restored at function exit.
+       However, an ordinary
+       <command>SET</command> command (without <literal>LOCAL</literal>) overrides the
+       <literal>SET</literal> clause, much as it would do for a previous <command>SET
+       LOCAL</command> command: the effects of such a command will persist after
+       function exit, unless the current transaction is rolled back.
+      </para>
+   
+      <para>
+       Voir <xref linkend="sql-set"/> et
        <xref linkend="runtime-config"/> pour plus d'informations sur les
        paramètres et valeurs autorisés.
       </para>
@@ -413,6 +440,14 @@
        interne, le chemin vers un
        fichier objet, une commande SQL ou du texte en langage procédural.
       </para>
+
+      <para>
+       It is often helpful to use dollar quoting (see <xref
+       linkend="sql-syntax-dollar-quoting"/>) to write the function definition
+       string, rather than the normal single quote syntax.  Without dollar
+       quoting, any single quotes or backslashes in the function definition must
+       be escaped by doubling them.
+      </para>
      </listitem>
     </varlistentry>
 
@@ -431,6 +466,13 @@
        source C. Si ce lien est omis, il est supposé être le même que le nom de
        la fonction SQL définie.
       </para>
+
+      <para>
+       When repeated <command>CREATE FUNCTION</command> calls refer to
+       the same object file, the file is only loaded once per session.
+       To unload and
+       reload the file (perhaps during development), start a new session.
+      </para>
      </listitem>
     </varlistentry>
 
@@ -473,24 +515,14 @@
 
    </variablelist>
 
- </refsect1>
-
- <refsect1 id="sql-createfunction-notes">
-  <title>Notes</title>
-
    <para>
     La lecture de <xref linkend="xfunc"/> fournit des informations 
     supplémentaires sur l'écriture de fonctions.
    </para>
+ </refsect1>
 
-   <para>
-    Toute la syntaxe des types <acronym>SQL</acronym> est autorisée pour les
-    arguments en entrée et la valeur de sortie. Néanmoins, quelques détails
-    de spécification de type (le champ précision pour le type
-    <type>numeric</type>, par exemple) sont de la responsabilité de l'implantation de la
-    fonction sous-jacente et sont silencieusement acceptés (c'est-à-dire non
-    reconnus ou vérifiés) par la commande <command>CREATE FUNCTION</command>.
-   </para>
+ <refsect1 id="sql-createfunction-overloading">
+  <title>Overloading</title>
 
    <para>
     <productname>PostgreSQL</productname> autorise la
@@ -524,59 +556,33 @@
     fonction à appeler.
    </para>
 
-   <para>
-    Lors d'appels répétés à <command>CREATE FUNCTION</command> faisant référence
-    au même fichier objet, le fichier est chargé une seule fois par session.
-    Pour décharger et recharger le fichier (en phase de développement, par
-    exemple), démarrez une nouvelle session.
-   </para>
+ </refsect1>
 
-   <para>
-    <xref linkend="sql-dropfunction" endterm="sql-dropfunction-title"/> est utilisé
-    pour supprimer les fonctions utilisateur.
-   </para>
+ <refsect1 id="sql-createfunction-notes">
+  <title>Notes</title>
 
-  <para>
-    Les guillemets dollar (voir <xref linkend="sql-syntax-dollar-quoting"/>) peuvent
-    s'avérer plus utiles que la syntaxe habituelle à guillemets simples pour écrire
-    la chaîne de définition d'une fonction. En l'absence de
-    guillemets dollar, tout guillemet simple et tout antislash dans la définition de
-    la fonction doit être échappé en le doublant.
-  </para>
-
    <para>
-    Si une <literal>SET</literal> est attachée à une fonction, alors les effets
-    d'une commande <command>SET LOCAL</command> exécutée dans la fonction pour
-    la même variable seront restreints à la fonction&nbsp;: la valeur précedente
-    du paramètre sera toujours restaurée à la sortie de la fonction. Néanmoins,
-    une commande <command>SET</command> standard (sans <literal>LOCAL</literal>)
-    surcharge la clause <literal>SET</literal>, comme il le ferait avec une
-    <command>SET LOCAL</command> précédente&nbsp;: les effets d'une telle
-    commande subisteront à la sortie de la fonction sauf si la transaction en
-    cours est annulée.
+    The full <acronym>SQL</acronym> type syntax is allowed for
+    input arguments and return value. However, some details of the
+    type specification (e.g., the precision field for
+    type <type>numeric</type>) are the responsibility of the
+    underlying function implementation and are silently swallowed
+    (i.e., not recognized or
+    enforced) by the <command>CREATE FUNCTION</command> command.
    </para>
 
    <para>
-    Pour pouvoir définir une fonction, l'utilisateur doit posséder le droit
-    <literal>USAGE</literal> sur le langage.
+    When replacing an existing function with <command>CREATE OR REPLACE
+    FUNCTION</command>, there are restrictions on changing parameter names.
+    You cannot change the name already assigned to any input parameter
+    (although you can add names to parameters that had none before).
+    If there is more than one output parameter, you cannot change the
+    names of the output parameters, because that would change the
+    column names of the anonymous composite type that describes the
+    function's result.  These restrictions are made to ensure that
+    existing calls of the function do not stop working when it is replaced.
    </para>
 
-   <para>
-    Lorsque <command>CREATE OR REPLACE FUNCTION</command> est utilisé pour
-    remplacer une fonction existante, le propriétaire et les droits de la
-    fonction ne sont pas changés. Toutes les autres propriétés de la fonction
-    sont affectées par les valeurs indiquées ou par les valeurs imploquées par
-    la commande. Vous devez être le propriétaire de la fonction pour la
-    remplacer (cela inclut aussi les membres du rôle propriétaire).
-   </para>
-
-   <para>
-    Si une fonction est déclarée <literal>STRICT</literal> avec un argument
-    <literal>VARIADIC</literal>, la vérification du côté strict d'une fonction teste
-    si le tableau variadic <emphasis>lui-même</emphasis> est non NULL. La fonction sera
-    quand même appelée si le tableau contient des éléments NULL.
-   </para>
-
  </refsect1>
 
  <refsect1 id="sql-createfunction-examples">
@@ -688,7 +694,7 @@
    <para>
     Un autre point à garder en mémoire est que, par défaut, le droit d'exécution
     est donné à <literal>PUBLIC</literal> pour les fonctions nouvellement
-    créées (voir <xref linkend="sql-grant" endterm="sql-grant-title"/> pour plus
+    créées (voir <xref linkend="sql-grant"/> pour plus
     d'informations). Fréquemment, vous souhaiterez restreindre l'utilisation
     d'une fonction « security definer » à seulement quelques utilisateurs. Pour
     cela, vous devez révoquer les droits <literal>PUBLIC</literal> puis donner
@@ -737,12 +743,12 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterfunction" endterm="sql-alterfunction-title"/></member>
-   <member><xref linkend="sql-dropfunction" endterm="sql-dropfunction-title"/></member>
-   <member><xref linkend="sql-grant" endterm="sql-grant-title"/></member>
-   <member><xref linkend="sql-load" endterm="sql-load-title"/></member>
-   <member><xref linkend="sql-revoke" endterm="sql-revoke-title"/></member>
-   <member><xref linkend="app-createlang" endterm="app-createlang-title"/></member>
+   <member><xref linkend="sql-alterfunction"/></member>
+   <member><xref linkend="sql-dropfunction"/></member>
+   <member><xref linkend="sql-grant"/></member>
+   <member><xref linkend="sql-load"/></member>
+   <member><xref linkend="sql-revoke"/></member>
+   <member><xref linkend="app-createlang"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_group.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_group.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_group.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-creategroup">
  <refmeta>
-  <refentrytitle id="sql-creategroup-title">CREATE GROUP</refentrytitle>
+  <refentrytitle>CREATE GROUP</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>CREATE GROUP <replaceable class="parameter">nom</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">option</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">option</replaceable> peut être&nbsp;:</phrase>
 
       SUPERUSER | NOSUPERUSER
     | CREATEDB | NOCREATEDB
@@ -30,11 +30,11 @@
     | LOGIN | NOLOGIN
     | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="parameter">motdepasse</replaceable>'
     | VALID UNTIL '<replaceable class="parameter">dateheure</replaceable>' 
-    | IN ROLE <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | IN GROUP <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | ROLE <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | ADMIN <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | USER <replaceable class="parameter">nomrole</replaceable> [, ...]
+    | IN ROLE <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | IN GROUP <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | ROLE <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | ADMIN <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | USER <replaceable class="parameter">nom_role</replaceable> [, ...]
     | SYSID <replaceable class="parameter">uid</replaceable> 
 </synopsis>
  </refsynopsisdiv>
@@ -47,7 +47,7 @@
 
   <para>
    <command>CREATE GROUP</command> est désormais un alias de
-   <xref linkend="sql-createrole" endterm="sql-createrole-title"/>.
+   <xref linkend="sql-createrole"/>.
   </para>
 
  </refsect1>
@@ -65,7 +65,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createrole" endterm="sql-createrole-title"/></member>
+   <member><xref linkend="sql-createrole"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_index.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_index.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_index.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createindex">
  <refmeta>
-  <refentrytitle id="sql-createindex-title">CREATE INDEX</refentrytitle>
+  <refentrytitle>CREATE INDEX</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] <replaceable class="parameter">nom</replaceable> ON <replaceable class="parameter">table</replaceable> [ USING <replaceable class="parameter">méthode</replaceable> ]
+<synopsis>CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ <replaceable class="parameter">nom</replaceable> ] ON <replaceable class="parameter">table</replaceable> [ USING <replaceable class="parameter">méthode</replaceable> ]
     ( { <replaceable class="parameter">colonne</replaceable> | ( <replaceable class="parameter">expression</replaceable> ) } [ <replaceable class="parameter">classeop</replaceable> ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
     [ WITH ( <replaceable class="parameter">parametre_stockage</replaceable> = <replaceable class="parameter">valeur</replaceable> [, ... ] ) ]
     [ TABLESPACE <replaceable class="parameter">espacelogique</replaceable> ]
@@ -35,7 +35,7 @@
 
   <para>
    <command>CREATE INDEX</command> construit un index
-   <replaceable class="parameter">nom</replaceable> sur la table spécifiée. Les index
+   on the specified column(s) of la table spécifiée. Les index
    sont principalement utilisés pour améliorer les performances de la base de
    données (bien qu'une utilisation inappropriée puisse produire l'effet inverse).
   </para>
@@ -125,7 +125,7 @@
         les lectures) sur la table jusqu'à la fin de la construction. Il
         est nécessaire d'avoir quelques connaissances avant d'utiliser
         cette option &mdash; voir <xref linkend="sql-createindex-concurrently"
-        endterm="sql-createindex-concurrently-title"/>.
+       />.
        </para>
       </listitem>
      </varlistentry>
@@ -136,7 +136,9 @@
        <para>
         Le nom de l'index à créer. Aucun nom de schéma ne peut être inclus
 	ici&nbsp;; l'index est toujours créé dans le même schéma que sa table
-	parent.
+	parent. If the name is omitted, <productname>PostgreSQL</productname> chooses a
+        suitable name based on the parent table's name and the indexed column
+        name(s).
        </para>
       </listitem>
      </varlistentry>
@@ -518,7 +520,7 @@
   </para>
 
   <para>
-   <xref linkend="sql-dropindex" endterm="sql-dropindex-title"/> est utilisé
+   <xref linkend="sql-dropindex"/> est utilisé
    pour supprimer un index.
   </para>
 
@@ -545,8 +547,10 @@
   <para>
    Pour créer un index sur l'expression <literal>lower(titre)</literal>,
    permettant une recherche efficace quelque soit la casse&nbsp;:
-<programlisting>CREATE INDEX idx_titre_minuscule ON films ((lower(titre)));
+<programlisting>CREATE INDEX ON films ((lower(titre)));
 </programlisting>
+   (In this example we have chosen to omit the index name, so the system
+   will choose a name, typically <literal>films_lower_idx</literal>.)
   </para>
 
   <para>
@@ -575,7 +579,7 @@
    Créer un index sur la colonne <literal>code</literal> de la table
    <literal>films</literal> et donner à l'index l'emplacement du tablespace
    <literal>espaceindex</literal>&nbsp;:
-<programlisting>CREATE INDEX code_idx ON films(code) TABLESPACE espaceindex;
+<programlisting>CREATE INDEX code_idx ON films (code) TABLESPACE espaceindex;
 </programlisting>
   </para>
 
@@ -613,8 +617,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterindex" endterm="sql-alterindex-title"/></member>
-   <member><xref linkend="sql-dropindex" endterm="sql-dropindex-title"/></member>
+   <member><xref linkend="sql-alterindex"/></member>
+   <member><xref linkend="sql-dropindex"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_language.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_language.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_language.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createlanguage">
  <refmeta>
-  <refentrytitle id="sql-createlanguage-title">CREATE LANGUAGE</refentrytitle>
+  <refentrytitle>CREATE LANGUAGE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,8 +18,8 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>CREATE [ PROCEDURAL ] LANGUAGE <replaceable class="parameter">nom</replaceable>
-CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE <replaceable class="parameter">nom</replaceable>
+<synopsis>CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE <replaceable class="parameter">nom</replaceable>
+CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE <replaceable class="parameter">nom</replaceable>
     HANDLER <replaceable class="parameter">gestionnaire_appel</replaceable> [ VALIDATOR <replaceable>fonction_validation</replaceable> ]
 </synopsis>
  </refsynopsisdiv>
@@ -31,8 +31,7 @@
   </indexterm>
 
   <para>
-   Par l'utilisation de <command>CREATE LANGUAGE</command>, un utilisateur
-   de <productname>PostgreSQL</productname> peut associer un nouveau langage
+   <command>CREATE LANGUAGE</command> enregistre un nouveau langage
    procédural à une base de données <productname>PostgreSQL</productname>. En
    conséquence, les fonctions et les procédures de déclencheurs peuvent être
    définies dans ce nouveau langage.
@@ -40,9 +39,9 @@
 
   <para>
    <command>CREATE LANGUAGE</command> associe en fait le nom du langage à
-   un gestionnaire d'appels responsable de l'exécution des fonctions
+   un ou des fonctions de gestion qui sont responsable de l'exécution des fonctions
    écrites dans le langage. <xref linkend="xplang"/> offre de plus amples
-   informations sur les gestionnaires d'appels.
+   informations sur les gestionnaires de fonctions.
   </para>
 
   <para>
@@ -79,6 +78,23 @@
    d'un langage devient son propriétaire et peut ensuite le supprimer, le
    renommer ou le donner à un autre propriétaire.
   </para>
+
+  <para>
+   <command>CREATE OR REPLACE LANGUAGE</command> will either create a
+   new language, or replace an existing definition.  If the language
+   already exists, its parameters are updated according to the values
+   specified or taken from <structname>pg_pltemplate</structname>,
+   but the language's ownership and permissions settings do not change,
+   and any existing functions written in the language are assumed to still
+   be valid.  In addition to the normal privilege requirements for creating
+   a language, the user must be superuser or owner of the existing language.
+   The <literal>REPLACE</literal> case is mainly meant to be used to
+   ensure that the language exists.  If the language has a
+   <structname>pg_pltemplate</structname> entry then <literal>REPLACE</literal>
+   will not actually change anything about an existing definition, except in
+   the unusual case where the <structname>pg_pltemplate</structname> entry
+   has been modified since the language was created.
+  </para>
  </refsect1>
 
  <refsect1 id="sql-createlanguage-parameters">
@@ -90,8 +106,8 @@
 
      <listitem>
       <para>
-       Le gestionnaire d'appels du
-       langage est déclaré sûr, c'est-à-dire qu'il n'offre pas à un utilisateur sans
+       <literal>TRUSTED</literal> indique que le langage est sûr, c'est-à-dire
+       qu'il n'offre pas à un utilisateur sans
        privilège la possibilité d'outrepasser les restrictions d'accès.
        Si ce mot clé est omis à
        l'enregistrement du langage, seuls les superutilisateurs peuvent
@@ -146,6 +162,27 @@
     </varlistentry>
 
     <varlistentry>
+     <term><literal>INLINE</literal> <replaceable class="parameter">inline_handler</replaceable></term>
+
+     <listitem>
+      <para>
+       <replaceable class="parameter">inline_handler</replaceable> is the
+       name of a previously registered function that will be called
+       to execute an anonymous code block
+       (<xref linkend="sql-do"/> command)
+       in this language.
+       If no <replaceable class="parameter">inline_handler</replaceable>
+       function is specified, the language does not support anonymous code
+       blocks.
+       The handler function must take one argument of
+       type <type>internal</type>, which will be the <command>DO</command> command's
+       internal representation, and it will typically return
+       <type>void</type>.  The return value of the handler is ignored.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
      <term><literal>VALIDATOR</literal> <replaceable class="parameter">fonction_validation</replaceable></term>
 
      <listitem>
@@ -188,7 +225,7 @@
   </para>
 
   <para>
-   <xref linkend="sql-droplanguage" endterm="sql-droplanguage-title"/>,
+   <xref linkend="sql-droplanguage"/>,
    ou mieux, le programme <xref linkend="app-droplang"/> sont utilisés pour supprimer
    des langages procéduraux.
   </para>
@@ -215,7 +252,7 @@
   </para>
 
   <para>
-   Le gestionnaire d'appels et la fonction de validation (s'il y en a une) doivent
+   Le gestionnaire d'appels, the inline handler function (if any) et la fonction de validation (s'il y en a une) doivent
    exister préalablement si le serveur ne possède pas d'entrée pour ce langage dans
    <structname>pg_pltemplate</structname>. Dans le cas contraire, les fonctions
    n'ont pas besoin de pré-exister&nbsp;; elles sont automatiquement définies
@@ -240,7 +277,7 @@
 
   <para>
    Tout langage procédural standard sera préférentiellement créé ainsi&nbsp;:
-<programlisting>CREATE LANGUAGE plpgsql;
+<programlisting>CREATE LANGUAGE plperl;
 </programlisting>
   </para>
 
@@ -269,13 +306,13 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterlanguage" endterm="sql-alterlanguage-title"/></member>
-   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"/></member>
-   <member><xref linkend="sql-droplanguage" endterm="sql-droplanguage-title"/></member>
-   <member><xref linkend="sql-grant" endterm="sql-grant-title"/></member>
-   <member><xref linkend="sql-revoke" endterm="sql-revoke-title"/></member>
-   <member><xref linkend="app-createlang" endterm="app-createlang-title"/></member>
-   <member><xref linkend="app-droplang" endterm="app-droplang-title"/></member>
+   <member><xref linkend="sql-alterlanguage"/></member>
+   <member><xref linkend="sql-createfunction"/></member>
+   <member><xref linkend="sql-droplanguage"/></member>
+   <member><xref linkend="sql-grant"/></member>
+   <member><xref linkend="sql-revoke"/></member>
+   <member><xref linkend="app-createlang"/></member>
+   <member><xref linkend="app-droplang"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_opclass.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_opclass.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_opclass.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createopclass">
  <refmeta>
-  <refentrytitle id="sql-createopclass-title">CREATE OPERATOR CLASS</refentrytitle>
+  <refentrytitle>CREATE OPERATOR CLASS</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -299,10 +299,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteropclass" endterm="sql-alteropclass-title"/></member>
-   <member><xref linkend="sql-dropopclass" endterm="sql-dropopclass-title"/></member>
-   <member><xref linkend="sql-createopfamily" endterm="sql-createopfamily-title"/></member>
-   <member><xref linkend="sql-alteropfamily" endterm="sql-alteropfamily-title"/></member>
+   <member><xref linkend="sql-alteropclass"/></member>
+   <member><xref linkend="sql-dropopclass"/></member>
+   <member><xref linkend="sql-createopfamily"/></member>
+   <member><xref linkend="sql-alteropfamily"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_operator.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_operator.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_operator.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createoperator">
  <refmeta>
-  <refentrytitle id="sql-createoperator-title">CREATE OPERATOR</refentrytitle>
+  <refentrytitle>CREATE OPERATOR</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -19,9 +19,9 @@
 
  <refsynopsisdiv>
 <synopsis>CREATE OPERATOR <replaceable>nom</replaceable> (
-    PROCEDURE = <replaceable class="parameter">nomfonc</replaceable>
-    [, LEFTARG = <replaceable class="parameter">typegauche</replaceable> ]
-    [, RIGHTARG = <replaceable class="parameter">typedroit</replaceable> ]
+    PROCEDURE = <replaceable class="parameter">nom_fonction</replaceable>
+    [, LEFTARG = <replaceable class="parameter">type_gauche</replaceable> ]
+    [, RIGHTARG = <replaceable class="parameter">type_droit</replaceable> ]
     [, COMMUTATOR = <replaceable class="parameter">op_com</replaceable> ]
     [, NEGATOR = <replaceable class="parameter">op_neg</replaceable> ]
     [, RESTRICT = <replaceable class="parameter">proc_res</replaceable> ]
@@ -90,7 +90,7 @@
   </para>
 
   <para>
-   La procédure <replaceable class="parameter">nomfonc</replaceable> doit avoir
+   La procédure <replaceable class="parameter">nom_fonction</replaceable> doit avoir
    été précédemment définie par <command>CREATE FUNCTION</command> et
    doit accepter le bon nombre d'arguments (un ou deux) des types indiqués.
   </para>
@@ -120,7 +120,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><replaceable class="parameter">nomfonc</replaceable></term>
+      <term><replaceable class="parameter">nom_fonction</replaceable></term>
       <listitem>
        <para>
 	La fonction utilisée pour implanter cet opérateur.
@@ -129,7 +129,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><replaceable class="parameter">typegauche</replaceable></term>
+      <term><replaceable class="parameter">type_gauche</replaceable></term>
       <listitem>
        <para>
 	Le type de données de l'opérande gauche de l'opérateur, s'il existe.
@@ -139,7 +139,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><replaceable class="parameter">typedroit</replaceable></term>
+      <term><replaceable class="parameter">type_droit</replaceable></term>
       <listitem>
        <para>
 	Le type de données de l'opérande droit de l'opérateur, s'il existe.
@@ -234,9 +234,9 @@
   </para>
 
   <para>
-   <xref linkend="sql-dropoperator" endterm="sql-dropoperator-title"/> 
+   <xref linkend="sql-dropoperator"/> 
    est utilisé pour supprimer les opérateurs utilisateur,
-   <xref linkend="sql-alteroperator" endterm="sql-alteroperator-title"/> pour les modifier.
+   <xref linkend="sql-alteroperator"/> pour les modifier.
   </para>
  </refsect1>
   
@@ -273,9 +273,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteroperator" endterm="sql-alteroperator-title"/></member>
-   <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"/></member>
-   <member><xref linkend="sql-dropoperator" endterm="sql-dropoperator-title"/></member>
+   <member><xref linkend="sql-alteroperator"/></member>
+   <member><xref linkend="sql-createopclass"/></member>
+   <member><xref linkend="sql-dropoperator"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_opfamily.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_opfamily.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_opfamily.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createopfamily">
  <refmeta>
-  <refentrytitle id="sql-createopfamily-title">CREATE OPERATOR FAMILY</refentrytitle>
+  <refentrytitle>CREATE OPERATOR FAMILY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -110,11 +110,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteropfamily" endterm="sql-alteropfamily-title"/></member>
-   <member><xref linkend="sql-dropopfamily" endterm="sql-dropopfamily-title"/></member>
-   <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"/></member>
-   <member><xref linkend="sql-alteropclass" endterm="sql-alteropclass-title"/></member>
-   <member><xref linkend="sql-dropopclass" endterm="sql-dropopclass-title"/></member>
+   <member><xref linkend="sql-alteropfamily"/></member>
+   <member><xref linkend="sql-dropopfamily"/></member>
+   <member><xref linkend="sql-createopclass"/></member>
+   <member><xref linkend="sql-alteropclass"/></member>
+   <member><xref linkend="sql-dropopclass"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_role.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_role.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_role.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createrole">
  <refmeta>
-  <refentrytitle id="sql-createrole-title">CREATE ROLE</refentrytitle>
+  <refentrytitle>CREATE ROLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>CREATE ROLE <replaceable class="parameter">nom</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">option</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">option</replaceable> peut être&nbsp;:</phrase>
     
       SUPERUSER | NOSUPERUSER
     | CREATEDB | NOCREATEDB
@@ -31,11 +31,11 @@
     | CONNECTION LIMIT <replaceable class="parameter">limite_connexion</replaceable>
     | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="parameter">motdepasse</replaceable>'
     | VALID UNTIL '<replaceable class="parameter">heuredate</replaceable>' 
-    | IN ROLE <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | IN GROUP <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | ROLE <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | ADMIN <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | USER <replaceable class="parameter">nomrole</replaceable> [, ...]
+    | IN ROLE <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | IN GROUP <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | ROLE <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | ADMIN <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | USER <replaceable class="parameter">nom_role</replaceable> [, ...]
     | SYSID <replaceable class="parameter">uid</replaceable> 
 </synopsis>
  </refsynopsisdiv>
@@ -227,7 +227,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><literal>IN ROLE</literal> <replaceable class="parameter">nomrole</replaceable></term>
+      <term><literal>IN ROLE</literal> <replaceable class="parameter">nom_role</replaceable></term>
       <listitem>
        <para>
         Cette clause liste les rôles dont le nouveau
@@ -239,7 +239,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><literal>IN GROUP</literal> <replaceable class="parameter">nomrole</replaceable></term>
+      <term><literal>IN GROUP</literal> <replaceable class="parameter">nom_role</replaceable></term>
       <listitem>
        <para>
         <literal>IN GROUP</literal> est un équivalent obsolète de <literal>IN ROLE</literal>.
@@ -248,7 +248,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><literal>ROLE</literal> <replaceable class="parameter">nomrole</replaceable></term>
+      <term><literal>ROLE</literal> <replaceable class="parameter">nom_role</replaceable></term>
       <listitem>
        <para>
         Cette clause liste les rôles membres du nouveau rôle.
@@ -258,7 +258,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><literal>ADMIN</literal> <replaceable class="parameter">nomrole</replaceable></term>
+      <term><literal>ADMIN</literal> <replaceable class="parameter">nom_role</replaceable></term>
       <listitem>
        <para>
         Cette clause est équivalente à la clause
@@ -270,7 +270,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><literal>USER</literal> <replaceable class="parameter">nomrole</replaceable></term>
+      <term><literal>USER</literal> <replaceable class="parameter">nom_role</replaceable></term>
       <listitem>
        <para>
         <literal>USER</literal> est un équivalent osbolète de <literal>ROLE</literal>.
@@ -294,17 +294,17 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-alterrole" endterm="sql-alterrole-title"/> est utilisé pour
+   <xref linkend="sql-alterrole"/> est utilisé pour
    modifier les attributs d'un rôle, et
-   <xref linkend="sql-droprole" endterm="sql-droprole-title"/> pour supprimer un rôle.
+   <xref linkend="sql-droprole"/> pour supprimer un rôle.
    Tous les attributs
    positionnés par <command>CREATE ROLE</command> peuvent être modifiés par la suite
    à l'aide de commandes <command>ALTER ROLE</command>.
   </para>
 
   <para>
-   Il est préférable d'utiliser <xref linkend="sql-grant" endterm="sql-grant-title"/>
-   et <xref linkend="sql-revoke" endterm="sql-revoke-title"/> pour ajouter et supprimer
+   Il est préférable d'utiliser <xref linkend="sql-grant"/>
+   et <xref linkend="sql-revoke"/> pour ajouter et supprimer
    des membres de rôles utilisés comme groupes.
   </para>
 
@@ -324,7 +324,7 @@
    droit <literal>CREATEDB</literal> ne confère pas automatiquement le droit de création de
    bases de données, même avec <literal>INHERIT</literal> positionné&nbsp;; il
    est nécessaire d'acquérir ce rôle via
-   <xref linkend="sql-set-role" endterm="sql-set-role-title"/> avant de créer une base de données.
+   <xref linkend="sql-set-role"/> avant de créer une base de données.
   </para>
 
   <para>
@@ -352,7 +352,7 @@
 
   <para>
    <productname>PostgreSQL</productname> inclut un programme,
-   <xref linkend="app-createuser" endterm="app-createuser-title"/> qui possède les mêmes
+   <xref linkend="app-createuser"/> qui possède les mêmes
    fonctionnalités que <command>CREATE ROLE</command> (en fait, il appelle cette
    commande) et peut être lancé à partir du shell.
   </para>
@@ -370,8 +370,8 @@
    commande. Le mot de passe sera transmis en clair au serveur. Ce dernier
    pourrait être tracer dans l'historique des commandes du client ou dans les
    traces du serveur. Néanmoins, la commande <xref linkend="app-createuser"
-   endterm="app-createuser-title"/> transmet le mot de passe chiffré. De plus,
-   <xref linkend="app-psql" endterm="app-psql-title"/> contient une commande
+  /> transmet le mot de passe chiffré. De plus,
+   <xref linkend="app-psql"/> contient une commande
    <command>\password</command> que vous pouvez utiliser pour modifier en toute
    sécurité votre mot de passe.
   </para>
@@ -416,7 +416,7 @@
   <para>
    L'instruction <command>CREATE ROLE</command> est définie dans le standard SQL. Ce dernier 
    n'impose que la syntaxe
-<synopsis>CREATE ROLE <replaceable class="parameter">nom</replaceable> [ WITH ADMIN <replaceable class="parameter">nomrole</replaceable> ]
+<synopsis>CREATE ROLE <replaceable class="parameter">nom</replaceable> [ WITH ADMIN <replaceable class="parameter">nom_role</replaceable> ]
 </synopsis>
    La possibilité d'avoir plusieurs administrateurs initiaux et toutes les
    autres options de <command>CREATE ROLE</command> sont des extensions
@@ -443,11 +443,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-set-role" endterm="sql-set-role-title"/></member>
-   <member><xref linkend="sql-alterrole" endterm="sql-alterrole-title"/></member>
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
-   <member><xref linkend="sql-grant" endterm="sql-grant-title"/></member>
-   <member><xref linkend="sql-revoke" endterm="sql-revoke-title"/></member>
+   <member><xref linkend="sql-set-role"/></member>
+   <member><xref linkend="sql-alterrole"/></member>
+   <member><xref linkend="sql-droprole"/></member>
+   <member><xref linkend="sql-grant"/></member>
+   <member><xref linkend="sql-revoke"/></member>
    <member><xref linkend="app-createuser"/></member>
   </simplelist>
  </refsect1>

Modified: traduc/trunk/postgresql/ref/create_rule.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_rule.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_rule.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createrule">
  <refmeta>
-  <refentrytitle id="sql-createrule-title">CREATE RULE</refentrytitle>
+  <refentrytitle>CREATE RULE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>

Modified: traduc/trunk/postgresql/ref/create_schema.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_schema.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_schema.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createschema">
  <refmeta>
-  <refentrytitle id="sql-createschema-title">CREATE SCHEMA</refentrytitle>
+  <refentrytitle>CREATE SCHEMA</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -180,8 +180,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterschema" endterm="sql-alterschema-title"/></member>
-   <member><xref linkend="sql-dropschema" endterm="sql-dropschema-title"/></member>
+   <member><xref linkend="sql-alterschema"/></member>
+   <member><xref linkend="sql-dropschema"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_sequence.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_sequence.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_sequence.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createsequence">
  <refmeta>
-  <refentrytitle id="sql-createsequence-title">CREATE SEQUENCE</refentrytitle>
+  <refentrytitle>CREATE SEQUENCE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -358,9 +358,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altersequence" endterm="sql-altersequence-title"/></member>
-   <member><xref linkend="sql-dropsequence" endterm="sql-dropsequence-title"/></member>
+   <member><xref linkend="sql-altersequence"/></member>
+   <member><xref linkend="sql-dropsequence"/></member>
   </simplelist>
  </refsect1>
 
-</refentry>
\ No newline at end of file
+</refentry>

Modified: traduc/trunk/postgresql/ref/create_server.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_server.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_server.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createserver">
  <refmeta>
-  <refentrytitle id="sql-createserver-title">CREATE SERVER</refentrytitle>
+  <refentrytitle>CREATE SERVER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -22,8 +22,8 @@
 
  <refsynopsisdiv>
 <synopsis>
-CREATE SERVER <replaceable class="parameter">nomserveur</replaceable> [ TYPE 'typeserveur' ] [ VERSION 'versionserveur' ]
-    FOREIGN DATA WRAPPER <replaceable class="parameter">nomfdw</replaceable>
+CREATE SERVER <replaceable class="parameter">nom_serveur</replaceable> [ TYPE '<replaceable class="parameter">type_serveur</replaceable>' ] [ VERSION '<replaceable class="parameter">version_serveur</replaceable>' ]
+    FOREIGN DATA WRAPPER <replaceable class="parameter">nom_fdw</replaceable>
     [ OPTIONS ( <replaceable class="PARAMETER">option</replaceable> '<replaceable class="PARAMETER">valeur</replaceable>' [, ... ] ) ]
 </synopsis>
  </refsynopsisdiv>
@@ -59,7 +59,7 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nomserveur</replaceable></term>
+    <term><replaceable class="parameter">nom_serveur</replaceable></term>
     <listitem>
      <para>
       Nom du serveur de données distant qui sera créé.
@@ -68,7 +68,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">typeserveur</replaceable></term>
+    <term><replaceable class="parameter">type_serveur</replaceable></term>
     <listitem>
      <para>
       Type de serveur (optionnel).
@@ -77,7 +77,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">versionserveur</replaceable></term>
+    <term><replaceable class="parameter">version_serveur</replaceable></term>
     <listitem>
      <para>
       Version du serveur (optionnel).
@@ -86,7 +86,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">nomfdw</replaceable></term>
+    <term><replaceable class="parameter">nom_fdw</replaceable></term>
     <listitem>
      <para>
       Nom du wrapper de données distantes qui gère le serveur.
@@ -152,10 +152,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterserver" endterm="sql-alterserver-title"/></member>
-   <member><xref linkend="sql-dropserver" endterm="sql-dropserver-title"/></member>
-   <member><xref linkend="sql-createforeigndatawrapper" endterm="sql-createforeigndatawrapper-title"/></member>
-   <member><xref linkend="sql-createusermapping" endterm="sql-createusermapping-title"/></member>
+   <member><xref linkend="sql-alterserver"/></member>
+   <member><xref linkend="sql-dropserver"/></member>
+   <member><xref linkend="sql-createforeigndatawrapper"/></member>
+   <member><xref linkend="sql-createusermapping"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_table.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_table.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_table.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createtable">
  <refmeta>
-  <refentrytitle id="sql-createtable-title">CREATE TABLE</refentrytitle>
+  <refentrytitle>CREATE TABLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -21,7 +21,7 @@
 <synopsis>CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE <replaceable class="parameter">nom_table</replaceable> ( [
   { <replaceable class="parameter">nom_colonne</replaceable> <replaceable class="parameter">type_donnees</replaceable> [ DEFAULT <replaceable>default_expr</replaceable> ] [ <replaceable class="parameter">contrainte_colonne</replaceable> [ ... ] ]
     | <replaceable>contrainte_table</replaceable>
-    | LIKE <replaceable>table_parent</replaceable> [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES } ] }
+    | LIKE <replaceable>table_parent</replaceable> [ <replaceable>option_like</replaceable> ... ] }
     [, ... ]
 ] )
 [ INHERITS ( <replaceable>table_parent</replaceable> [, ... ] ) ]
@@ -29,21 +29,36 @@
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE <replaceable class="parameter">tablespace</replaceable> ]
 
-où <replaceable class="parameter">contrainte_colonne</replaceable>
-peut être&nbsp;:
+CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE <replaceable class="PARAMETER">nom_table</replaceable>
+    OF <replaceable class="PARAMETER">nom_type</replaceable> [ (
+  { <replaceable class="PARAMETER">nom_colonne</replaceable> WITH OPTIONS [ DEFAULT <replaceable>default_expr</replaceable> ] [ <replaceable class="PARAMETER">contrainte_colonne</replaceable> [ ... ] ]
+    | <replaceable>contrainte_table</replaceable> }
+    [, ... ]
+) ]
+[ WITH ( <replaceable class="PARAMETER">parametre_stockage</replaceable> [= <replaceable class="PARAMETER">valeur</replaceable>] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
+[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
+[ TABLESPACE <replaceable class="PARAMETER">tablespace</replaceable> ]
 
+<phrase>où <replaceable class="parameter">contrainte_colonne</replaceable>
+peut être&nbsp;:</phrase>
+
 [ CONSTRAINT <replaceable class="parameter">nom_contrainte</replaceable> ]
 { NOT NULL | NULL |
+  CHECK ( <replaceable class="PARAMETER">expression</replaceable> ) |
   UNIQUE <replaceable class="parameter">parametres_index</replaceable> |
   PRIMARY KEY <replaceable class="parameter">parametres_index</replaceable> |
-  CHECK ( <replaceable class="parameter">expression</replaceable> ) |
+  EXCLUDE [ USING <replaceable class="parameter">methode_index</replaceable> ] ( <replaceable class="parameter">élément_exclude</replaceable> WITH <replaceable class="parameter">opérateur</replaceable> [, ... ] ) <replaceable class="parameter">paramètres_index</replaceable> [ WHERE ( <replaceable class="parameter">prédicat</replaceable> ) ] |
   REFERENCES <replaceable class="parameter">table_reference</replaceable> [ ( <replaceable class="parameter">colonne_reference</replaceable> ) ] [ MATCH FULL
 | MATCH PARTIAL | MATCH SIMPLE ]
     [ ON DELETE <replaceable class="parameter">action</replaceable> ] [ ON UPDATE <replaceable class="parameter">action</replaceable> ] }
 [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
 
-et <replaceable class="parameter">contrainte_table</replaceable>&nbsp;:
+<phrase>et <replaceable class="PARAMETER">option_like</replaceable> is:</phrase>
 
+{ INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | ALL }
+
+<phrase>et <replaceable class="parameter">contrainte_table</replaceable>&nbsp;:</phrase>
+
 [ CONSTRAINT <replaceable class="parameter">nom_contrainte</replaceable> ]
 { UNIQUE ( <replaceable class="parameter">nom_colonne</replaceable> [, ... ] ) <replaceable class="parameter">parametres_index</replaceable> |
   PRIMARY KEY ( <replaceable class="parameter">nom_colonne</replaceable> [, ... ] ) <replaceable class="parameter">parametres_index</replaceable> |
@@ -55,10 +70,15 @@
 [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
 
 Les <replaceable class="parameter">paramètres_index</replaceable> dans les
-contraintes <literal>UNIQUE</literal> et <literal>PRIMARY KEY</literal> sont&nbsp;:
+contraintes <literal>UNIQUE</literal>, <literal>PRIMARY KEY</literal> et
+<literal>EXCLUDE</literal> sont&nbsp;:
 
 [ WITH ( <replaceable class="parameter">paramètre_stockage</replaceable> [= <replaceable class="parameter">valeur</replaceable>] [, ... ] ) ]
-[ USING INDEX TABLESPACE <replaceable class="parameter">espacelogique</replaceable> ]
+[ USING INDEX TABLESPACE <replaceable class="parameter">tablespace</replaceable> ]
+
+<phrase><replaceable class="PARAMETER">exclude_element</replaceable> in an <literal>EXCLUDE</literal> constraint is:</phrase>
+
+{ <replaceable class="parameter">column</replaceable> | ( <replaceable class="parameter">expression</replaceable> ) } [ <replaceable class="parameter">opclass</replaceable> ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
 </synopsis>
 
  </refsynopsisdiv>
@@ -129,10 +149,19 @@
      </para>
 
      <para>
+      The <link linkend="autovacuum">autovacuum daemon</link> cannot
+      access and therefore cannot vacuum or analyze temporary tables.
+      For this reason, appropriate vacuum and analyze operations should be
+      performed via session SQL commands.  For example, if a temporary
+      table is going to be used in complex queries, it is wise to run
+      <command>ANALYZE</command> on the temporary table after it is populated.
+     </para>
+
+     <para>
       On peut éventuellement écrire <literal>GLOBAL</literal> ou <literal>LOCAL</literal>
       avant <literal>TEMPORARY</literal> ou <literal>TEMP</literal>. Cela
       ne fait pas de différence dans <productname>PostgreSQL</productname> (cf.
-      <xref linkend="sql-createtable-compatibility" endterm="sql-createtable-compatibility-title"/>).
+      <xref linkend="sql-createtable-compatibility"/>).
      </para>
     </listitem>
    </varlistentry>
@@ -147,6 +176,27 @@
    </varlistentry>
 
    <varlistentry>
+    <term><literal>OF <replaceable class="PARAMETER">type_name</replaceable></literal></term>
+    <listitem>
+     <para>
+      Creates a <firstterm>typed table</firstterm>, which takes its
+      structure from the specified composite type (name optionally
+      schema-qualified).  A typed table is tied to its type; for
+      example the table will be dropped if the type is dropped
+      (with <literal>DROP TYPE ... CASCADE</literal>).
+     </para>
+
+     <para>
+      When a typed table is created, then the data types of the
+      columns are determined by the underlying composite type and are
+      not specified by the <literal>CREATE TABLE</literal> command.
+      But the <literal>CREATE TABLE</literal> command can add defaults
+      and constraints to the table and can specify storage parameters.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term><replaceable class="parameter">nom_colonne</replaceable></term>
     <listitem>
      <para>
@@ -229,24 +279,14 @@
       nom unique lui sera toujours affecté.
      </para>
      
-<!--
      <para>
-      <productname>PostgreSQL</productname> automatically allows the
-     created table to inherit
-      functions on tables above it in the inheritance hierarchy; that
-      is, if we create table <literal>foo</literal> inheriting from
-      <literal>bar</literal>, then functions that accept the tuple
-      type <literal>bar</literal> can also be applied to instances of
-      <literal>foo</literal>.  (Currently, this works reliably for
-      functions on the first or only parent table, but not so well for
-      functions on additional parents.)
+      Column <literal>STORAGE</literal> settings are also copied from parent tables.
      </para>
--->
     </listitem>
    </varlistentry>
 
    <varlistentry>
-     <term><literal>LIKE <replaceable>table_parent</replaceable> [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES } ]</literal></term>
+     <term><literal>LIKE <replaceable>table_parent</replaceable> [ <replaceable>option_like</replaceable> ... ]</literal></term>
      <listitem>
        <para>
          La clause <literal>LIKE</literal> spécifie une table à partir de laquelle
@@ -280,9 +320,27 @@
       sauf si la clause <literal>INCLUDING INDEXES</literal> est précisée.
      </para>
      <para>
-      Notez aussi que contrairement à <literal>INHERITS</literal>, les colonnes
-      copiées et les contraintes ne sont pas assemblées avec des colonnes et des
-      contraintes nommées de façon similaires. Si le même nom est indiqué
+      <literal>STORAGE</literal> settings for the copied column definitions will only
+      be copied if <literal>INCLUDING STORAGE</literal> is specified.  The
+      default behavior is to exclude <literal>STORAGE</literal> settings, resulting
+      in the copied columns in the new table having type-specific default
+      settings.  For more on <literal>STORAGE</literal> settings, see
+      <xref linkend="storage-toast"/>.
+     </para>
+     <para>
+      Comments for the copied columns, constraints, and indexes
+      will only be copied if <literal>INCLUDING COMMENTS</literal>
+      is specified. The default behavior is to exclude comments, resulting in
+      the copied columns and constraints in the new table having no comments.
+     </para>
+     <para>
+      <literal>INCLUDING ALL</literal> is an abbreviated form of
+      <literal>INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING STORAGE INCLUDING COMMENTS</literal>.
+     </para>
+     <para>
+      Note also that unlike <literal>INHERITS</literal>, columns and
+      constraints copied by <literal>LIKE</literal> are not merged with similarly
+      named columns and constraints. Si le même nom est indiqué
       explicitement ou dans une autre clause <literal>LIKE</literal>, une erreur
       est rapportée.
      </para>
@@ -329,81 +387,131 @@
    </varlistentry>
 
    <varlistentry>
-    <term><literal>UNIQUE</literal> (contrainte_colonne)</term>
-    <term><literal>UNIQUE ( <replaceable class="parameter">nom_colonne</replaceable> [, ... ] )</literal> (contrainte table)</term>
+    <term><literal>CHECK ( <replaceable class="parameter">expression</replaceable> )</literal></term>
+    <listitem>
+     <para>
+      La clause <literal>CHECK</literal> spécifie une expression de
+      résultat booléen que les nouvelles lignes ou celles mises à jour
+      doivent satisfaire pour qu'une opération d'insertion ou de mise à jour
+      réussisse. Les expressions de résultat TRUE ou UNKNOWN réussissent. 
+      Si une des lignes de l'opération d'insertion ou de mise à jour produit un résultat
+      FALSE, une exception est levée et la base de données n'est pas modifiée. 
+      Une contrainte de vérification sur une colonne ne fait référence qu'à la valeur de la colonne
+      tandis qu'une contrainte sur la table fait référence à plusieurs colonnes.
+     </para>
 
+     <para>
+      Actuellement, les expressions <literal>CHECK</literal> ne peuvent ni
+      contenir des sous-requêtes ni faire référence à des variables autres que les
+      colonnes de la ligne courante.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>UNIQUE</literal> (column constraint)</term>
+    <term><literal>UNIQUE ( <replaceable class="PARAMETER">column_name</replaceable> [, ... ] )</literal> (table constraint)</term>
+
     <listitem>
      <para>
-      La contrainte <literal>UNIQUE</literal> spécifie qu'un groupe de
-      colonnes d'une table ne peut contenir que des valeurs
-      uniques. Le comportement de la contrainte de table est le même que
-      celui des contraintes de colonnes avec la possibilité supplémentaire de
-      grouper des colonnes.
+      The <literal>UNIQUE</literal> constraint specifies that a
+      group of one or more columns of a table can contain
+      only unique values. The behavior of the unique table constraint
+      is the same as that for column constraints, with the additional
+      capability to span multiple columns.
      </para>
 
      <para>
-      Les valeurs NULL ne sont pas considérées égales dans le cas d'une contrainte d'unicité.
+      For the purpose of a unique constraint, null values are not
+      considered equal.
      </para>
 
      <para>
-      Toute contrainte d'unicité sur la table doit nommer un ensemble de colonnes 
-      différent de celui utilisé par quelque autre
-      contrainte d'unicité ou de clé primaire sur la table. Dans le cas contraire, cela
-      revient à définir deux fois la même contrainte.
+      Each unique table constraint must name a set of columns that is
+      different from the set of columns named by any other unique or
+      primary key constraint defined for the table.  (Otherwise it
+      would just be the same constraint listed twice.)
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>PRIMARY KEY</literal> (contrainte colonne)</term>
-    <term><literal>PRIMARY KEY ( <replaceable class="parameter">nom_colonne</replaceable> [, ... ] )</literal> (contrainte table)</term>
+    <term><literal>PRIMARY KEY</literal> (column constraint)</term>
+    <term><literal>PRIMARY KEY ( <replaceable class="PARAMETER">column_name</replaceable> [, ... ] )</literal> (table constraint)</term>
     <listitem>
      <para>
-      Une contrainte de clé primaire est utilisée pour spécifier des colonnes
-      qui ne peuvent contenir que des valeurs uniques, non NULL. Techniquement,
-      <literal>PRIMARY KEY</literal> n'est qu'une combinaison de <literal>UNIQUE</literal>
-      et <literal>NOT NULL</literal>. Toutefois, identifier un ensemble de colonnes 
-      comme clé primaire fournit des informations sur les schémas. En effet, une
-      clé primaire implique que d'autres tables puissent utiliser cet ensemble de colonnes
-      comme identifiant unique de ligne.
+      The primary key constraint specifies that a column or columns of a table
+      can contain only unique (non-duplicate), nonnull values.
+      Technically, <literal>PRIMARY KEY</literal> is merely a
+      combination of <literal>UNIQUE</literal> and <literal>NOT NULL</literal>, but
+      identifying a set of columns as primary key also provides
+      metadata about the design of the schema, as a primary key
+      implies that other tables
+      can rely on this set of columns as a unique identifier for rows.
      </para>
 
      <para>
-      Une seule clé primaire peut être spécifiée par table, qu'il s'agisse
-      d'une contrainte de colonne ou de table.
+      Only one primary key can be specified for a table, whether as a
+      column constraint or a table constraint.
      </para>
 
      <para>
-      La contrainte de clé primaire doit nommer un ensemble de colonnes
-      différent de tout autre ensemble de colonnes utilisé par une contrainte
-      d'unicité sur la table.
+      The primary key constraint should name a set of columns that is
+      different from other sets of columns named by any unique
+      constraint defined for the same table.
      </para>
     </listitem>
    </varlistentry>
 
-   <varlistentry>
-    <term><literal>CHECK ( <replaceable class="parameter">expression</replaceable> )</literal></term>
+   <varlistentry id="SQL-CREATETABLE-EXCLUDE">
+    <term><literal>EXCLUDE [ USING <replaceable class="parameter">index_method</replaceable> ] ( <replaceable class="parameter">exclude_element</replaceable> WITH <replaceable class="parameter">operator</replaceable> [, ... ] ) <replaceable class="parameter">index_parameters</replaceable> [ WHERE ( <replaceable class="parameter">predicate</replaceable> ) ]</literal></term>
     <listitem>
      <para>
-      La clause <literal>CHECK</literal> spécifie une expression de
-      résultat booléen que les nouvelles lignes ou celles mises à jour
-      doivent satisfaire pour qu'une opération d'insertion ou de mise à jour
-      réussisse. Les expressions de résultat TRUE ou UNKNOWN réussissent. 
-      Si une des lignes de l'opération d'insertion ou de mise à jour produit un résultat
-      FALSE, une exception est levée et la base de données n'est pas modifiée. 
-      Une contrainte de vérification sur une colonne ne fait référence qu'à la valeur de la colonne
-      tandis qu'une contrainte sur la table fait référence à plusieurs colonnes.
+      The <literal>EXCLUDE</literal> clause defines an exclusion
+      constraint, which guarantees that if
+      any two rows are compared on the specified column(s) or
+      expression(s) using the specified operator(s), not all of these
+      comparisons will return <literal>TRUE</literal>.  If all of the
+      specified operators test for equality, this is equivalent to a
+      <literal>UNIQUE</literal> constraint, although an ordinary unique constraint
+      will be faster.  However, exclusion constraints can specify
+      constraints that are more general than simple equality.
+      For example, you can specify a constraint that
+      no two rows in the table contain overlapping circles
+      (see <xref linkend="datatype-geometric"/>) by using the
+      <literal>&amp;&amp;</literal> operator.
      </para>
 
      <para>
-      Actuellement, les expressions <literal>CHECK</literal> ne peuvent ni
-      contenir des sous-requêtes ni faire référence à des variables autres que les
-      colonnes de la ligne courante.
+      Exclusion constraints are implemented using
+      an index, so each specified operator must be associated with an
+      appropriate operator class
+      (see <xref linkend="indexes-opclass"/>) for the index access
+      method <replaceable>index_method</replaceable>.
+      The operators are required to be commutative.
+      Each <replaceable class="parameter">exclude_element</replaceable>
+      can optionally specify an operator class and/or ordering options;
+      these are described fully under
+      <xref linkend="sql-createindex"/>.
      </para>
+
+     <para>
+      The access method must support <literal>amgettuple</literal> (see <xref
+      linkend="indexam"/>); at present this means <acronym>GIN</acronym>
+      cannot be used.  Although it's allowed, there is little point in using
+      btree or hash indexes with an exclusion constraint, because this
+      does nothing that an ordinary unique constraint doesn't do better.
+      So in practice the access method will always be <acronym>GiST</acronym>.
+     </para>
+
+     <para>
+      The <replaceable class="parameter">predicate</replaceable> allows you to specify an
+      exclusion constraint on a subset of the table; internally this creates a
+      partial index. Note that parentheses are required around the predicate.
+     </para>
     </listitem>
    </varlistentry>
 
-
    <varlistentry>
     <term><literal>REFERENCES <replaceable class="parameter">table_reference</replaceable> [ ( <replaceable class="parameter">colonne_reference</replaceable> ) ] 
      [ MATCH <replaceable class="parameter">matchtype</replaceable> ]
@@ -429,7 +537,7 @@
       la clé primaire de la <replaceable class="parameter">table_reference</replaceable>
       est utilisée. Les colonnes
       référencées doivent être celles d'une contrainte d'unicité ou de clé
-      primaire dans la table référencée. Les contraintes de type clé
+      primaire, non déferrable, dans la table référencée. Les contraintes de type clé
       étrangère ne peuvent pas être définies entre des tables temporaires et des
       tables permanentes.
      </para>
@@ -536,10 +644,13 @@
       n'est pas décalable dans le temps est vérifiée immédiatement après chaque commande. La
       vérification des contraintes décalables est repoussée à la
       fin de la transaction (à l'aide de la commande
-      <xref linkend="sql-set-constraints" endterm="sql-set-constraints-title"/>).
-      <literal>NOT DEFERRABLE</literal> est la valeur par défaut. Seules les
-      contraintes de clé étrangère acceptent cette clause. Les
-      autres types de contraintes ne peuvent être différées.
+      <xref linkend="sql-set-constraints"/>).
+      <literal>NOT DEFERRABLE</literal> est la valeur par défaut.
+      Currently, only <literal>UNIQUE</literal>, <literal>PRIMARY KEY</literal>,
+      <literal>EXCLUDE</literal>, and
+      <literal>REFERENCES</literal> (foreign key) constraints accept this
+      clause.  <literal>NOT NULL</literal> and <literal>CHECK</literal> constraints are not
+      deferrable.
      </para>
     </listitem>
    </varlistentry>
@@ -555,7 +666,7 @@
       instruction. Si la contrainte est <literal>INITIALLY DEFERRED</literal>,
       elle n'est vérifiée qu'à la fin de la transaction. Le moment de
       vérification de la contrainte peut être modifié avec la commande <xref
-      linkend="sql-set-constraints" endterm="sql-set-constraints-title"/>.
+      linkend="sql-set-constraints"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -566,7 +677,7 @@
      <para>
       Cette clause spécifie les paramètres de stockage optionnels pour une
       table ou un index&nbsp;; voir <xref linkend="sql-createtable-storage-parameters"
-      endterm="sql-createtable-storage-parameters-title"/> pour plus
+     /> pour plus
       d'informations. La clause <literal>WITH</literal> peut aussi inclure pour
       une table <literal>OIDS=TRUE</literal> (ou simplement <literal>OIDS</literal>)
       pour indiquer que les lignes de la nouvelle table doivent se voir affecter
@@ -593,7 +704,7 @@
 
      <para>
       Pour supprimer les OID d'une table une fois qu'elle est créée, utilisez
-      <xref linkend="sql-altertable" endterm="sql-altertable-title"/>.
+      <xref linkend="sql-altertable"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -636,7 +747,7 @@
          <para>
           Toutes les lignes de la table temporaire sont détruites à la
 	  fin de chaque bloc de transactions. En fait, un <xref
-          linkend="sql-truncate" endterm="sql-truncate-title"/>
+          linkend="sql-truncate"/>
 	  automatique est réalisé à chaque validation.
          </para>
         </listitem>
@@ -659,7 +770,7 @@
      <term><literal>TABLESPACE <replaceable class="parameter">tablespace</replaceable></literal></term>
      <listitem>
        <para>
-         <replaceable class="parameter">espacelogique</replaceable> est le
+         <replaceable class="parameter">tablespace</replaceable> est le
 	 nom du tablespace dans lequel est créée la nouvelle table. S'il
 	 n'est pas spécifié, <xref linkend="guc-default-tablespace"/> est consulté, sauf
       si la table est temporaire auquel cas <xref linkend="guc-temp-tablespaces"/>
@@ -670,12 +781,12 @@
    </varlistentry>
 
    <varlistentry>
-     <term><literal>USING INDEX TABLESPACE <replaceable class="parameter">espacelogique</replaceable></literal></term>
+     <term><literal>USING INDEX TABLESPACE <replaceable class="parameter">tablespace</replaceable></literal></term>
      <listitem>
        <para>
-        Les index associés à une contrainte <literal>UNIQUE</literal>
-	ou <literal>PRIMARY KEY</literal> sont créés dans le tablespace 
-	nommé <replaceable class="parameter">espacelogique</replaceable>.
+        Les index associés à une contrainte <literal>UNIQUE</literal>,
+	    <literal>PRIMARY KEY</literal>, or <literal>EXCLUDE</literal> sont créés dans le tablespace 
+	nommé <replaceable class="parameter">tablespace</replaceable>.
 	S'il n'est pas spécifié, <xref linkend="guc-default-tablespace"/> est consulté, sauf
       si la table est temporaire auquel cas <xref linkend="guc-temp-tablespaces"/>
       est utilisé.
@@ -695,9 +806,9 @@
    <para>
     La clause <literal>WITH</literal> spécifie des <firstterm>paramètres de
     stockage</firstterm> pour les tables ainsi que pour les index associés
-    avec une contrainte <literal>UNIQUE</literal> ou <literal>PRIMARY
-    KEY</literal>. Les paramètres de stockage des index sont documentés dans
-    <xref linkend="sql-createindex" endterm="sql-createindex-title"/>. 
+    avec une contrainte <literal>UNIQUE</literal>, <literal>PRIMARY
+    KEY</literal>, or <literal>EXCLUDE</literal>. Les paramètres de stockage des index sont documentés dans
+    <xref linkend="sql-createindex"/>. 
     Les paramètres de stockage actuellement disponibles pour les tables sont
     listés ci-dessous. Pour chaque paramètre, sauf contre-indication, il y a un
     paramètre additionnel, de même nom mais préfixé par
@@ -895,7 +1006,7 @@
      chaque contrainte d'unicité ou clé primaire afin d'assurer l'unicité.
      Il n'est donc pas nécessaire de créer un index
      spécifiqueme pour les colonnes de clés primaires. Voir <xref
-     linkend="sql-createindex" endterm="sql-createindex-title"/> pour plus
+     linkend="sql-createindex"/> pour plus
      d'informations.
     </para>
 
@@ -1079,6 +1190,18 @@
 </programlisting>
   </para>
 
+  <para>
+   Create table <structname>circles</structname> with an exclusion
+   constraint that prevents any two circles from overlapping:
+
+<programlisting>
+CREATE TABLE circles (
+    c circle,
+    EXCLUDE USING gist (c WITH &amp;&amp;)
+);
+</programlisting>
+  </para>
+
     <para>
      Créer une table <structname>cinemas</structname> dans le tablespace
      <structname>diskvol1</structname>&nbsp;:
@@ -1091,6 +1214,17 @@
 </programlisting>
   </para>
 
+  <para>
+   Create a composite type and a typed table:
+<programlisting>
+CREATE TYPE employee_type AS (name text, salary numeric);
+
+CREATE TABLE employees OF employee_type (
+    PRIMARY KEY (name),
+    salary WITH OPTIONS DEFAULT 1000
+);
+</programlisting>
+  </para>
  </refsect1>
  
  <refsect1 id="sql-createtable-compatibility">
@@ -1146,6 +1280,23 @@
   </refsect2>
 
   <refsect2>
+   <title>Non-deferred Uniqueness Constraints</title>
+
+   <para>
+    When a <literal>UNIQUE</literal> or <literal>PRIMARY KEY</literal> constraint is
+    not deferrable, <productname>PostgreSQL</productname> checks for
+    uniqueness immediately whenever a row is inserted or modified.
+    The SQL standard says that uniqueness should be enforced only at
+    the end of the statement; this makes a difference when, for example,
+    a single command updates multiple key values.  To obtain
+    standard-compliant behavior, declare the constraint as
+    <literal>DEFERRABLE</literal> but not deferred (i.e., <literal>INITIALLY
+    IMMEDIATE</literal>).  Be aware that this can be significantly slower than
+    immediate uniqueness checking.
+   </para>
+  </refsect2>
+
+  <refsect2>
    <title>Contraintes de vérification de colonnes</title>
 
    <para>
@@ -1160,6 +1311,15 @@
   </refsect2>
 
   <refsect2>
+   <title><literal>EXCLUDE</literal> Constraint</title>
+
+   <para>
+    The <literal>EXCLUDE</literal> constraint type is a
+    <productname>PostgreSQL</productname> extension.
+   </para>
+  </refsect2>
+
+  <refsect2>
    <title>Contrainte <literal>NULL</literal></title>
 
    <para>
@@ -1216,6 +1376,19 @@
       et <literal>USING INDEX TABLESPACE</literal> sont des extensions.
     </para>
   </refsect2>
+
+  <refsect2>
+   <title>Typed Tables</title>
+
+   <para>
+    Typed tables implement a subset of the SQL standard.  According to
+    the standard, a typed table has columns corresponding to the
+    underlying composite type as well as one other column that is
+    the <quote>self-referencing column</quote>.  PostgreSQL does not
+    support these self-referencing columns explicitly, but the same
+    effect can be had using the OID feature.
+   </para>
+  </refsect2>
  </refsect1>
 
 
@@ -1223,9 +1396,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertable" endterm="sql-altertable-title"/></member>
-   <member><xref linkend="sql-droptable" endterm="sql-droptable-title"/></member>
-   <member><xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/></member>
+   <member><xref linkend="sql-altertable"/></member>
+   <member><xref linkend="sql-droptable"/></member>
+   <member><xref linkend="sql-createtablespace"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_table_as.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_table_as.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_table_as.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createtableas">
  <refmeta>
-  <refentrytitle id="sql-createtableas-title">CREATE TABLE AS</refentrytitle>
+  <refentrytitle>CREATE TABLE AS</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -61,7 +61,7 @@
     <listitem>
      <para>
       Ignoré. Conservé pour la compatibilité
-      (cf. <xref linkend="sql-createtable" endterm="sql-createtable-title"/>).
+      (cf. <xref linkend="sql-createtable"/>).
      </para>
     </listitem>
    </varlistentry>
@@ -71,7 +71,7 @@
     <listitem>
      <para>
       Si spécifié, la table est temporaire
-      (cf. <xref linkend="sql-createtable" endterm="sql-createtable-title"/>).
+      (cf. <xref linkend="sql-createtable"/>).
      </para>
     </listitem>
    </varlistentry>
@@ -103,13 +103,13 @@
      <para>
       Cette clause indique les paramètres de stockage optionnels pour la nouvelle
       table&nbsp;; voir <xref linkend="sql-createtable-storage-parameters"
-      endterm="sql-createtable-storage-parameters-title"/> pour plus
+     /> pour plus
       d'informations. La clause <literal>WITH</literal> peut aussi inclure
       <literal>OIDS=TRUE</literal> (ou simplement <literal>OIDS</literal>) pour
       indiquer que les lignes de la nouvelle table doivent avoir des OID
       (identifiants d'objets) ou <literal>OIDS=FALSE</literal> pour indiquer le
       contraire. Voir <xref linkend="sql-createtable"
-      endterm="sql-createtable-title"/> pour plus d'informations.
+     /> pour plus d'informations.
      </para>
     </listitem>
    </varlistentry>
@@ -153,7 +153,7 @@
          <para>
           Toutes les lignes de la table temporaire seront supprimées à la fin de
           chaque bloc de transaction. Habituellement, un <xref
-          linkend="sql-truncate" endterm="sql-truncate-title"/> automatique est
+          linkend="sql-truncate"/> automatique est
           effectué à chaque COMMIT.
          </para>
         </listitem>
@@ -190,10 +190,10 @@
     <term><replaceable>requête</replaceable></term>
     <listitem>
      <para>
-      Une commande <xref linkend="sql-select" endterm="sql-select-title"/>,
+      Une commande <xref linkend="sql-select"/>,
       <link linkend="sql-table">TABLE</link> ou
-      <xref linkend="sql-values" endterm="sql-values-title"/>, voire une commande
-      <xref linkend="sql-execute" endterm="sql-execute-title"/> qui exécute un
+      <xref linkend="sql-values"/>, voire une commande
+      <xref linkend="sql-execute"/> qui exécute un
       <command>SELECT</command> préparé, <command>TABLE</command> ou une requête <command>VALUES</command>.
      </para>
     </listitem>
@@ -217,7 +217,7 @@
 
   <para>
    Cette commande est fonctionnellement équivalente à
-   <xref linkend="sql-selectinto" endterm="sql-selectinto-title"/>. Elle lui est
+   <xref linkend="sql-selectinto"/>. Elle lui est
    cependant préférée car elle présente moins de risques de confusion avec les autres utilisations
    de la syntaxe <command>SELECT INTO</command>. De plus,
    <command>CREATE TABLE AS</command> offre plus de fonctionnalités 
@@ -303,7 +303,7 @@
      <para>
       <productname>PostgreSQL</productname> gère les tables temporaires d'une
       façon bien différente de celle du standard&nbsp;; voir
-      <xref linkend="sql-createtable" endterm="sql-createtable-title"/> pour
+      <xref linkend="sql-createtable"/> pour
       les détails.
      </para>
     </listitem>
@@ -331,11 +331,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtable" endterm="sql-createtable-title"/></member>
-   <member><xref linkend="sql-execute" endterm="sql-execute-title"/></member>
-   <member><xref linkend="sql-select" endterm="sql-select-title"/></member>
-   <member><xref linkend="sql-selectinto" endterm="sql-selectinto-title"/></member>
-   <member><xref linkend="sql-values" endterm="sql-values-title"/></member>
+   <member><xref linkend="sql-createtable"/></member>
+   <member><xref linkend="sql-execute"/></member>
+   <member><xref linkend="sql-select"/></member>
+   <member><xref linkend="sql-selectinto"/></member>
+   <member><xref linkend="sql-values"/></member>
   </simplelist>
  </refsect1>
  

Modified: traduc/trunk/postgresql/ref/create_tablespace.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_tablespace.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_tablespace.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createtablespace">
  <refmeta>
-  <refentrytitle id="sql-createtablespace-title">CREATE TABLESPACE</refentrytitle>
+  <refentrytitle>CREATE TABLESPACE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>CREATE TABLESPACE <replaceable class="parameter">nomespacelogique</replaceable>
+<synopsis>CREATE TABLESPACE <replaceable class="parameter">nom_tablespace</replaceable>
 [ OWNER <replaceable class="parameter">nom_utilisateur</replaceable> ]
 LOCATION '<replaceable class="parameter">répertoire</replaceable>'
 </synopsis>
@@ -44,7 +44,7 @@
 
   <para>
    Un utilisateur disposant des droits appropriés peut passer
-   <replaceable class="parameter">nomespacelogique</replaceable> comme paramètre de
+   <replaceable class="parameter">nom_tablespace</replaceable> comme paramètre de
    <command>CREATE DATABASE</command>, <command>CREATE TABLE</command>,
    <command>CREATE INDEX</command> ou <command>ADD CONSTRAINT</command> pour que les fichiers
    de données de ces objets soient stockés à l'intérieur du tablespace
@@ -57,7 +57,7 @@
 
     <variablelist>
      <varlistentry>
-      <term><replaceable class="parameter">nomespacelogique</replaceable></term>
+      <term><replaceable class="parameter">nom_tablespace</replaceable></term>
       <listitem>
        <para>
         Le nom du tablespace à créer. Le nom ne peut pas commencer
@@ -68,7 +68,7 @@
      </varlistentry>
 
      <varlistentry>
-      <term><replaceable class="parameter">nomutilisateur</replaceable></term>
+      <term><replaceable class="parameter">nom_utilisateur</replaceable></term>
       <listitem>
        <para>
         Le nom de l'utilisateur, propriétaire du tablespace. En cas
@@ -139,11 +139,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/></member>
-   <member><xref linkend="sql-createtable" endterm="sql-createtable-title"/></member>
-   <member><xref linkend="sql-createindex" endterm="sql-createindex-title"/></member>
-   <member><xref linkend="sql-droptablespace" endterm="sql-droptablespace-title"/></member>
-   <member><xref linkend="sql-altertablespace" endterm="sql-altertablespace-title"/></member>
+   <member><xref linkend="sql-createdatabase"/></member>
+   <member><xref linkend="sql-createtable"/></member>
+   <member><xref linkend="sql-createindex"/></member>
+   <member><xref linkend="sql-droptablespace"/></member>
+   <member><xref linkend="sql-altertablespace"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_trigger.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_trigger.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_trigger.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createtrigger">
  <refmeta>
-  <refentrytitle id="sql-createtrigger-title">CREATE TRIGGER</refentrytitle>
+  <refentrytitle>CREATE TRIGGER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,8 @@
  <refsynopsisdiv>
 <synopsis>CREATE TRIGGER <replaceable class="parameter">nom</replaceable> { BEFORE | AFTER } { <replaceable class="parameter">evenement</replaceable> [ OR ... ] }
     ON <replaceable class="parameter">table</replaceable> [ FOR [ EACH ] { ROW | STATEMENT } ]
-    EXECUTE PROCEDURE <replaceable class="parameter">nomfonc</replaceable> ( <replaceable class="parameter">arguments</replaceable> )
+    [ WHEN ( <replaceable class="parameter">condition</replaceable> ) ]
+    EXECUTE PROCEDURE <replaceable class="parameter">nom_fonction</replaceable> ( <replaceable class="parameter">arguments</replaceable> )
 </synopsis>
  </refsynopsisdiv>
  
@@ -33,7 +34,7 @@
   <para>
    <command>CREATE TRIGGER</command> crée un nouveau déclencheur. Le
    déclencheur est associé à la table spécifiée et exécute la fonction
-   <replaceable class="parameter">nomfonc</replaceable> lorsque
+   <replaceable class="parameter">nom_fonction</replaceable> lorsque
    certains événements surviennent.
   </para>
 
@@ -48,8 +49,8 @@
    l'événement, le déclencheur peut ignorer l'opération sur la ligne
    courante ou modifier la ligne en cours d'insertion (uniquement pour les
    opérations <command>INSERT</command> et <command>UPDATE</command>). Si le
-   déclencheur est activé après l'événement, toute modification, dont la
-   dernière insertion, mise à jour ou suppression, est <quote>visible</quote>
+   déclencheur est activé après l'événement, toute modification, dont les
+   autres triggers, est <quote>visible</quote>
    par le déclencheur.
   </para>
 
@@ -72,6 +73,16 @@
   </para>
 
   <para>
+   Also, a trigger definition can specify a boolean <literal>WHEN</literal>
+   condition, which will be tested to see whether the trigger should
+   be fired.  In row-level triggers the <literal>WHEN</literal> condition can
+   examine the old and/or new values of columns of the row.  Statement-level
+   triggers can also have <literal>WHEN</literal> conditions, although the feature
+   is not so useful for them since the condition cannot refer to any values
+   in the table.
+  </para>
+
+  <para>
    Si plusieurs déclencheurs du même genre sont définis pour le même événement,
    ils sont déclenchés suivant l'ordre alphabétique de leur nom.
   </para>
@@ -122,6 +133,16 @@
       déclencheur. Plusieurs événements peuvent être précisés en les séparant par
       <literal>OR</literal>.
      </para>
+
+     <para>
+      For <command>UPDATE</command> triggers, it is possible to
+      specify a list of columns using this syntax:
+<synopsis>
+UPDATE OF <replaceable>column_name1</replaceable> [, <replaceable>column_name2</replaceable> ... ]
+</synopsis>
+      The trigger will only fire if at least one of the listed columns
+      is mentioned as a target of the update.
+     </para>
     </listitem>
    </varlistentry>
 
@@ -150,9 +171,34 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">nomfonc</replaceable></term>
+    <term><replaceable class="parameter">condition</replaceable></term>
     <listitem>
      <para>
+      A Boolean expression that determines whether the trigger function
+      will actually be executed.  If <literal>WHEN</literal> is specified, the
+      function will only be called if the <replaceable
+      class="parameter">condition</replaceable> returns <literal>true</literal>.
+      In <literal>FOR EACH ROW</literal> triggers, the <literal>WHEN</literal>
+      condition can refer to columns of the old and/or new row values
+      by writing <literal>OLD.<replaceable
+      class="parameter">column_name</replaceable></literal> or
+      <literal>NEW.<replaceable
+      class="parameter">column_name</replaceable></literal> respectively.
+      Of course, <literal>INSERT</literal> triggers cannot refer to <literal>OLD</literal>
+      and <literal>DELETE</literal> triggers cannot refer to <literal>NEW</literal>.
+     </para>
+
+     <para>
+      Currently, <literal>WHEN</literal> expressions cannot contain
+      subqueries.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable class="parameter">nom_fonction</replaceable></term>
+    <listitem>
+     <para>
       Une fonction utilisateur, déclarée sans argument et renvoyant le type <literal>trigger</literal>, exécutée
       à l'activation du déclencheur.
      </para>
@@ -186,11 +232,46 @@
   </para>
 
   <para>
-   <xref linkend="sql-droptrigger" endterm="sql-droptrigger-title"/>
-   est utilisé pour supprimer un déclencheur.
+   Utiliser <xref linkend="sql-droptrigger"/>
+   pour supprimer un déclencheur.
   </para>
 
   <para>
+   A column-specific trigger (<literal>FOR UPDATE OF
+   <replaceable>column_name</replaceable></literal>) will fire when any
+   of its columns are listed as targets in the <command>UPDATE</command>
+   command's <literal>SET</literal> list.  It is possible for a column's value
+   to change even when the trigger is not fired, because changes made to the
+   row's contents by <literal>BEFORE UPDATE</literal> triggers are not considered.
+   Conversely, a command such as <literal>UPDATE ... SET x = x ...</literal>
+   will fire a trigger on column <literal>x</literal>, even though the column's
+   value did not change.
+  </para>
+
+  <para>
+   In a <literal>BEFORE</literal> trigger, the <literal>WHEN</literal> condition is
+   evaluated just before the function is or would be executed, so using
+   <literal>WHEN</literal> is not materially different from testing the same
+   condition at the beginning of the trigger function.  Note in particular
+   that the <literal>NEW</literal> row seen by the condition is the current value,
+   as possibly modified by earlier triggers.  Also, a <literal>BEFORE</literal>
+   trigger's <literal>WHEN</literal> condition is not allowed to examine the
+   system columns of the <literal>NEW</literal> row (such as <literal>oid</literal>),
+   because those won't have been set yet.
+  </para>
+
+  <para>
+   In an <literal>AFTER</literal> trigger, the <literal>WHEN</literal> condition is
+   evaluated just after the row update occurs, and it determines whether an
+   event is queued to fire the trigger at the end of statement.  So when an
+   <literal>AFTER</literal> trigger's <literal>WHEN</literal> condition does not return
+   true, it is not necessary to queue an event nor to re-fetch the row at end
+   of statement.  This can result in significant speedups in statements that
+   modify many rows, if the trigger only needs to be fired for a few of the
+   rows.
+  </para>
+
+  <para>
    Dans les versions de <productname>PostgreSQL</productname> antérieures à la
    7.3, il était nécessaire de déclarer un type <type>opaque</type> de 
    retour pour les fonctions déclencheur, plutôt que <type>trigger</type>. Pour
@@ -201,12 +282,57 @@
   </para>
  </refsect1>
 
- <refsect1 id="r1-sql-createtrigger-2">
+ <refsect1 id="r1-sql-createtrigger-examples">
   <title>Exemples</title>
 
   <para>
-   <xref linkend="trigger-example"/> contient un exemple complet.
+   Execute the function <function>check_account_update</function> whenever
+   a row of the table <literal>accounts</literal> is about to be updated:
+
+<programlisting>
+CREATE TRIGGER check_update
+    BEFORE UPDATE ON accounts
+    FOR EACH ROW
+    EXECUTE PROCEDURE check_account_update();
+</programlisting>
+
+   The same, but only execute the function if column <literal>balance</literal>
+   is specified as a target in the <command>UPDATE</command> command:
+
+<programlisting>
+CREATE TRIGGER check_update
+    BEFORE UPDATE OF balance ON accounts
+    FOR EACH ROW
+    EXECUTE PROCEDURE check_account_update();
+</programlisting>
+
+   This form only executes the function if column <literal>balance</literal>
+   has in fact changed value:
+
+<programlisting>
+CREATE TRIGGER check_update
+    BEFORE UPDATE ON accounts
+    FOR EACH ROW
+    WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
+    EXECUTE PROCEDURE check_account_update();
+</programlisting>
+
+   Call a function to log updates of <literal>accounts</literal>, but only if
+   something changed:
+
+<programlisting>
+CREATE TRIGGER log_update
+    AFTER UPDATE ON accounts
+    FOR EACH ROW
+    WHEN (OLD.* IS DISTINCT FROM NEW.*)
+    EXECUTE PROCEDURE log_account_update();
+</programlisting>
   </para>
+
+  <para>
+   <xref linkend="trigger-example"/> contains a complete example of a trigger
+   function written in C.
+  </para>
  </refsect1>
 
  <refsect1 id="sql-createtrigger-compatibility">
@@ -220,13 +346,6 @@
    <itemizedlist>
     <listitem>
      <para>
-      SQL permet aux déclencheurs de se lancer dans des mises à jour de
-      colonnes spécifiques (c'est-à-dire <literal>AFTER UPDATE OF col1, col2</literal>).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
       SQL permet de définir des alias pour les lignes
       <quote>old</quote> et <quote>new</quote> ou pour les tables utilisée
       dans la définition des actions déclenchées (c'est-à-dire
@@ -264,10 +383,11 @@
    <productname>PostgreSQL</productname> définit que <literal>BEFORE DELETE</literal>
    se déclenche toujours avant l'action de suppression, même lors
    d'une action en cascade. Cela semble plus cohérent.
-   Le comportement est imprévisible lorsque des déclencheurs <literal>BEFORE</literal> modifient des
-   lignes elles-mêmes modifiées ensuite par les actions référentielles. Cela peut
-   conduire à des violations de contraintes ou à des données stockées qui ne respectent
-   plus la contrainte de référence.
+   There is also unpredictable
+   behavior when <literal>BEFORE</literal> triggers modify rows or prevent
+   updates during an update that is caused by a referential action.  This can
+   lead to constraint violations or stored data that does not honor the
+   referential constraint.
   </para>
 
   <para>
@@ -286,9 +406,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"/></member>
-   <member><xref linkend="sql-altertrigger" endterm="sql-altertrigger-title"/></member>
-   <member><xref linkend="sql-droptrigger" endterm="sql-droptrigger-title"/></member>
+   <member><xref linkend="sql-createfunction"/></member>
+   <member><xref linkend="sql-altertrigger"/></member>
+   <member><xref linkend="sql-droptrigger"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_tsconfig.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_tsconfig.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_tsconfig.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createtsconfig">
  <refmeta>
-  <refentrytitle id="sql-createtsconfig-title">CREATE TEXT SEARCH CONFIGURATION</refentrytitle>
+  <refentrytitle>CREATE TEXT SEARCH CONFIGURATION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -124,8 +124,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertsconfig" endterm="sql-altertsconfig-title"/></member>
-   <member><xref linkend="sql-droptsconfig" endterm="sql-droptsconfig-title"/></member>
+   <member><xref linkend="sql-altertsconfig"/></member>
+   <member><xref linkend="sql-droptsconfig"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_tsdictionary.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_tsdictionary.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_tsdictionary.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createtsdictionary">
  <refmeta>
-  <refentrytitle id="sql-createtsdictionary-title">CREATE TEXT SEARCH DICTIONARY</refentrytitle>
+  <refentrytitle>CREATE TEXT SEARCH DICTIONARY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -141,8 +141,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertsdictionary" endterm="sql-altertsdictionary-title"/></member>
-   <member><xref linkend="sql-droptsdictionary" endterm="sql-droptsdictionary-title"/></member>
+   <member><xref linkend="sql-altertsdictionary"/></member>
+   <member><xref linkend="sql-droptsdictionary"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_tsparser.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_tsparser.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_tsparser.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createtsparser">
  <refmeta>
-  <refentrytitle id="sql-createtsparser-title">CREATE TEXT SEARCH PARSER</refentrytitle>
+  <refentrytitle>CREATE TEXT SEARCH PARSER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -153,8 +153,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertsparser" endterm="sql-altertsparser-title"/></member>
-   <member><xref linkend="sql-droptsparser" endterm="sql-droptsparser-title"/></member>
+   <member><xref linkend="sql-altertsparser"/></member>
+   <member><xref linkend="sql-droptsparser"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_tstemplate.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_tstemplate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_tstemplate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createtstemplate">
  <refmeta>
-  <refentrytitle id="sql-createtstemplate-title">CREATE TEXT SEARCH TEMPLATE</refentrytitle>
+  <refentrytitle>CREATE TEXT SEARCH TEMPLATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -121,8 +121,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertstemplate" endterm="sql-altertstemplate-title"/></member>
-   <member><xref linkend="sql-droptstemplate" endterm="sql-droptstemplate-title"/></member>
+   <member><xref linkend="sql-altertstemplate"/></member>
+   <member><xref linkend="sql-droptstemplate"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_type.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_type.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_type.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createtype">
  <refmeta>
-  <refentrytitle id="sql-createtype-title">CREATE TYPE</refentrytitle>
+  <refentrytitle>CREATE TYPE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -22,7 +22,7 @@
     ( <replaceable class="parameter">nom_attribut</replaceable> <replaceable class="parameter">type_donnée</replaceable> [, ... ] )
 
 CREATE TYPE <replaceable class="parameter">nom</replaceable> AS ENUM
-    ( '<replaceable class="parameter">label</replaceable>' [, ... ] )
+    ( [ '<replaceable class="parameter">label</replaceable>' [, ... ] ] )
 
 CREATE TYPE <replaceable class="parameter">nom</replaceable> (
     INPUT = <replaceable class="parameter">fonction_entrée</replaceable>,
@@ -83,7 +83,7 @@
   </para>
   </refsect2>
 
-  <refsect2>
+  <refsect2 id="sql-createtype-enum">
    <title>Types énumérés</title>
 
    <para>
@@ -780,10 +780,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"/></member>
-   <member><xref linkend="sql-droptype" endterm="sql-droptype-title"/></member>
-   <member><xref linkend="sql-altertype" endterm="sql-altertype-title"/></member>
-   <member><xref linkend="sql-createdomain" endterm="sql-createdomain-title"/></member>
+   <member><xref linkend="sql-createfunction"/></member>
+   <member><xref linkend="sql-droptype"/></member>
+   <member><xref linkend="sql-altertype"/></member>
+   <member><xref linkend="sql-createdomain"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_user.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_user.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_user.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createuser">
  <refmeta>
-  <refentrytitle id="sql-createuser-title">CREATE USER</refentrytitle>
+  <refentrytitle>CREATE USER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>CREATE USER <replaceable class="parameter">nom</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]
 
-où <replaceable class="parameter">option</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">option</replaceable> peut être&nbsp;:</phrase>
     
       SUPERUSER | NOSUPERUSER
     | CREATEDB | NOCREATEDB
@@ -31,11 +31,11 @@
     | CONNECTION LIMIT <replaceable class="parameter">limite_connexion</replaceable>
     | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="parameter">motdepasse</replaceable>'
     | VALID UNTIL '<replaceable class="parameter">dateheure</replaceable>' 
-    | IN ROLE <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | IN GROUP <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | ROLE <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | ADMIN <replaceable class="parameter">nomrole</replaceable> [, ...]
-    | USER <replaceable class="parameter">nomrole</replaceable> [, ...]
+    | IN ROLE <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | IN GROUP <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | ROLE <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | ADMIN <replaceable class="parameter">nom_role</replaceable> [, ...]
+    | USER <replaceable class="parameter">nom_role</replaceable> [, ...]
     | SYSID <replaceable class="parameter">uid</replaceable> 
 </synopsis>
  </refsynopsisdiv>
@@ -48,7 +48,7 @@
 
   <para>
    <command>CREATE USER</command> est dorénavant un alias de
-   <xref linkend="sql-createrole" endterm="sql-createrole-title"/>.
+   <xref linkend="sql-createrole"/>.
    Il y a toutefois une petite différence entre les deux commandes.
    Lorsque la commande <command>CREATE USER</command> est éxécutée,
    <literal>LOGIN</literal> est le comportement par défaut. Au contraire, quand 
@@ -70,7 +70,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createrole" endterm="sql-createrole-title"/></member>
+   <member><xref linkend="sql-createrole"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/create_user_mapping.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_user_mapping.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_user_mapping.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-createusermapping">
  <refmeta>
-  <refentrytitle id="sql-createusermapping-title">CREATE USER MAPPING</refentrytitle>
+  <refentrytitle>CREATE USER MAPPING</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -120,10 +120,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterusermapping" endterm="sql-alterusermapping-title"/></member>
-   <member><xref linkend="sql-dropusermapping" endterm="sql-dropusermapping-title"/></member>
-   <member><xref linkend="sql-createforeigndatawrapper" endterm="sql-createforeigndatawrapper-title"/></member>
-   <member><xref linkend="sql-createserver" endterm="sql-createserver-title"/></member>
+   <member><xref linkend="sql-alterusermapping"/></member>
+   <member><xref linkend="sql-dropusermapping"/></member>
+   <member><xref linkend="sql-createforeigndatawrapper"/></member>
+   <member><xref linkend="sql-createserver"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/create_view.xml
===================================================================
--- traduc/trunk/postgresql/ref/create_view.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/create_view.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-createview">
  <refmeta>
-  <refentrytitle id="sql-createview-title">CREATE VIEW</refentrytitle>
+  <refentrytitle>CREATE VIEW</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -101,8 +101,8 @@
     <term><replaceable class="parameter">requête</replaceable></term>
     <listitem>
      <para>
-      Une commande <xref linkend="sql-select" endterm="sql-select-title"/> ou
-      <xref linkend="sql-values" endterm="sql-values-title"/> qui fournira
+      Une commande <xref linkend="sql-select"/> ou
+      <xref linkend="sql-values"/> qui fournira
       les colonnes et lignes de la vue.
      </para>
     </listitem>
@@ -119,12 +119,12 @@
 	Les effets d'une vue actualisable peuvent être reproduits par la création
     de règles de réécriture des insertions, suppressions, mises à jour, etc. sur la vue en actions
     appropriées sur les autres tables. 
-	<xref linkend="sql-createrule" endterm="sql-createrule-title"/>
+	<xref linkend="sql-createrule"/>
 	présente des informations utiles à ce propos.
    </para>
 
    <para>
-    L'instruction <xref linkend="sql-dropview" endterm="sql-dropview-title"/>
+    L'instruction <xref linkend="sql-dropview"/>
 	est utilisée pour supprimer les vues.
    </para>
 
@@ -236,8 +236,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterview" endterm="sql-alterview-title"/></member>
-   <member><xref linkend="sql-dropview" endterm="sql-dropview-title"/></member>
+   <member><xref linkend="sql-alterview"/></member>
+   <member><xref linkend="sql-dropview"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/createdb.xml
===================================================================
--- traduc/trunk/postgresql/ref/createdb.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/createdb.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-createdb">
  <refmeta>
-  <refentrytitle id="app-createdb-title"><application>createdb</application></refentrytitle>
+  <refentrytitle><application>createdb</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -20,6 +20,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>createdb</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
    <arg><replaceable>nombase</replaceable></arg>
    <arg><replaceable>description</replaceable></arg>
@@ -48,7 +49,7 @@
 
   <para>
    <application>createdb</application> est un enrobage de la commande
-   <acronym>SQL</acronym> <xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/>.
+   <acronym>SQL</acronym> <xref linkend="sql-createdatabase"/>.
    Il n'y a pas de réelle différence entre la création de bases de données par cet outil 
    ou à l'aide d'autres méthodes d'accès au serveur.
   </para>
@@ -171,14 +172,35 @@
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>createdb</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>createdb</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
     </variablelist>
    </para>
 
    <para>
-    Les options <option>-D</option>, <option>-E</option>, <option>-l</option>,
+    Les options <option>-D</option>, <option>-l</option>, <option>-E</option>,
     <option>-O</option> et <option>-T</option> correspondent aux options de la
     commande SQL sous-jacente
-	<xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/>,
+	<xref linkend="sql-createdatabase"/>,
 	à consulter pour plus d'informations sur ces options.
    </para>
 
@@ -303,7 +325,7 @@
 
   <para>
    En cas de difficulté, on peut se référer à <xref linkend="sql-createdatabase"
-   endterm="sql-createdatabase-title"/> et <xref linkend="app-psql"/> qui présentent
+  /> et <xref linkend="app-psql"/> qui présentent
    les problèmes éventuels et les messages d'erreurs. Le
    serveur de bases de données doit être en cours d'exécution sur l'hôte
    cible. De plus, tous les paramètres de connexion et variables d'environnement par
@@ -340,7 +362,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="app-dropdb"/></member>
-   <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/></member>
+   <member><xref linkend="sql-createdatabase"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/createlang.xml
===================================================================
--- traduc/trunk/postgresql/ref/createlang.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/createlang.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-createlang">
  <refmeta>
-  <refentrytitle id="app-createlang-title"><application>createlang</application></refentrytitle>
+  <refentrytitle><application>createlang</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -45,7 +45,7 @@
    langage de programmation à une base de données
    <productname>PostgreSQL</productname>. <application>createlang</application>
    n'est qu'un enrobage de la commande
-   <xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"/>.
+   <xref linkend="sql-createlanguage"/>.
   </para>
  </refsect1>
 
@@ -98,6 +98,27 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>createlang</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+    <varlistentry>
+      <term><option>-?</option></term>
+      <term><option>--help</option></term>
+      <listitem>
+      <para>
+      Show help about <application>createlang</application> command line
+      arguments, and exit.
+      </para>
+      </listitem>
+    </varlistentry>
+
     </variablelist>
    </para>
 
@@ -246,7 +267,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="app-droplang"/></member>
-   <member><xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"/></member>
+   <member><xref linkend="sql-createlanguage"/></member>
    <member>Variables d'environnement (<xref linkend="libpq-envars"/>)</member>
   </simplelist>
  </refsect1>

Modified: traduc/trunk/postgresql/ref/createuser.xml
===================================================================
--- traduc/trunk/postgresql/ref/createuser.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/createuser.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-createuser">
  <refmeta>
-  <refentrytitle id="app-createuser-title"><application>createuser</application></refentrytitle>
+  <refentrytitle><application>createuser</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -21,6 +21,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>createuser</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
    <arg><replaceable>nom_utilisateur</replaceable></arg>
   </cmdsynopsis>
@@ -55,7 +56,7 @@
   <para>
    <application>createuser</application> est un enrobage de la commande
    <acronym>SQL</acronym>
-   <xref linkend="sql-createrole" endterm="sql-createrole-title"/>.
+   <xref linkend="sql-createrole"/>.
    Il n'y a pas de différence réelle entre la
    création d'utilisateurs par cet outil ou au travers d'autres méthodes
    d'accès au serveur.
@@ -73,7 +74,7 @@
 
     <variablelist>
      <varlistentry>
-      <term><replaceable class="parameter">nomutilisateur</replaceable></term>
+      <term><replaceable class="parameter">nom_utilisateur</replaceable></term>
       <listitem>
        <para>
 		Le nom de l'utilisateur	à créer. Ce nom doit être différent
@@ -83,27 +84,17 @@
      </varlistentry>  
 
      <varlistentry>
-      <term><option>-s</option></term>
-      <term><option>--superuser</option></term>
+      <term><option>-c <replaceable class="parameter">number</replaceable></option></term>
+      <term><option>--connection-limit <replaceable class="parameter">number</replaceable></option></term>
       <listitem>
        <para>
-		Le nouvel utilisateur a les privilèges superutilisateur.
+        Configure le nombre maximum de connexions simultanées pour le nouvel
+        utilisateur. Par défaut, il n'y a pas de limite.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-S</option></term>
-      <term><option>--no-superuser</option></term>
-      <listitem>
-       <para>
-		Le nouvel utilisateur n'a pas les privilèges superutilisateur.
-		Comportement par défaut.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
       <term><option>-d</option></term>
       <term><option>--createdb</option></term>
       <listitem>
@@ -125,80 +116,82 @@
      </varlistentry>
 
      <varlistentry>
-      <term><option>-r</option></term>
-      <term><option>--createrole</option></term>
+      <term><option>-e</option></term>
+      <term><option>--echo</option></term>
       <listitem>
        <para>
-        Le nouvel utilisateur est autorisé à créer de nouveaux rôles
-        (il possède le privilège <literal>CREATEROLE</literal>).
+        Les commandes engendréee par <application>createuser</application> et envoyées
+		au serveur sont affichées.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-R</option></term>
-      <term><option>--no-createrole</option></term>
+      <term><option>-E</option></term>
+      <term><option>--encrypted</option></term>
       <listitem>
        <para>
-        Le nouvel utilisateur n'est pas autorisé à créer de nouveaux rôles.
-		Comportement par défaut.
+        Le mot de passe de l'utilisateur est stocké chiffré dans la base.
+        Si cette option n'est pas précisée, la gestion par défaut des mots de passe
+		est utilisée.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-l</option></term>
-      <term><option>--login</option></term>
+      <term><option>-i</option></term>
+      <term><option>--inherit</option></term>
       <listitem>
        <para>
-        Le nouvel utilisateur est autorisé à se connecter (son nom
-        peut être utilisé comme identifiant initial de session).
-        Comportement par défaut.
+        Le nouveau rôle hérite automatiquement des droits des rôles dont il
+        est membre. Comportement par défaut.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-L</option></term>
-      <term><option>--no-login</option></term>
+      <term><option>-I</option></term>
+      <term><option>--no-inherit</option></term>
       <listitem>
        <para>
-        Le nouvel utilisateur n'est pas autorisé à se connecter.
-        (Un rôle sans droit de connexion est toujours utile pour
-        gérer les droits de la base de données.)
+        Le nouveau rôle n'hérite pas automatiquement des droits des rôles dont
+        il est membre.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-i</option></term>
-      <term><option>--inherit</option></term>
+      <term><option>-l</option></term>
+      <term><option>--login</option></term>
       <listitem>
        <para>
-        Le nouveau rôle hérite automatiquement des droits des rôles dont il
-        est membre. Comportement par défaut.
+        Le nouvel utilisateur est autorisé à se connecter (son nom
+        peut être utilisé comme identifiant initial de session).
+        Comportement par défaut.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-I</option></term>
-      <term><option>--no-inherit</option></term>
+      <term><option>-L</option></term>
+      <term><option>--no-login</option></term>
       <listitem>
        <para>
-        Le nouveau rôle n'hérite pas automatiquement des droits des rôles dont
-        il est membre.
+        Le nouvel utilisateur n'est pas autorisé à se connecter.
+        (Un rôle sans droit de connexion est toujours utile pour
+        gérer les droits de la base de données.)
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-c <replaceable class="parameter">number</replaceable></option></term>
-      <term><option>--connection-limit <replaceable class="parameter">number</replaceable></option></term>
+      <term><option>-N</option></term>
+      <term><option>--unencrypted</option></term>
       <listitem>
        <para>
-        Configure le nombre maximum de connexions simultanées pour le nouvel
-        utilisateur. Par défaut, il n'y a pas de limite.
+        Le mot de passe de l'utilisateur n'est pas stocké chiffré.
+		Si cette option n'est pas précisée, la gestion par défaut des mots de passe
+		est utilisée.
        </para>
       </listitem>
      </varlistentry>
@@ -216,39 +209,47 @@
      </varlistentry>
 
      <varlistentry>
-      <term><option>-E</option></term>
-      <term><option>--encrypted</option></term>
+      <term><option>-r</option></term>
+      <term><option>--createrole</option></term>
       <listitem>
        <para>
-        Le mot de passe de l'utilisateur est stocké chiffré dans la base.
-        Si cette option n'est pas précisée, la gestion par défaut des mots de passe
-		est utilisée.
+        Le nouvel utilisateur est autorisé à créer de nouveaux rôles
+        (il possède le privilège <literal>CREATEROLE</literal>).
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-N</option></term>
-      <term><option>--unencrypted</option></term>
+      <term><option>-R</option></term>
+      <term><option>--no-createrole</option></term>
       <listitem>
        <para>
-        Le mot de passe de l'utilisateur n'est pas stocké chiffré.
-		Si cette option n'est pas précisée, la gestion par défaut des mots de passe
-		est utilisée.
+        Le nouvel utilisateur n'est pas autorisé à créer de nouveaux rôles.
+		Comportement par défaut.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-e</option></term>
-      <term><option>--echo</option></term>
+      <term><option>-s</option></term>
+      <term><option>--superuser</option></term>
       <listitem>
        <para>
-        Les commandes engendréee par <application>createuser</application> et envoyées
-		au serveur sont affichées.
+		Le nouvel utilisateur a les privilèges superutilisateur.
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+      <term><option>-S</option></term>
+      <term><option>--no-superuser</option></term>
+      <listitem>
+       <para>
+		Le nouvel utilisateur n'a pas les privilèges superutilisateur.
+		Comportement par défaut.
+       </para>
+      </listitem>
+     </varlistentry>
     </variablelist>
   </para>
 
@@ -366,7 +367,7 @@
 
   <para>
    En cas de problèmes, on peut consulter
-   <xref linkend="sql-createrole" endterm="sql-createrole-title"/> et
+   <xref linkend="sql-createrole"/> et
    <xref linkend="app-psql"/> qui fournissent des informations 
    sur les problèmes potentiels et les messages d'erreur. Le
    serveur de la base de données doit être en cours d'exécution sur l'hôte
@@ -426,7 +427,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="app-dropuser"/></member>
-   <member><xref linkend="sql-createrole" endterm="sql-createrole-title"/></member>
+   <member><xref linkend="sql-createrole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/deallocate.xml
===================================================================
--- traduc/trunk/postgresql/ref/deallocate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/deallocate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-deallocate">
  <refmeta>
-  <refentrytitle id="sql-deallocate-title">DEALLOCATE</refentrytitle>
+  <refentrytitle>DEALLOCATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -41,7 +41,7 @@
 
   <para>
    Pour plus d'informations sur les instructions préparées,
-   voir <xref linkend="sql-prepare" endterm="sql-prepare-title"/>.
+   voir <xref linkend="sql-prepare"/>.
   </para>
  </refsect1>
 
@@ -93,8 +93,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-execute" endterm="sql-execute-title"/></member>
-   <member><xref linkend="sql-prepare" endterm="sql-prepare-title"/></member>
+   <member><xref linkend="sql-execute"/></member>
+   <member><xref linkend="sql-prepare"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/declare.xml
===================================================================
--- traduc/trunk/postgresql/ref/declare.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/declare.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-declare">
  <refmeta>
-  <refentrytitle id="sql-declare-title">DECLARE</refentrytitle>
+  <refentrytitle>DECLARE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -39,7 +39,7 @@
    Ils peuvent être utilisés pour récupérer un petit nombre de lignes à la
    fois à partir d'une requête plus importante.
    Après la création du curseur, les lignes sont récupérées en utilisant
-   <xref linkend="sql-fetch" endterm="sql-fetch-title"/>.
+   <xref linkend="sql-fetch"/>.
   </para>
 
   <note>
@@ -103,7 +103,7 @@
       récupérer des lignes de façon non séquentielle. La valeur par
       défaut autorise la non-séquentialité du curseur dans certains cas&nbsp;; ce n'est pas la
       même chose que de spécifier <literal>SCROLL</literal>.
-	  Voir <xref linkend="sql-declare-notes" endterm="sql-declare-notes-title"/> pour les
+	  Voir <xref linkend="sql-declare-notes"/> pour les
       détails.
      </para>
     </listitem>
@@ -127,8 +127,8 @@
     <term><replaceable class="parameter">requête</replaceable></term>
     <listitem>
      <para>
-      A <xref linkend="sql-select" endterm="sql-select-title"/> or
-      <xref linkend="sql-values" endterm="sql-values-title"/> command
+      A <xref linkend="sql-select"/> or
+      <xref linkend="sql-values"/> command
       which will provide the rows to be returned by the cursor.
      </para>
     </listitem>
@@ -184,9 +184,9 @@
     jusqu'à la fin de l'instruction. <productname>PostgreSQL</productname> 
     rapporte donc une erreur si cette commande 
     est utilisée en dehors d'un bloc de transactions.
-	On utilise <xref linkend="sql-begin" endterm="sql-begin-title"/> et
-	<xref linkend="sql-commit" endterm="sql-commit-title"/> (ou
-	<xref linkend="sql-rollback" endterm="sql-rollback-title"/>) pour définir un bloc de transaction.
+	On utilise <xref linkend="sql-begin"/> et
+	<xref linkend="sql-commit"/> (ou
+	<xref linkend="sql-rollback"/>) pour définir un bloc de transaction.
    </para>
    <para>
     Si la clause <literal>WITH HOLD</literal> est précisée, et que la 
@@ -248,7 +248,7 @@
     Si la requête du curseur inclut les clauses <literal>FOR UPDATE</literal>
     ou <literal>FOR SHARE</literal>, alors les lignes renvoyées sont verrouillées
     au moment où elles sont récupérées, de la même façon qu'une commande
-    <xref linkend="sql-select" endterm="sql-select-title"/> standard avec ces
+    <xref linkend="sql-select"/> standard avec ces
     options.
     De plus, les lignes renvoyées seront les versions les plus à jour&nbsp;; du
     coup, ces options fournissent l'équivalent de ce que le standard SQL appelle
@@ -316,7 +316,7 @@
    Déclarer un curseur&nbsp;:
 <programlisting>DECLARE liahona CURSOR FOR SELECT * FROM films;
 </programlisting>
-   Voir <xref linkend="sql-fetch" endterm="sql-fetch-title"/> pour plus
+   Voir <xref linkend="sql-fetch"/> pour plus
    d'exemples sur l'utilisation des curseurs.
   </para>
  </refsect1>
@@ -354,9 +354,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-close" endterm="sql-close-title"/></member>
-   <member><xref linkend="sql-fetch" endterm="sql-fetch-title"/></member>
-   <member><xref linkend="sql-move" endterm="sql-move-title"/></member>
+   <member><xref linkend="sql-close"/></member>
+   <member><xref linkend="sql-fetch"/></member>
+   <member><xref linkend="sql-move"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/delete.xml
===================================================================
--- traduc/trunk/postgresql/ref/delete.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/delete.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-delete">
  <refmeta>
-  <refentrytitle id="sql-delete-title">DELETE</refentrytitle>
+  <refentrytitle>DELETE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -40,7 +40,7 @@
 
    <tip>
     <para>
-     <xref linkend="sql-truncate" endterm="sql-truncate-title"/> est une
+     <xref linkend="sql-truncate"/> est une
      extension <productname>PostgreSQL</productname> qui fournit un mécanisme
      plus rapide de suppression de l'ensemble des lignes d'une table.
     </para>
@@ -122,7 +122,7 @@
       Une liste d'expressions de table, qui permet de faire apparaître des colonnes
       d'autres tables dans la condition <literal>WHERE</literal>. 
 	  C'est semblable à la liste des tables utilisées dans la clause
-	  <xref linkend="sql-from" endterm="sql-from-title"/> d'une instruction
+	  <xref linkend="sql-from"/> d'une instruction
       <command>SELECT</command>&nbsp;; un alias du nom d'une
       table peut ainsi être utilisé. La table cible ne doit pas être précisée
 	  dans <replaceable class="parameter">liste_using</replaceable>, sauf si 
@@ -153,7 +153,7 @@
       sur la table cible du <command>DELETE</command>.
       Notez que <literal>WHERE CURRENT OF</literal> ne peut pas se voir ajouter
       de condition booléenne. Voir <xref linkend="sql-declare"
-      endterm="sql-declare-title"/> pour plus d'informations sur l'utilisation
+     /> pour plus d'informations sur l'utilisation
       des curseurs avec <literal>WHERE CURRENT OF</literal>.
      </para>
     </listitem>

Modified: traduc/trunk/postgresql/ref/discard.xml
===================================================================
--- traduc/trunk/postgresql/ref/discard.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/discard.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-discard">
  <refmeta>
-  <refentrytitle id="sql-discard-title">DISCARD</refentrytitle>
+  <refentrytitle>DISCARD</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>

Added: traduc/trunk/postgresql/ref/do.xml
===================================================================
--- traduc/trunk/postgresql/ref/do.xml	                        (rev 0)
+++ traduc/trunk/postgresql/ref/do.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,128 @@
+<!--
+$PostgreSQL: pgsql/doc/src/sgml/ref/do.sgml,v 1.6 2010-04-03 07:23:00 petere Exp $
+PostgreSQL documentation
+-->
+
+<refentry id="SQL-DO">
+ <refmeta>
+  <refentrytitle>DO</refentrytitle>
+  <manvolnum>7</manvolnum>
+  <refmiscinfo>SQL - Language Statements</refmiscinfo>
+ </refmeta>
+
+ <refnamediv>
+  <refname>DO</refname>
+  <refpurpose>execute an anonymous code block</refpurpose>
+ </refnamediv>
+
+ <indexterm zone="sql-do">
+  <primary>DO</primary>
+ </indexterm>
+
+ <indexterm zone="sql-do">
+  <primary>anonymous code blocks</primary>
+ </indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+DO [ LANGUAGE <replaceable class="PARAMETER">lang_name</replaceable> ] <replaceable class="PARAMETER">code</replaceable>
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+  <title>Description</title>
+
+  <para>
+   <command>DO</command> executes an anonymous code block, or in other
+   words a transient anonymous function in a procedural language.
+  </para>
+
+  <para>
+   The code block is treated as though it were the body of a function
+   with no parameters, returning <type>void</type>.  It is parsed and
+   executed a single time.
+  </para>
+
+  <para>
+   The optional <literal>LANGUAGE</literal> clause can be written either
+   before or after the code block.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>Parameters</title>
+
+  <variablelist>
+   <varlistentry>
+    <term><replaceable class="PARAMETER">code</replaceable></term>
+    <listitem>
+     <para>
+      The procedural language code to be executed.  This must be specified
+      as a string literal, just as in <command>CREATE FUNCTION</command>.
+      Use of a dollar-quoted literal is recommended.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable class="PARAMETER">lang_name</replaceable></term>
+    <listitem>
+     <para>
+      The name of the procedural language the code is written in.
+      If omitted, the default is <literal>plpgsql</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1>
+  <title>Notes</title>
+
+  <para>
+   The procedural language to be used must already have been installed
+   into the current database by means of <command>CREATE LANGUAGE</command>.
+   <literal>plpgsql</literal> is installed by default, but other languages are not.
+  </para>
+
+  <para>
+   The user must have <literal>USAGE</literal> privilege for the procedural
+   language, or must be a superuser if the language is untrusted.
+   This is the same privilege requirement as for creating a function
+   in the language.
+  </para>
+ </refsect1>
+
+ <refsect1 id="sql-do-examples">
+  <title id="sql-do-examples-title">Examples</title>
+  <para>
+   Grant all privileges on all views in schema <literal>public</literal> to
+   role <literal>webuser</literal>:
+<programlisting>
+DO $$DECLARE r record;
+BEGIN
+    FOR r IN SELECT table_schema, table_name FROM information_schema.tables
+             WHERE table_type = 'VIEW' AND table_schema = 'public'
+    LOOP
+        EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser';
+    END LOOP;
+END$$;
+</programlisting>
+  </para>
+ </refsect1>
+ <refsect1>
+  <title>Compatibility</title>
+
+  <para>
+   There is no <command>DO</command> statement in the SQL standard.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>See Also</title>
+
+  <simplelist type="inline">
+   <member><xref linkend="sql-createlanguage" /></member>
+  </simplelist>
+ </refsect1>
+</refentry>

Modified: traduc/trunk/postgresql/ref/drop_aggregate.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_aggregate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_aggregate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropaggregate">
  <refmeta>
-  <refentrytitle id="sql-dropaggregate-title">DROP AGGREGATE</refentrytitle>
+  <refentrytitle>DROP AGGREGATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -114,8 +114,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteraggregate" endterm="sql-alteraggregate-title"/></member>
-   <member><xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"/></member>
+   <member><xref linkend="sql-alteraggregate"/></member>
+   <member><xref linkend="sql-createaggregate"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_cast.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_cast.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_cast.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropcast">
  <refmeta>
-  <refentrytitle id="sql-dropcast-title">DROP CAST</refentrytitle>
+  <refentrytitle>DROP CAST</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>DROP CAST [ IF EXISTS ] (<replaceable>typesource</replaceable> AS <replaceable>typecible</replaceable>) [ CASCADE | RESTRICT ]
+<synopsis>DROP CAST [ IF EXISTS ] (<replaceable>type_source</replaceable> AS <replaceable>type_cible</replaceable>) [ CASCADE | RESTRICT ]
 </synopsis>
  </refsynopsisdiv>
   
@@ -54,7 +54,7 @@
    </varlistentry>
 
     <varlistentry>
-     <term><replaceable>typesource</replaceable></term>
+     <term><replaceable>type_source</replaceable></term>
 
      <listitem>
       <para>
@@ -64,7 +64,7 @@
     </varlistentry>
 
     <varlistentry>
-     <term><replaceable>typecible</replaceable></term>
+     <term><replaceable>type_cible</replaceable></term>
 
      <listitem>
       <para>
@@ -110,7 +110,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createcast" endterm="sql-createcast-title"/></member>
+   <member><xref linkend="sql-createcast"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_conversion.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_conversion.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_conversion.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropconversion">
  <refmeta>
-  <refentrytitle id="sql-dropconversion-title">DROP CONVERSION</refentrytitle>
+  <refentrytitle>DROP CONVERSION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -95,8 +95,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterconversion" endterm="sql-alterconversion-title"/></member>
-   <member><xref linkend="sql-createconversion" endterm="sql-createconversion-title"/></member>
+   <member><xref linkend="sql-alterconversion"/></member>
+   <member><xref linkend="sql-createconversion"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_database.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_database.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_database.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropdatabase">
  <refmeta>
-  <refentrytitle id="sql-dropdatabase-title">DROP DATABASE</refentrytitle>
+  <refentrytitle>DROP DATABASE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -82,7 +82,7 @@
   <para>
    Cette commande ne peut pas être exécutée en cas de connexion à la base de
    données cible. Il peut paraître plus facile d'utiliser le programme
-   <xref linkend="app-dropdb" endterm="app-dropdb-title"/> à la place, qui est un
+   <xref linkend="app-dropdb"/> à la place, qui est un
    enrobage de cette commande.
   </para>
  </refsect1>
@@ -100,7 +100,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"/></member>
+   <member><xref linkend="sql-createdatabase"/></member>
    <member>Variables d'environnement (<xref linkend="libpq-envars"/>)</member>
   </simplelist>
  </refsect1>

Modified: traduc/trunk/postgresql/ref/drop_domain.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_domain.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_domain.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropdomain">
  <refmeta>
-  <refentrytitle id="sql-dropdomain-title">DROP DOMAIN</refentrytitle>
+  <refentrytitle>DROP DOMAIN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -102,8 +102,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createdomain" endterm="sql-createdomain-title"/></member>
-   <member><xref linkend="sql-alterdomain" endterm="sql-alterdomain-title"/></member>
+   <member><xref linkend="sql-createdomain"/></member>
+   <member><xref linkend="sql-alterdomain"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_foreign_data_wrapper.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_foreign_data_wrapper.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_foreign_data_wrapper.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-dropforeigndatawrapper">
  <refmeta>
-  <refentrytitle id="sql-dropforeigndatawrapper-title">DROP FOREIGN DATA WRAPPER</refentrytitle>
+  <refentrytitle>DROP FOREIGN DATA WRAPPER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -107,8 +107,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createforeigndatawrapper" endterm="sql-createforeigndatawrapper-title"/></member>
-   <member><xref linkend="sql-alterforeigndatawrapper" endterm="sql-alterforeigndatawrapper-title"/></member>
+   <member><xref linkend="sql-createforeigndatawrapper"/></member>
+   <member><xref linkend="sql-alterforeigndatawrapper"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_function.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_function.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_function.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropfunction">
  <refmeta>
-  <refentrytitle id="sql-dropfunction-title">DROP FUNCTION</refentrytitle>
+  <refentrytitle>DROP FUNCTION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -147,8 +147,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createfunction" endterm="sql-createfunction-title"/></member>
-   <member><xref linkend="sql-alterfunction" endterm="sql-alterfunction-title"/></member>
+   <member><xref linkend="sql-createfunction"/></member>
+   <member><xref linkend="sql-alterfunction"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_group.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_group.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_group.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropgroup">
  <refmeta>
-  <refentrytitle id="sql-dropgroup-title">DROP GROUP</refentrytitle>
+  <refentrytitle>DROP GROUP</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -30,7 +30,7 @@
 
   <para>
    <command>DROP GROUP</command> est désormais un alias de
-   <xref linkend="sql-droprole" endterm="sql-droprole-title"/>.
+   <xref linkend="sql-droprole"/>.
   </para>
  </refsect1>
  
@@ -46,7 +46,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
+   <member><xref linkend="sql-droprole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_index.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_index.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_index.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropindex">
  <refmeta>
-  <refentrytitle id="sql-dropindex-title">DROP INDEX</refentrytitle>
+  <refentrytitle>DROP INDEX</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -102,7 +102,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createindex" endterm="sql-createindex-title"/></member>
+   <member><xref linkend="sql-createindex"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_language.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_language.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_language.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droplanguage">
  <refmeta>
-  <refentrytitle id="sql-droplanguage-title">DROP LANGUAGE</refentrytitle>
+  <refentrytitle>DROP LANGUAGE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -103,8 +103,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterlanguage" endterm="sql-alterlanguage-title"/></member>
-   <member><xref linkend="sql-createlanguage" endterm="sql-createlanguage-title"/></member>
+   <member><xref linkend="sql-alterlanguage"/></member>
+   <member><xref linkend="sql-createlanguage"/></member>
    <member><xref linkend="app-droplang"/></member>
   </simplelist>
  </refsect1>

Modified: traduc/trunk/postgresql/ref/drop_opclass.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_opclass.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_opclass.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropopclass">
  <refmeta>
-  <refentrytitle id="sql-dropopclass-title">DROP OPERATOR CLASS</refentrytitle>
+  <refentrytitle>DROP OPERATOR CLASS</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -135,9 +135,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteropclass" endterm="sql-alteropclass-title"/></member>
-   <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"/></member>
-   <member><xref linkend="sql-dropopfamily" endterm="sql-dropopfamily-title"/></member>
+   <member><xref linkend="sql-alteropclass"/></member>
+   <member><xref linkend="sql-createopclass"/></member>
+   <member><xref linkend="sql-dropopfamily"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_operator.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_operator.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_operator.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropoperator">
  <refmeta>
-  <refentrytitle id="sql-dropoperator-title">DROP OPERATOR</refentrytitle>
+  <refentrytitle>DROP OPERATOR</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
   
  <refsynopsisdiv>
-<synopsis>DROP OPERATOR [ IF EXISTS ] <replaceable class="parameter">nom</replaceable> ( { <replaceable class="parameter">typegauche</replaceable> | NONE }, { <replaceable class="parameter">typedroit</replaceable> | NONE } )
+<synopsis>DROP OPERATOR [ IF EXISTS ] <replaceable class="parameter">nom</replaceable> ( { <replaceable class="parameter">type_gauche</replaceable> | NONE }, { <replaceable class="parameter">type_droit</replaceable> | NONE } )
     [ CASCADE | RESTRICT ]
 </synopsis>
  </refsynopsisdiv>
@@ -59,7 +59,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">typegauche</replaceable></term>
+    <term><replaceable class="parameter">type_gauche</replaceable></term>
     <listitem>
      <para>
       Le type de données de l'opérande gauche de l'opérateur&nbsp;; 
@@ -69,7 +69,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">typedroit</replaceable></term>
+    <term><replaceable class="parameter">type_droit</replaceable></term>
     <listitem>
      <para>
       Le type de données de l'opérande droit de l'opérateur&nbsp;; 
@@ -135,8 +135,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createoperator" endterm="sql-createoperator-title"/></member>
-   <member><xref linkend="sql-alteroperator" endterm="sql-alteroperator-title"/></member>
+   <member><xref linkend="sql-createoperator"/></member>
+   <member><xref linkend="sql-alteroperator"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_opfamily.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_opfamily.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_opfamily.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-dropopfamily">
  <refmeta>
-  <refentrytitle id="sql-dropopfamily-title">DROP OPERATOR FAMILY</refentrytitle>
+  <refentrytitle>DROP OPERATOR FAMILY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -128,11 +128,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteropfamily" endterm="sql-alteropfamily-title"/></member>
-   <member><xref linkend="sql-createopfamily" endterm="sql-createopfamily-title"/></member>
-   <member><xref linkend="sql-alteropclass" endterm="sql-alteropclass-title"/></member>
-   <member><xref linkend="sql-createopclass" endterm="sql-createopclass-title"/></member>
-   <member><xref linkend="sql-dropopclass" endterm="sql-dropopclass-title"/></member>
+   <member><xref linkend="sql-alteropfamily"/></member>
+   <member><xref linkend="sql-createopfamily"/></member>
+   <member><xref linkend="sql-alteropclass"/></member>
+   <member><xref linkend="sql-createopclass"/></member>
+   <member><xref linkend="sql-dropopclass"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_owned.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_owned.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_owned.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-drop-owned">
  <refmeta>
-  <refentrytitle id="sql-drop-owned-title">DROP OWNED</refentrytitle>
+  <refentrytitle>DROP OWNED</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -89,10 +89,14 @@
 
   <para>
    La commande <xref linkend="sql-reassign-owned"
-   endterm="sql-reassign-owned-title"/> est une alternative qui ré-affecte la
+  /> est une alternative qui ré-affecte la
    propriété de tous les objets de la base possédés par un ou plusieurs
    rôles.
   </para>
+
+  <para>
+   Databases owned by the role(s) will not be removed.
+  </para>
  </refsect1>
 
  <refsect1>
@@ -108,8 +112,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-reassign-owned" endterm="sql-reassign-owned-title"/></member>
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
+   <member><xref linkend="sql-reassign-owned"/></member>
+   <member><xref linkend="sql-droprole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_role.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_role.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_role.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droprole">
  <refmeta>
-  <refentrytitle id="sql-droprole-title">DROP ROLE</refentrytitle>
+  <refentrytitle>DROP ROLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -41,8 +41,8 @@
    d'une erreur. Avant de supprimer un rôle, il est nécessaire de supprimer
    au préalable tous les objets qu'il possède (ou de modifier leur appartenance)
    et de supprimer tous les droits définis par ce rôle. Les commandes <xref
-   linkend="sql-reassign-owned" endterm="sql-reassign-owned-title"/> et
-   <xref linkend="sql-drop-owned" endterm="sql-drop-owned-title"/> peuvent être
+   linkend="sql-reassign-owned"/> et
+   <xref linkend="sql-drop-owned"/> peuvent être
    utiles pour cela.
   </para>
 
@@ -84,7 +84,7 @@
 
   <para>
    <productname>PostgreSQL</productname> inclut un programme
-   <xref linkend="app-dropuser" endterm="app-dropuser-title"/> qui a la même 
+   <xref linkend="app-dropuser"/> qui a la même 
    fonctionnalité que cette commande (en fait, il appelle cette commande)
    mais qui est lancé à partir du shell.
   </para>
@@ -114,9 +114,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createrole" endterm="sql-createrole-title"/></member>
-   <member><xref linkend="sql-alterrole" endterm="sql-alterrole-title"/></member>
-   <member><xref linkend="sql-set-role" endterm="sql-set-role-title"/></member>
+   <member><xref linkend="sql-createrole"/></member>
+   <member><xref linkend="sql-alterrole"/></member>
+   <member><xref linkend="sql-set-role"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_rule.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_rule.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_rule.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droprule">
  <refmeta>
-  <refentrytitle id="sql-droprule-title">DROP RULE</refentrytitle>
+  <refentrytitle>DROP RULE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>DROP RULE [ IF EXISTS ] <replaceable class="parameter">nom</replaceable> ON <replaceable class="parameter">relation</replaceable> [ CASCADE | RESTRICT ]
+<synopsis>DROP RULE [ IF EXISTS ] <replaceable class="parameter">nom</replaceable> ON <replaceable class="parameter">table</replaceable> [ CASCADE | RESTRICT ]
 </synopsis>
  </refsynopsisdiv>
 
@@ -57,7 +57,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">relation</replaceable></term>
+    <term><replaceable class="parameter">table</replaceable></term>
     <listitem>
      <para>
       Le nom (éventuellement qualifié du nom du schéma) de la table ou vue sur laquelle
@@ -110,7 +110,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createrule" endterm="sql-createrule-title"/></member>
+   <member><xref linkend="sql-createrule"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_schema.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_schema.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_schema.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropschema">
  <refmeta>
-  <refentrytitle id="sql-dropschema-title">DROP SCHEMA</refentrytitle>
+  <refentrytitle>DROP SCHEMA</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -109,8 +109,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterschema" endterm="sql-alterschema-title"/></member>
-   <member><xref linkend="sql-createschema" endterm="sql-createschema-title"/></member>
+   <member><xref linkend="sql-alterschema"/></member>
+   <member><xref linkend="sql-createschema"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_sequence.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_sequence.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_sequence.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropsequence">
  <refmeta>
-  <refentrytitle id="sql-dropsequence-title">DROP SEQUENCE</refentrytitle>
+  <refentrytitle>DROP SEQUENCE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -104,8 +104,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createsequence" endterm="sql-createsequence-title"/></member>
-   <member><xref linkend="sql-altersequence" endterm="sql-altersequence-title"/></member>
+   <member><xref linkend="sql-createsequence"/></member>
+   <member><xref linkend="sql-altersequence"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_server.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_server.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_server.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-dropserver">
  <refmeta>
-  <refentrytitle id="sql-dropserver-title">DROP SERVER</refentrytitle>
+  <refentrytitle>DROP SERVER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -106,8 +106,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createserver" endterm="sql-createserver-title"/></member>
-   <member><xref linkend="sql-alterserver" endterm="sql-alterserver-title"/></member>
+   <member><xref linkend="sql-createserver"/></member>
+   <member><xref linkend="sql-alterserver"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_table.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_table.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_table.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droptable">
  <refmeta>
-  <refentrytitle id="sql-droptable-title">DROP TABLE</refentrytitle>
+  <refentrytitle>DROP TABLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -31,8 +31,8 @@
   <para>
    <command>DROP TABLE</command> supprime des tables de la base de données.
    Seul son propriétaire peut détruire une table. <xref linkend="sql-delete"
-   endterm="sql-delete-title"/> et <xref linkend="sql-truncate"
-   endterm="sql-truncate-title"/> sont utilisées pour supprimer les lignes
+  /> et <xref linkend="sql-truncate"
+  /> sont utilisées pour supprimer les lignes
    d'une table sans détruire la table.
   </para>
 
@@ -117,8 +117,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertable" endterm="sql-altertable-title"/></member>
-   <member><xref linkend="sql-createtable" endterm="sql-createtable-title"/></member>
+   <member><xref linkend="sql-altertable"/></member>
+   <member><xref linkend="sql-createtable"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_tablespace.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_tablespace.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_tablespace.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droptablespace">
  <refmeta>
-  <refentrytitle id="sql-droptablespace-title">DROP TABLESPACE</refentrytitle>
+  <refentrytitle>DROP TABLESPACE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -101,8 +101,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtablespace" endterm="sql-createtablespace-title"/></member>
-   <member><xref linkend="sql-altertablespace" endterm="sql-altertablespace-title"/></member>
+   <member><xref linkend="sql-createtablespace"/></member>
+   <member><xref linkend="sql-altertablespace"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_trigger.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_trigger.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_trigger.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droptrigger">
  <refmeta>
-  <refentrytitle id="sql-droptrigger-title">DROP TRIGGER</refentrytitle>
+  <refentrytitle>DROP TRIGGER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -115,7 +115,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"/></member>
+   <member><xref linkend="sql-createtrigger"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_tsconfig.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_tsconfig.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_tsconfig.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-droptsconfig">
  <refmeta>
-  <refentrytitle id="sql-droptsconfig-title">DROP TEXT SEARCH CONFIGURATION</refentrytitle>
+  <refentrytitle>DROP TEXT SEARCH CONFIGURATION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -114,8 +114,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertsconfig" endterm="sql-altertsconfig-title"/></member>
-   <member><xref linkend="sql-createtsconfig" endterm="sql-createtsconfig-title"/></member>
+   <member><xref linkend="sql-altertsconfig"/></member>
+   <member><xref linkend="sql-createtsconfig"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_tsdictionary.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_tsdictionary.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_tsdictionary.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-droptsdictionary">
  <refmeta>
-  <refentrytitle id="sql-droptsdictionary-title">DROP TEXT SEARCH DICTIONARY</refentrytitle>
+  <refentrytitle>DROP TEXT SEARCH DICTIONARY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -115,8 +115,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertsdictionary" endterm="sql-altertsdictionary-title"/></member>
-   <member><xref linkend="sql-createtsdictionary" endterm="sql-createtsdictionary-title"/></member>
+   <member><xref linkend="sql-altertsdictionary"/></member>
+   <member><xref linkend="sql-createtsdictionary"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_tsparser.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_tsparser.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_tsparser.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-droptsparser">
  <refmeta>
-  <refentrytitle id="sql-droptsparser-title">DROP TEXT SEARCH PARSER</refentrytitle>
+  <refentrytitle>DROP TEXT SEARCH PARSER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -115,8 +115,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertsparser" endterm="sql-altertsparser-title"/></member>
-   <member><xref linkend="sql-createtsparser" endterm="sql-createtsparser-title"/></member>
+   <member><xref linkend="sql-altertsparser"/></member>
+   <member><xref linkend="sql-createtsparser"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_tstemplate.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_tstemplate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_tstemplate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-droptstemplate">
  <refmeta>
-  <refentrytitle id="sql-droptstemplate-title">DROP TEXT SEARCH TEMPLATE</refentrytitle>
+  <refentrytitle>DROP TEXT SEARCH TEMPLATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -114,8 +114,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-altertstemplate" endterm="sql-altertstemplate-title"/></member>
-   <member><xref linkend="sql-createtstemplate" endterm="sql-createtstemplate-title"/></member>
+   <member><xref linkend="sql-altertstemplate"/></member>
+   <member><xref linkend="sql-createtstemplate"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_type.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_type.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_type.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-droptype">
  <refmeta>
-  <refentrytitle id="sql-droptype-title">DROP TYPE</refentrytitle>
+  <refentrytitle>DROP TYPE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -106,8 +106,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createtype" endterm="sql-createtype-title"/></member>
-   <member><xref linkend="sql-altertype" endterm="sql-altertype-title"/></member>
+   <member><xref linkend="sql-createtype"/></member>
+   <member><xref linkend="sql-altertype"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_user.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_user.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_user.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropuser">
  <refmeta>
-  <refentrytitle id="sql-dropuser-title">DROP USER</refentrytitle>
+  <refentrytitle>DROP USER</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -30,7 +30,7 @@
 
   <para>
    <command>DROP USER</command> est désormais un alias de
-   <xref linkend="sql-droprole" endterm="sql-droprole-title"/>.
+   <xref linkend="sql-droprole"/>.
   </para>
  </refsect1>
 
@@ -48,7 +48,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
+   <member><xref linkend="sql-droprole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_user_mapping.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_user_mapping.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_user_mapping.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-dropusermapping">
  <refmeta>
-  <refentrytitle id="sql-dropusermapping-title">DROP USER MAPPING</refentrytitle>
+  <refentrytitle>DROP USER MAPPING</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -108,8 +108,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-createusermapping" endterm="sql-createusermapping-title"/></member>
-   <member><xref linkend="sql-alterusermapping" endterm="sql-alterusermapping-title"/></member>
+   <member><xref linkend="sql-createusermapping"/></member>
+   <member><xref linkend="sql-alterusermapping"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/drop_view.xml
===================================================================
--- traduc/trunk/postgresql/ref/drop_view.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/drop_view.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-dropview">
  <refmeta>
-  <refentrytitle id="sql-dropview-title">DROP VIEW</refentrytitle>
+  <refentrytitle>DROP VIEW</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -101,8 +101,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alterview" endterm="sql-alterview-title"/></member>
-   <member><xref linkend="sql-createview" endterm="sql-createview-title"/></member>
+   <member><xref linkend="sql-alterview"/></member>
+   <member><xref linkend="sql-createview"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/dropdb.xml
===================================================================
--- traduc/trunk/postgresql/ref/dropdb.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/dropdb.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-dropdb">
  <refmeta>
-  <refentrytitle id="app-dropdb-title"><application>dropdb</application></refentrytitle>
+  <refentrytitle><application>dropdb</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -21,6 +21,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>dropdb</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
    <arg choice="plain"><replaceable>nom_bd</replaceable></arg>
   </cmdsynopsis>
@@ -43,7 +44,7 @@
   <para>
    <application>dropdb</application> est un enrobage de la commande
    <acronym>SQL</acronym> 
-   <xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/>.
+   <xref linkend="sql-dropdatabase"/>.
    Il n'y a aucune différence réelle entre
    la suppression de bases de données avec cet outil et celles qui utilisent d'autres méthodes 
    d'accès au serveur.
@@ -89,6 +90,27 @@
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>dropdb</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>dropdb</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
     </variablelist>
   </para>
 
@@ -200,7 +222,7 @@
 
   <para>
    En cas de difficultés, il peut être utile de consulter
-   <xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/> et
+   <xref linkend="sql-dropdatabase"/> et
    <xref linkend="app-psql"/>, sections présentant
    les problèmes éventuels et les messages d'erreur.
   </para>
@@ -242,7 +264,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="app-createdb"/></member>
-   <member><xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"/></member>
+   <member><xref linkend="sql-dropdatabase"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/droplang.xml
===================================================================
--- traduc/trunk/postgresql/ref/droplang.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/droplang.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-droplang">
  <refmeta>
-  <refentrytitle id="app-droplang-title"><application>droplang</application></refentrytitle>
+  <refentrytitle><application>droplang</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -50,7 +50,7 @@
    directement à l'aide de quelques commandes <acronym>SQL</acronym>, il est
    recommandé d'utiliser <application>droplang</application>. Non seulement, il réalise
    quelques vérifications, mais il est aussi plus simple à utiliser. Voir
-   <xref linkend="sql-droplanguage" endterm="sql-droplanguage-title"/> pour plus
+   <xref linkend="sql-droplanguage"/> pour plus
    d'informations.
   </para>
  </refsect1>
@@ -107,6 +107,27 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>droplang</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>droplang</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
     </variablelist>
    </para>
 
@@ -252,7 +273,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="app-createlang"/></member>
-   <member><xref linkend="sql-droplanguage" endterm="sql-droplanguage-title"/></member>
+   <member><xref linkend="sql-droplanguage"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/dropuser.xml
===================================================================
--- traduc/trunk/postgresql/ref/dropuser.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/dropuser.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-dropuser">
  <refmeta>
-  <refentrytitle id="app-dropuser-title"><application>dropuser</application></refentrytitle>
+  <refentrytitle><application>dropuser</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -21,6 +21,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>dropuser</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
    <arg><replaceable>nomutilisateur</replaceable></arg>
   </cmdsynopsis>
@@ -43,7 +44,7 @@
   <para>
    <application>dropuser</application> est un enrobage de la commande
    <acronym>SQL</acronym>
-   <xref linkend="sql-droprole" endterm="sql-droprole-title"/>.
+   <xref linkend="sql-droprole"/>.
    Il n'y a pas de différence réelle entre la
    suppression des utilisateurs à l'aide de cet outil ou à l'aide d'autres méthodes d'accès
    au serveur.
@@ -91,6 +92,27 @@
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>dropuser</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>dropuser</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
     </variablelist>
   </para>
 
@@ -203,7 +225,7 @@
 
   <para>
    En cas de difficultés, il peut être utile de consulter
-   <xref linkend="sql-droprole" endterm="sql-droprole-title"/> et <xref linkend="app-psql"/>,
+   <xref linkend="sql-droprole"/> et <xref linkend="app-psql"/>,
    sections présentant
    les problèmes éventuels et les messages d'erreur.
   </para>
@@ -245,7 +267,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="app-createuser"/></member>
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
+   <member><xref linkend="sql-droprole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/ecpg-ref.xml
===================================================================
--- traduc/trunk/postgresql/ref/ecpg-ref.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/ecpg-ref.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -165,19 +165,20 @@
     </varlistentry>
 
     <varlistentry>
-     <term><option>--help</option></term>
+     <term><option>--version</option></term>
      <listitem>
       <para>
-       Affiche un bref résumé de l'utilisation de la commande et quitte.
+       Affiche la version de <application>ecpg</application> et quitte.
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term><option>--version</option></term>
+     <term><option>--help</option></term>
      <listitem>
       <para>
-       Affiche la version et quitte.
+       Affiche l'aide sur les arguments en ligne de commande de
+       <application>ecpg</application> et quitte.
       </para>
      </listitem>
     </varlistentry>

Modified: traduc/trunk/postgresql/ref/end.xml
===================================================================
--- traduc/trunk/postgresql/ref/end.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/end.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-end">
  <refmeta>
-  <refentrytitle id="sql-end-title">END</refentrytitle>
+  <refentrytitle>END</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -34,7 +34,7 @@
    utilisateurs et il est garanti que les données ne seront pas perdues si 
    un arrêt brutal survient. Cette commande est
    une extension <productname>PostgreSQL</productname> équivalente à 
-   <xref linkend="sql-commit" endterm="sql-commit-title"/>.
+   <xref linkend="sql-commit"/>.
   </para>
  </refsect1>
   
@@ -58,7 +58,7 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-rollback" endterm="sql-rollback-title"/> est utilisé pour
+   <xref linkend="sql-rollback"/> est utilisé pour
    annuler une transaction.
   </para>
 
@@ -85,7 +85,7 @@
   <para>
    <command>END</command> est une extension
    <productname>PostgreSQL</productname> fournissant une fonctionnalité
-   équivalente à <xref linkend="sql-commit" endterm="sql-commit-title"/>, 
+   équivalente à <xref linkend="sql-commit"/>, 
    spécifié dans le standard SQL.
   </para>
  </refsect1>
@@ -94,9 +94,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-rollback"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/execute.xml
===================================================================
--- traduc/trunk/postgresql/ref/execute.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/execute.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-execute">
  <refmeta>
-  <refentrytitle id="sql-execute-title">EXECUTE</refentrytitle>
+  <refentrytitle>EXECUTE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -55,7 +55,7 @@
   <para>
    Pour plus d'informations sur la création et sur l'utilisation des
    instructions préparées, voir
-   <xref linkend="sql-prepare" endterm="sql-prepare-title"/>.
+   <xref linkend="sql-prepare"/>.
   </para>
  </refsect1>
 
@@ -98,8 +98,8 @@
   <title>Exemples</title>
   <para>
     Des exemples sont donnés dans la section
-	<xref linkend="sql-prepare-examples" endterm="sql-prepare-examples-title"/> de la
-    documentation de <xref linkend="sql-prepare" endterm="sql-prepare-title"/>.
+	<xref linkend="sql-prepare-examples"/> de la
+    documentation de <xref linkend="sql-prepare"/>.
    </para>
  </refsect1>
 
@@ -117,8 +117,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-deallocate" endterm="sql-deallocate-title"/></member>
-   <member><xref linkend="sql-prepare" endterm="sql-prepare-title"/></member>
+   <member><xref linkend="sql-deallocate"/></member>
+   <member><xref linkend="sql-prepare"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/explain.xml
===================================================================
--- traduc/trunk/postgresql/ref/explain.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/explain.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-explain">
  <refmeta>
-  <refentrytitle id="sql-explain-title">EXPLAIN</refentrytitle>
+  <refentrytitle>EXPLAIN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,8 +18,8 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>EXPLAIN [ ANALYZE ] [ VERBOSE ] <replaceable
-class="parameter">instruction</replaceable>
+<synopsis>EXPLAIN [ ( { ANALYZE <replaceable class="parameter">boolean</replaceable> | VERBOSE <replaceable class="parameter">boolean</replaceable> | COSTS <replaceable class="parameter">boolean</replaceable> | BUFFERS <replaceable class="parameter">boolean</replaceable> | FORMAT { TEXT | XML | JSON | YAML } } [, ...] ) ] <replaceable class="parameter">instruction</replaceable>
+EXPLAIN [ ANALYZE ] [ VERBOSE ] <replaceable class="parameter">instruction</replaceable>
 </synopsis>
  </refsynopsisdiv>
 
@@ -91,6 +91,14 @@
 ROLLBACK;
 </programlisting>
    </para>
+
+  <para>
+   Only the <literal>ANALYZE</literal> and <literal>VERBOSE</literal> options
+   can be specified, and only in that order, without surrounding the option
+   list in parentheses.  Prior to <productname>PostgreSQL</productname> 9.0,
+   the unparenthesized syntax was the only one supported.  It is expected that
+   all new options will be supported only in the parenthesized syntax.
+  </para>
   </important>
  </refsect1>
 
@@ -102,7 +110,8 @@
     <term><literal>ANALYZE</literal></term>
     <listitem>
      <para>
-      Exécute la commande et affiche les temps d'exécution réels.
+      Exécute la commande et affiche les temps d'exécution réels. This
+      parameter defaults to <literal>FALSE</literal>.
      </para>
     </listitem>
    </varlistentry>
@@ -111,13 +120,72 @@
     <term><literal>VERBOSE</literal></term>
     <listitem>
      <para>
-      Inclut la liste des colonnes en sortie pour chaque n&oelig;ud de l'arbre
-      du plan.
+      Display additional information regarding the plan.  Specifically, include
+      the output column list for each node in the plan tree, schema-qualify
+      table and function names, always label variables in expressions with
+      their range table alias, and always print the name of each trigger for
+      which statistics are displayed.  This parameter defaults to
+      <literal>FALSE</literal>.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
+    <term><literal>COSTS</literal></term>
+    <listitem>
+     <para>
+      Include information on the estimated startup and total cost of each
+      plan node, as well as the estimated number of rows and the estimated
+      width of each row.  This parameter defaults to <literal>TRUE</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>BUFFERS</literal></term>
+    <listitem>
+     <para>
+      Include information on buffer usage. Specifically, include the number of
+      shared blocks hits, reads, and writes, the number of local blocks hits,
+      reads, and writes, and the number of temp blocks reads and writes.
+      Shared blocks, local blocks, and temp blocks contain tables and indexes,
+      temporary tables and temporary indexes, and disk blocks used in sort and
+      materialized plans, respectively. The number of blocks shown for an
+      upper-level node includes those used by all its child nodes.  In text
+      format, only non-zero values are printed.  This parameter may only be
+      used with <literal>ANALYZE</literal> parameter.  It defaults to
+      <literal>FALSE</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>FORMAT</literal></term>
+    <listitem>
+     <para>
+      Specify the output format, which can be TEXT, XML, JSON, or YAML.
+      Non-text output contains the same information as the text output
+      format, but is easier for programs to parse.  This parameter defaults to
+      <literal>TEXT</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable class="parameter">boolean</replaceable></term>
+    <listitem>
+     <para>
+      Specifies whether the selected option should be turned on or off.
+      You can write <literal>TRUE</literal>, <literal>ON</literal>, or
+      <literal>1</literal> to enable the option, and <literal>FALSE</literal>,
+      <literal>OFF</literal>, or <literal>0</literal> to disable it.  The
+      <replaceable class="parameter">boolean</replaceable> value can also
+      be omitted, in which case <literal>TRUE</literal> is assumed.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term><replaceable class="parameter">instruction</replaceable></term>
     <listitem>
      <para>
@@ -143,7 +211,7 @@
   <para>
    Pour que le planificateur de requêtes de <productname>PostgreSQL</productname>
    puisse prendre des décisions en connaissance de cause, l'instruction
-   <xref linkend="sql-analyze" endterm="sql-analyze-title"/> doit avoir été exécutée afin d'enregistrer 
+   <xref linkend="sql-analyze"/> doit avoir été exécutée afin d'enregistrer 
    les statistiques de distribution des données dans la table.
    Si cela n'a pas été fait, (ou si la distribution statistique des
    données dans la table a changé de manière significative depuis
@@ -153,14 +221,6 @@
   </para>
 
   <para>
-   L'optimiseur génétique de requêtes (<acronym>GEQO</acronym>) teste des
-   plans d'exécution au hasard. Ainsi, quand le nombre de relations de jointures est supérieur
-   <xref linkend="guc-geqo-threshold"/>, ce qui implique son utilisation, 
-   le plan d'exécution risque d'être différent à chaque exécution
-   de la requête.
-  </para>
-
-  <para>
    Pour mesurer le coût d'exécution du plan d'exécution, l'implémentation
    actuelle de <command>EXPLAIN ANALYZE</command> peut ajouter un délai
    considérable à l'exécution de la requête à cause du profilage. De ce fait,
@@ -202,6 +262,20 @@
   </para>
 
   <para>
+   Here is the same plan with costs suppressed:
+
+<programlisting>
+EXPLAIN (COSTS FALSE) SELECT * FROM foo WHERE i = 4;
+
+        QUERY PLAN
+----------------------------
+ Index Scan using fi on foo
+   Index Cond: (i = 4)
+(2 rows)
+</programlisting>
+  </para>
+
+  <para>
    Exemple de plan de requête pour une requête utilisant une
    fonction d'agrégat&nbsp;:
 
@@ -262,7 +336,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-analyze" endterm="sql-analyze-title"/></member>
+   <member><xref linkend="sql-analyze"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/fetch.xml
===================================================================
--- traduc/trunk/postgresql/ref/fetch.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/fetch.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-fetch">
  <refmeta>
-  <refentrytitle id="sql-fetch-title">FETCH</refentrytitle>
+  <refentrytitle>FETCH</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,9 +18,9 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>FETCH [ <replaceable class="parameter">direction</replaceable> { FROM | IN } ] <replaceable class="parameter">nomcurseur</replaceable>
+<synopsis>FETCH [ <replaceable class="parameter">direction</replaceable> [ FROM | IN ] ] <replaceable class="parameter">nom_curseur</replaceable>
 
-où <replaceable class="parameter">direction</replaceable> peut être vide ou être&nbsp;:
+<phrase>où <replaceable class="parameter">direction</replaceable> peut être vide ou être&nbsp;:</phrase>
 
     NEXT
     PRIOR
@@ -276,7 +276,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">nomcurseur</replaceable></term>
+    <term><replaceable class="parameter">nom_curseur</replaceable></term>
     <listitem>
      <para>
       Le nom d'un curseur ouvert.
@@ -329,8 +329,8 @@
   </para>
 
   <para>
-   <xref linkend="sql-declare" endterm="sql-declare-title"/> est utilisé pour
-   définir un curseur. <xref linkend="sql-move" endterm="sql-move-title"/> est utilisé pour
+   <xref linkend="sql-declare"/> est utilisé pour
+   définir un curseur. <xref linkend="sql-move"/> est utilisé pour
    modifier la position du curseur sans récupérer les données.
   </para>
  </refsect1>
@@ -393,7 +393,7 @@
 
   <para>
    Le standard SQL n'autorise que <literal>FROM</literal> devant le nom du
-   curseur&nbsp;; la possibilité d'utiliser <literal>IN</literal> est une extension.
+   curseur&nbsp;; la possibilité d'utiliser <literal>IN</literal>, or to leave them out altogether, est une extension.
   </para>
  </refsect1>
 
@@ -401,9 +401,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-close" endterm="sql-close-title"/></member>
-   <member><xref linkend="sql-declare" endterm="sql-declare-title"/></member>
-   <member><xref linkend="sql-move" endterm="sql-move-title"/></member>
+   <member><xref linkend="sql-close"/></member>
+   <member><xref linkend="sql-declare"/></member>
+   <member><xref linkend="sql-move"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/grant.xml
===================================================================
--- traduc/trunk/postgresql/ref/grant.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/grant.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -20,48 +20,55 @@
  <refsynopsisdiv>
 <synopsis>GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
     [,...] | ALL [ PRIVILEGES ] }
-    ON [ TABLE ] <replaceable class="PARAMETER">nomtable</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON { [ TABLE ] <replaceable class="PARAMETER">nom_table</replaceable> [, ...]
+         | ALL TABLES IN SCHEMA <replaceable class="PARAMETER">nom_schéma</replaceable> [, ...] }
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
-GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="PARAMETER">colonne</replaceable> [, ...] )
-    [,...] | ALL [ PRIVILEGES ] ( <replaceable class="PARAMETER">colonne</replaceable> [, ...] ) }
-    ON [ TABLE ] <replaceable class="parameter">nomtable</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="PARAMETER">nom_colonne</replaceable> [, ...] )
+    [,...] | ALL [ PRIVILEGES ] ( <replaceable class="PARAMETER">nom_colonne</replaceable> [, ...] ) }
+    ON [ TABLE ] <replaceable class="PARAMETER">nom_table</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { { USAGE | SELECT | UPDATE }
     [,...] | ALL [ PRIVILEGES ] }
-    ON SEQUENCE <replaceable class="parameter">nomséquence</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON { SEQUENCE <replaceable class="PARAMETER">nom_séquence</replaceable> [, ...]
+         | ALL SEQUENCES IN SCHEMA <replaceable class="PARAMETER">nom_schéma</replaceable> [, ...] }
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
-    ON DATABASE <replaceable>nombase</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON DATABASE <replaceable>nom_base</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
-    ON FOREIGN DATA WRAPPER <replaceable>nomfdw</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON FOREIGN DATA WRAPPER <replaceable>nom_fdw</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
-    ON FOREIGN SERVER <replaceable>nomserveur</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON FOREIGN SERVER <replaceable>nom_serveur</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { EXECUTE | ALL [ PRIVILEGES ] }
-    ON FUNCTION <replaceable>nomfonction</replaceable> ( [ [ <replaceable class="parameter">modearg</replaceable> ] [ <replaceable class="parameter">nomarg</replaceable> ] <replaceable class="parameter">typearg</replaceable> [, ...] ] ) [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON { FUNCTION <replaceable>nom_fonction</replaceable> ( [ [ <replaceable class="parameter">mode_arg</replaceable> ] [ <replaceable class="parameter">nom_arg</replaceable> ] <replaceable class="parameter">type_arg</replaceable> [, ...] ] ) [, ...]
+         | ALL FUNCTIONS IN SCHEMA <replaceable class="PARAMETER">nom_schéma</replaceable> [, ...] }
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
-    ON LANGUAGE <replaceable>nomlangage</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON LANGUAGE <replaceable>nom_lang</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
+GRANT { { SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] }
+    ON LARGE OBJECT <replaceable class="PARAMETER">loid</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
 GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
-    ON SCHEMA <replaceable>nomschéma</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON SCHEMA <replaceable>nom_schéma</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
 GRANT { CREATE | ALL [ PRIVILEGES ] }
-    ON TABLESPACE <replaceable>nomespacelogique</replaceable> [, ...]
-    TO { [ GROUP ] <replaceable class="PARAMETER">nomrole</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+    ON TABLESPACE <replaceable>tablespace_name</replaceable> [, ...]
+    TO { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
-GRANT <replaceable class="PARAMETER">role</replaceable> [, ...] TO <replaceable class="PARAMETER">nomrole</replaceable> [, ...] [ WITH ADMIN OPTION ]
+GRANT <replaceable class="PARAMETER">nom_rôle</replaceable> [, ...] TO <replaceable class="PARAMETER">nom_rôle</replaceable> [, ...] [ WITH ADMIN OPTION ]
 </synopsis>
  </refsynopsisdiv>
 
@@ -81,15 +88,6 @@
    décrites séparément.
   </para>
 
-  <para>
-   À partir de <productname>PostgreSQL</productname> 8.1, les concepts
-   d'utilisateurs et de groupes ont été unifiés en un seul type d'entité appelé
-   rôle. Il n'est ainsi plus nécessaire d'utiliser le mot clé 
-   <literal>GROUP</literal> pour préciser si celui à qui le droit est donné est un
-   utilisateur ou un groupe. <literal>GROUP</literal> est toujours accepté dans la
-   commande, mais est devenu inutile.
-  </para>
-
  <refsect2 id="sql-grant-description-objects">
   <title>GRANT sur les objets de la base de données</title>
 
@@ -100,6 +98,13 @@
   </para>
 
   <para>
+   There is also an option to grant privileges on all objects of the same
+   type within one or more schemas.  This functionality is currently supported
+   only for tables, sequences, and functions (but note that <literal>ALL
+   TABLES</literal> is considered to include views).
+  </para>
+
+  <para>
    Le mot clé <literal>PUBLIC</literal> indique que les droits sont donnés à
    tous les rôles, y compris ceux créés ultérieurement.
    <literal>PUBLIC</literal> peut être vu comme un groupe implicitement
@@ -120,14 +125,19 @@
    Il n'est pas nécessaire d'accorder des droits au propriétaire d'un objet
    (habituellement l'utilisateur qui l'a créé) car, par défaut, le propriétaire possède tous les
    droits. (Le propriétaire peut toutefois choisir de révoquer
-   certains de ses propres droits.) Le droit de supprimer un objet ou de
-   modifier sa définition n'est pas décrit par un droit transmissible&nbsp;;
-   il est inhérent au propriétaire et ne peut être ni donné ni
-   enlevé. Le propriétaire possède également toutes les options de transmission de droits
-   sur cet objet.
+   certains de ses propres droits.)
   </para>
 
   <para>
+   The right to drop an object, or to alter its definition in any way, is
+   not treated as a grantable privilege; it is inherent in the owner,
+   and cannot be granted or revoked.  (However, a similar effect can be
+   obtained by granting or revoking membership in the role that owns
+   the object; see below.)  The owner implicitly has all grant
+   options for the object, too.
+  </para>
+
+  <para>
    En fonction du type de l'objet, les privilèges initiaux par défaut peuvent inclure
    la transmission de certains privilèges à <literal>PUBLIC</literal>. Par
    défaut, aucun accès public n'est accordé sur les tables, colonnes, schémas et tablespaces&nbsp;;
@@ -139,6 +149,9 @@
    <command>REVOKE</command> est lancé dans la même transaction que la création de l'objet&nbsp;;
    ainsi, il n'y a pas de laps de temps pendant lequel un autre utilisateur 
    peut utiliser l'objet.)
+   Also, these initial default privilege settings can be changed using the
+   <xref linkend="sql-alterdefaultprivileges"/>
+   command.
   </para>
 
   <para>
@@ -149,15 +162,16 @@
      <term>SELECT</term>
      <listitem>
       <para>
-       Autorise <xref linkend="sql-select" endterm="sql-select-title"/> sur
+       Autorise <xref linkend="sql-select"/> sur
        toutes les colonnes, ou sur les colonnes listées spécifiquement, de
        la table, vue ou séquence indiquée. Autorise aussi l'utilisation de
-       <xref linkend="sql-copy" endterm="sql-copy-title"/> TO.
+       <xref linkend="sql-copy"/> TO.
        De plus, ce droit est nécessaire pour référencer des valeurs de colonnes
-       existantes avec <xref linkend="sql-update" endterm="sql-update-title"/>
-       ou <xref linkend="sql-delete" endterm="sql-delete-title"/>.
+       existantes avec <xref linkend="sql-update"/>
+       ou <xref linkend="sql-delete"/>.
        Pour les séquences, ce droit autorise aussi l'utilisation de la
        fonction <function>currval</function>.
+       For large objects, this privilege allows the object to be read.
       </para>
      </listitem>
     </varlistentry>
@@ -166,12 +180,12 @@
      <term>INSERT</term>
      <listitem>
       <para>
-       Autorise <xref linkend="sql-insert" endterm="sql-insert-title"/> d'une
+       Autorise <xref linkend="sql-insert"/> d'une
        nouvelle ligne dans la table indiquée. Si des colonnes spécifiques sont
        listées, seules ces colonnes peuvent être affectées dans une commande
        <command>INSERT</command>, (les autres colonnes recevront par conséquent
        des valeurs par défaut).
-       Autorise aussi <xref linkend="sql-copy" endterm="sql-copy-title"/> FROM.
+       Autorise aussi <xref linkend="sql-copy"/> FROM.
       </para>
      </listitem>
     </varlistentry>
@@ -180,7 +194,7 @@
      <term>UPDATE</term>
      <listitem>
       <para>
-       Autorise <xref linkend="sql-update" endterm="sql-update-title"/> sur toute
+       Autorise <xref linkend="sql-update"/> sur toute
        colonne de la table spécifiée, ou sur les colonnes spécifiquement listées.
        (En fait, toute commande <command>UPDATE</command> non triviale nécessite
        aussi le droit <literal>SELECT</literal> car elle doit référencer les
@@ -190,6 +204,8 @@
        sur au moins une colonne en plus du droit <literal>SELECT</literal>.
        Pour les séquences, ce droit autorise l'utilisation des fonctions
        <function>nextval</function> et <function>setval</function>.
+       For large objects, this privilege allows writing or truncating the
+       object.
       </para>
      </listitem>
     </varlistentry>
@@ -198,7 +214,7 @@
      <term>DELETE</term>
      <listitem>
       <para>
-       Autorise <xref linkend="sql-delete" endterm="sql-delete-title"/> d'une
+       Autorise <xref linkend="sql-delete"/> d'une
        ligne sur la table indiquée. (En fait, toute commande
        <command>DELETE</command> non triviale nécessite aussi le droit
        <literal>SELECT</literal> car elle doit référencer les colonnes pour
@@ -211,7 +227,7 @@
      <term>TRUNCATE</term>
      <listitem>
       <para>
-       Autorise <xref linkend="sql-truncate" endterm="sql-truncate-title"/> 
+       Autorise <xref linkend="sql-truncate"/> 
        sur la table indiquée.
       </para>
      </listitem>
@@ -234,7 +250,7 @@
      <listitem>
       <para>
        Autorise la création d'un déclencheur sur la table indiquée. (Voir
-       l'instruction <xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"/>.)
+       l'instruction <xref linkend="sql-createtrigger"/>.)
       </para>
      </listitem>
     </varlistentry>
@@ -379,11 +395,19 @@
   <title>Notes</title>
 
    <para>
-    La commande <xref linkend="sql-revoke" endterm="sql-revoke-title"/> est
+    La commande <xref linkend="sql-revoke"/> est
     utilisée pour retirer les droits d'accès.
    </para>
 
    <para>
+    Since <productname>PostgreSQL</productname> 8.1, the concepts of users and
+    groups have been unified into a single kind of entity called a role.
+    It is therefore no longer necessary to use the keyword <literal>GROUP</literal>
+    to identify whether a grantee is a user or a group.  <literal>GROUP</literal>
+    is still allowed in the command, but it is a noise word.
+   </para>
+
+   <para>
     Un utilisateur peut exécuter des <command>SELECT</command>,
     <command>INSERT</command>, etc. sur une colonne si il a le privilège soit sur
     cette colonne spécifique, soit sur la table entière. Donner un privilège de
@@ -515,6 +539,11 @@
    <literal>{=,miriam=arwdDxt/miriam}</literal>) puis les modifie en fonction de la requête
    spécifiée. Les entrées sont affichées en <quote>Privilèges d'accès aux colonnes</quote>
    seulement pour les colonnes qui ont des privilèges différents de ceux par défaut.
+    (Note: for this purpose, <quote>default privileges</quote> always means the
+    built-in default privileges for the object's type.  An object whose
+    privileges have been affected by an <command>ALTER DEFAULT PRIVILEGES</command>
+    command will always be shown with an explicit privilege entry that
+    includes the effects of the <command>ALTER</command>.)
    </para>
 
    <para>
@@ -596,9 +625,10 @@
  <refsect1>
   <title>Voir aussi</title>
 
-  <simpara>
-   <xref linkend="sql-revoke" endterm="sql-revoke-title"/>
-  </simpara>
+  <simplelist type="inline">
+   <member><xref linkend="sql-revoke"/></member>
+   <member><xref linkend="sql-alterdefaultprivileges"/></member>
+  </simplelist>
  </refsect1>
 
 </refentry>

Modified: traduc/trunk/postgresql/ref/initdb.xml
===================================================================
--- traduc/trunk/postgresql/ref/initdb.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/initdb.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-initdb">
  <refmeta>
-  <refentrytitle id="app-initdb-title">initdb</refentrytitle>
+  <refentrytitle>initdb</refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -299,6 +299,27 @@
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>initdb</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>initdb</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
     </variablelist>
    </para>
 
@@ -329,6 +350,15 @@
  </refsect1>
 
  <refsect1>
+  <title>Notes</title>
+
+  <para>
+   <command>initdb</command> can also be invoked via
+   <command>pg_ctl initdb</command>.
+  </para>
+ </refsect1>
+
+ <refsect1>
   <title>Voir aussi</title>
 
   <simplelist type="inline">

Modified: traduc/trunk/postgresql/ref/insert.xml
===================================================================
--- traduc/trunk/postgresql/ref/insert.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/insert.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-insert">
  <refmeta>
-  <refentrytitle id="sql-insert-title">INSERT</refentrytitle>
+  <refentrytitle>INSERT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -143,7 +143,7 @@
      <para>
       Une requête (instruction <command>SELECT</command>) dont le résultat fournit les
       lignes à insérer. La syntaxe complète de la commande est décrite dans la documentation de
-      l'instruction <xref linkend="sql-select" endterm="sql-select-title"/>.
+      l'instruction <xref linkend="sql-select"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -287,7 +287,7 @@
 
   <para>
    Les limitations possibles de la clause <replaceable class="parameter">requête</replaceable>
-   sont documentées sous <xref linkend="sql-select" endterm="sql-select-title"/>.
+   sont documentées sous <xref linkend="sql-select"/>.
   </para>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/listen.xml
===================================================================
--- traduc/trunk/postgresql/ref/listen.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/listen.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-listen">
  <refmeta>
-  <refentrytitle id="sql-listen-title">LISTEN</refentrytitle>
+  <refentrytitle>LISTEN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>LISTEN <replaceable class="parameter">nom</replaceable>
+<synopsis>LISTEN <replaceable class="parameter">canal</replaceable>
 </synopsis>
  </refsynopsisdiv>
 
@@ -30,22 +30,22 @@
 
   <para>
    <command>LISTEN</command> enregistre la session courante comme 
-   listener de la condition de notification <replaceable class="parameter">nom</replaceable>.
-   Si la session courante est déjà enregistrée comme listener de cette condition de notification,
+   listener du canal de notification <replaceable class="parameter">canal</replaceable>.
+   Si la session courante est déjà enregistrée comme listener de ce canal de notification,
    il ne se passe rien de plus.
   </para>
 
   <para>
    À chaque appel de la commande
-   <command>NOTIFY <replaceable class="parameter">nom</replaceable></command>,
+   <command>NOTIFY <replaceable class="parameter">canal</replaceable></command>,
    que ce soit par cette session ou par une autre connectée à la même base de données, toutes les
-   sessions attendant cette condition en sont avisées
+   sessions attendant sur ce canal en sont avisées
    et chacune en avise en retour son client. Voir <command>NOTIFY</command> pour plus d'informations.
   </para>
 
   <para>
    La commande <command>UNLISTEN</command> permet d'annuler l'enregistrement d'une session comme
-   listener d'une condition de notification. Les enregistrements d'écoute d'une
+   listener d'un canal de notification. Les enregistrements d'écoute d'une
    session sont automatiquement effacés lorsque la session se termine.
   </para>
 
@@ -65,7 +65,7 @@
   </para>
 
   <para>
-   <xref linkend="sql-notify" endterm="sql-notify-title"/> décrit
+   <xref linkend="sql-notify"/> décrit
    plus en détails l'utilisation de <command>LISTEN</command> et
    <command>NOTIFY</command>.
   </para>
@@ -76,10 +76,10 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nom</replaceable></term>
+    <term><replaceable class="parameter">canal</replaceable></term>
     <listitem>
      <para>
-      Le nom d'une condition de notification (tout identifiant).
+      Le nom d'un canal de notification (tout identifiant).
      </para>
     </listitem>
    </varlistentry>
@@ -87,6 +87,21 @@
  </refsect1>
 
  <refsect1>
+  <title>Notes</title>
+
+  <para>
+   <command>LISTEN</command> takes effect at transaction commit.
+   If <command>LISTEN</command> or <command>UNLISTEN</command> is executed
+   within a transaction that later rolls back, the set of notification
+   channels being listened to is unchanged.
+  </para>
+  <para>
+   A transaction that has executed <command>LISTEN</command> cannot be
+   prepared for two-phase commit.
+  </para>
+ </refsect1>
+
+ <refsect1>
   <title>Exemples</title>
 
   <para>
@@ -112,8 +127,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-notify" endterm="sql-notify-title"/></member>
-   <member><xref linkend="sql-unlisten" endterm="sql-unlisten-title"/></member>
+   <member><xref linkend="sql-notify"/></member>
+   <member><xref linkend="sql-unlisten"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/load.xml
===================================================================
--- traduc/trunk/postgresql/ref/load.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/load.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-load">
  <refmeta>
-  <refentrytitle id="sql-load-title">LOAD</refentrytitle>
+  <refentrytitle>LOAD</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -42,7 +42,7 @@
   <para>
    Le nom du fichier est indiqué de la même façon que pour les noms de
    bibliothèques partagées dans
-   <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>&nbsp;; 
+   <xref linkend="sql-createfunction"/>&nbsp;; 
    il est, en particulier, possible d'utiliser un chemin de recherche
    et l'ajout automatique de l'extension de la bibliothèque partagée, suivant les standards système. 
    Voir <xref linkend="xfunc-c"/> pour plus d'informations sur ce thème.
@@ -76,7 +76,7 @@
   <title>Voir aussi</title>
 
   <para>
-   <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>
+   <xref linkend="sql-createfunction"/>
   </para>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/lock.xml
===================================================================
--- traduc/trunk/postgresql/ref/lock.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/lock.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-lock">
  <refmeta>
-  <refentrytitle id="sql-lock-title">LOCK</refentrytitle>
+  <refentrytitle>LOCK</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,7 @@
  <refsynopsisdiv>
 <synopsis>LOCK [ TABLE ] [ ONLY ] <replaceable class="parameter">nom</replaceable> [, ...] [ IN <replaceable class="parameter">mode_verrou</replaceable> MODE ] [ NOWAIT ]
 
-où <replaceable class="parameter">mode_verrou</replaceable> peut être&nbsp;:
+<phrase>où <replaceable class="parameter">mode_verrou</replaceable> peut être&nbsp;:</phrase>
 
     ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE
 </synopsis>
@@ -170,9 +170,9 @@
     transaction&nbsp;: le verrou est détenu jusqu'à la fin de l'instruction.
     Du coup, <productname>PostgreSQL</productname> renvoie une erreur si
     <command>LOCK</command> est utilisé en dehors d'un bloc de transaction.
-    Utilisez <xref linkend="sql-begin" endterm="sql-begin-title"/> et
-    <xref linkend="sql-commit" endterm="sql-commit-title"/>
-    (ou <xref linkend="sql-rollback" endterm="sql-rollback-title"/>) pour
+    Utilisez <xref linkend="sql-begin"/> et
+    <xref linkend="sql-commit"/>
+    (ou <xref linkend="sql-rollback"/>) pour
     définir un bloc de transaction.
    </para>
 
@@ -187,7 +187,7 @@
    ils ne diffèrent que dans les règles de conflit entre les modes. Pour des
    informations sur la façon d'acquérir un vrai verrou de niveau ligne, voir
    <xref linkend="locking-rows"/> et
-   <xref linkend="sql-for-update-share" endterm="sql-for-update-share-title"/>
+   <xref linkend="sql-for-update-share"/>
    dans la documentation de référence de <command>SELECT</command>.
   </para>
  </refsect1>
@@ -233,7 +233,7 @@
    place, il utilise <command>SET TRANSACTION</command> pour spécifier les niveaux
    de concurrence entre transactions. <productname>PostgreSQL</productname> en
    dispose également&nbsp;; voir
-   <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"/> pour les détails.
+   <xref linkend="sql-set-transaction"/> pour les détails.
   </para>
 
   <para>

Modified: traduc/trunk/postgresql/ref/move.xml
===================================================================
--- traduc/trunk/postgresql/ref/move.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/move.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-move">
  <refmeta>
-  <refentrytitle id="sql-move-title">MOVE</refentrytitle>
+  <refentrytitle>MOVE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>MOVE [ <replaceable class="parameter">direction</replaceable> { FROM | IN } ] <replaceable class="parameter">nom du curseur</replaceable>
+<synopsis>MOVE [ <replaceable class="parameter">direction</replaceable> [ FROM | IN ] ] <replaceable class="parameter">nom_curseur</replaceable>
 </synopsis>
  </refsynopsisdiv>
 
@@ -43,7 +43,7 @@
   <para>
    Les paramètres de la commande <command>MOVE</command> sont identiques à ceux
    de la commande <command>FETCH</command>.
-   <xref linkend="sql-fetch" endterm="sql-fetch-title"/> contient les détails de
+   <xref linkend="sql-fetch"/> contient les détails de
    syntaxe et d'utilisation.
   </para>
  </refsect1>
@@ -97,9 +97,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-close" endterm="sql-close-title"/></member>
-   <member><xref linkend="sql-declare" endterm="sql-declare-title"/></member>
-   <member><xref linkend="sql-fetch" endterm="sql-fetch-title"/></member>
+   <member><xref linkend="sql-close"/></member>
+   <member><xref linkend="sql-declare"/></member>
+   <member><xref linkend="sql-fetch"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/notify.xml
===================================================================
--- traduc/trunk/postgresql/ref/notify.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/notify.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-notify">
  <refmeta>
-  <refentrytitle id="sql-notify-title">NOTIFY</refentrytitle>
+  <refentrytitle>NOTIFY</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>NOTIFY <replaceable class="parameter">nom</replaceable>        
+<synopsis>NOTIFY <replaceable class="parameter">canal</replaceable> [ , <replaceable class="parameter">charge</replaceable> ]
 </synopsis>
  </refsynopsisdiv>
 
@@ -29,19 +29,20 @@
   </indexterm>
 
   <para>
-   La commande <command>NOTIFY</command> envoie une notification
+   La commande <command>NOTIFY</command> envoie une notification together
+   with an optional <quote>payload</quote> string
    à chaque application cliente qui a exécuté précédemment la commande
-   <command>LISTEN <replaceable class="parameter">nom</replaceable></command>
-   dans la base de données courante pour le nom de notification indiqué.
+   <command>LISTEN <replaceable class="parameter">canal</replaceable></command>
+   dans la base de données courante pour le nom du canal indiqué.
   </para>
 
   <para>
-   <command>NOTIFY</command> fournit une forme simple de signal ou de mécanisme
+   <command>NOTIFY</command> fournit un mécanisme simple
    de communication interprocessus pour tout ensemble de processus accédant à
-   la même base de données <productname>PostgreSQL</productname>. Des mécanismes
-   de plus haut niveau peuvent être construits en utilisant les tables de la base
-   de données pour passer des données supplémentaires (au-delà du simple nom de
-   notification) du notifieur aux écouteurs.
+   la même base de données <productname>PostgreSQL</productname>.
+   A payload string can be sent along with the notification, and Des mécanismes
+   de plus haut niveau for passing structured data peuvent être construits en utilisant les tables de la base
+   de données pour passer des données supplémentaires du notifieur aux écouteurs.
   </para>
 
   <para>
@@ -53,14 +54,17 @@
   </para>
 
   <para>
-   Habituellement, le nom de notification correspond au nom d'une table
+   It is up to the database designer to define the channel names that will
+   be used in a given database and what each one means.
+   Habituellement, le nom du canal correspond au nom d'une table
    dans la base de données. L'événement notify signifie
    essentiellement <quote>J'ai modifié cette table, jetez-y un &oelig;il pour
    vérifier ce qu'il y a de nouveau</quote>. Mais cette association n'est 
    pas contrôlée par les commandes <command>NOTIFY</command> et
    <command>LISTEN</command>. Un concepteur de bases de données
-   peut, par exemple, utiliser plusieurs noms de notification différents pour signaler
-   différentes sortes de modifications au sein d'une même table.
+   peut, par exemple, utiliser plusieurs noms de canal différents pour signaler
+   différentes sortes de modifications au sein d'une même table. Alternatively,
+   the payload string could be used to differentiate various cases.
   </para>
 
   <para>
@@ -97,21 +101,22 @@
   </para>
 
   <para>
-   <command>NOTIFY</command> se comporte comme les signaux Unix sur un
-   point important&nbsp;: si le même nom de notification est signalé
-   successivement et rapidement plusieurs fois, les récepteurs peuvent ne
-   recevoir qu'un unique événement de notification pour plusieurs exécutions de
-   <command>NOTIFY</command>. Il est donc malhabile de dépendre du
-   nombre de notifications reçues. À la place, <command>NOTIFY</command> peut
-   être utilisé pour réveiller les applications qui doivent être averties d'un
-   évènement et un objet de bases de données (tel une séquence) utilisé pour
-   garder une trace de ce qui s'est passé ou du nombre de fois que cela s'est
-   produit.
+   If the same channel name is signaled multiple times from the same
+   transaction with identical payload strings, the
+   database server can decide to deliver a single notification only.
+   On the other hand, notifications with distinct payload strings will
+   always be delivered as distinct notifications. Similarly, notifications from
+   different transactions will never get folded into one notification.
+   Except for dropping later instances of duplicate notifications,
+   <command>NOTIFY</command> guarantees that notifications from the same
+   transaction get delivered in the order they were sent.  It is also
+   guaranteed that messages from different transactions are delivered in
+   the order in which the transactions committed.
   </para>
 
   <para>
    Il est courant qu'un client qui exécute <command>NOTIFY</command>
-   écoute lui-même des notifications de même nom. Dans ce cas, il récupère une
+   écoute lui-même des notifications de même canal. Dans ce cas, il récupère une
    notification, comme toutes les autres sessions en écoute.
    Suivant la logique de l'application, cela peut engendre un travail
    inutile, par exemple lire une table de la base de données pour trouver les
@@ -121,11 +126,7 @@
    notification) est le même que le <acronym>PID</acronym> de la session
    courante (disponible à partir de <application>libpq</application>).
    S'ils sont identiques, la notification est le retour du travail actuel et
-   peut être ignorée. (En dépit de ce qui est dit dans le paragraphe qui précède,
-   cette technique est sûre. <productname>PostgreSQL</productname> distingue les
-   notifications propres des notifications en provenance d'autres
-   sessions&nbsp;; il n'y a donc aucun risque de passer à côté d'une
-   notification externe lorsque les notifications propres sont ignorées.)
+   peut être ignorée.
   </para>
  </refsect1>
 
@@ -134,17 +135,67 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nom</replaceable></term>
+    <term><replaceable class="parameter">canal</replaceable></term>
     <listitem>
      <para>
-      Nom de la notification à signaler (identifiant quelconque).
+      Nom du canal à signaler (identifiant quelconque).
      </para>
     </listitem>
    </varlistentry>
+   <varlistentry>
+    <term><replaceable class="PARAMETER">payload</replaceable></term>
+    <listitem>
+     <para>
+      The <quote>payload</quote> string to be communicated along with the
+      notification.  This must be specified as a simple string literal.
+      In the default configuration it must be shorter than 8000 bytes.
+      (If binary data or large amounts of information need to be communicated,
+      it's best to put it in a database table and send the key of the record.)
+     </para>
+    </listitem>
+   </varlistentry>
   </variablelist>
  </refsect1>
 
  <refsect1>
+  <title>Notes</title>
+
+  <para>
+   There is a queue that holds notifications that have been sent but not
+   yet processed by all listening sessions.  If this queue becomes full,
+   transactions calling <command>NOTIFY</command> will fail at commit.
+   The queue is quite large (8GB in a standard installation) and should be
+   sufficiently sized for almost every use case. However, no cleanup can take
+   place if a session executes <command>LISTEN</command> and then enters a
+   transaction for a very long time. Once the queue is half full you will see
+   warnings in the log file pointing you to the session that is preventing
+   cleanup. In this case you should make sure that this session ends its
+   current transaction so that cleanup can proceed.
+  </para>
+  <para>
+   A transaction that has executed <command>NOTIFY</command> cannot be
+   prepared for two-phase commit.
+  </para>
+
+  <refsect2>
+   <title>pg_notify</title>
+
+   <indexterm>
+    <primary>pg_notify</primary>
+   </indexterm>
+
+   <para>
+    To send a notification you can also use the function
+    <literal><function>pg_notify</function>(<type>text</type>,
+    <type>text</type>)</literal>. The function takes the channel name as the
+    first argument and the payload as the second. The function is much easier
+    to use than the <command>NOTIFY</command> command if you need to work with
+    non-constant channel names and payloads.
+   </para>
+  </refsect2>
+ </refsect1>
+
+ <refsect1>
   <title>Exemples</title>
 
   <para>
@@ -154,6 +205,13 @@
 <programlisting>LISTEN virtual;
 NOTIFY virtual;
 Asynchronous notification "virtual" received from server process with PID 8448.
+NOTIFY virtual, 'This is the payload';
+Asynchronous notification "virtual" with payload "This is the payload" received from server process with PID 8448.
+
+LISTEN foo;
+SELECT pg_notify('fo' || 'o', 'pay' || 'load');
+Asynchronous notification "foo" with payload "payload" received from server process with PID 14728.
+
 </programlisting>
   </para>
  </refsect1>
@@ -170,8 +228,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-listen" endterm="sql-listen-title"/></member>
-   <member><xref linkend="sql-unlisten" endterm="sql-unlisten-title"/></member>
+   <member><xref linkend="sql-listen"/></member>
+   <member><xref linkend="sql-unlisten"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/pg_config-ref.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_config-ref.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_config-ref.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-pgconfig">
  <refmeta>
-  <refentrytitle id="app-pgconfig-title">pg_config</refentrytitle>
+  <refentrytitle>pg_config</refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>

Modified: traduc/trunk/postgresql/ref/pg_controldata.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_controldata.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_controldata.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-pgcontroldata">
  <refmeta>
-  <refentrytitle id="app-pgcontroldata-title"><application>pg_controldata</application></refentrytitle>
+  <refentrytitle><application>pg_controldata</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -43,7 +43,11 @@
    Cet outil ne peut être lancé que par l'utilisateur qui a initialisé
    le groupe. Il est, en effet, nécessaire d'avoir le droit de lire le répertoire des
    données. Le répertoire des données peut être spécicifé sur la ligne de
-   commande ou à l'aide de la variable d'environnement <envar>PGDATA</envar>.
+   commande ou à l'aide de la variable d'environnement <envar>PGDATA</envar>. This utility supports the options
+   <literal>-V</literal> and <literal>--version</literal>, which print the
+   <application>pg_controldata</application> version and exit.  It also
+   supports options <literal>-?</literal> and <literal>--help</literal>, which output the
+   supported arguments.
   </para>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/pg_ctl-ref.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_ctl-ref.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_ctl-ref.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,20 +7,28 @@
 
 <refentry id="app-pg-ctl">
  <refmeta>
-  <refentrytitle id="app-pg-ctl-title"><application>pg_ctl</application></refentrytitle>
+  <refentrytitle><application>pg_ctl</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
 
  <refnamediv>
   <refname>pg_ctl</refname>
-  <refpurpose>démarrer, arrêter ou redémarrer le serveur
+  <refpurpose>initialiser, démarrer, arrêter ou redémarrer le serveur
   <productname>PostgreSQL</productname></refpurpose>
  </refnamediv>
 
  <refsynopsisdiv>
   <cmdsynopsis>
+
    <command>pg_ctl</command>
+   <arg choice="plain">init[db]</arg>
+   <arg>-s</arg>
+   <arg>-D <replaceable>datadir</replaceable></arg>
+   <arg>-o <replaceable>options</replaceable></arg>
+   <sbr/>
+   
+   <command>pg_ctl</command>
    <arg choice="plain">start</arg>
    <arg>-w</arg>
    <arg>-t <replaceable>secondes</replaceable></arg>
@@ -99,7 +107,8 @@
   </indexterm>
 
   <para>
-   <application>pg_ctl</application> est un outil de démarrage, d'arrêt et de
+   <application>pg_ctl</application> est un outil initializing a
+   <productname>PostgreSQL</productname> database cluster, de démarrage, d'arrêt et de
    redémarrage du serveur <productname>PostgreSQL</productname>
    (<xref linkend="app-postgres"/>). Il permet également d'afficher le
    statut d'un serveur
@@ -110,6 +119,15 @@
   </para>
 
   <para>
+   The <option>init</option> or <option>initdb</option> mode creates a
+   new
+   <productname>PostgreSQL</productname> database cluster.  A database
+   cluster is a collection of databases that are managed by a single
+   server instance.  This mode invokes the <command>initdb</command>
+   command.  See <xref linkend="app-initdb"/> for details.
+  </para>
+
+  <para>
    Dans le mode <option>start</option>, un nouveau serveur est démarré. Le
    serveur est démarré en tâche de fond et l'entrée standard est attachée à
    <filename>/dev/null</filename>. La sortie standard et la sortie d'erreurs
@@ -130,7 +148,10 @@
    répertoire spécifié est arrêté. Trois méthodes différentes d'arrêt peuvent
    être choisies avec l'option <option>-m</option>&nbsp;: le mode
    <quote>Smart</quote> attend du mode de sauvegarde en ligne (PITR) et la
-   déconnexion de tous les clients. C'est la valeur par défaut. Le mode
+   déconnexion de tous les clients. C'est la valeur par défaut.
+   If the server is in recovery, recovery and streaming replication
+   will be terminated once all clients have disconnected.
+   Le mode
    <quote>Fast</quote> n'attend pas la déconnexion des clients et stoppera le
    mode de sauvegarde en ligne (PITR). Toutes les transactions actives sont
    annulées et les clients
@@ -262,6 +283,12 @@
 	concernant l'impossibilité de trouver l'exécutable <filename>postgres</filename>
 	apparaissent.
        </para>
+
+       <para>
+        In <literal>init</literal> mode, this option analogously
+        specifies the location of the <filename>initdb</filename>
+        executable.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -371,6 +398,17 @@
    </varlistentry>
 
    <varlistentry>
+    <term><envar>PGHOST</envar></term>
+
+    <listitem>
+     <para>
+      Default hostname or Unix-domain socket location for <xref
+      linkend="app-psql"/> (used by the -w option).
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
     <term><envar>PGPORT</envar></term>
 
     <listitem>
@@ -536,9 +574,10 @@
  <refsect1>
   <title>Voir aussi</title>
 
-  <para>
-   <xref linkend="app-postgres"/>
-  </para>
+  <simplelist type="inline">
+   <member><xref linkend="app-initdb"/></member>
+   <member><xref linkend="app-postgres"/></member>
+  </simplelist>
  </refsect1>
 
 </refentry>

Modified: traduc/trunk/postgresql/ref/pg_dump.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_dump.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_dump.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -23,6 +23,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>pg_dump</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
    <arg><replaceable>nom_base</replaceable></arg>
   </cmdsynopsis>
@@ -76,7 +77,7 @@
    <quote>personnalisé</quote> (<foreignphrase>custom</foreignphrase> en anglais, <option>-Fc</option>).
    Compressé par défaut, il permet de sélectionner et réordonner les éléments archivés.
    Non compressé, le format <application>tar</application> (<option>-Ft</option>)
-   ne permet pas de réordonner les données au
+   has restrictions on réordonner les données au
    chargement, mais est, somme toute, assez flexible. Qui plus est, il est utilisable
    par des outils Unix standard comme <command>tar</command>.
   </para>
@@ -237,25 +238,27 @@
         </varlistentry>
 
         <varlistentry>
-         <term><literal>t</literal></term>
+         <term><literal>c</literal></term>
          <listitem>
           <para>
-           archive <command>tar</command> utilisable par <application>pg_restore</application>.
-           Ce format permet d'ordonner et/ou d'exclure des objets lors
-           de la restauration de la base. 
-           Il est également possible de restreindre les données rechargées lors
-	   de la restauration&nbsp;;
+           archive personnalisée utilisable par <application>pg_restore</application>.
+           C'est le format le plus flexible puisqu'il permet manual
+           selection and d'ordonner les éléments archivés. Ce format est compressé par défaut.
           </para>
          </listitem>
         </varlistentry>
 
         <varlistentry>
-         <term><literal>c</literal></term>
+         <term><literal>t</literal></term>
          <listitem>
           <para>
-           archive personnalisée utilisable par <application>pg_restore</application>.
-           C'est le format le plus flexible puisqu'il permet d'ordonner le chargement des
-	   données et la définition des objets. Ce format est compressé par défaut.
+           archive <command>tar</command> utilisable par <application>pg_restore</application>.
+           This output format allows manual selection and reordering of
+           archived items during restore, but there is a restriction: the
+           relative order of table data items cannot be changed during
+           restore.  Also, <command>tar</command> format does not support
+           compression and has a limit of 8 GB on the size of individual
+           tables.
           </para>
          </listitem>
         </varlistentry>
@@ -290,7 +293,7 @@
         <replaceable class="parameter">schéma</replaceable> est interprété comme
         un modèle selon les règles utilisées par les commandes
         <literal>\d</literal> de <application>psql</application> (voir <xref
-        linkend="app-psql-patterns" endterm="app-psql-patterns-title"/>). Du
+        linkend="app-psql-patterns"/>). Du
         coup, plusieurs schémas peuvent être sélectionnés en utilisant des
         caractères joker dans le modèle. Lors de l'utilisation de ces caractères,
         il faut faire attention à placer le modèle entre guillemets, si
@@ -428,7 +431,7 @@
         <replaceable class="parameter">table</replaceable> est interprété comme
         un modèle suivant les règles utilisées par les commandes
         <literal>\d</literal> de <application>psql</application> (voir <xref
-        linkend="app-psql-patterns" endterm="app-psql-patterns-title"/>). Du
+        linkend="app-psql-patterns"/>). Du
         coup, plusieurs tables peuvent être sélectionnées en utilisant des
         caractères joker dans le modèle. Lors de l'utilisation de ces caractères,
         il faut faire attention à placer le modèle entre guillemets, si
@@ -506,6 +509,16 @@
      </varlistentry>
 
      <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>pg_dump</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term><option>-x</option></term>
       <term><option>--no-privileges</option></term>
       <term><option>--no-acl</option></term>
@@ -670,6 +683,17 @@
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>pg_dump</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
     </variablelist>
    </para>
 
@@ -860,7 +884,7 @@
    Le fichier de sauvegarde produit par <application>pg_dump</application> ne
    contient pas les statistiques utilisées par l'optimiseur pour la
    planification des requêtes. Il est donc conseillé, pour assurer des
-   performances correctes, de lancer <command>ANALYZE</command> après
+   performances optimales, de lancer <command>ANALYZE</command> après
    la restauration d'une sauvegarde&nbsp;; voir <xref
    linkend="vacuum-for-statistics"/> et <xref linkend="autovacuum"/> pour plus
    d'informations. Le fichier de sauvegarde ne contient pas
@@ -968,7 +992,7 @@
    Pour indiquer un nom qui comporte des majuscules dans les options
    <option>-t</option> et assimilées, il faut ajouter des guillemets
    doubles&nbsp;; sinon le nom est converti en minuscules (voir<xref
-   linkend="app-psql-patterns" endterm="app-psql-patterns-title"/>). Les
+   linkend="app-psql-patterns"/>). Les
    guillemets doubles sont interprétés par le shell et doivent dont être placés
    entre guillemets. Du coup, pour sauvegarder une seule table dont le nom
    comporte des majuscules, on utilise une commande du style&nbsp;:

Modified: traduc/trunk/postgresql/ref/pg_dumpall.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_dumpall.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_dumpall.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="app-pg-dumpall">
  <refmeta>
-  <refentrytitle id="app-pg-dumpall-title"><application>pg_dumpall</application></refentrytitle>
+  <refentrytitle><application>pg_dumpall</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -21,6 +21,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>pg_dumpall</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
   </cmdsynopsis>
  </refsynopsisdiv>
@@ -57,8 +58,8 @@
   </para>
 
   <para>
-   Le script SQL est écrit sur la sortie standard. Les opérateurs shell doivent
-   être utilisés pour la rediriger dans un fichier.
+   Le script SQL est écrit sur la sortie standard. Use the
+   [-f|file] option or shell operators to redirect it into a file.
   </para>
 
   <para>
@@ -283,6 +284,16 @@
      </varlistentry>
 
      <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>pg_dumpall</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term><option>-x</option></term>
       <term><option>--no-privileges</option></term>
       <term><option>--no-acl</option></term>
@@ -385,6 +396,17 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>pg_dumpall</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
     </variablelist>
    </para>
 
@@ -573,7 +595,7 @@
   </para>
 
   <para>
-   Recharger cette base de données&nbsp;:
+   To reload database(s) from this file, you can use:
 <screen><prompt>$</prompt> <userinput>psql -f db.out postgres</userinput>
 </screen>
    (La base de données utilisée pour la connexion initiale n'a pas d'importance ici

Modified: traduc/trunk/postgresql/ref/pg_resetxlog.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_resetxlog.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_resetxlog.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-pgresetxlog">
  <refmeta>
-  <refentrytitle id="app-pgresetxlog-title"><application>pg_resetxlog</application></refentrytitle>
+  <refentrytitle><application>pg_resetxlog</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -191,6 +191,13 @@
    vérification avant de permettre à <command>pg_resetxlog</command> de
    traiter réellement la base.
   </para>
+
+  <para>
+   The <literal>-V</literal> and <literal>--version</literal> options print 
+   the <application>pg_resetxlog</application> version and exit.  The
+   options <literal>-?</literal> and <literal>--help</literal> show supported arguments,
+   and exit.
+  </para>
  </refsect1>
 
  <refsect1>

Modified: traduc/trunk/postgresql/ref/pg_restore.xml
===================================================================
--- traduc/trunk/postgresql/ref/pg_restore.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/pg_restore.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -23,6 +23,7 @@
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>pg_restore</command>
+   <arg rep="repeat"><replaceable>option_connexion</replaceable></arg>
    <arg rep="repeat"><replaceable>option</replaceable></arg>
    <arg><replaceable>nom_fichier</replaceable></arg>
   </cmdsynopsis>
@@ -48,7 +49,8 @@
 
   <para>
    <application>pg_restore</application> peut opérer dans deux modes. Si un nom
-   de base de données est spécifié, l'archive est restaurée directement dans la
+   de base de données est spécifié, <application>pg_restore</application>
+   connects to that database and restores archive contents directement dans la
    base de données. Sinon, un script contenant les commandes SQL nécessaires
    pour reconstruire la base de données est créé et écrit dans un fichier ou
    sur la sortie standard. La sortie du script est équivalente à celles créées
@@ -173,11 +175,7 @@
          <term><literal>tar</literal></term>
          <listitem>
           <para>
-           L'archive est une archive <command>tar</command>. Utiliser ce format
-           d'archive permet le réordonnancement et/ou l'exclusion
-           d'éléments de schéma au moment de la restauration de la base de
-           données. Il est aussi possible de limiter les données à recharger au
-           moment de la restauration.
+           L'archive est une archive <command>tar</command>.
           </para>
          </listitem>
         </varlistentry>
@@ -188,10 +186,7 @@
          <listitem>
           <para>
            L'archive est dans le format personnalisé de
-           <application>pg_dump</application>. Ceci est le format le plus
-           flexible dans le fait qu'il permet le réordonnancement du chargement
-           des données ainsi que des éléments de schéma. Ce format est aussi
-           compressé par défaut.
+           <application>pg_dump</application>.
           </para>
          </listitem>
         </varlistentry>
@@ -264,9 +259,10 @@
       <term><option>--list</option></term>
       <listitem>
        <para>
-        Liste le contenu de l'archive. La sortie de cette opération peut être
-        utilisée avec l'option <option>-L</option> pour restreindre et
-        réordonner les éléments à restaurer.
+        Liste le contenu de l'archive. The output of this operation
+        can be used as input to the <option>-L</option> option.  Note that
+        if filtering switches such as <option>-n</option> or <option>-t</option> are
+        used with <option>-l</option>, they will restrict the items listed.
        </para>
       </listitem>
      </varlistentry>
@@ -278,12 +274,19 @@
 	class="parameter">fichier_liste</replaceable></option></term>
       <listitem>
        <para>
-        Restaure seulement les éléments dans <replaceable
-        class="parameter">fichier_liste</replaceable> et dans leur ordre
-        d'apparition dans le fichier. Les lignes peuvent être déplacées et
-        peuvent aussi être commentées en plaçant un <literal>;</literal> au
-        début de la ligne. (Voir les exemples ci-dessous.)
+        Restore only those archive elements that are listed in <replaceable
+        class="PARAMETER">list-file</replaceable>, and restore them in the
+        order they appear in the file.  Note that
+        if filtering switches such as <option>-n</option> or <option>-t</option> are
+        used with <option>-L</option>, they will further restrict the items restored.
        </para>
+       <para>
+        <replaceable class="PARAMETER">list-file</replaceable> is normally created by
+        editing the output of a previous <option>-l</option> operation.
+        Lines can be moved or removed, and can also
+        be commented out by placing a semicolon (<literal>;</literal>) at the
+        start of the line.  See below for examples.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -388,7 +391,8 @@
       <term><option>--table=<replaceable class="parameter">table</replaceable></option></term>
       <listitem>
        <para>
-        Restaure uniquement la définition et/ou les données de la table nommée.
+        Restaure uniquement la définition et/ou les données de la table nommée. This can be
+        combined with the <option>-n</option> option to specify a schema.
        </para>
       </listitem>
      </varlistentry>
@@ -414,6 +418,16 @@
      </varlistentry>
 
      <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>pg_restore</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term><option>-x</option></term>
       <term><option>--no-privileges</option></term>
       <term><option>--no-acl</option></term>
@@ -497,6 +511,17 @@
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>pg_restore</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
     </variablelist>
    </para>
 
@@ -758,28 +783,25 @@
    Le fichier de liste consiste en un en-tête et d'une ligne par élément, par
    exemple&nbsp;:
 <programlisting>;
-; Archive created at Fri Jul 28 22:28:36 2000
-;     dbname: ma_base
-;     TOC Entries: 74
-;     Compression: 0
-;     Dump Version: 1.4-0
+; Archive created at Mon Sep 14 13:55:39 2009
+;     dbname: DBDEMOS
+;     TOC Entries: 81
+;     Compression: 9
+;     Dump Version: 1.10-0
 ;     Format: CUSTOM
+;     Integer: 4 bytes
+;     Offset: 8 bytes
+;     Dumped from database version: 8.3.5
+;     Dumped by pg_dump version: 8.3.8
 ;
 ;
 ; Selected TOC Entries:
 ;
-2; 145344 TABLE species postgres
-3; 145344 ACL species
-4; 145359 TABLE nt_header postgres
-5; 145359 ACL nt_header
-6; 145402 TABLE species_records postgres
-7; 145402 ACL species_records
-8; 145416 TABLE ss_old postgres
-9; 145416 ACL ss_old
-10; 145433 TABLE map_resolutions postgres
-11; 145433 ACL map_resolutions
-12; 145443 TABLE hs_old postgres
-13; 145443 ACL hs_old
+3; 2615 2200 SCHEMA - public pasha
+1861; 0 0 COMMENT - SCHEMA public pasha
+1862; 0 0 ACL - public pasha
+317; 1247 17715 TYPE public composite pasha
+319; 1247 25899 DOMAIN public domain0 pasha
 </programlisting>
    Les points virgules commencent un commentaire et les numéros au début des
    lignes se réfèrent à l'ID d'archive interne affectée à chaque élément.

Modified: traduc/trunk/postgresql/ref/postgres-ref.xml
===================================================================
--- traduc/trunk/postgresql/ref/postgres-ref.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/postgres-ref.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -587,7 +587,7 @@
 
     <listitem>
      <para>
-      Port par défaut (à configurer de préférence dans le fichier de configuration)
+      Numéro de port par défaut (à configurer de préférence dans le fichier de configuration)
      </para>
     </listitem>
    </varlistentry>

Modified: traduc/trunk/postgresql/ref/postmaster.xml
===================================================================
--- traduc/trunk/postgresql/ref/postmaster.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/postmaster.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="app-postmaster">
  <refmeta>
-  <refentrytitle id="APP-POSTMASTER-TITLE"><application>postmaster</application></refentrytitle>
+  <refentrytitle><application>postmaster</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>

Modified: traduc/trunk/postgresql/ref/prepare.xml
===================================================================
--- traduc/trunk/postgresql/ref/prepare.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/prepare.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-prepare">
  <refmeta>
-  <refentrytitle id="sql-prepare-title">PREPARE</refentrytitle>
+  <refentrytitle>PREPARE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
 
  <refsynopsisdiv>
 <synopsis>PREPARE <replaceable class="parameter">nom</replaceable> [ (<replaceable
-class="parameter">type_donnees</replaceable> [, ...] ) ] AS <replaceable
+class="parameter">type_données</replaceable> [, ...] ) ] AS <replaceable
 class="parameter">instruction</replaceable>
 </synopsis>
  </refsynopsisdiv>
@@ -56,7 +56,7 @@
    inféré à partir du contexte dans lequel le paramètre est utilisé (si
    possible). Lors de l'exécution de l'instruction, indiquez les valeurs
    réelles de ces paramètres dans l'instruction <command>EXECUTE</command>.
-   Référez-vous à <xref linkend="sql-execute" endterm="sql-execute-title"/>
+   Référez-vous à <xref linkend="sql-execute"/>
    pour plus d'informations à ce sujet.
   </para>
 
@@ -69,7 +69,7 @@
    néanmoins, chaque client peut créer sa propre instruction préparée à
    utiliser. L'instruction préparée peut être supprimés manuellement en
    utilisant la commande <xref linkend="sql-deallocate"
-   endterm="sql-deallocate-title"/>.
+  />.
   </para>
 
   <para>
@@ -101,7 +101,7 @@
    </varlistentry>
 
    <varlistentry>
-    <term><replaceable class="parameter">type_donnees</replaceable></term>
+    <term><replaceable class="parameter">type_données</replaceable></term>
     <listitem>
      <para>
       Le type de données d'un paramètre de l'instruction préparée. Si le type
@@ -143,14 +143,14 @@
    la planification d'instructions préparées avec paramètres, le plan choisi
    pourrait ne pas être optimal. Pour examiner le plan de requête que
    <productname>PostgreSQL</productname> a choisi pour une instruction préparée,
-   utilisez <xref linkend="sql-explain" endterm="sql-explain-title"/>.
+   utilisez <xref linkend="sql-explain"/>.
   </para>
 
   <para>
    Pour plus d'informations sur la planification de la requête et les
    statistiques récupérées par <productname>PostgreSQL</productname> dans ce
    but, voir la documentation de <xref linkend="sql-analyze"
-   endterm="sql-analyze-title"/>.
+  />.
   </para>
 
   <para>
@@ -199,8 +199,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-deallocate" endterm="sql-deallocate-title"/></member>
-   <member><xref linkend="sql-execute" endterm="sql-execute-title"/></member>
+   <member><xref linkend="sql-deallocate"/></member>
+   <member><xref linkend="sql-execute"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/prepare_transaction.xml
===================================================================
--- traduc/trunk/postgresql/ref/prepare_transaction.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/prepare_transaction.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-prepare-transaction">
  <refmeta>
-  <refentrytitle id="sql-prepare-transaction-title">PREPARE TRANSACTION</refentrytitle>
+  <refentrytitle>PREPARE TRANSACTION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -41,8 +41,8 @@
   <para>
    Une fois préparée, une transaction peut être validée ou annulée ultérieurement
    par, respectivement, <xref linkend="sql-commit-prepared"
-   endterm="sql-commit-prepared-title"/> et <xref linkend="sql-rollback-prepared"
-   endterm="sql-rollback-prepared-title"/>. Ces commandes peuvent être exécutées
+  /> et <xref linkend="sql-rollback-prepared"
+  />. Ces commandes peuvent être exécutées
    à partir d'une session quelconque. Il n'est pas nécessaire de le faire depuis
    celle qui a exécuté la transaction initiale.
   </para>
@@ -85,8 +85,17 @@
   <title>Notes</title>
 
   <para>
+   <command>PREPARE TRANSACTION</command> is not intended for use in applications
+   or interactive sessions. It's purpose is to allow an external
+   transaction manager to perform atomic global transactions across multiple
+   databases or other transactional resources. Unless you're writing a
+   transaction manager, you probably shouldn't be using <command>PREPARE
+   TRANSACTION</command>.
+  </para>
+
+  <para>
    Cette commande doit être utilisée dans un bloc de transaction, initié par
-   <xref linkend="sql-begin" endterm="sql-begin-title"/>.
+   <xref linkend="sql-begin"/>.
   </para>
 
   <para>
@@ -156,8 +165,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-commit-prepared" endterm="sql-commit-prepared-title"/></member>
-   <member><xref linkend="sql-rollback-prepared" endterm="sql-rollback-prepared-title"/></member>
+   <member><xref linkend="sql-commit-prepared"/></member>
+   <member><xref linkend="sql-rollback-prepared"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/psql-ref.xml
===================================================================
--- traduc/trunk/postgresql/ref/psql-ref.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/psql-ref.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -955,11 +955,11 @@
       </varlistentry>
 
       <varlistentry>
-        <term><literal>\dc[S] [ <replaceable
-	class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dc[S] [ <link linkend="APP-PSQL-patterns"><replaceable
+	class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Liste toutes les conversions disponibles entre les encodages de
+        Liste les conversions entre les encodages de
 	jeux de caractères. Si <replaceable
 	class="parameter">motif</replaceable> est spécifié, seules les
 	conversions dont le nom correspond au motif sont listées.
@@ -972,10 +972,10 @@
 
 
       <varlistentry>
-        <term><literal>\dC [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dC [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Liste toutes les conversions de types disponibles.
+        Liste les conversions de types.
         Si <replaceable class="parameter">motif</replaceable> est indiqué,
 	seules sont affichées les conversions dont le type source ou cible
 	correspond au motif.
@@ -985,8 +985,8 @@
 
 
       <varlistentry>
-        <term><literal>\dd[S] [ <replaceable
-	class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dd[S] [ <link linkend="APP-PSQL-patterns"><replaceable
+	class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
         Affiche les descriptions des objets correspondant au <replaceable
@@ -1013,20 +1013,41 @@
         <para>
         Les descriptions des objets peuvent être ajoutées avec la commande
 	<acronym>SQL</acronym> <xref
-        linkend="sql-comment" endterm="sql-comment-title"/>.
+        linkend="sql-comment"/>.
 	</para>
         </listitem>
       </varlistentry>
 
 
       <varlistentry>
-        <term><literal>\dD[S] [ <replaceable
-	 class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\ddp [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Liste tous les domaines disponibles. Si <replaceable
+        Lists default access privilege settings.  An entry is shown for
+        each role (and schema, if applicable) for which the default
+        privilege settings have been changed from the built-in defaults.
+        If <replaceable class="parameter">pattern</replaceable> is
+        specified, only entries whose role name or schema name matches
+        the pattern are listed.
+        </para>
+
+        <para>
+        The <xref linkend="sql-alterdefaultprivileges"/> command is used to set
+        default access privileges.  The meaning of the
+        privilege display is explained under
+        <xref linkend="sql-grant"/>.
+        </para>
+        </listitem>
+      </varlistentry>
+
+
+      <varlistentry>
+        <term><literal>\dD[S] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
+        <listitem>
+        <para>
+        Liste les domaines. Si <replaceable
         class="parameter">motif</replaceable> est spécifié, seuls les
-	domaines correspondant sont affichés.
+	domaines  whose names match the pattern sont affichés.
         Par défaut, seuls les objets créés par les utilisateurs sont affichés&nbsp;;
         fournissez un motif ou le modificateur <literal>S</literal> pour afficher
         les objets systèmes.
@@ -1036,10 +1057,10 @@
 
 
       <varlistentry>
-        <term><literal>\des[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\des[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Liste tous les serveurs distants (mnémonique&nbsp;: <quote>external
+        Liste les serveurs distants (mnémonique&nbsp;: <quote>external
         servers</quote>).
         Si <replaceable class="parameter">motif</replaceable> est
         spécifié, seuls les serveurs dont le nom correspond au motif sont
@@ -1052,10 +1073,10 @@
 
 
       <varlistentry>
-        <term><literal>\deu[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\deu[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Liste toutes les correspondances d'utilisateurs (mnémonique&nbsp;:
+        Liste les correspondances d'utilisateurs (mnémonique&nbsp;:
 	<quote>external users</quote>).
         Si <replaceable class="parameter">motif</replaceable> est
         spécifié, seules les correspondances dont le nom correspond au motif sont
@@ -1076,10 +1097,10 @@
 
 
       <varlistentry>
-        <term><literal>\dew[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dew[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Liste tous les wrappers de données distants (mnémonique&nbsp;: <quote>external
+        Liste les wrappers de données distants (mnémonique&nbsp;: <quote>external
         wrappers</quote>).
         Si <replaceable class="parameter">motif</replaceable> est
         spécifié, seuls les wrappers dont le nom correspond au motif sont
@@ -1091,15 +1112,16 @@
 
 
       <varlistentry>
-        <term><literal>\df[antwS+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+      <term><literal>\df[antwS+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">pattern</replaceable></link> ]</literal></term>
+
         <listitem>
         <para>
-        Liste toutes les fonctions disponibles avec leurs arguments et les types
-	en retour, et le type de fonction&nbsp;: «&nbsp;agg&nbsp;» (aggrégat),
-        «&nbsp;normal&nbsp;», «&nbsp;trigger&nbsp;» et «&nbsp;window&nbsp;».
-	Pour afficher seulement les fonctions d'un type spécifique, utilisez
-	les lettres correspondantes <literal>a</literal>, <literal>n</literal>,
-	<literal>t</literal> ou <literal>w</literal>. Si <replaceable
+        Lists functions, together with their arguments, return types, and
+        function types, which are classified as <quote>agg</quote> (aggregate),
+        <quote>normal</quote>, <quote>trigger</quote>, or <quote>window</quote>.
+        To display only functions
+        of specific type(s), add the corresponding letters <literal>a</literal>,
+        <literal>n</literal>, <literal>t</literal>, or <literal>w</literal> to the command. Si <replaceable
 	class="parameter">motif</replaceable> est
 	spécifié, seules les fonctions dont le nom correspond au motif sont
 	affichées. Si la forme <literal>\df+</literal> est utilisée, des
@@ -1110,21 +1132,21 @@
         les objets systèmes.
         </para>
 
-        <note>
+        <tip>
 	<para>
 	Pour rechercher des fonctions prenant des arguments ou des valeurs de
 	retour d'un type spécifique, utilisez les capacités de recherche du
 	paginateur pour parcourir <literal>\df</literal>
 	output.
 	</para>
-        </note>
+        </tip>
 
         </listitem>
       </varlistentry>
 
 
       <varlistentry>
-        <term><literal>\dF[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dF[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
          Liste les configurations de la recherche plein texte.
@@ -1139,7 +1161,7 @@
       </varlistentry>
 
       <varlistentry>
-        <term><literal>\dFd[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dFd[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
 	 Liste les dictionnaires de la recherche plein texte.
@@ -1154,7 +1176,7 @@
       </varlistentry>
 
       <varlistentry>
-        <term><literal>\dFp[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dFp[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
 	 Liste les analyseurs de la recherche plein texte.
@@ -1169,7 +1191,7 @@
       </varlistentry>
 
       <varlistentry>
-        <term><literal>\dFt[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dFt[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
 	 Liste les motifs de la recherche plein texte.
@@ -1184,10 +1206,10 @@
 
 
       <varlistentry>
-        <term><literal>\dg[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dg[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-         Liste tous les rôles des bases de données. Si <replaceable
+         Liste les rôles des bases de données. Si <replaceable
          class="parameter">motif</replaceable> est spécifié, seuls les rôles
          dont le nom correspond au motif sont listés. (Cette commande est
 	 maintenant réellement identique à <literal>\du</literal>.) Si la forme
@@ -1199,10 +1221,10 @@
 
 
       <varlistentry>
-        <term><literal>\di[S+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
-        <term><literal>\ds[S+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
-        <term><literal>\dt[S+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
-        <term><literal>\dv[S+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\di[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
+        <term><literal>\ds[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
+        <term><literal>\dt[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
+        <term><literal>\dv[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
 
 	<listitem>
 	<para>
@@ -1212,19 +1234,16 @@
         correspondent respectivement à index, séquence, table et vue.
         Vous pouvez indiquer n'importe quelle combinaison de ces lettres, dans
         n'importe quel ordre, pour obtenir la liste de tous les objets
-        correspondants. Par exemple, <literal>\dit</literal> liste les index et
+        de ces types. Par exemple, <literal>\dit</literal> liste les index et
         tables. Si <literal>+</literal> est ajouté à la fin de la commande, chaque
         objet est listé avec sa taille physique sur disque et sa description
         associée s'il y en a une.
+        Si <replaceable class="parameter">motif</replaceable> est spécifié,
+        seuls les objets dont les noms correspondent au motif sont listés.
         Par défaut, seuls les objets créés par les utilisateurs sont affichés&nbsp;;
         fournissez un motif ou le modificateur <literal>S</literal> pour afficher
         les objets systèmes.
 	</para>
-
-	<para>
-	Si <replaceable class="parameter">motif</replaceable> est spécifié,
-	seuls les objets dont les noms correspondent au motif sont listés.
-	</para>
 	</listitem>
       </varlistentry>
 
@@ -1241,12 +1260,12 @@
 
 
       <varlistentry>
-        <term><literal>\dn[+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dn[+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
 
         <listitem>
         <para>
-        Liste tous les schémas disponibles. Si <replaceable
-        class="parameter">motif</replaceable> (une expression régulière) est
+        Liste les schémas. Si <replaceable
+        class="parameter">motif</replaceable> est
 	spécifiée, seuls les schémas dont le nom correspond au motif sont
 	listés. Tout schéma temporaire non local est supprimé. Si
 	<literal>+</literal> est ajouté à la fin de la commande, chaque objet est
@@ -1257,11 +1276,11 @@
 
 
       <varlistentry>
-        <term><literal>\do[S] [ <replaceable class="parameter">motif</replaceable>
+        <term><literal>\do[S] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link>
 	]</literal></term>
         <listitem>
         <para>
-        Liste tous les opérateurs disponibles avec leur opérande et type en
+        Liste les opérateurs avec leur opérande et type en
 	retour. Si <replaceable class="parameter">motif</replaceable> est
 	spécifié, seuls les opérateurs dont le nom correspond au motif sont
 	listés.
@@ -1274,30 +1293,54 @@
 
 
       <varlistentry>
-        <term><literal>\dp [ <replaceable
-	class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\dp [ <link linkend="APP-PSQL-patterns"><replaceable
+	class="parameter">motif</replaceable></link> ]</literal></term>
 	<listitem>
 	<para>
-        Liste toutes les tables, vues et séquences disponibles
+        Liste les tables, vues et séquences
 	avec leur droits d'accès associés. Si <replaceable
 	class="parameter">motif</replaceable> est spécifié, seules les tables,
 	vues et séquences dont le nom correspond au motif sont listées.
 	</para>
 
 	<para>
-	Les commandes <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-        <xref linkend="sql-revoke" endterm="sql-revoke-title"/>
-	sont utilisées pour configurer les droits d'accès.
+	Les commandes <xref linkend="sql-grant"/> et
+        <xref linkend="sql-revoke"/>
+	sont utilisées pour configurer les droits d'accès. The meaning of the
+        privilege display is explained under
+        <xref linkend="sql-grant"/>.
 	</para>
 	</listitem>
       </varlistentry>
 
 
       <varlistentry>
-        <term><literal>\dT[S+] [ <replaceable class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\drds [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">role-pattern</replaceable></link> [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">database-pattern</replaceable></link> ] ]</literal></term>
         <listitem>
         <para>
-        Liste les types de données disponibles.
+        Lists defined configuration settings.  These settings can be
+        role-specific, database-specific, or both.
+        <replaceable>role-pattern</replaceable> and
+        <replaceable>database-pattern</replaceable> are used to select
+        specific roles and databases to list, respectively.  If omitted, or if
+        <literal>*</literal> is specified, all settings are listed, including those
+        not role-specific or database-specific, respectively.
+        </para>
+
+        <para>
+        The <xref linkend="sql-alterrole"/> and
+        <xref linkend="sql-alterdatabase"/>
+        commands are used to define per-role and per-database configuration
+        settings.
+        </para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><literal>\dT[S+] [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link> ]</literal></term>
+        <listitem>
+        <para>
+        Liste les types de données.
         Si <replaceable class="parameter">motif</replaceable> est
         spécifié, seuls les types dont le nom correspond au motif sont
         affichés. Si <literal>+</literal> est ajouté à la fin de la commande,
@@ -1312,11 +1355,11 @@
 
 
       <varlistentry>
-        <term><literal>\du [ <replaceable class="parameter">motif</replaceable>
+        <term><literal>\du [ <link linkend="APP-PSQL-patterns"><replaceable class="parameter">motif</replaceable></link>
 	]</literal></term>
         <listitem>
         <para>
-        Liste tous les rôles de la base de données. Si <replaceable
+        Liste les rôles de la base de données. Si <replaceable
 	class="parameter">motif</replaceable> est spécifié, seuls les rôles
 	dont le nom correspond au motif sont affichés. Si la forme
 	<literal>\du+</literal> est utilisée, des informations supplémentaires
@@ -1706,16 +1749,21 @@
 
       <varlistentry>
         <term><literal>\pset <replaceable
-	class="parameter">paramètre</replaceable> [ <replaceable
+	class="parameter">option</replaceable> [ <replaceable
 	class="parameter">valeur</replaceable> ]</literal></term>
 
 	<listitem>
 	<para>
 	Cette commande initialise les options affectant l'affichage des tables 
 	résultat de la requête. <replaceable
-	class="parameter">paramètre</replaceable> décrit l'option à initialiser.
-	La sémantique de <replaceable class="parameter">valeur</replaceable> en
-	dépend.
+	class="parameter">option</replaceable> décrit l'option à initialiser.
+	La sémantique de <replaceable class="parameter">valeur</replaceable> vary depending
+        on the selected option.  For some options, omitting <replaceable
+        class="parameter">value</replaceable> causes the option to be toggled
+        or unset, as described under the particular option.  If no such
+        behavior is mentioned, then omitting
+        <replaceable class="parameter">value</replaceable> just results in
+        the current setting being displayed.
 	</para>
 
 	<para>
@@ -1732,31 +1780,32 @@
 	  est suffisante.)
 	  </para>
 
-	  <para>
-	  <quote>Unaligned</quote> écrit toutes les colonnes d'une ligne
-	  sur une seule ligne séparées par le séparateur de champ actif. Ceci a
-	  pour but de créer un affichage
-	  lisible par d'autres programmes (séparé par des tabulations, séparé
-	  par des virgules). Le mode <quote>Aligned</quote> est l'affichage
-	  texte standard, lisible par un humain, proprement formaté. C'est aussi
-	  la valeur par défaut.
-      </para>
+          <para>
+          <literal>unaligned</literal> format writes all columns of a row on one
+          line, separated by the currently active field separator. This
+          is useful for creating output that might be intended to be read
+          in by other programs (for example, tab-separated or comma-separated
+          format).
+          </para>
 
-      <para>
-      <quote>wrapped</quote> est comme <literal>aligned</literal>, mais rajoute
-      des retours à la ligne automatiques à la largeur spécifiée. Si
-      <literal>\pset columns</literal> vaut zéro (la valeur par défaut), le mode
-      <literal>wrapped</literal> n'affecte que la sortie vers un écran et la
-      largeur de sortie est contrôlée par la variable d'environnement
-      <envar>COLUMNS</envar> ou par la largeur d'écran détectée. Si 
-      <literal>\pset columns</literal> est positionné à une valeur non nulle,
-      toutes les sorties sont découpées, dont les sorties vers fichier et vers
-      tube.
-      </para>
+          <para>
+          <literal>aligned</literal> format is the standard, human-readable,
+          nicely formatted text output;  this is the default.
+          </para>
 
-      <para>
-          Les modes <quote><acronym>HTML</acronym></quote>
-	  et <quote>LaTeX</quote> produisent des tables destinées à être
+          <para>
+          <literal>wrapped</literal> format is like <literal>aligned</literal> but wraps
+          wide data values across lines to make the output fit in the target
+          column width.  The target width is determined as described under
+          the <literal>columns</literal> option.  Note that <application>psql</application> will
+          not attempt to wrap column header titles; therefore,
+          <literal>wrapped</literal> format behaves the same as <literal>aligned</literal>
+          if the total width needed for column headers exceeds the target.
+          </para>
+
+          <para>
+          The <literal>html</literal>, <literal>latex</literal>, and <literal>troff-ms</literal>
+          formats produisent des tables destinées à être
 	  inclues dans des documents utilisant le langage de marques respectif.
 	  Ce ne sont pas des documents complets&nbsp;! (Ce n'est pas 
 	  dramatique en <acronym>HTML</acronym> mais en LaTeX vous devez avoir
@@ -1769,7 +1818,7 @@
 	  <term><literal>border</literal></term>
 	  <listitem>
 	  <para>
-	  Le second argument doit être un nombre. En général, plus grand est ce
+	  Le <replaceable class="parameter">value</replaceable> doit être un nombre. En général, plus grand est ce
 	  nombre, plus les tables ont de bordure et de ligne mais ceci
 	  dépend du format. Dans le mode <acronym>HTML</acronym>, ceci sera
 	  traduit directement avec l'attribut <literal>border=...</literal>.
@@ -1783,43 +1832,99 @@
           <term><literal>columns</literal></term>
           <listitem>
           <para>
-          Contrôle la largeur cible pour le format <literal>wrapped</literal>,
-          et la largeur pour déterminer si une sortie large a besoin du pager.
-          Pour la valeur zéro (défaut), le format <literal>wrapped</literal>
-          n'affecte que la sortie écran.
+          Sets the target width for the <literal>wrapped</literal> format, and also
+          the width limit for determining whether output is wide enough to
+          require the pager.
+          Zero (the default) causes the target width to be controlled by the
+          environment variable <envar>COLUMNS</envar>, or the detected screen width
+          if <envar>COLUMNS</envar> is not set.
+          In addition, if <literal>columns</literal> is zero then the
+          <literal>wrapped</literal> format only affects screen output.
+          If <literal>columns</literal> is nonzero then file and pipe output is
+          wrapped to that width as well.
           </para>
           </listitem>
           </varlistentry>
 
+          <varlistentry>
+          <term><literal>linestyle</literal></term>
+          <listitem>
+          <para>
+          Sets the border line drawing style to one
+          of <literal>ascii</literal>, <literal>old-ascii</literal>
+          or <literal>unicode</literal>.
+          Unique abbreviations are allowed.  (That would mean one
+          letter is enough.)
+          The default setting is <literal>ascii</literal>.
+          This option only affects the <literal>aligned</literal> and
+          <literal>wrapped</literal> output formats.
+          </para>
+
+          <para>
+          <literal>ascii</literal> style uses plain <acronym>ASCII</acronym>
+          characters.  Newlines in data are shown using
+          a <literal>+</literal> symbol in the right-hand margin.
+          When the <literal>wrapped</literal> format wraps data from
+          one line to the next without a newline character, a dot
+          (<literal>.</literal>) is shown in the right-hand margin of the first line,
+          and again in the left-hand margin of the following line.
+          </para>
+
+          <para>
+          <literal>old-ascii</literal> style uses plain <acronym>ASCII</acronym>
+          characters, using the formatting style used
+          in <productname>PostgreSQL</productname> 8.4 and earlier.
+          Newlines in data are shown using a <literal>:</literal>
+          symbol in place of the left-hand column separator.
+          When the data is wrapped from one line
+          to the next without a newline character, a <literal>;</literal>
+          symbol is used in place of the left-hand column separator.
+          </para>
+
+          <para>
+          <literal>unicode</literal> style uses Unicode box-drawing characters.
+          Newlines in data are shown using a carriage return symbol
+          in the right-hand margin.  When the data is wrapped from one line
+          to the next without a newline character, an ellipsis symbol
+          is shown in the right-hand margin of the first line, and
+          again in the left-hand margin of the following line.
+          </para>
+
+          <para>
+          When the <literal>border</literal> setting is greater than zero,
+          this option also determines the characters
+          with which the border lines are drawn.
+          Plain <acronym>ASCII</acronym> characters work everywhere, but
+          Unicode characters look nicer on displays that recognize them.
+          </para>
+          </listitem>
+          </varlistentry>
+
 	  <varlistentry>
 	  <term><literal>expanded</literal> (ou <literal>x</literal>)</term>
 	  <listitem>
 	  <para>
-          Vous pouvez spécifier un deuxième argument optionnel. S'il est donné,
+          If <replaceable class="parameter">value</replaceable>  est donné,
 	  il peut être soit <literal>on</literal> soit <literal>off</literal>
-	  qui activera ou désactivera le mode étendu. Si le second argument n'est
-	  pas fourni, alors le résultat sera une bascule entre le mode standard
-	  et le mode étendu. Quand le mode étendu est activé, les résultats
+	  qui activera ou désactivera le mode étendu. If <replaceable
+          class="parameter">value</replaceable> is omitted the command toggles
+          between regular and expanded mode. Quand le mode étendu est activé, les résultats
 	  d'une requête sont affichés sur deux colonnes, avec le nom de la
 	  colonne dans la partie gauche et les données dans la partie
 	  droite. Ce mode est utile si les données ne tiennent pas sur l'écran
 	  dans le mode normal, <quote>horizontal</quote>.
 	  </para>
-
-	  <para>
-	  Le mode étendu est supporté par les quatre formats d'affichage.
-	  </para>
 	  </listitem>
 	  </varlistentry>
 
 	  <varlistentry>
-	  <term><literal>NULL</literal></term>
+	  <term><literal>null</literal></term>
 	  <listitem>
 	  <para>
-	  Le second argument est une chaîne qui est affichée quand une colonne
-	  est NULL. La valeur par défaut est de ne rien afficher, ce qui peut
-	  être facilement pris pour, disons, une chaîne vide. Du coup, vous
-	  pouvez choisir d'écrire <literal>\pset NULL '(NULL)'</literal>.
+          Sets the string to be printed in place of a null value.
+          The default is to print nothing, which can easily be mistaken for
+          an empty string. For example, one might prefer <literal>\pset null
+          '(null)'</literal>.
 	  </para>
 	  </listitem>
 	  </varlistentry>
@@ -1843,11 +1948,12 @@
 	  <term><literal>footer</literal></term>
 	  <listitem>
 	  <para>
-          Vous pouvez spécifier un deuxième argument optionnel. S'il est donné,
-	  il peut être soit <literal>on</literal> soit <literal>off</literal>
-	  qui activera ou désactivera l'affichage du bas de page par défaut
-          <literal>(x lignes)</literal>. Si le second argument n'est pas fourni,
-	  alors le résultat sera la bascule de la valeur actuelle.
+          If <replaceable class="parameter">value</replaceable> is specified
+          it must be either <literal>on</literal> or <literal>off</literal>
+          which will enable or disable display of the table footer
+          (the <literal>(<replaceable>n</replaceable> rows)</literal> count).
+          If <replaceable class="parameter">value</replaceable> is omitted the
+          command toggles footer display on or off.
 	  </para>
 	  </listitem>
 	  </varlistentry>
@@ -1856,12 +1962,12 @@
           <term><literal>numericlocale</literal></term>
           <listitem>
           <para>
-          Vous pouvez spécifier un deuxième argument optionnel. S'il est donné,
-	  il peut être soit <literal>on</literal> soit <literal>off</literal>
-	  qui activera ou désactivera l'affichage d'un caractère dépendant de
-	  la locale pour séparer les groupes de chiffres à gauche de la
-	  décimale. Si le second argument n'est pas fourni,
-	  alors le résultat sera la bascule de la valeur actuelle.
+          If <replaceable class="parameter">value</replaceable> is specified
+          it must be either <literal>on</literal> or <literal>off</literal>
+          which will enable or disable display of a locale-specific character
+          to separate groups of digits to the left of the decimal marker.
+          If <replaceable class="parameter">value</replaceable> is omitted the
+          command toggles between regular and locale-specific numeric output.
           </para>
           </listitem>
           </varlistentry>
@@ -1881,14 +1987,14 @@
 	  <term><literal>tuples_only</literal> (ou <literal>t</literal>)</term>
 	  <listitem>
 	  <para>
-          Vous pouvez spécifier un deuxième argument optionnel. S'il est donné,
-	  il peut être soit <literal>on</literal> soit <literal>off</literal>
-	  qui activera ou désactivera le mode lignes seules. Si le second argument
-	  n'est pas fourni, alors le résultat sera la bascule de la valeur
-	  actuelle. L'affichage complet propose des informations supplémentaires
-	  comme les en-têtes de colonnes, les titres et différents bas de
-	  page. Dans le mode lignes seuls, seules les données de la table
-	  sont affichées.
+          If <replaceable class="parameter">value</replaceable> is specified
+          it must be either <literal>on</literal> or <literal>off</literal>
+          which will enable or disable tuples-only mode.
+          If <replaceable class="parameter">value</replaceable> is omitted the
+          command toggles between regular and tuples-only output.
+          Regular output includes extra information such
+          as column headers, titles, and various footers. In tuples-only
+          mode, only actual table data is shown.
 	  </para>
 	  </listitem>
 	  </varlistentry>
@@ -1900,23 +2006,26 @@
 	  <para>
 	  Initialise le titre de la table pour toutes les tables affichées
 	  ensuite. Ceci peut être utilisé pour ajouter des balises de description
-	  à l'affichage. Si aucun argument n'est donné, le titre n'est pas
+	  à l'affichage. Si aucun <replaceable class="parameter">value</replaceable> n'est donné, le titre n'est pas
 	  initialisé.
 	  </para>
 	  </listitem>
 	  </varlistentry>
 
 	  <varlistentry>
-	  <term><literal>tableattr</literal> (ou <literal>T</literal>) <literal>[
-	  <replaceable class="parameter">texte</replaceable> ]</literal></term>
+	  <term><literal>tableattr</literal> (or <literal>T</literal>)</term>
 	  <listitem>
 	  <para>
-	  Vous permet de spécifier tout attribut à placer à l'intérieur de la
-	  balise <sgmltag>table</sgmltag> en <acronym>HTML</acronym>. Ceci
+	  Specifies attributes to be placed inside the
+          <acronym>HTML</acronym> <sgmltag>table</sgmltag> tag in
+          <literal>html</literal> output format. Ceci
 	  pourrait être par exemple <literal>cellpadding</literal> ou
 	  <literal>bgcolor</literal>. Notez que vous ne voulez probablement pas
 	  spécifier <literal>border</literal> car c'est pris en compte
 	  par <literal>\pset border</literal>.
+          If no
+          <replaceable class="parameter">value</replaceable> is given,
+          the table attributes are unset.
 	  </para>
 	  </listitem>
 	  </varlistentry>
@@ -1935,13 +2044,15 @@
 	  </para>
 
 	  <para>
-	  Lorsque le paginateur est désactivé (<literal>off</literal>), il n'est pas utilisé. Quand le
-	  paginateur est activé (<literal>on</literal>), il est utilisé seulement si nécessaire,
-	  c'est-à-dire si l'affichage se fait sur un terminal et qu'il ne tient
-	  pas sur l'écran. <literal>\pset pager</literal>
-	  active et désactive le paginateur. Ce dernier peut aussi être
-	  configuré à <literal>always</literal>, ce qui fait qu'il est utilisé en
-	  permanence.
+          When the <literal>pager</literal> option is <literal>off</literal>, the pager
+          program is not used. When the <literal>pager</literal> option is
+          <literal>on</literal>, the pager is used when appropriate, i.e., when the
+          output is to a terminal and will not fit on the screen.
+          The <literal>pager</literal> option can also be set to <literal>always</literal>,
+          which causes the pager to be used for all terminal output regardless
+          of whether it fits on the screen.  <literal>\pset pager</literal>
+          without a <replaceable class="parameter">value</replaceable>
+          toggles pager use on and off.
 	  </para>
 	  </listitem>
 	  </varlistentry>
@@ -2058,7 +2169,7 @@
 	<note>
 	<para>
 	Cette commande est totalement séparée de la commande 
-	<acronym>SQL</acronym> <xref linkend="sql-set" endterm="sql-set-title"/>.
+	<acronym>SQL</acronym> <xref linkend="sql-set"/>.
 	</para>
 	</note>
 	</listitem>
@@ -2083,9 +2194,9 @@
 	class="parameter">options_table</replaceable></literal></term>
         <listitem>
         <para>
-        Vous permet de spécifier les attributs à placer à l'intérieur de la
-	balise <sgmltag>table</sgmltag> dans le mode d'affichage en tableau
-	<acronym>HTML</acronym>. Cette commande est équivalente à <literal>\pset
+        Specifies attributes to be placed within the
+        <sgmltag>table</sgmltag> tag in <acronym>HTML</acronym>
+        output format. Cette commande est équivalente à <literal>\pset
         tableattr <replaceable
 	class="parameter">options_table</replaceable></literal>.
         </para>
@@ -2106,9 +2217,8 @@
 
 
       <varlistentry>
-        <term><literal>\w</literal> {<replaceable
-	class="parameter">nomfichier</replaceable> | <replaceable
-	class="parameter">|commande</replaceable>}</term>
+        <term><literal>\w</literal> <replaceable class="parameter">filename</replaceable></term>
+        <term><literal>\w</literal> <literal>|</literal><replaceable class="parameter">command</replaceable></term>
         <listitem>
         <para>
 	Place le tampon de requête en cours dans le fichier <replaceable
@@ -2131,23 +2241,17 @@
 
 
       <varlistentry>
-        <term><literal>\z [ <replaceable
-	class="parameter">motif</replaceable> ]</literal></term>
+        <term><literal>\z [ <link linkend="APP-PSQL-patterns"><replaceable
+	class="parameter">motif</replaceable></link> ]</literal></term>
         <listitem>
         <para>
-        Produit une liste de toutes les tables, vues et séquences disponibles
+        Liste les tables, vues et séquences
 	avec leur droit d'accès associé. Si un <replaceable
 	class="parameter">motif</replaceable> est spécifié, seules les tables,
 	vues et séquences dont le nom correspond au motif sont listées.
 	</para>
 
 	<para>
-	Les commandes <xref linkend="sql-grant" endterm="sql-grant-title"/> et
-        <xref linkend="sql-revoke" endterm="sql-revoke-title"/>
-	sont utilisées pour configurer les droits d'accès.
-	</para>
-
-	<para>
 	Ceci est un alias pour <command>\dp</command> (<quote>affichage des
 	droits</quote>).
         </para>
@@ -2208,6 +2312,20 @@
   </para>
 
   <para>
+   Whenever the <replaceable class="parameter">pattern</replaceable> parameter
+   is omitted completely, the <literal>\d</literal> commands display all objects
+   that are visible in the current schema search path &mdash; this is
+   equivalent to using <literal>*</literal> as the pattern.
+   (An object is said to be <firstterm>visible</firstterm> if its
+   containing schema is in the search path and no object of the same
+   kind and name appears earlier in the search path. This is equivalent to the
+   statement that the object can be referenced by name without explicit
+   schema qualification.)
+   To see all objects in the database regardless of visibility,
+   use <literal>*.*</literal> as the pattern.
+  </para>
+
+  <para>
    À l'intérieur d'un motif, <literal>*</literal> correspond à toute
    séquence de caractères (et aussi à aucun) alors que <literal>?</literal> ne
    correspond qu'à un seul caractère. (Cette notation est comparable à celle des
@@ -2255,15 +2373,6 @@
    littéralement dans les motifs des noms d'opérateurs (par exemple
    pour l'argument de <literal>\do</literal>).
   </para>
-
-  <para>
-   Lorsque <replaceable
-   class="parameter">motif</replaceable> est complètement omis, les commandes
-   <literal>\d</literal> affichent tous les objets visibles dans le chemin de
-   recherche actuel du schéma &mdash; c'est équivalent à l'utilisation du
-   motif <literal>*</literal>. Pour voir tous les objets dans la base de
-   données, utilisez le motif <literal>*.*</literal>.
-  </para>
   </refsect3>
  </refsect2>
 
@@ -2694,57 +2803,61 @@
     Une fonctionnalité utile supplémentaire des variables
     <application>psql</application> est que vous pouvez les substituer
     (<quote>interpoler</quote>) dans les instructions <acronym>SQL</acronym>
-    standards. La syntaxe pour ceci est encore l'ajout d'un caractère
-    deux-points (<literal>:</literal>) avant le nom de la variable&nbsp;:
+    standards. 
+    <application>psql</application> provides special facilities for
+    ensuring that values used as SQL literals and identifiers are
+    properly escaped.  The syntax for interpolating a value without
+    any special escaping is again to prepend the variable name with a colon
+    (<literal>:</literal>)&nbsp;:
 <programlisting>basetest=&gt; <userinput>\set foo 'ma_table'</userinput>
 basetest=&gt; <userinput>SELECT * FROM :foo;</userinput>
 </programlisting>
-    envoie alors la requête pour la table <literal>ma_table</literal>. La
-    valeur de la variable est copiée littéralement, donc elle peut même contenir
-    des guillemets non terminés ou des commandes antislash. Vous devez vous
-    assurer que cela a un sens. L'interpolation de variable n'est pas réalisée
-    dans des entités SQL <acronym>SQL</acronym> entre guillemets.
+    envoie alors la requête pour la table <literal>ma_table</literal>. Note that this
+    may be unsafe: the value of the variable is copied literally, so it can
+    even contain unbalanced quotes or backslash commands. You must make sure
+    that it makes sense where you put it.
     </para>
 
     <para>
+    When a value is to be used as an SQL literal or identifier, it is
+    safest to arrange for it to be escaped.  To escape the value of
+    a variable as an SQL literal, write a colon followed by the variable
+    name in single quotes.  To escape the value an SQL identifier, write
+    a colon followed by the variable name in double quotes.  The previous
+    example would be more safely written this way:
+<programlisting>
+testdb=&gt; <userinput>\set foo 'my_table'</userinput>
+testdb=&gt; <userinput>SELECT * FROM :"foo";</userinput>
+</programlisting>
+    Variable interpolation will not be performed into quoted
+    <acronym>SQL</acronym> entities.
+    </para>
+
+    <para>
     Une utilisation possible de ce mécanisme est de copier le contenu d'un
     fichier dans une
     colonne d'une table. Tout d'abord, chargez le fichier dans une variable puis
     procédez ainsi&nbsp;:
-<programlisting>basetest=&gt; <userinput>\set contenu '''' `cat mon_fichier.txt` ''''</userinput>
-basetest=&gt; <userinput>INSERT INTO ma_table VALUES (:contenu);</userinput>
+<programlisting>basetest=&gt; <userinput>\set contenu `cat mon_fichier.txt`</userinput>
+basetest=&gt; <userinput>INSERT INTO ma_table VALUES (:'contenu');</userinput>
 </programlisting>
-    Un problème avec cette approche est que
-<filename>mon_fichier.txt</filename> pourrait contenir des guillemets simples.
-Ils ont besoin d'être échappés pour ne pas provoquer d'erreurs de syntaxe quand
-la deuxième ligne est traitée. Ceci peut se faire avec le programme
-<command>sed</command>&nbsp;:
-<programlisting>basetest=&gt; <userinput>\set contenu '''' `sed -e "s/'/\\\\\''/g" &lt;
-mon_fichier.txt` '\''</userinput>
-</programlisting>
-    Si vous utilisez des chaînes non conformes au standard, vous aurez aussi
-    besoin de doubler les antislashs. C'est un peu compliqué&nbsp;:
-<programlisting>basetest=&gt; <userinput>\set contenu '''' `sed -e "s/'/''/g" -e 's/\\/\\\\/g' &lt; mon_fichier.txt` ''''</userinput>
-</programlisting>
-    Notez l'utilisation de conventions différentes des guillemets pour le shell
-    pour que ni les guillemets simples ni les antislash ne soient spéciaux pour
-    le shell. Les antislashs sont toujours spéciaux pour <command>sed</command>.
-    Du coup, nous devons les doubler (peut-être qu'à un moment, vous avez pensé
-    qu'il est génial que toutes les commandes Unix utilisent le même caractère
-    d'échappement).
+    (Note that this still won't work if my_file.txt contains NUL bytes.
+    psql does not support embedded NUL bytes in variable values.)
     </para>
 
     <para>
-    Comme les caractères deux-points peuvent apparaître légalement dans les
-    commandes SQL, la règle suivante s'applique&nbsp;: la séquence de caractère
-    <quote>:nom</quote> n'est pas changée sauf si <quote>nom</quote> est le nom
-    d'une variable réellement initialisée. Dans tous les cas, vous pouvez
-    échapper un deux-points avec un antislash pour le protéger d'une
-    substitution. (La syntaxe deux-points pour les variables fait partie du
-    standard <acronym>SQL</acronym> pour les langages de requêtes embarqués,
-    tels que <application>ECPG</application>. La syntaxe deux-points pour les
-    morceaux de tableau et les conversions de types sont des extensions
-    <productname>PostgreSQL</productname>, d'où le conflit.)
+    Since colons can legally appear in SQL commands, an apparent attempt
+    at interpolation (such as <literal>:name</literal>,
+    <literal>:'name'</literal>, or <literal>:"name"</literal>) is not
+    changed unless the named variable is currently set. In any case, you
+    can escape a colon with a backslash to protect it from substitution.
+    (The colon syntax for variables is standard <acronym>SQL</acronym> for
+    embedded query languages, such as <application>ECPG</application>.
+    The colon syntax for array slices and type casts are
+    <productname>PostgreSQL</productname> extensions, hence the
+    conflict.  The colon syntax for escaping a variable's value as an
+    SQL literal or identifier is a <application>psql</application>
+    extension.)
     </para>
 
    </refsect3>

Modified: traduc/trunk/postgresql/ref/reassign_owned.xml
===================================================================
--- traduc/trunk/postgresql/ref/reassign_owned.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/reassign_owned.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-reassign-owned">
  <refmeta>
-  <refentrytitle id="sql-reassign-owned-title">REASSIGN OWNED</refentrytitle>
+  <refentrytitle>REASSIGN OWNED</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -77,9 +77,16 @@
   </para>
 
   <para>
-   La commande <xref linkend="sql-drop-owned" endterm="sql-drop-owned-title"/>
+   <command>REASSIGN OWNED</command> requires privileges on both the
+   source role(s) and the target role.
+  </para>
+
+  <para>
+   La commande <xref linkend="sql-drop-owned"/>
    est une alternative qui supprime tous les objets de la base possédés par un
-   ou plusieurs rôles.
+   ou plusieurs rôles. Note
+   also that <command>DROP OWNED</command> requires privileges only
+   on the source role(s).
   </para>
 
   <para>
@@ -103,8 +110,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-drop-owned" endterm="sql-drop-owned-title"/></member>
-   <member><xref linkend="sql-droprole" endterm="sql-droprole-title"/></member>
+   <member><xref linkend="sql-drop-owned"/></member>
+   <member><xref linkend="sql-droprole"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/reindex.xml
===================================================================
--- traduc/trunk/postgresql/ref/reindex.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/reindex.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-reindex">
  <refmeta>
-  <refentrytitle id="sql-reindex-title">REINDEX</refentrytitle>
+  <refentrytitle>REINDEX</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -107,8 +107,8 @@
     <listitem>
      <para>
       Recrée tous les index de la base de données en cours. Les index sur
-      les catalogues système partagés ne sont pas pris en compte sauf dans le
-      mode autonome (voir ci-dessous). Cette forme de <command>REINDEX</command>
+      les catalogues système partagés sont aussi traités. Cette forme de
+      <command>REINDEX</command>
       ne peut pas être exécuté à l'intérieur d'un bloc de transaction.
      </para>
     </listitem>
@@ -119,10 +119,9 @@
     <listitem>
      <para>
       Recrée tous les index des catalogues système à l'intérieur de la base de
-      données en cours. Les index des tables utilisateur ne sont pas traités.
-      De plus, les index sur les catalogues système partagés ne sont pas pris
-      compte sauf dans le mode autonome (voir ci-dessous). Cette forme de
-      <command>REINDEX</command> ne peut pas être exécuté à l'intérieur d'un
+      données en cours. Les index sur les catalogues système partagés sont aussi
+      inclus. Les index des tables utilisateur ne sont pas traités. Cette forme
+      de <command>REINDEX</command> ne peut pas être exécuté à l'intérieur d'un
       bloc de transaction.
      </para>
     </listitem>
@@ -202,31 +201,6 @@
   </para>
 
   <para>
-   Si une corruption est suspectée dans les index d'un des catalogues système
-   partagés (qui sont <structname>pg_authid</structname>,
-   <structname>pg_auth_members</structname>,
-   <structname>pg_database</structname>,
-   <structname>pg_pltemplate</structname>,
-   <structname>pg_shdepend</structname>,
-   <structname>pg_shdescription</structname> et
-   <structname>pg_tablespace</structname>), alors un serveur autonome doit être
-   utilisé pour le réparer. <command>REINDEX</command> ne traite pas les catalogues
-   partagés dans le mode multi-utilisateur.
-  </para>
-
-  <para>
-   Pour tous les index sauf les catalogues système partagés,
-   <command>REINDEX</command> est protégé contre les arrêts brutaux et utilise les
-   transactions. <command>REINDEX</command> n'est pas protégé pour les index partagés,
-   ce qui explique pourquoi ce cas est désactivé pendant les opérations
-   normales. Si un échec survient lors de la réindexation d'un de ces catalogues
-   dans le mode autonome, il n'est pas possible de relancer le serveur
-   en mode normal jusqu'à ce que le problème soit rectifié (le symptôme
-   typique d'un index partagé reconstruit partiellement est une erreur
-   <quote>index n'est pas un btree</quote>).
-  </para>
-
-  <para>
    <command>REINDEX</command> est similaire à une suppression et à une nouvelle
    création de l'index, dans les fait le contenu de l'index est complètement
    recréé. Néanmoins, les considérations de verrouillage sont assez

Modified: traduc/trunk/postgresql/ref/reindexdb.xml
===================================================================
--- traduc/trunk/postgresql/ref/reindexdb.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/reindexdb.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -52,7 +52,7 @@
 
   <para>
    <application>reindexdb</application> est un enrobage de la commande
-   <xref linkend="sql-reindex" endterm="sql-reindex-title"/>. Il n'y a pas
+   <xref linkend="sql-reindex"/>. Il n'y a pas
    de différence entre la réindexation des bases de données par cette méthode
    et par celles utilisant d'autres méthodes d'accès au serveur.
   </para>
@@ -234,6 +234,27 @@
        </para>
       </listitem>
      </varlistentry>
+
+    <varlistentry>
+      <term><option>-V</option></term>
+      <term><option>--version</option></term>
+      <listitem>
+       <para>
+       Print the <application>reindexdb</application> version and exit.
+       </para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>-?</option></term>
+      <term><option>--help</option></term>
+      <listitem>
+      <para>
+      Show help about <application>reindexdb</application> command line
+      arguments, and exit.
+      </para>
+      </listitem>
+    </varlistentry>
     </variablelist>
    </para>
  </refsect1>
@@ -271,7 +292,7 @@
 
   <para>
    En cas de difficultés, il peut être utile de consulter <xref linkend="sql-reindex"
-   endterm="sql-reindex-title"/> et <xref linkend="app-psql"/>, sections présentant
+  /> et <xref linkend="app-psql"/>, sections présentant
    les problèmes éventuels et les messages d'erreur.
   </para>
   <para>
@@ -321,7 +342,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-reindex" endterm="sql-reindex-title"/></member>
+   <member><xref linkend="sql-reindex"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/release_savepoint.xml
===================================================================
--- traduc/trunk/postgresql/ref/release_savepoint.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/release_savepoint.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-release-savepoint">
  <refmeta>
-  <refentrytitle id="sql-release-savepoint-title">RELEASE SAVEPOINT</refentrytitle>
+  <refentrytitle>RELEASE SAVEPOINT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -43,7 +43,7 @@
    C'est, pour l'utilisateur, le seul comportement visible. Elle ne
    défait pas les commandes exécutées après l'établissement du point de
    sauvegarde (pour cela, voir <xref linkend="sql-rollback-to"
-   endterm="sql-rollback-to-title"/>). Détruire un point de sauvegarde quand il
+  />). Détruire un point de sauvegarde quand il
    n'est plus nécessaire peut permettre au système de récupérer certaines
    ressources sans attendre la fin de la transaction.
   </para>
@@ -117,11 +117,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
-   <member><xref linkend="sql-rollback-to" endterm="sql-rollback-to-title"/></member>
-   <member><xref linkend="sql-savepoint" endterm="sql-savepoint-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-rollback"/></member>
+   <member><xref linkend="sql-rollback-to"/></member>
+   <member><xref linkend="sql-savepoint"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/reset.xml
===================================================================
--- traduc/trunk/postgresql/ref/reset.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/reset.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-reset">
  <refmeta>
-  <refentrytitle id="sql-reset-title">RESET</refentrytitle>
+  <refentrytitle>RESET</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -34,7 +34,7 @@
    valeur par défaut. <command>RESET</command> est une alternative à
 <synopsis>SET <replaceable class="parameter">paramètre_configuration</replaceable> TO DEFAULT
 </synopsis>
-   On pourra se référer à <xref linkend="sql-set" endterm="sql-set-title"/> pour plus de
+   On pourra se référer à <xref linkend="sql-set"/> pour plus de
    détails.
   </para>
 
@@ -68,7 +68,7 @@
      <para>
       Nom d'un paramètre configurable. Les paramètres disponibles sont
       documentés dans <xref linkend="runtime-config"/> et sur la page de
-      référence <xref linkend="sql-set" endterm="sql-set-title"/>.
+      référence <xref linkend="sql-set"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -107,8 +107,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-set" endterm="sql-set-title"/></member>
-   <member><xref linkend="sql-show" endterm="sql-show-title"/></member>
+   <member><xref linkend="sql-set"/></member>
+   <member><xref linkend="sql-show"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/revoke.xml
===================================================================
--- traduc/trunk/postgresql/ref/revoke.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/revoke.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-revoke">
  <refmeta>
-  <refentrytitle id="sql-revoke-title">REVOKE</refentrytitle>
+  <refentrytitle>REVOKE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage </refmiscinfo>
  </refmeta>
@@ -20,68 +20,77 @@
 <synopsis>REVOKE [ GRANT OPTION FOR ]
     { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
     [,...] | ALL [ PRIVILEGES ] }
-    ON [ TABLE ] <replaceable class="parameter">nom_table</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    ON { [ TABLE ] <replaceable class="PARAMETER">nom_table</replaceable> [, ...]
+         | ALL TABLES IN SCHEMA <replaceable>nom_schéma</replaceable> [, ...] }
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="PARAMETER">colonne</replaceable> [, ...] )
     [,...] | ALL [ PRIVILEGES ] ( <replaceable class="PARAMETER">colonne</replaceable> [, ...] ) }
-    ON [ TABLE ] <replaceable class="parameter">nom_table</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    ON [ TABLE ] <replaceable class="PARAMETER">nom_table</replaceable> [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { { USAGE | SELECT | UPDATE }
     [,...] | ALL [ PRIVILEGES ] }
-    ON SEQUENCE <replaceable class="parameter">nom_séquence</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    ON { SEQUENCE <replaceable class="PARAMETER">nom_séquence</replaceable> [, ...]
+         | ALL SEQUENCES IN SCHEMA <replaceable>nom_schéma</replaceable> [, ...] }
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
     ON DATABASE <replaceable>nom_base</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { USAGE | ALL [ PRIVILEGES ] }
     ON FOREIGN DATA WRAPPER <replaceable>nom_fdw</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { USAGE | ALL [ PRIVILEGES ] }
     ON FOREIGN SERVER <replaceable>nom_serveur</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { EXECUTE | ALL [ PRIVILEGES ] }
-    ON FUNCTION <replaceable>nomfonction</replaceable> ( [ [ <replaceable class="parameter">modearg</replaceable> ] [ <replaceable class="parameter">nomarg</replaceable> ] <replaceable class="parameter">typearg</replaceable> [, ...] ] ) [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    ON { FUNCTION <replaceable>nom_fonction</replaceable> ( [ [ <replaceable class="parameter">mode_arg</replaceable> ] [ <replaceable class="parameter">nom_arg</replaceable> ] <replaceable class="parameter">type_arg</replaceable> [, ...] ] ) [, ...]
+         | ALL FUNCTIONS IN SCHEMA <replaceable>nom_schéma</replaceable> [, ...] }
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { USAGE | ALL [ PRIVILEGES ] }
-    ON LANGUAGE <replaceable>nom_langage</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    ON LANGUAGE <replaceable>nom_lang</replaceable> [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
+    { { SELECT | UPDATE } [,...] | ALL [ PRIVILEGES ] }
+    ON LARGE OBJECT <replaceable class="PARAMETER">loid</replaceable> [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
+    [ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
     { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
     ON SCHEMA <replaceable>nom_schéma</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
     { CREATE | ALL [ PRIVILEGES ] }
-    ON TABLESPACE <replaceable>nom_espacelogique</replaceable> [, ...]
-    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_role</replaceable> | PUBLIC } [, ...]
+    ON TABLESPACE <replaceable>nom_tablespace</replaceable> [, ...]
+    FROM { [ GROUP ] <replaceable class="PARAMETER">nom_rôle</replaceable> | PUBLIC } [, ...]
     [ CASCADE | RESTRICT ]
 
 REVOKE [ ADMIN OPTION FOR ]
-    <replaceable class="PARAMETER">role</replaceable> [, ...] FROM <replaceable class="PARAMETER">nom_role</replaceable> [, ...]
+    <replaceable class="PARAMETER">nom_rôle</replaceable> [, ...] FROM <replaceable class="PARAMETER">nom_rôle</replaceable> [, ...]
     [ CASCADE | RESTRICT ]
 </synopsis>
  </refsynopsisdiv>
@@ -102,7 +111,7 @@
 
   <para>
    Voir la description de la commande <xref linkend="sql-grant"
-   endterm="sql-grant-title"/> pour connaître la signification des types de
+  /> pour connaître la signification des types de
    droits.
   </para>
 
@@ -160,7 +169,7 @@
   <para>
    Utilisez la commande <command>\dp</command> de <xref linkend="app-psql"/>
    pour afficher les droits donnés sur des tables et colonnes.  Voir <xref
-   linkend="sql-grant" endterm="sql-grant-title"/> pour plus d'informations sur
+   linkend="sql-grant"/> pour plus d'informations sur
    le format. Pour les objets qui ne sont pas des tables, il existe d'autres
    commandes <command>\d</command> qui peuvent afficher leurs droits.
   </para>
@@ -263,7 +272,7 @@
 
    <para>
     La note de compatibilité de la commande <xref linkend="sql-grant"
-    endterm="sql-grant-title"/> s'applique par analogie à 
+   /> s'applique par analogie à 
     <command>REVOKE</command>. Les mots clés <literal>RESTRICT</literal>
     ou <literal>CASCADE</literal> sont requis d'après le standard, mais 
     <productname>PostgreSQL</productname> utilise <literal>RESTRICT</literal> par
@@ -275,7 +284,7 @@
   <title>Voir aussi</title>
 
   <simpara>
-   <xref linkend="sql-grant" endterm="sql-grant-title"/>
+   <xref linkend="sql-grant"/>
   </simpara>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/rollback.xml
===================================================================
--- traduc/trunk/postgresql/ref/rollback.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/rollback.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-rollback">
  <refmeta>
-  <refentrytitle id="sql-rollback-title">ROLLBACK</refentrytitle>
+  <refentrytitle>ROLLBACK</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -54,7 +54,7 @@
   <title>Notes</title>
 
   <para>
-   L'utilisation de la commande <xref linkend="sql-commit" endterm="sql-commit-title"/> permet
+   L'utilisation de la commande <xref linkend="sql-commit"/> permet
    de terminer une transaction avec succès.
   </para>
 
@@ -88,10 +88,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
    <member><xref linkend="sql-rollback-to"
-    endterm="sql-rollback-to-title"/></member>
+   /></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/rollback_prepared.xml
===================================================================
--- traduc/trunk/postgresql/ref/rollback_prepared.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/rollback_prepared.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-rollback-prepared">
  <refmeta>
-  <refentrytitle id="sql-rollback-prepared-title">ROLLBACK PREPARED</refentrytitle>
+  <refentrytitle>ROLLBACK PREPARED</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -85,8 +85,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-prepare-transaction" endterm="sql-prepare-transaction-title"/></member>
-   <member><xref linkend="sql-commit-prepared" endterm="sql-commit-prepared-title"/></member>
+   <member><xref linkend="sql-prepare-transaction"/></member>
+   <member><xref linkend="sql-commit-prepared"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/rollback_to.xml
===================================================================
--- traduc/trunk/postgresql/ref/rollback_to.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/rollback_to.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-rollback-to">
  <refmeta>
-  <refentrytitle id="sql-rollback-to-title">ROLLBACK TO SAVEPOINT</refentrytitle>
+  <refentrytitle>ROLLBACK TO SAVEPOINT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -64,7 +64,7 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-release-savepoint" endterm="sql-release-savepoint-title"/>
+   <xref linkend="sql-release-savepoint"/>
    est utilisé pour détruire un point de sauvegarde
    sans annuler les effets de commandes exécutées après son établissement.
   </para>
@@ -78,10 +78,15 @@
    concerne les points de sauvegarde. Tout curseur ouvert à l'intérieur d'un
    point de sauvegarde est fermé lorsque le point de sauvegarde est rejoint. Si
    un curseur précédemment ouvert est affecté par une commande <command>FETCH</command>
-   à l'intérieur d'un point de sauvegarde rejoint par la suite, la position
+   ou <command>MOVE</command> à l'intérieur d'un point de sauvegarde rejoint par la suite, la position
    du curseur reste celle obtenue par <command>FETCH</command> (c'est-à-dire
-   que <command>FETCH</command> n'est pas annulé). La fermeture d'un curseur n'est pas non plus
-   remise en cause par une annulation. Un curseur dont l'exécution provoque
+   que le déplacement du curseur dû au <command>FETCH</command> n'est pas annulé).
+   La fermeture d'un curseur n'est pas non plus
+   remise en cause par une annulation.
+   However, other side-effects caused by the cursor's query (such as
+   side-effects of volatile functions called by the query) <emphasis>are</emphasis>
+   rolled back if they occur during a savepoint that is later rolled back.
+   Un curseur dont l'exécution provoque
    l'annulation d'une transaction est placé dans un état non exécutable. De ce fait, 
    alors même que la transaction peut être restaurée par <command>ROLLBACK TO SAVEPOINT</command>, le
    curseur ne peut plus être utilisé.
@@ -145,11 +150,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-release-savepoint" endterm="sql-release-savepoint-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
-   <member><xref linkend="sql-savepoint" endterm="sql-savepoint-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-release-savepoint"/></member>
+   <member><xref linkend="sql-rollback"/></member>
+   <member><xref linkend="sql-savepoint"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/savepoint.xml
===================================================================
--- traduc/trunk/postgresql/ref/savepoint.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/savepoint.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-savepoint">
  <refmeta>
-  <refentrytitle id="sql-savepoint-title">SAVEPOINT</refentrytitle>
+  <refentrytitle>SAVEPOINT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -65,9 +65,9 @@
   <title>Notes</title>
 
   <para>
-   Utilisez <xref linkend="sql-rollback-to" endterm="sql-rollback-to-title"/>
+   Utilisez <xref linkend="sql-rollback-to"/>
    pour annuler un point de sauvegarde. Utilisez <xref
-   linkend="sql-release-savepoint" endterm="sql-release-savepoint-title"/> pour
+   linkend="sql-release-savepoint"/> pour
    détruire un point de sauvegarde, conservant l'effet des commandes exécutées
    après son établissement.
   </para>
@@ -128,11 +128,11 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-release-savepoint" endterm="sql-release-savepoint-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
-   <member><xref linkend="sql-rollback-to" endterm="sql-rollback-to-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-release-savepoint"/></member>
+   <member><xref linkend="sql-rollback"/></member>
+   <member><xref linkend="sql-rollback-to"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/select.xml
===================================================================
--- traduc/trunk/postgresql/ref/select.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/select.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-select">
  <refmeta>
-  <refentrytitle id="sql-select-title">SELECT</refentrytitle>
+  <refentrytitle>SELECT</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -48,7 +48,7 @@
     [ FETCH { FIRST | NEXT } [ <replaceable class="parameter">total</replaceable> ] { ROW | ROWS } ONLY ]
     [ FOR { UPDATE | SHARE } [ OF <replaceable class="parameter">nom_table</replaceable> [, ...] ] [ NOWAIT ] [...] ]
 
-avec <replaceable class="parameter">éléments_from</replaceable> qui peut être&nbsp;:
+<phrase>avec <replaceable class="parameter">éléments_from</replaceable> qui peut être&nbsp;:</phrase>
 
     [ ONLY ] <replaceable class="parameter">nom_table</replaceable> [ * ] [ [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">alias_colonne</replaceable> [, ...] ) ] ]
     ( <replaceable class="parameter">select</replaceable> ) [ AS ] <replaceable class="parameter">alias</replaceable> [ ( <replaceable class="parameter">alias_colonne</replaceable> [, ...] ) ]
@@ -57,7 +57,7 @@
     <replaceable class="parameter">nom_fonction</replaceable> ( [ <replaceable class="parameter">argument</replaceable> [, ...] ] ) AS ( <replaceable class="parameter">définition_colonne</replaceable> [, ...] )
     <replaceable class="parameter">éléments_from</replaceable> [ NATURAL ] <replaceable class="parameter">type_jointure</replaceable> <replaceable class="parameter">éléments_from</replaceable> [ ON <replaceable class="parameter">condition_jointure</replaceable> | USING ( <replaceable class="parameter">colonne_jointure</replaceable> [, ...] ) ]
 
-et <replaceable class="parameter">requête_with</replaceable> est&nbsp;:
+<phrase>et <replaceable class="parameter">requête_with</replaceable> est&nbsp;:</phrase>
 
     <replaceable class="parameter">nom_requête_with</replaceable> [ ( <replaceable class="parameter">nom_colonne</replaceable> [, ...] ) ] AS ( <replaceable class="parameter">select</replaceable> )
 
@@ -85,7 +85,7 @@
       dans la liste <literal>FROM</literal>. Une requête
       <literal>WITH</literal> qui est référencée plus d'une fois dans
       <literal>FROM</literal> n'est calculée qu'une fois
-      (voir <xref linkend="sql-with" endterm="sql-with-title"/> vi-dessous).
+      (voir <xref linkend="sql-with"/> vi-dessous).
      </para>
     </listitem>
 
@@ -95,7 +95,7 @@
       (Chaque élément dans la liste <literal>FROM</literal> est une table 
       réelle ou virtuelle.) Si plus d'un élément sont spécifiés dans la liste
       <literal>FROM</literal>, ils font l'objet d'une jointure croisée (cross-join). (Voir <xref
-      linkend="sql-from" endterm="sql-from-title"/> ci-dessous.)
+      linkend="sql-from"/> ci-dessous.)
      </para>
     </listitem>
 
@@ -103,7 +103,7 @@
      <para>
       Si la clause <literal>WHERE</literal> est spécifiée, toutes les lignes
       qui ne satisfont pas les conditions sont éliminées de l'affichage. (Voir
-      <xref linkend="sql-where" endterm="sql-where-title"/> ci-dessous.)
+      <xref linkend="sql-where"/> ci-dessous.)
      </para>
     </listitem>
 
@@ -113,8 +113,8 @@
       divisé en groupes de lignes qui correspondent à une ou plusieurs valeurs.
       Si la clause <literal>HAVING</literal> est présente, elle élimine les
       groupes qui ne satisfont pas la condition donnée. (Voir <xref
-      linkend="sql-groupby" endterm="sql-groupby-title"/> et <xref
-      linkend="sql-having" endterm="sql-having-title"/> ci-dessous.)
+      linkend="sql-groupby"/> et <xref
+      linkend="sql-having"/> ci-dessous.)
      </para>
     </listitem>
 
@@ -122,7 +122,7 @@
      <para>
       Les lignes retournées sont traitées en utilisant les expressions de sortie
       de <command>SELECT</command> pour chaque ligne sélectionnée. (Voir <xref
-      linkend="sql-select-list" endterm="sql-select-list-title"/> ci-dessous.)
+      linkend="sql-select-list"/> ci-dessous.)
     </para>
     </listitem>
 
@@ -139,9 +139,9 @@
       présentes dans le premier ensemble de résultats mais pas dans le 
       deuxième. Dans les trois cas, les lignes dupliquées sont éliminées sauf
       si <literal>ALL</literal> est spécifié. (Voir <xref linkend="sql-union"
-      endterm="sql-union-title"/>, <xref linkend="sql-intersect"
-      endterm="sql-intersect-title"/> et <xref linkend="sql-except"
-      endterm="sql-except-title"/> ci-dessous.)
+     />, <xref linkend="sql-intersect"
+     /> et <xref linkend="sql-except"
+     /> ci-dessous.)
      </para>
     </listitem>
 
@@ -151,7 +151,7 @@
       renvoyées sont triées dans l'ordre spécifié. Si <literal>ORDER
       BY</literal> n'est pas indiqué, les lignes sont retournées dans l'ordre 
       qui permet la réponse la plus rapide du système. (Voir <xref
-      linkend="sql-orderby" endterm="sql-orderby-title"/> ci-dessous.)
+      linkend="sql-orderby"/> ci-dessous.)
      </para>
     </listitem>
 
@@ -162,7 +162,7 @@
       toutes les expressions données. <literal>ALL</literal> (la valeur par
       défaut) renvoie toutes les lignes candidates, y compris les lignes
       dupliquées. (Voir <xref linkend="sql-distinct"
-      endterm="sql-distinct-title"/> ci-dessous.)
+     /> ci-dessous.)
      </para>
     </listitem>
 
@@ -172,7 +172,7 @@
       ou <literal>OFFSET</literal> sont
       spécifiées, l'instruction <command>SELECT</command> ne renvoie qu'un
       sous-ensemble de lignes de résultats. (Voir <xref linkend="sql-limit"
-      endterm="sql-limit-title"/> ci-dessous.)
+     /> ci-dessous.)
      </para>
     </listitem>
 
@@ -182,7 +182,7 @@
       SHARE</literal> est spécifiée, l'instruction <command>SELECT</command>
       verrouille les lignes sélectionnées contre les mises à jour concurrentes.
       (Voir <xref linkend="sql-for-update-share"
-      endterm="sql-for-update-share-title"/> ci-dessous.)
+     /> ci-dessous.)
      </para>
     </listitem>
    </orderedlist>
@@ -309,7 +309,7 @@
         <command>SELECT</command>. Le sous-<command>SELECT</command>
         doit être entouré de parenthèses et un alias
 	<emphasis>doit</emphasis> lui être fourni.
-	Une commande <xref linkend="sql-values" endterm="sql-values-title"/>
+	Une commande <xref linkend="sql-values"/>
         peut aussi être utilisée ici.
        </para>
       </listitem>
@@ -604,7 +604,7 @@
    <para>
     Les éléments de la liste <literal>PARTITION BY</literal> sont interprétés
     à peu près de la même façon que des éléments de <xref linkend="sql-groupby"
-    endterm="sql-groupby-title"/>, sauf qu'ils sont toujours des expressions
+   />, sauf qu'ils sont toujours des expressions
     simples et jamais le nom ou le numéro d'une colonne en sortie.
     Une autre différence est que ces expressions peuvent contenir des appels
     à des fonctions d'aggrégat, ce qui n'est pas autorisé dans une clause
@@ -615,7 +615,7 @@
    <para>
     De façon similaire, les éléments de la liste <literal>ORDER BY</literal>
     sont interprétés à peu près de la même façon que les éléments d'un <xref
-    linkend="sql-orderby" endterm="sql-orderby-title"/>, sauf que les expressions
+    linkend="sql-orderby"/>, sauf que les expressions
     sont toujours pris comme de simples expressions et jamais comme le nom ou
     le numéro d'une colonne en sortie.
    </para>
@@ -624,37 +624,73 @@
     La clause <replaceable class="parameter">clause_frame</replaceable>
     optionnelle définit la <firstterm>frame window</firstterm> pour les
     fonctions window qui dépendent de la frame (ce n'est pas le cas de toutes).
-    Elle peut prendre une de ces valeurs&nbsp;:
+    The window frame is a set of related rows for
+    each row of the query (called the <firstterm>current row</firstterm>).
+    The <replaceable class="parameter">frame_clause</replaceable> can be one of
+
 <synopsis>
-RANGE UNBOUNDED PRECEDING
-RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
-ROWS UNBOUNDED PRECEDING
-ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
+[ RANGE | ROWS ] <replaceable>frame_start</replaceable>
+[ RANGE | ROWS ] BETWEEN <replaceable>frame_start</replaceable> AND <replaceable>frame_end</replaceable>
 </synopsis>
-    Les deux premiers sont équivalents et sont la valeur par défaut&nbsp;: ils
-    déclarent que la frame est constituée de tous les enregistrements du début
-    de la partition jusqu'au dernier pair de l'enregistrement courant dans le
-    tri défini par <literal>ORDER BY</literal> (ce qui signifie tous les
-    enregistrements si il n'y a pas d'<literal>ORDER BY</literal>). Les options
-    <literal>RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED
-    FOLLOWING</literal> et <literal>ROWS BETWEEN UNBOUNDED PRECEDING AND
-    UNBOUNDED FOLLOWING</literal> sont aussi équivalentes&nbsp;: ils
-    sélectionnent toujours tous les enregistrements de la partition. Finalement,
-    <literal>ROWS UNBOUNDED PRECEDING</literal> ou son équivalent verbeux
-    <literal>ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW</literal>
-    sélectionne tous les enregistrements de la partition jusqu'à l'enregistrement
-    courant (sans se soucier des doublons). Soyez conscient que cette option
-    peut produire des résultats dépendant de l'implémentation si le tri
-    <literal>ORDER BY</literal> ne trie pas les enregistrements de façon unique.
+
+    where <replaceable>frame_start</replaceable> and <replaceable>frame_end</replaceable> can be
+    one of
+
+<synopsis>
+UNBOUNDED PRECEDING
+<replaceable>value</replaceable> PRECEDING
+CURRENT ROW
+<replaceable>value</replaceable> FOLLOWING
+UNBOUNDED FOLLOWING
+</synopsis>
+
+    If <replaceable>frame_end</replaceable> is omitted it defaults to <literal>CURRENT
+    ROW</literal>.  Restrictions are that
+    <replaceable>frame_start</replaceable> cannot be <literal>UNBOUNDED FOLLOWING</literal>,
+    <replaceable>frame_end</replaceable> cannot be <literal>UNBOUNDED PRECEDING</literal>,
+    and the <replaceable>frame_end</replaceable> choice cannot appear earlier in the
+    above list than the <replaceable>frame_start</replaceable> choice &mdash; for example
+    <literal>RANGE BETWEEN CURRENT ROW AND <replaceable>value</replaceable>
+    PRECEDING</literal> is not allowed.
    </para>
 
    <para>
+    The default framing option is <literal>RANGE UNBOUNDED PRECEDING</literal>,
+    which is the same as <literal>RANGE BETWEEN UNBOUNDED PRECEDING AND
+    CURRENT ROW</literal>; it sets the frame to be all rows from the partition start
+    up through the current row's last peer in the <literal>ORDER BY</literal>
+    ordering (which means all rows if there is no <literal>ORDER BY</literal>).
+    In general, <literal>UNBOUNDED PRECEDING</literal> means that the frame
+    starts with the first row of the partition, and similarly
+    <literal>UNBOUNDED FOLLOWING</literal> means that the frame ends with the last
+    row of the partition (regardless of <literal>RANGE</literal> or <literal>ROWS</literal>
+    mode).  In <literal>ROWS</literal> mode, <literal>CURRENT ROW</literal>
+    means that the frame starts or ends with the current row; but in
+    <literal>RANGE</literal> mode it means that the frame starts or ends with
+    the current row's first or last peer in the <literal>ORDER BY</literal> ordering.
+    The <replaceable>value</replaceable> <literal>PRECEDING</literal> and
+    <replaceable>value</replaceable> <literal>FOLLOWING</literal> cases are currently only
+    allowed in <literal>ROWS</literal> mode.  They indicate that the frame starts
+    or ends with the row that many rows before or after the current row.
+    <replaceable>value</replaceable> must be an integer expression not
+    containing any variables, aggregate functions, or window functions.
+    The value must not be null or negative; but it can be zero, which
+    selects the current row itself.
+   </para>
+
+   <para>
+    Beware that the <literal>ROWS</literal> options can produce unpredictable
+    results if the <literal>ORDER BY</literal> ordering does not order the rows
+    uniquely.  The <literal>RANGE</literal> options are designed to ensure that
+    rows that are peers in the <literal>ORDER BY</literal> ordering are treated
+    alike; any two peer rows will be both in or both not in the frame.
+   </para>
+
+   <para>
     L'utilité d'une clause <literal>WINDOW</literal> est de spécifier le
     comportement des <firstterm>fonctions window</firstterm> apparaissant dans
-    la clause <xref linkend="sql-select-list" endterm="sql-select-list-title"/>
-    ou la clause <xref linkend="sql-orderby" endterm="sql-orderby-title"/> de
+    la clause <xref linkend="sql-select-list"/>
+    ou la clause <xref linkend="sql-orderby"/> de
     la requête. Ces fonctions peuvent référencer les entrées de clauses
     <literal>WINDOW</literal> par nom dans leurs clauses <literal>OVER</literal>.
     Toutefois, il n'est pas obligatoire qu'une entrée de clause
@@ -1024,14 +1060,14 @@
 
    <para>
     SQL:2008 a introduit une sytaxe différente pour faire la même chose.
-    PostgreSQL supporte aussi cette syntaxe.
+    <productname>PostgreSQL</productname> supporte aussi cette syntaxe.
 <synopsis>
 OFFSET <replaceable class="parameter">début</replaceable> { ROW | ROWS }
 FETCH { FIRST | NEXT } [ <replaceable class="parameter">compte</replaceable> ] { ROW | ROWS } ONLY
 </synopsis>
-    Les deux clauses sont optionnelles. Si elles sont présentes,
-    la clause <literal>OFFSET</literal> doit précéder la clause
-    <literal>FETCH</literal>.
+    According to the standard, the <literal>OFFSET</literal> clause must come
+    before the <literal>FETCH</literal> clause if both are present; but
+    <productname>PostgreSQL</productname> is laxer and allows either order.
     <literal>ROW</literal> et <literal>ROWS</literal> ainsi que
     <literal>FIRST</literal> et <literal>NEXT</literal> sont du bruit et
     n'ont pas d'influence sur les effets de ces clauses. Dans cette syntaxe, quand
@@ -1102,11 +1138,25 @@
     <command>SELECT FOR UPDATE</command> a
     déjà verrouillé une ligne ou un ensemble de lignes à partir d'une autre transaction,
     <command>SELECT FOR UPDATE</command> attend la fin de l'autre transaction puis verrouille et
-    renvoie la ligne modifiée (ou aucune ligne si elle a été supprimée). Pour
+    renvoie la ligne modifiée (ou aucune ligne si elle a été supprimée).
+    Within a <literal>SERIALIZABLE</literal> transaction,
+    however, an error will be thrown if a row to be locked has changed
+    since the transaction started. Pour
     plus d'informations, voir <xref linkend="mvcc"/>.
    </para>
 
    <para>
+    <literal>FOR SHARE</literal> a un comportement similaire. La différence
+    se situe dans le type de verrou acquis. Contrairement à 
+    <literal>FOR UPDATE</literal> qui pose un verrou exclusif,
+    <literal>FOR SHARE</literal> pose un verrou partagé sur chaque ligne récupérée.
+    Un verrou partagée bloque les instructions <command>UPDATE</command>,
+    <command>DELETE</command> ou <command>SELECT FOR UPDATE</command>
+    des transaction concurrentes accédant à ces lignes, mais il n'interdit
+    pas les <command>SELECT FOR SHARE</command>.
+   </para>
+
+   <para>
     Pour éviter à l'opération d'attendre la validation des autres transactions,
     on utilise l'option <literal>NOWAIT</literal>. <command>SELECT FOR UPDATE
     NOWAIT</command> rapporte une erreur si une ligne
@@ -1115,28 +1165,17 @@
     <literal>NOWAIT</literal> s'applique seulement au(x) verrou(x) niveau ligne
     &mdash; le verrou niveau table <literal>ROW SHARE</literal> est toujours
     pris de façon ordinaire (voir <xref linkend="mvcc"/>). 
-    L'option <literal>NOWAIT</literal> de <xref linkend="sql-lock" endterm="sql-lock-title"/>
+    L'option <literal>NOWAIT</literal> de <xref linkend="sql-lock"/>
     peut toujours être utilisée pour acquérir le verrou niveau table sans attendre.
    </para>
 
    <para>
-    <literal>FOR SHARE</literal> a un comportement similaire. La différence
-    se situe dans le type de verrou acquis. Contrairement à 
-    <literal>FOR UPDATE</literal> qui pose un verrou exclusif,
-    <literal>FOR SHARE</literal> pose un verrou partagé sur chaque ligne récupérée.
-    Un verrou partagée bloque les instructions <command>UPDATE</command>,
-    <command>DELETE</command> ou <command>SELECT FOR UPDATE</command>
-    des transaction concurrentes accédant à ces lignes, mais il n'interdit
-    pas les <command>SELECT FOR SHARE</command>.
-   </para>
-
-   <para>
     Si des tables particulières sont nommées dans les clauses <literal>FOR UPDATE</literal>
     et <literal>FOR SHARE</literal>, alors seules les lignes provenant de ces
     tables sont verrouillées&nbsp;; toute autre table utilisée dans le
     <command>SELECT</command> est simplement lue. Une clause
     <literal>FOR UPDATE</literal> ou <literal>FOR SHARE</literal> sans liste de
-    tables affecte toute les tables utilisées dans la commande. Si
+    tables affecte toute les tables utilisées dans l'instruction. Si
     <literal>FOR UPDATE</literal> ou <literal>FOR SHARE</literal> est appliquée
     à une vue ou à une sous-requête, cela affecte toutes les tables utilisées
     dans la vue ou la sous-requête.
@@ -1166,6 +1205,36 @@
     utilisées avec des fonctions d'aggrégats.
    </para>
 
+   <para>
+    When <literal>FOR UPDATE</literal> or <literal>FOR SHARE</literal>
+    appears at the top level of a <command>SELECT</command> query, the rows that
+    are locked are exactly those that are returned by the query; in the
+    case of a join query, the rows locked are those that contribute to
+    returned join rows.  In addition, rows that satisfied the query
+    conditions as of the query snapshot will be locked, although they
+    will not be returned if they have since been updated to not satisfy
+    the query conditions.  If a <literal>LIMIT</literal> is used, locking stops
+    once enough rows have been returned to satisfy the limit (but note that
+    rows skipped over by <literal>OFFSET</literal> will get locked).  Similarly,
+    if <literal>FOR UPDATE</literal> or <literal>FOR SHARE</literal>
+    is used in a cursor's query, only rows actually fetched or stepped past
+    by the cursor will be locked.
+   </para>
+
+   <para>
+    When <literal>FOR UPDATE</literal> or <literal>FOR SHARE</literal>
+    appears in a sub-<command>SELECT</command>, the rows locked are those
+    returned to the outer query by the sub-query.  This might involve
+    fewer rows than inspection of the sub-query alone would suggest,
+    since conditions from the outer query might be used to optimize
+    execution of the sub-query.  For example,
+<programlisting>
+SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss WHERE col1 = 5;
+</programlisting>
+    will lock only rows having <literal>col1 = 5</literal>, even though that
+    condition is not textually within the sub-query.
+   </para>
+
   <caution>
    <para>
     Évitez de verrouiller une ligne puis de la modifier après un nouveau point
@@ -1192,34 +1261,28 @@
 
   <caution>
    <para>
-    Il est possible qu'une commande <command>SELECT</command> qui utilise
-    simultanément les clauses <literal>LIMIT</literal> et
-    <literal>FOR UPDATE/SHARE</literal> retourne moins de lignes que
-    le nombre spécifié par <literal>LIMIT</literal>. En effet, 
-    <literal>LIMIT</literal> est appliqué le premier. La commande 
-    sélectionne le nombre de lignes spécifiées, mais peut être bloquée
-    en essayant d'obtenir un verrou sur l'une ou l'autre de ces lignes.
-    Lorsque le <literal>SELECT</literal> est débloqué, la ligne peut avoir été 
-    supprimée ou modifiée de telle sorte qu'elle ne remplisse plus les
-    conditions imposées par la clause <literal>WHERE</literal>. Dans ce cas, 
-    elle n'est pas retournée.
+    It is possible for a <command>SELECT</command> command using <literal>ORDER
+    BY</literal> and <literal>FOR UPDATE/SHARE</literal> to return rows out of
+    order.  This is because <literal>ORDER BY</literal> is applied first.
+    The command sorts the result, but might then block trying to obtain a lock
+    on one or more of the rows.  Once the <literal>SELECT</literal> unblocks, some
+    of the ordering column values might have been modified, leading to those
+    rows appearing to be out of order (though they are in order in terms
+    of the original column values).  This can be worked around at need by
+    placing the <literal>FOR UPDATE/SHARE</literal> clause in a sub-query,
+    for example
+<programlisting>
+SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss ORDER BY column1;
+</programlisting>
+    Note that this will result in locking all rows of <structname>mytable</structname>,
+    whereas <literal>FOR UPDATE</literal> at the top level would lock only the
+    actually returned rows.  This can make for a significant performance
+    difference, particularly if the <literal>ORDER BY</literal> is combined with
+    <literal>LIMIT</literal> or other restrictions.  So this technique is recommended
+    only if concurrent updates of the ordering columns are expected and a
+    strictly sorted result is required.
    </para>
   </caution>
-  
-  <caution>
-   <para>
-    De façon similaire, il est possible qu'une commande <command>SELECT</command>
-    utilisant <literal>ORDER BY</literal> et <literal>FOR
-    UPDATE/SHARE</literal> renvoient les lignes dans un ordre différent. Ceci
-    est dû au fait que <literal>ORDER BY</literal> est d'abord appliqué. La commande
-    trie le résultat mais pourrait ensuite bloquer en essayant d'obtenir un
-    verrou sur une ou plusieurs lignes. Une fois que le <literal>SELECT</literal>
-    est débloqué, une des colonnes ordonnées peut avoir été modifiée et être
-    renvoyée dans un ordre différent. Un contournement de ce problème revient à
-    réaliser un <command>SELECT ... FOR UPDATE/SHARE</command> et ensuite un
-    <command>SELECT ... ORDER BY</command>.
-   </para>
-  </caution>
 
   </refsect2>
 
@@ -1466,12 +1529,7 @@
     Les versions antérieures à <productname>PostgreSQL</productname> 8.1 
     acceptaient les requêtes de cette forme en ajoutant une entrée implicite à
     la clause <literal>FROM</literal> pour chaque table référencée.
-    Ce n'est plus le comportement par défaut, d'une part
-    parce qu'il n'est pas compatible avec le standard SQL et, d'autre part,
-    parce que considéré par beaucoup comme générateur d'erreurs. Pour des
-    raisons de compatibilité avec les applications utilisant ce
-    comportement, la variable de configuration <xref
-    linkend="guc-add-missing-from"/> peut toujours être activée.
+    Ce n'est plus autorisé.
    </para>
   </refsect2>
 
@@ -1556,16 +1614,29 @@
     utilisée dans <productname>MySQL</productname>. La norme SQL:2008 a
     introduit les clauses <literal>OFFSET ... FETCH {FIRST|NEXT}...</literal>
     pour la même fonctionnalité, comme montré plus haut dans
-    <xref linkend="sql-limit" endterm="sql-limit-title"/>, et cette syntaxe
+    <xref linkend="sql-limit"/>. Cette syntaxe
     est aussi utilisée par <productname>IBM DB2</productname>.
     (Les applications écrites pour <productname>Oracle</productname> contournent
     fréquemment le problème par l'utilisation de la colonne autogénérée
-    <literal>rownum</literal> pour obtenir les effets de ces clauses. Ce n'est
+    <literal>rownum</literal> pour obtenir les effets de ces clauses, qui n'est
     pas disponible sous PostgreSQL,)
    </para>
   </refsect2>
 
   <refsect2>
+   <title><literal>FOR UPDATE</literal> and <literal>FOR SHARE</literal></title>
+
+   <para>
+    Although <literal>FOR UPDATE</literal> appears in the SQL standard, the
+    standard allows it only as an option of <command>DECLARE CURSOR</command>.
+    <productname>PostgreSQL</productname> allows it in any <command>SELECT</command>
+    query as well as in sub-<command>SELECT</command>s, but this is an extension.
+    The <literal>FOR SHARE</literal> variant, and the <literal>NOWAIT</literal> option,
+    do not appear in the standard.
+   </para>
+  </refsect2>
+
+  <refsect2>
    <title>Clauses non standard</title>
 
    <para>

Modified: traduc/trunk/postgresql/ref/select_into.xml
===================================================================
--- traduc/trunk/postgresql/ref/select_into.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/select_into.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-selectinto">
  <refmeta>
-  <refentrytitle id="sql-selectinto-title">SELECT INTO</refentrytitle>
+  <refentrytitle>SELECT INTO</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -61,7 +61,7 @@
    <listitem>
     <para>
      Si spécifié, la table est créée comme une table temporaire. Référez-vous à
-     <xref linkend="sql-createtable" endterm="sql-createtable-title"/> pour plus
+     <xref linkend="sql-createtable"/> pour plus
      de détails.
     </para>
    </listitem>
@@ -79,7 +79,7 @@
 
   <para>
    Tous les autres paramètres sont décrits en détail dans <xref
-   linkend="sql-select" endterm="sql-select-title"/>.
+   linkend="sql-select"/>.
   </para>
  </refsect1>
 
@@ -87,7 +87,7 @@
   <title>Notes</title>
 
   <para>
-   <xref linkend="sql-createtableas" endterm="sql-createtableas-title"/>
+   <xref linkend="sql-createtableas"/>
    est fonctionnellement équivalent à <command>SELECT INTO</command>.
    <command>CREATE TABLE AS</command> est la syntaxe recommandée car cette
    forme de <command>SELECT INTO</command> n'est pas disponible dans
@@ -141,7 +141,7 @@
 
   <simplelist type="inline">
    <member><xref linkend="sql-createtableas"
-    endterm="sql-createtableas-title"/></member>
+   /></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/set.xml
===================================================================
--- traduc/trunk/postgresql/ref/set.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/set.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-set">
  <refmeta>
-  <refentrytitle id="sql-set-title">SET</refentrytitle>
+  <refentrytitle>SET</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -72,7 +72,7 @@
   <para>
    Si <command>SET LOCAL</command> est utilisé à l'intérieur d'une fonction qui
    comprend l'option <literal>SET</literal> pour la même variable (voir
-   <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/>),
+   <xref linkend="sql-createfunction"/>),
    les effets de la commande <command>SET LOCAL</command> disparaîtront à la
    sortie de la fonction&nbsp;; en fait, la valeur disponible lors de l'appel
    de la fonction est restaurée de toute façon. Ceci permet l'utilisation de
@@ -327,8 +327,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-reset" endterm="sql-reset-title"/></member>
-   <member><xref linkend="sql-show" endterm="sql-show-title"/></member>
+   <member><xref linkend="sql-reset"/></member>
+   <member><xref linkend="sql-show"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/set_constraints.xml
===================================================================
--- traduc/trunk/postgresql/ref/set_constraints.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/set_constraints.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -13,7 +13,7 @@
 
  <refnamediv>
   <refname>SET CONSTRAINTS</refname>
-  <refpurpose>initialise le mode de vérification de contrainte de la transaction en
+  <refpurpose>initialise le moment de vérification de contrainte de la transaction en
    cours</refpurpose>
  </refnamediv>
 
@@ -52,6 +52,7 @@
   <para>
    <command>SET CONSTRAINTS</command> avec une liste de noms de contraintes
    modifie le mode de ces contraintes (qui doivent toutes être différables).
+   Each constraint name can be schema-qualified.
    Le chemin de recherche des schémas est utilisé pour trouver le premier
    nom correspondant si aucun nom de schéma n'a été indiqué.
    <command>SET CONSTRAINTS ALL</command> modifie le mode de toutes les
@@ -71,17 +72,37 @@
   </para>
 
   <para>
-   Actuellement, seules les contraintes de clés étrangères sont affectées
-   par ce paramétrage. Les contraintes de vérification et les contraintes
-   uniques sont toujours immédiates. Les triggers qui sont déclarés en tant
-   que <quote>triggers de contrainte</quote> sont aussi affectés.
+   Currently, only <literal>UNIQUE</literal>, <literal>PRIMARY KEY</literal>,
+   <literal>REFERENCES</literal> (foreign key), and <literal>EXCLUDE</literal>
+   constraints are affected by this setting.
+   <literal>NOT NULL</literal> and <literal>CHECK</literal> constraints are
+   always checked immediately when a row is inserted or modified
+   (<emphasis>not</emphasis> at the end of the statement).
+   Uniqueness and exclusion constraints that have not been declared
+   <literal>DEFERRABLE</literal> are also checked immediately.
   </para>
+
+  <para>
+   The firing of triggers that are declared as <quote>constraint triggers</quote>
+   is also controlled by this setting &mdash; they fire at the same time
+   that the associated constraint should be checked.
+  </para>
  </refsect1>
 
  <refsect1>
   <title>Notes</title>
 
   <para>
+   Because <productname>PostgreSQL</productname> does not require constraint
+   names to be unique within a schema (but only per-table), it is possible
+   that there is more than one match for a specified constraint name.
+   In this case <command>SET CONSTRAINTS</command> will act on all matches.
+   For a non-schema-qualified name, once a match or matches have been found in
+   some schema in the search path, schemas appearing later in the path are not
+   searched.
+  </para>
+
+  <para>
    Cette commande altère seulement le comportement des contraintes à l'intérieur
    de la transaction en cours. Du coup, si vous exécutez cette commande en
    dehors d'un bloc de transaction (pair
@@ -96,8 +117,11 @@
   <para>
    Cette commande est compatible avec le comportement défini par le 
    standard SQL à part le fait que dans
-   <productname>PostgreSQL</productname>, elle ne s'applique qu'aux
-   contraintes de clés étrangères.
+   <productname>PostgreSQL</productname>, it does not apply to
+   <literal>NOT NULL</literal> and <literal>CHECK</literal> constraints.
+   Also, <productname>PostgreSQL</productname> checks non-deferrable
+   uniqueness constraints immediately, not at end of statement as the
+   standard would suggest.
   </para>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/set_role.xml
===================================================================
--- traduc/trunk/postgresql/ref/set_role.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/set_role.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-set-role">
  <refmeta>
-  <refentrytitle id="sql-set-role-title">SET ROLE</refentrytitle>
+  <refentrytitle>SET ROLE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>SET [ SESSION | LOCAL ] ROLE <replaceable class="parameter">nomrôle</replaceable>
+<synopsis>SET [ SESSION | LOCAL ] ROLE <replaceable class="parameter">nom_rôle</replaceable>
 SET [ SESSION | LOCAL ] ROLE NONE
 RESET ROLE
 </synopsis>
@@ -33,7 +33,7 @@
   <para>
    Cette commande positionne l'identifiant utilisateur courant suivant la
    session SQL en cours à <replaceable
-   class="parameter">nomrôle</replaceable>. Le nom du rôle peut être 
+   class="parameter">nom_rôle</replaceable>. Le nom du rôle peut être 
    un identifiant ou une chaîne littérale. 
    Après <command>SET ROLE</command>, la vérification des droits sur les commandes SQL 
    est identique à ce qu'elle serait si le rôle nommé s'était lui-même connecté.
@@ -41,14 +41,14 @@
 
   <para>
    Il est obligatoire que l'utilisateur de la session courante soit membre
-   du rôle <replaceable class="parameter">nomrôle</replaceable>
+   du rôle <replaceable class="parameter">nom_rôle</replaceable>
    (si l'utilisateur de la session est superutilisateur, tous les rôles sont
    utilisables).
   </para>
 
   <para>
    Les modificateurs <literal>SESSION</literal> et <literal>LOCAL</literal> agissent de la même
-   façon que pour la commande <xref linkend="sql-set" endterm="sql-set-title"/>.
+   façon que pour la commande <xref linkend="sql-set"/>.
   </para>
 
   <para>
@@ -85,7 +85,7 @@
   <para>
    <command>SET ROLE</command> a des effets comparables à
    <xref linkend="sql-set-session-authorization"
-   endterm="sql-set-session-authorization-title"/> mais la vérification des
+  /> mais la vérification des
    droits diffère. De plus, <command>SET SESSION AUTHORIZATION</command> 
    détermine les rôles autorisés
    dans les commandes <command>SET ROLE</command> ultérieures alors que 
@@ -96,7 +96,7 @@
   <para>
    <command>SET ROLE</command> ne traite pas les variables de session
    indiqué par les paramètres du rôle (et configurés avec <xref
-   linkend="sql-alterrole" endterm="sql-alterrole-title"/>&nbsp;; cela ne
+   linkend="sql-alterrole"/>&nbsp;; cela ne
    survient qu'à la connexion.
   </para>
 
@@ -144,7 +144,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-set-session-authorization" endterm="sql-set-session-authorization-title"/></member>
+   <member><xref linkend="sql-set-session-authorization"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/set_session_auth.xml
===================================================================
--- traduc/trunk/postgresql/ref/set_session_auth.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/set_session_auth.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-set-session-authorization">
  <refmeta>
-  <refentrytitle id="sql-set-session-authorization-title">SET SESSION AUTHORIZATION</refentrytitle>
+  <refentrytitle>SET SESSION AUTHORIZATION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - instructions du langage</refmiscinfo>
  </refmeta>
@@ -50,7 +50,7 @@
    temporairement modifié par le contexte de fonctions
    <literal>SECURITY DEFINER</literal>
    ou de mécanismes similaires&nbsp;; il peut aussi être changé par
-   <xref linkend="sql-set-role" endterm="sql-set-role-title"/>. L'identifiant de
+   <xref linkend="sql-set-role"/>. L'identifiant de
    l'utilisateur courant est essentiel à la vérification des permissions.
   </para>
 
@@ -64,7 +64,7 @@
   <para>
    Les modificateurs <literal>SESSION</literal> et <literal>LOCAL</literal> agissent de la même
    façon que la commande standard <xref linkend="sql-set"
-   endterm="sql-set-title"/>.
+  />.
   </para>
 
   <para>
@@ -129,7 +129,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-set-role" endterm="sql-set-role-title"/></member>
+   <member><xref linkend="sql-set-role"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/set_transaction.xml
===================================================================
--- traduc/trunk/postgresql/ref/set_transaction.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/set_transaction.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-set-transaction">
  <refmeta>
-  <refentrytitle id="sql-set-transaction-title">SET TRANSACTION</refentrytitle>
+  <refentrytitle>SET TRANSACTION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -22,7 +22,8 @@
 <synopsis>SET TRANSACTION <replaceable class="parameter">mode_transaction</replaceable> [, ...]
 SET SESSION CHARACTERISTICS AS TRANSACTION <replaceable class="parameter">mode_transaction</replaceable> [, ...]
 
-où <replaceable class="parameter">mode_transaction</replaceable> fait partie de&nbsp;:
+<phrase>où <replaceable class="parameter">mode_transaction</replaceable> fait
+partie de&nbsp;:</phrase>
 
     ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
     READ WRITE | READ ONLY

Modified: traduc/trunk/postgresql/ref/show.xml
===================================================================
--- traduc/trunk/postgresql/ref/show.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/show.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-show">
  <refmeta>
-  <refentrytitle id="sql-show-title">SHOW</refentrytitle>
+  <refentrytitle>SHOW</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -52,7 +52,7 @@
      <para>
       Le nom d'un paramètre d'exécution. Les paramètres disponibles sont
       documentés dans <xref linkend="runtime-config"/> et sur la page de
-      référence <xref linkend="sql-set" endterm="sql-set-title"/>. De plus, il
+      référence <xref linkend="sql-set"/>. De plus, il
       existe quelques paramètres qui peuvent être affichés mais ne sont pas
       initialisables&nbsp;:
 
@@ -165,17 +165,15 @@
 
   <para>
    Affiche tous les paramètres&nbsp;:
-<programlisting>SHOW ALL;
-              name              |            setting             |                                         description                                          
---------------------------------+--------------------------------+----------------------------------------------------------------------------------------------
- add_missing_from               | off                            | Automatically adds missing table references to FROM clauses.
- archive_command                | off                            | WAL archiving command.
+<programlisting>            name         | setting |                description                                                          
+-------------------------+---------+-------------------------------------------------
+ allow_system_table_mods | off     | Allows modifications of the structure of ...
     .
     .
     .
- work_mem                       | 1024                           | Sets the maximum memory to be used for query workspaces.
- zero_damaged_pages             | off                            | Continues processing past damaged page headers.
-(146 rows)
+ xmloption               | content | Sets whether XML data in implicit parsing ...
+ zero_damaged_pages      | off     | Continues processing past damaged page headers.
+(196 rows)
 </programlisting>
   </para>
  </refsect1>
@@ -193,8 +191,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-set" endterm="sql-set-title"/></member>
-   <member><xref linkend="sql-reset" endterm="sql-reset-title"/></member>
+   <member><xref linkend="sql-set"/></member>
+   <member><xref linkend="sql-reset"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/start_transaction.xml
===================================================================
--- traduc/trunk/postgresql/ref/start_transaction.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/start_transaction.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-start-transaction">
  <refmeta>
-  <refentrytitle id="sql-start-transaction-title">START TRANSACTION</refentrytitle>
+  <refentrytitle>START TRANSACTION</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -20,7 +20,8 @@
  <refsynopsisdiv>
 <synopsis>START TRANSACTION [ <replaceable class="parameter">mode_transaction</replaceable> [, ...] ]
 
-où <replaceable class="parameter">mode_transaction</replaceable> fait partie de&nbsp;:
+<phrase>où <replaceable class="parameter">mode_transaction</replaceable> fait
+partie de&nbsp;:</phrase>
 
     ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
     READ WRITE | READ ONLY
@@ -37,8 +38,8 @@
    Cette commande débute un nouveau bloc de transaction. Si le niveau d'isolation
    ou le mode lecture/écriture est spécifié, la nouvelle transaction adopte ces
    caractéristiques, comme si <xref linkend="sql-set-transaction"
-   endterm="sql-set-transaction-title"/> avait été exécuté. Cette commande est identique à
-   la commande <xref linkend="sql-begin" endterm="sql-begin-title"/>.
+  /> avait été exécuté. Cette commande est identique à
+   la commande <xref linkend="sql-begin"/>.
   </para>
  </refsect1>
 
@@ -48,7 +49,7 @@
   <para>
    Pour obtenir la signification des paramètres de cette instruction, on pourra
    se référer à <xref linkend="sql-set-transaction"
-   endterm="sql-set-transaction-title"/>.
+  />.
   </para>
  </refsect1>
 
@@ -76,7 +77,7 @@
 
   <para>
    Voir aussi la section de compatibilité de <xref
-   linkend="sql-set-transaction" endterm="sql-set-transaction-title"/>.
+   linkend="sql-set-transaction"/>.
   </para>
  </refsect1>
 
@@ -84,10 +85,10 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-begin" endterm="sql-begin-title"/></member>
-   <member><xref linkend="sql-commit" endterm="sql-commit-title"/></member>
-   <member><xref linkend="sql-rollback" endterm="sql-rollback-title"/></member>
-   <member><xref linkend="sql-savepoint" endterm="sql-savepoint-title"/></member>
+   <member><xref linkend="sql-begin"/></member>
+   <member><xref linkend="sql-commit"/></member>
+   <member><xref linkend="sql-rollback"/></member>
+   <member><xref linkend="sql-savepoint"/></member>
    <member><xref linkend="sql-set-transaction"
 endterm="sql-set-transaction-title"/></member>
   </simplelist>

Modified: traduc/trunk/postgresql/ref/truncate.xml
===================================================================
--- traduc/trunk/postgresql/ref/truncate.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/truncate.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-truncate">
  <refmeta>
-  <refentrytitle id="sql-truncate-title">TRUNCATE</refentrytitle>
+  <refentrytitle>TRUNCATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>

Modified: traduc/trunk/postgresql/ref/unlisten.xml
===================================================================
--- traduc/trunk/postgresql/ref/unlisten.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/unlisten.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="sql-unlisten">
  <refmeta>
-  <refentrytitle id="sql-unlisten-title">UNLISTEN</refentrytitle>
+  <refentrytitle>UNLISTEN</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -18,7 +18,7 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>UNLISTEN { <replaceable class="parameter">nom</replaceable> | * }
+<synopsis>UNLISTEN { <replaceable class="parameter">canal</replaceable> | * }
 </synopsis>
  </refsynopsisdiv>
 
@@ -32,12 +32,12 @@
    <command>UNLISTEN</command> est utilisé pour supprimer un abonnement
    aux événements <command>NOTIFY</command>. <command>UNLISTEN</command>
    annule tout abonnement pour la session <productname>PostgreSQL</productname>
-   en cours sur la notification <replaceable class="parameter">nom</replaceable>. 
+   en cours sur le canal de notification nommé <replaceable class="parameter">canal</replaceable>. 
    Le caractère générique <literal>*</literal> annule tous les abonnements de la session en cours.
   </para>
 
   <para>
-   <xref endterm="sql-notify-title" linkend="sql-notify"/> contient une
+   <xref linkend="sql-notify"/> contient une
    discussion plus complète de l'utilisation de <command>LISTEN</command> et
    de <command>NOTIFY</command>.
   </para>
@@ -48,10 +48,10 @@
 
   <variablelist>
    <varlistentry>
-    <term><replaceable class="parameter">nom</replaceable></term>
+    <term><replaceable class="parameter">canal</replaceable></term>
     <listitem>
      <para>
-      Le nom d'une notification (un identificateur quelconque).
+      Le nom d'un canal de notification (un identificateur quelconque).
      </para>
     </listitem>
    </varlistentry>
@@ -79,6 +79,11 @@
    À la fin de chaque session, <command>UNLISTEN *</command> est exécuté
    automatiquement.
   </para>
+
+  <para>
+   A transaction that has executed <command>UNLISTEN</command> cannot be
+   prepared for two-phase commit.
+  </para>
  </refsect1>
 
  <refsect1>
@@ -94,8 +99,8 @@
   </para>
 
   <para>
-   Une fois que <command>UNLISTEN</command> a été exécuté, les commandes
-   <command>NOTIFY</command> suivantes sont ignorées&nbsp;:
+   Une fois que <command>UNLISTEN</command> a été exécuté, les messages
+   <command>NOTIFY</command> suivants sont ignorés&nbsp;:
 
 <programlisting>UNLISTEN virtual;
 NOTIFY virtual;
@@ -116,8 +121,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-listen" endterm="sql-listen-title"/></member>
-   <member><xref linkend="sql-notify" endterm="sql-notify-title"/></member>
+   <member><xref linkend="sql-listen"/></member>
+   <member><xref linkend="sql-notify"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/update.xml
===================================================================
--- traduc/trunk/postgresql/ref/update.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/update.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -9,7 +9,7 @@
 
 <refentry id="sql-update">
  <refmeta>
-  <refentrytitle id="sql-update-title">UPDATE</refentrytitle>
+  <refentrytitle>UPDATE</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -144,7 +144,7 @@
       Une liste d'expressions de tables, qui permet aux colonnes des autres
       tables d'apparaître dans la condition <literal>WHERE</literal> et dans les
       expressions de mise à jour. Cela est similaire à la liste de tables
-      pouvant être spécifiée dans <xref linkend="sql-from" endterm="sql-from-title"/> 
+      pouvant être spécifiée dans <xref linkend="sql-from"/> 
       d'une instruction <command>SELECT</command>.
       La table cible ne doit pas apparaître dans
       <replaceable>liste_from</replaceable>, sauf en cas d'auto-jointure
@@ -175,7 +175,7 @@
       sur la table cible de l'<command>UPDATE</command>.
       Notez que <literal>WHERE CURRENT OF</literal> ne peut pas être
       spécifié avec une condition booléenne. Voir
-      <xref linkend="sql-declare" endterm="sql-declare-title"/> pour plus
+      <xref linkend="sql-declare"/> pour plus
       d'informations sur l'utilisation des curseurs avec
       <literal>WHERE CURRENT OF</literal>.
      </para>

Modified: traduc/trunk/postgresql/ref/vacuum.xml
===================================================================
--- traduc/trunk/postgresql/ref/vacuum.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/vacuum.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -18,11 +18,9 @@
  </refnamediv>
 
  <refsynopsisdiv>
-<synopsis>VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ <replaceable
-class="parameter">table</replaceable> ]
-VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ <replaceable
-class="parameter">table</replaceable> [ (<replaceable
-class="parameter">colonne</replaceable> [, ...] ) ] ]
+<synopsis>VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE } [, ...] ) ] [ <replaceable class="PARAMETER">table</replaceable> [ (<replaceable class="PARAMETER">colonne</replaceable> [, ...] ) ] ]
+VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ <replaceable class="parameter">table</replaceable> ]
+VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ <replaceable class="parameter">table</replaceable> [ (<replaceable class="parameter">colonne</replaceable> [, ...] ) ] ]
 </synopsis>
  </refsynopsisdiv>
 
@@ -56,7 +54,7 @@
    puis un <command>ANALYZE</command> sur chaque table sélectionnée.
    C'est une combinaison pratique pour les scripts de maintenance de
    routine. Voir 
-   <xref linkend="sql-analyze" endterm="sql-analyze-title"/> pour avoir 
+   <xref linkend="sql-analyze"/> pour avoir 
    plus de détails sur ce qu'il traite.
   </para>
 
@@ -66,11 +64,22 @@
    Cette forme de la commande peut opérer en parallèle avec les opérations
    normales de lecture et d'écriture de la table, car elle n'utilise pas de 
    verrou exclusif.
-   <command>VACUUM FULL</command> fait un traitement plus complet et, en 
-   particulier, déplace des lignes dans d'autres blocs pour compacter la 
-   table au maximum sur le disque. Cette forme est beaucoup plus lente et 
-   pose un verrou exclusif sur la table pour faire son traitement.
+   However, extra space is not returned to the operating
+   system (in most cases); it's just kept available for re-use within the
+   same table.  <command>VACUUM FULL</command> rewrites the entire contents
+   of the table into a new disk file with no extra space, allowing unused
+   space to be returned to the operating system.  This form is much slower and
+   requires an exclusive lock on each table while it is being processed.
   </para>
+
+  <para>
+   When the option list is surrounded by parentheses, the options can be
+   written in any order.  Without parentheses, options must be specified
+   in exactly the order shown above.
+   Prior to <productname>PostgreSQL</productname> 9.0, the unparenthesized
+   syntax was the only one supported.  It is expected that all new options
+   will be supported only in the parenthesized syntax.
+  </para>
  </refsect1>
 
  <refsect1>
@@ -83,6 +92,10 @@
      <para>
       Choisit un vacuum <quote>full</quote>, qui récupère plus d'espace,
       mais est beaucoup plus long et prend un verrou exclusif sur la table.
+      This method also requires extra disk space, since it writes a
+      new copy of the table and doesn't release the old copy until
+      the operation is complete.  Usually this should only be used when a
+      significant amount of space needs to be reclaimed from within the table.
      </para>
     </listitem>
    </varlistentry>
@@ -138,6 +151,7 @@
      <para>
       Le nom d'une colonne spécifique à analyser. Par défaut, toutes les
       colonnes.
+      If a column list is specified, <literal>ANALYZE</literal> is implied.
      </para>
     </listitem>
    </varlistentry>
@@ -201,10 +215,6 @@
     nécessaire et pour que les parcours de table soient plus rapides.
     Généralement, <command>VACUUM FULL</command> réduit plus la table qu'un 
     simple <command>VACUUM</command>.
-    L'option <option>FULL</option> ne réduit pas la taille des index&nbsp;; un
-    <command>REINDEX</command> périodique est toujours recommandé. En fait, il
-    est souvent plus rapide de supprimer tous les index, d'exécuter un
-    <command>VACUUM FULL</command> puis de recréer les index.
    </para>
 
    <para>
@@ -213,7 +223,7 @@
     des performances diminuées pour les autres sessions actives. Du coup,
     il est quelque fois conseillé d'utiliser la fonctionnalité du délai du
     vacuum basé sur le coût. Voir <xref
-    linkend="runtime" endterm="runtime-config-resource-vacuum-cost-title"/>
+    linkend="runtime"/>
     pour des informations supplémentaires.
    </para>
 
@@ -232,7 +242,7 @@
    Ce qui suit est un exemple de lancement de <command>VACUUM</command>
    sur une table de la base de données regression.
 
-<programlisting>regression=# VACUUM VERBOSE ANALYZE onek;
+<programlisting>regression=# VACUUM (VERBOSE, ANALYZE) onek;
 INFO:  vacuuming "public.onek"
 INFO:  index "onek_unique1" now contains 1000 tuples in 14 pages
 DETAIL:  3000 index tuples were removed.
@@ -276,9 +286,9 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="app-vacuumdb" endterm="app-vacuumdb-title"/></member>
-   <member><xref linkend="runtime-config-resource-vacuum-cost" endterm="runtime-config-resource-vacuum-cost-title"/></member>
-   <member><xref linkend="autovacuum" endterm="autovacuum-title"/></member>
+   <member><xref linkend="app-vacuumdb"/></member>
+   <member><xref linkend="runtime-config-resource-vacuum-cost"/></member>
+   <member><xref linkend="autovacuum"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/ref/vacuumdb.xml
===================================================================
--- traduc/trunk/postgresql/ref/vacuumdb.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/vacuumdb.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -7,7 +7,7 @@
 
 <refentry id="app-vacuumdb">
  <refmeta>
-  <refentrytitle id="app-vacuumdb-title"><application>vacuumdb</application></refentrytitle>
+  <refentrytitle><application>vacuumdb</application></refentrytitle>
   <manvolnum>1</manvolnum>
   <refmiscinfo>Application</refmiscinfo>
  </refmeta>
@@ -23,9 +23,10 @@
    <command>vacuumdb</command>
    <arg rep="repeat"><replaceable>option-de-connexion</replaceable></arg>
    <group><arg>--full</arg><arg>-f</arg></group>
+   <group><arg>--freeze</arg><arg>-F</arg></group>
    <group><arg>--verbose</arg><arg>-v</arg></group>
    <group><arg>--analyze</arg><arg>-z</arg></group>
-   <group><arg>--freeze</arg><arg>-F</arg></group>
+   <group><arg>--analyze-only</arg><arg>-Z</arg></group>
    <arg>--table | -t <replaceable>table</replaceable>
     <arg>( <replaceable class="parameter">colonne</replaceable> [,...] )</arg>
    </arg>
@@ -33,11 +34,12 @@
    <sbr/>
    <command>vacuumdb</command>
    <arg rep="repeat"><replaceable>options-de-connexion</replaceable></arg>
-   <group><arg>--all</arg><arg>-a</arg></group>
    <group><arg>--full</arg><arg>-f</arg></group>
+   <group><arg>--freeze</arg><arg>-F</arg></group>
    <group><arg>--verbose</arg><arg>-v</arg></group>
    <group><arg>--analyze</arg><arg>-z</arg></group>
-   <group><arg>--freeze</arg><arg>-F</arg></group>
+   <group><arg>--analyze-only</arg><arg>-Z</arg></group>
+   <group><arg>--all</arg><arg>-a</arg></group>
   </cmdsynopsis>
  </refsynopsisdiv>
 
@@ -55,9 +57,10 @@
 
   <para>
    <application>vacuumdb</application> est une surcouche de la commande
-   <xref linkend="sql-vacuum" endterm="sql-vacuum-title"/>.
-   Il n'y a aucune différence entre vacuumdb et les autres
-   méthodes de vacuum.
+   <xref linkend="sql-vacuum"/>.
+   There is no effective difference between vacuuming and analyzing
+   databases via this utility and via other methods for accessing the
+   server.
   </para>
 
  </refsect1>
@@ -118,6 +121,16 @@
      </varlistentry>
 
      <varlistentry>
+      <term><option>-F</option></term>
+      <term><option>--freeze</option></term>
+      <listitem>
+       <para>
+        Aggressively <quote>freeze</quote> tuples.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term><option>-q</option></term>
       <term><option>--quiet</option></term>
       <listitem>
@@ -135,7 +148,7 @@
         Ne nettoie ou n'analyse que la table 
         <replaceable class="parameter">table</replaceable>.
         Des noms de colonnes peuvent être précisés en conjonction avec l'option
-        <option>--analyze</option>
+        <option>--analyze</option> or <option>--analyze-only</option> options.
        </para>
        <tip>
         <para>
@@ -158,24 +171,45 @@
      </varlistentry>
 
      <varlistentry>
+       <term><option>-V</option></term>
+       <term><option>--version</option></term>
+       <listitem>
+       <para>
+       Print the <application>vacuumdb</application> version and exit.
+       </para>
+       </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term><option>-z</option></term>
       <term><option>--analyze</option></term>
       <listitem>
        <para>
-        Calcule des statistiques à l'usage de l'optimiseur.
+        Also calculate statistics for use by the optimizer.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><option>-F</option></term>
-      <term><option>--freeze</option></term>
+      <term><option>-Z</option></term>
+      <term><option>--analyze-only</option></term>
       <listitem>
        <para>
-        Gèle aggressivement les lignes.
+        Only calculate statistics for use by the optimizer (no vacuum).
        </para>
       </listitem>
      </varlistentry>
+
+     <varlistentry>
+       <term><option>-?</option></term>
+       <term><option>--help</option></term>
+       <listitem>
+       <para>
+       Show help about <application>vacuumdb</application> command line
+       arguments, and exit.
+       </para>
+       </listitem>
+     </varlistentry>
     </variablelist>
    </para>
 
@@ -289,7 +323,7 @@
 
   <para>
    En cas de difficultés, il peut être utile de consulter <xref linkend="sql-vacuum"
-   endterm="sql-vacuum-title"/> et <xref linkend="app-psql"/>, sections présentant  
+  /> et <xref linkend="app-psql"/>, sections présentant  
    les problèmes éventuels et les messages d'erreur.
   </para>
   <para>
@@ -345,7 +379,7 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-vacuum" endterm="sql-vacuum-title"/></member>
+   <member><xref linkend="sql-vacuum"/></member>
   </simplelist>
  </refsect1>
 

Modified: traduc/trunk/postgresql/ref/values.xml
===================================================================
--- traduc/trunk/postgresql/ref/values.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/ref/values.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -6,7 +6,7 @@
 
 <refentry id="sql-values">
  <refmeta>
-  <refentrytitle id="sql-values-title">VALUES</refentrytitle>
+  <refentrytitle>VALUES</refentrytitle>
   <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Instructions du langage</refmiscinfo>
  </refmeta>
@@ -89,7 +89,7 @@
       résultat. Cette expression peut faire référence aux colonnes de
       <command>VALUES</command> en tant que <literal>column1</literal>,
       <literal>column2</literal>, etc. Pour plus de détails, voir
-      <xref linkend="sql-orderby" endterm="sql-orderby-title"/>.
+      <xref linkend="sql-orderby"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -99,7 +99,7 @@
     <listitem>
      <para>
       Un opérateur de tri. Pour plus de détails, voir
-      <xref linkend="sql-orderby" endterm="sql-orderby-title"/>.
+      <xref linkend="sql-orderby"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -109,7 +109,7 @@
     <listitem>
      <para>
       Le nombre maximum de lignes à renvoyer. Pour plus de détails, voir
-      <xref linkend="sql-limit" endterm="sql-limit-title"/>.
+      <xref linkend="sql-limit"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -120,7 +120,7 @@
      <para>
       Le nombre de lignes à échapper avant de commencer à renvoyer des lignes.
       Pour plus de détails,
-      <xref linkend="sql-limit" endterm="sql-limit-title"/>.
+      <xref linkend="sql-limit"/>.
      </para>
     </listitem>
    </varlistentry>
@@ -247,7 +247,7 @@
    <command>VALUES</command> est conforme au standard SQL. Les clauses
    <literal>LIMIT</literal> et <literal>OFFSET</literal> sont des extensions
    <productname>PostgreSQL</productname>&nbsp;; voir aussi <xref
-   linkend="sql-select" endterm="sql-select-title"/>.
+   linkend="sql-select"/>.
   </para>
  </refsect1>
 
@@ -255,8 +255,8 @@
   <title>Voir aussi</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-insert" endterm="sql-insert-title"/></member>
-   <member><xref linkend="sql-select" endterm="sql-select-title"/></member>
+   <member><xref linkend="sql-insert"/></member>
+   <member><xref linkend="sql-select"/></member>
   </simplelist>
  </refsect1>
 </refentry>

Modified: traduc/trunk/postgresql/reference.xml
===================================================================
--- traduc/trunk/postgresql/reference.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/reference.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -42,12 +42,14 @@
   &alterAggregate;
   &alterConversion;
   &alterDatabase;
+  &alterDefaultPrivileges;
   &alterDomain;
   &alterForeignDataWrapper;
   &alterFunction;
   &alterGroup;
   &alterIndex;
   &alterLanguage;
+  &alterLargeObject;
   &alterOperator;
   &alterOperatorClass;
   &alterOperatorFamily;
@@ -110,6 +112,7 @@
   &declare;
   &delete;
   &discard;
+  &do;
   &dropAggregate;
   &dropCast;
   &dropConversion;

Modified: traduc/trunk/postgresql/regress.xml
===================================================================
--- traduc/trunk/postgresql/regress.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/regress.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 
  <chapter id="regress">
-  <title id="regress-title">Tests de régression</title>
+  <title>Tests de régression</title>
 
   <indexterm zone="regress">
    <primary>tests de régression</primary>
@@ -30,17 +30,14 @@
    fonctionnel ou en utilisant une installation temporaire à l'intérieur du
    répertoire de construction. De plus, ils peuvent être lancés en mode
    <quote>parallèle</quote> ou en mode <quote>séquentiel</quote>. Le mode
-   séquentiel lance les scripts de test en série, tandis que le mode
+   séquentiel lance les scripts de test en série, alors que le mode
    parallèle lance plusieurs processus serveurs pour parallèliser l'exécution des
    groupes de tests. Les tests parallèles permettent de s'assurer du
    bon fonctionnement des communications interprocessus et du verrouillage.
-   Pour des raisons historiques, les tests séquentiels sont habituellement lancés
-   sur une installation existante et la méthode parallèle préférentiellement
-   sur une installation temporaire, mais il n'y a aucune raison technique à cela.
   </para>
 
   <para>
-   Pour lancer les tests de régression après la construction mais avant l'installation,
+   Pour lancer les tests de régression en parallèle après la construction mais avant l'installation,
    il suffit de saisir
 <screen>gmake check</screen>
    dans le répertoire de premier niveau (on peut aussi se placer dans le répertoire
@@ -137,6 +134,45 @@
    tout d'abord. Vous pouvez aussi le faire dans un sous-répertoire de
    <filename>contrib</filename> pour exécuter les tests pour un seul module.
   </para>
+  <para>
+   The source distribution also contains regression tests of the static
+   behaviour of Hot Standby. These tests require a running primary server
+   and a running standby server that is accepting new WAL changes from the
+   primary using either file-based log shipping or streaming replication.
+   Those servers are not automatically created for you, nor is the setup
+   documented here. Please check the various sections of the docs already
+   devoted to the required commands and related issues.
+  </para>
+
+  <para>
+   First create a database called "regression" on the primary.
+<screen>
+psql -h primary -c "CREATE DATABASE regression"
+</screen>
+   Next, run a preparatory script on the primary in the regression database:
+   <filename>src/test/regress/sql/hs_primary_setup.sql</filename>, and
+   allow for the changes to propagate to the standby, for example
+<screen>
+psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression
+</screen>
+   Now confirm that the default connection for the tester is the standby
+   server under test and then run standbycheck from the regression
+   directory.
+<screen>
+cd src/test/regress
+gmake standbycheck
+</screen>
+  </para>
+
+  <para>
+   Some extreme behaviours can also be generated on the primary using the 
+   script: <filename>src/test/regress/sql/hs_primary_extremes.sql</filename>
+   to allow the behaviour of the standby to be tested.
+  </para>
+
+  <para>
+   Additional automated testing may be available in later releases.
+  </para>
   </sect1>
 
   <sect1 id="regress-evaluation">
@@ -301,7 +337,7 @@
     <para>
      Du coup, si vous voyez une différence dans l'ordre, vous n'avez pas à vous
      inquiéter sauf si la requête possède un <literal>ORDER BY</literal> que votre
-     résultat ne respecte pas. Mais rapportez tout de même ce problème que nous
+     résultat ne respecte pas. Néanmoins, rapportez tout de même ce problème que nous
      ajoutions un <literal>ORDER BY</literal> à cette requête pour éliminer les faux
      <quote>échecs</quote> dans les versions suivantes.
     </para>
@@ -465,6 +501,7 @@
 gmake coverage-html
 </screen>
     Puis pointez votre navigateur HTML vers <filename>coverage/index.html</filename>.
+    The <command>gmake</command> commands also work in subdirectories.
    </para>
 
    <para>

Added: traduc/trunk/postgresql/release-9.0.xml
===================================================================
--- traduc/trunk/postgresql/release-9.0.xml	                        (rev 0)
+++ traduc/trunk/postgresql/release-9.0.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,2758 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.22 2010-05-17 17:46:13 adunstan Exp $ -->
+
+ <sect1 id="release-9-0">
+  <title>Release 9.0</title>
+
+  <note>
+   <title>Release date</title>
+   <simpara>2010-??-??</simpara>
+  </note>
+
+<!-- beta2 notes
+recovery_connections -> hot_standby
+-->
+
+  <sect2>
+   <title>Overview</title>
+
+   <para>
+    Based on overwhelming user demand, this release of
+    <productname>PostgreSQL</productname> adds features that have been requested
+    for years, like easy-to-use replication, a mass permission
+    facility, and anonymous blocks. While past major releases have
+    been quite conservative in their scope, this release shows a
+    bold new desire to provide facilities that every new and existing
+    user of <productname>PostgreSQL</productname> will embrace. This has all
+    been done with few incompatibilities. The major areas of
+    enhancement are:
+   </para>
+
+   <itemizedlist>
+
+    <!-- This list duplicates items below, but without authors or details-->
+
+    <listitem>
+     <para>
+      Allow continuous archive standby systems to accept read-only queries
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow continuous archive (<acronym>WAL</acronym>) files to be streamed to a
+      standby system
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add the ability to make mass permission changes per
+       schema using the new <link
+       linkend="SQL-GRANT"><command>GRANT</command>/<command>REVOKE
+       IN SCHEMA</command></link> clause
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add the ability to control large object permissions with
+      <command>GRANT</command>/<command>REVOKE</command>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Implement anonymous functions using the <link
+      linkend="SQL-DO"><command>DO</command></link> statement
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow function calls to supply parameter names and match them to named
+      parameters in the function definition (Pavel Stehule)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Install server-side language PL/pgSQL by default
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Major PL/Perl enhancements
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow SQL-compliant <link
+      linkend="SQL-CREATETRIGGER">per-column triggers</link>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
+      unique constraints</link>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have <link linkend="SQL-LISTEN"><command>LISTEN</command></link>/<link
+      linkend="SQL-NOTIFY"><command>NOTIFY</command></link> store events
+      in a memory queue, rather than a system table
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</command></link>
+      to pass an optional string to listeners
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Change <command>VACUUM FULL</command> to rewrite the entire table and
+      indexes, rather than moving around single rows to compact space
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add prefix support for the full text search synonym dictionary
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Use red-black trees for <acronym>GIN</acronym> index creation
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link
+      linkend="functions-binarystring-other"><function>get_bit()</function></link>
+      and <function>set_bit()</function> functions for <type>bit</type>
+      strings, mirroring those for <type>bytea</type>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add the ability for clients to set an <link
+      linkend="libpq-connect-application-name">application
+      name</link>, which is displayed in
+      <structname>pg_stat_activity</structname>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add support for compiling on <link
+      linkend="install-win32-full">64-bit
+      <productname>Windows</productname></link> and running in 64-bit
+      mode
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</filename></link>
+      to support in-place upgrades
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <para>
+    The above items are explained in more detail in the sections below.
+   </para>
+
+  </sect2>
+
+  <sect2>
+
+  <title>Migration to Version 9.0</title>
+  <para>CURRENT AS OF 2010-05-12</para>
+
+  <para>
+   A dump/restore using <application>pg_dump</application> is
+   required for those wishing to migrate data from any previous
+   release.
+  </para>
+
+  <para>
+   Observe the following incompatibilities:
+  </para>
+
+  <sect3>
+   <title>Server Settings</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Remove server variable <varname>add_missing_from</varname>, which was
+      defaulted to off for many years (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove server variable <varname>regex_flavor</varname>, which
+      was defaulted to <link
+      linkend="posix-syntax-details"><literal>advanced</literal></link>
+      (e.g. Perl-regex compatible) for many years (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      It is now necessary to set <link
+      linkend="guc-wal-level"><varname>wal_level</varname></link> to
+      <literal>archive</literal> to do continuous archiving.
+      (Heikki Linnakangas)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>Queries</title>
+   <itemizedlist>
+
+   <listitem>
+    <para>
+     When querying a <link linkend="ddl-inherit">parent table</link>,
+     do not do additional permission checks on child tables
+     returned as part of the query (Peter Eisentraut)
+    </para>
+
+    <para>
+     The SQL standard specifies this behavior.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Have fractional seconds conversion truncate rather than
+     round when using float-based dates/times (Tom Lane)
+    </para>
+   </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>String Handling</title>
+   <itemizedlist>
+
+   <listitem>
+    <para>
+     Improve standards compliance of <link
+     linkend="functions-similarto-regexp"><literal>SIMILAR TO</literal></link>
+     patterns and SQL-style <function>substring()</function> patterns (Tom Lane)
+    </para>
+
+    <para>
+     This includes treating <literal>?</literal> and <literal>{...}</literal> as
+     pattern metacharacters, while they were simple literal characters
+     before; that corresponds to new features added in SQL:2008.
+     Also, <literal>^</literal> and <literal>$</literal> are now treated as simple
+     literal characters; formerly they were treated as metacharacters,
+     as if the pattern were following POSIX rather than SQL rules.
+     Also, in SQL-standard <function>substring()</function>, use of parentheses
+     for nesting no longer interferes with capturing of a substring.
+     Also, processing of bracket expressions (character classes) is
+     now more standards-compliant.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Reject negative length values in 3-parameter <link
+     linkend="functions-string-sql"><function>substring()</function></link>
+     for bit strings, per the SQL standard (Tom Lane)
+    </para>
+   </listitem>
+
+  </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>Object Renaming</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Tighten enforcement of column renaming when a child table inherits
+      the renamed column from an unrelated parent (KaiGai Kohei)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      No longer rename index names and index column names when table
+      columns are renamed (Tom Lane)
+     </para>
+
+     <para>
+      Administrators still can rename such columns manually. Expression
+      index names are also not renamed. WHY ARE EXPRESSION INDEXES
+      SIGNIFICANT?
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>PL/pgSQL Variables</title>
+   <itemizedlist>
+
+
+    <listitem>
+     <para>
+      Have PL/pgSQL throw an error if a variable name conflicts with a
+      column name used in a query (Tom Lane)
+     </para>
+
+     <para>
+      This behavior can be changed via the server variable <link
+      linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</varname></link>,
+      or by the per-function option <literal>#variable_conflict</literal>.
+      The former behavior was to bind to variable names over
+      column names.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove PL/pgSQL's <literal>RENAME</literal> declaration option (Tom Lane)
+     </para>
+
+     <para>
+      Instead, use <link
+      linkend="plpgsql-declaration-parameters"><literal>ALIAS</literal></link>,
+      which can now alias any variable, not just dollar sign
+      variables, e.g. <literal>$1</literal>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      PL/pgSQL no longer allows unquoted variables names that match SQL
+      reserved words (Tom Lane)
+     </para>
+
+     <para>
+      Variables can be double-quoted to avoid this restriction.
+     </para>
+    </listitem>
+   </itemizedlist>
+
+  </sect3>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+  <sect3>
+   <title>Server</title>
+
+   <sect4>
+    <title>Continuous Archiving</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow continuous archive standby systems to accept read-only queries
+       (Simon Riggs, Heikki Linnakangas)
+      </para>
+
+      <para>
+       This feature is called Hot Standby. There are new
+       <filename>postgresql.conf</filename> and <filename>recovery.conf</filename>
+       settings to enable this feature, as well as extensive
+       <link linkend="hot-standby">documentation</link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow continuous archive (<acronym>WAL</acronym>) files to be streamed to a
+       standby system (Fujii Masao, Heikki Linnakangas)
+      </para>
+
+      <para>
+       Previously <acronym>WAL</acronym> files could be sent to standby systems only
+       as 16 megabytes files; this allows master changes to be sent to the
+       slave with very little delay. There are new <filename>postgresql.conf</filename>
+       and <filename>recovery.conf</filename> settings to enable this
+       feature, as well as extensive <link
+       linkend="streaming-replication">documentation</link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</function></link>
+       and <function>pg_last_xlog_replay_location()</function>, which
+       can be used to monitor standby server <acronym>WAL</acronym>
+       activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Performance</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Improve performance of finding inherited child tables (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow per-tablespace sequential and random page cost variables
+       (<varname>seq_page_cost</varname>/<varname>random_page_cost</varname>) via
+       <link linkend="SQL-ALTERTABLESPACE"><command>ALTER TABLESPACE
+       ... SET/RESET</command></link> (Robert Haas)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve performance of <link
+       linkend="SQL-TRUNCATE"><command>TRUNCATE</command></link> when
+       used in the same transaction as table creation (Tom Lane)
+      </para>
+     </listitem>
+
+     </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Optimizer</title>
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       Allow <literal>IS NOT NULL</literal> restrictions to use indexes (Tom Lane)
+      </para>
+
+      <para>
+       This is particularly useful for finding
+       <function>MAX()</function>/<function>MIN()</function> values in indexes that also
+       contain NULLs.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove unnecessary <link linkend="queries-join">outer
+       joins</link> (Robert Haas)
+      </para>
+
+      <para>
+       Outer joins where the inner side is unique and not referenced in
+       the query are unnecessary and are therefore now removed.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve optimizer equivalence detection of &lt;&gt; <type>boolean</type>
+       tests (Tom Lane)
+      </para>
+     </listitem>
+    </itemizedlist>
+   </sect4>
+
+   <sect4>
+    <title><link linkend="geqo">GEQO</link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Use the same random seed everytime GEQO plans a query (Andres
+       Freund)
+      </para>
+
+      <para>
+       While the Genetic Query Optimizer (GEQO) still selects
+       random plans, it now selects the same random plans for
+       identical queries. You can modify <link
+       linkend="guc-geqo-seed">geqo_seed</link> to randomize
+       the starting value of the random plan generator.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve GEQO plan selection (Tom Lane).
+      </para>
+
+      <para>
+       This avoids the rare error, "failed to make a valid plan".
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Optimizer Statistics</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Improve <link linkend="SQL-ANALYZE"><command>ANALYZE</command></link>
+       to support inheritance-tree statistics (Tom Lane)
+      </para>
+
+      <para>
+       This is particularly useful for partitioned tables.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve <link linkend="routine-vacuuming">autovacuum</link>
+       detection of when re-analyze is necessary (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve optimizer statistics for greater/less-than comparisons
+       (Tom Lane)
+      </para>
+
+      <para>
+       When looking up optimizer statistics for greater/less-than comparisons,
+       if the comparison value is in the first or last histogram bucket,
+       use an index to generate the actual statistics. This is particularly
+       useful for columns that are always increasing, and hence often have
+       inaccurate statistics.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow setting of distinct statistics using <link
+       linkend="SQL-ALTERTABLE"><command>ALTER TABLE</command></link>
+       (Robert Haas)
+      </para>
+
+      <para>
+       This allows user-override of the number or percentage of distinct
+       values for a column and optionally its child tables. This value
+       is normally computed by <command>ANALYZE</command>.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Authentication</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for <link
+       linkend="auth-radius"><acronym>RADIUS</acronym></link> (Remote
+       Authentication Dial In User Service) authentication
+       (Magnus Hagander)
+      </para>
+     </listitem>
+
+
+     <listitem>
+      <para>
+       Allow <link linkend="auth-ldap"><acronym>LDAP</acronym></link>
+       (Lightweight Directory Access Protocol) authentication
+       to operate in "search/bind" mode (Robert Fleming, Magnus)
+      </para>
+
+      <para>
+       This allows the user to be looked up first, then the system uses
+       the <acronym>DN</acronym> (Distinguished Name) returned for that user.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="auth-pg-hba-conf"><literal>samehost</literal></link>
+       and <literal>samenet</literal> designations to
+       <filename>pg_hba.conf</filename> (Stef Walter)
+      </para>
+
+      <para>
+       These match the server's <acronym>IP</acronym> address and network address
+       respectively.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Monitoring</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add the ability for clients to set an <link
+       linkend="libpq-connect-application-name">application
+       name</link>, which is displayed in
+       <structname>pg_stat_activity</structname> (Dave Page)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add an SQL state option (<literal>%e</literal>) to <link
+       linkend="guc-log-line-prefix"><varname>log_line_prefix</varname></link>
+       (Guillaume Smet)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Write to the Windows event log in <acronym>UTF16</acronym> encoding
+       (Itagaki Takahiro)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Statistics Counters</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared('bgwriter')</function></link>
+       to reset the cluster-wide shared statistics of the
+       bgwriter (Greg Smith)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</function></link>
+       and <function>pg_stat_reset_single_function_counters()</function>
+       to allow the reseting of statistics counters for individual
+       tables and indexes (Magnus Hagander)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Server Settings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow setting of configuration variables based on <link
+       linkend="sql-alterrole">database/role</link>
+       combinations (Alvaro Herrera)
+      </para>
+
+      <para>
+       Previously only per-database and per-role setting were possible,
+       not combinations. All role and database settings are now stored
+       in the new <structname>pg_db_role_setting</structname> system table. A new
+       <application>psql</application> <literal>\drds</literal> command shows these settings.
+       Backwards-compatible system views do not show this information.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add boolean variable <link
+       linkend="guc-bonjour"><varname>bonjour</varname></link>, which
+       controls whether a Bonjour-enabled binary advertises
+       itself via <productname>Bonjour</productname> (Tom Lane)
+      </para>
+
+      <para>
+       The default is off, meaning it does not advertise.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add boolean variable <link
+       linkend="guc-enable-material"><varname>enable_material</varname></link>, which
+       controls the use of materialize nodes in the optimizer
+       (Robert Haas)
+      </para>
+
+      <para>
+       The default is on.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Log changed parameter values when <filename>postgresql.conf</filename> is
+       reloaded (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add proper permissions for custom variables (Tom Lane)
+      </para>
+
+      <para>
+       Custom variables can now only be created by super-users,
+       but can be modified by ordinary users if variable
+       permissions allow it. This makes custom variables
+       appropriate for security settings. Previously, any user
+       could create or modify custom variables.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Queries</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Do <link linkend="SQL-FOR-UPDATE-SHARE"><command>SELECT
+      FOR UPDATE</command>/<literal>SHARE</literal></link> processing after
+      applying <literal>LIMIT</literal>, so the number of rows returned
+      is always predictable (Tom Lane)
+     </para>
+
+     <para>
+      Previously, concurrent transactions could potentially cause
+      <command>SELECT</command> to return fewer rows than specified by
+      <literal>LIMIT</literal>. <literal>FOR UPDATE</literal> can still affect
+      <literal>ORDER BY</literal> ordering, but this can be corrected by using
+      <literal>FOR UPDATE</literal> in a subquery.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow mixing of traditional and SQL-standard <link
+      linkend="SQL-LIMIT"><literal>LIMIT</literal>/<literal>OFFSET</literal></link>
+      syntax in the same query (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Increase the supported frame options in <link
+      linkend="SQL-WINDOW">window functions</link> (Hitoshi
+      Harada)
+     </para>
+
+     <para>
+      This allows frames (<literal>RANGE</literal> or <literal>ROWS</literal>) to start
+      with <literal>CURRENT ROW</literal>, and to use the <literal>ROWS n
+      PRECEDING</literal>/<literal>FOLLOWING</literal> clause.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have <command>SELECT</command> and <command>CREATE TABLE AS</command> return
+      row counts to the client
+      (Boszormenyi Zoltan)
+     </para>
+
+     <para>
+      <application>psql</application> does not display these counts.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Unicode Strings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add Unicode surrogate pair (dual 16-bit) support to
+       <link
+       linkend="sql-syntax-strings-uescape"><literal>U&amp;</literal></link>
+       strings and identifiers (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow Unicode escapes in <link
+       linkend="sql-syntax-strings-escape"><literal>E'...'</literal></link>
+       strings (Marko Kreen)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Object Manipulation</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Speed up <link linkend="SQL-CREATEDATABASE"><command>CREATE
+      DATABASE</command></link> by deferring flushes to disk (Andres
+      Freund, Greg Stark)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-COMMENT">comments</link> only on
+      columns of tables, views, and composite types, not other
+      objects like indexes and <acronym>TOAST</acronym> tables (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow the creation of <link
+      linkend="SQL-CREATETYPE-enum">enumerate types</link> with
+      no labels (Bruce Momjian)
+     </para>
+
+     <para>
+      This is useful for supporting binary upgrades.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have columns defined with storage type <literal>MAIN</literal> remain on
+      the main heap page unless it cannot fit (Kevin Grittner)
+     </para>
+
+     <para>
+      Previously <literal>MAIN</literal> values were forced to <acronym>TOAST</acronym>
+      tables until the row size was one-quarter of the page size.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><command>ALTER</command></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER
+       DEFAULT PRIVILEGES</command></link> command to control privileges
+       of all newly-created objects (Petr Jelinek)
+      </para>
+
+      <para>
+       It currently supports tables, views, sequences, and functions, and
+       also has per-schema control.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Implement <literal>IF EXISTS</literal> for <literal>DROP COLUMN</literal> and
+       <literal>DROP CONSTRAINT </literal> (Andres Freund)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>ALTER TABLE</command> commands which rewrite tables to skip
+       <acronym>WAL</acronym> logging (Itagaki Takahiro)
+      </para>
+
+      <para>
+       Such operations either complete fully or are rolled back, so
+       <acronym>WAL</acronym> archiving can be skipped, unless running in continuous
+       archiving mode.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</command></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for copying <literal>COMMENTS</literal> and <literal>STORAGE</literal>
+       to the <command>CREATE TABLE ... LIKE INCLUDING</command> command (Itagaki
+       Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for copying all attributes to the <command>CREATE
+       TABLE LIKE INCLUDING</command> command (Itagaki Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the SQL-standard <command>CREATE TABLE ... OF type</command> command
+       (Peter Eisentraut)
+      </para>
+
+      <para>
+       This allows the creation of a table to match an existing composite
+       type. Additional constraints and defaults can be specified in the
+       command.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Constraints</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
+       unique constraints</link> (Dean Rasheed)
+      </para>
+
+      <para>
+       This allows <command>UPDATE tab SET col = col + 1</command> to work on
+       columns that have a unique indexes or are marked as primary keys,
+       but <literal>DEFERRABLE INITIALLY DEFERRED</literal> must be used to mark
+       the constraint as deferred.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Generalize uniqueness constraints by allowing arbitrary operator
+       comparisons, not just equality (Jeff Davis)
+      </para>
+
+      <para>
+       This is enabled with the <link
+       linkend="SQL-CREATETABLE-EXCLUDE"><command>CREATE
+       TABLE CONSTRAINT ... EXCLUDE</command></link> clause. While
+       uniqueness checks could be specified using this syntax,
+       the real value of this feature is in using complex
+       operators that do not have built-in constraints.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the constraint violation error message to report the values
+       causing the failure (Itagaki Takahiro)
+      </para>
+
+      <para>
+       For example, a uniqueness constraint violation now reports <literal>Key
+       (x)=(2) already exists</literal>.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Object Permissions</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add the ability to make mass permission changes per
+       schema using the new <link
+       linkend="SQL-GRANT"><command>GRANT</command>/<command>REVOKE
+       IN SCHEMA</command></link> clause (Petr Jelinek)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the ability to control large object permissions with
+       <command>GRANT</command>/<command>REVOKE</command> (KaiGai Kohei)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Utility Operations</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Have <link linkend="SQL-LISTEN"><command>LISTEN</command></link>/<link
+      linkend="SQL-NOTIFY"><command>NOTIFY</command></link> store events
+      in a memory queue, rather than a system table (Joachim
+      Wieland)
+     </para>
+
+     <para>
+      This greatly improves performance for these operations.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</command></link>
+      to pass an optional string to listeners (Joachim Wieland)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-CLUSTER"><command>CLUSTER</command></link>
+      on all system tables (Tom Lane)
+     </para>
+
+     <para>
+      Global system tables still cannot be clustered.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><link linkend="SQL-COPY"><command>COPY</command></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow <literal>*</literal> as a parameter in <literal>FORCE QUOTE</literal> for
+       <literal>COPY CSV</literal> (Itagaki Takahiro)
+      </para>
+
+      <para>
+       This forces quotes for all <acronym>CSV</acronym> output columns.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new <command>COPY</command> syntax that allows parameters to be
+       specified in parentheses (Robert Haas, Emmanuel Cecchet)
+      </para>
+
+      <para>
+       This allows greater flexibility for future <command>COPY</command> options.
+       The old syntax is still supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</command></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add new <command>EXPLAIN (BUFFERS)</command> to report query buffer
+       activity (Itagaki Takahiro)
+      </para>
+
+      <para>
+       log_*_stats log output, e.g. <link
+       linkend="runtime-config-statistics-monitor">log_statement_stats</link>,
+       no longer shows this information.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add hash usage information to <command>EXPLAIN</command> output (Robert
+       Haas)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>EXPLAIN</command> output in <acronym>XML</acronym>, <acronym>JSON</acronym>,
+       and <acronym>YAML</acronym> formats (Robert Haas, Greg Sabino Mullane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>EXPLAIN</command> options to be specified inside parentheses
+       (Robert Haas)
+      </para>
+
+      <para>
+       This allows for the expansion of <command>EXPLAIN</command> options. The
+       old syntax is still supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="SQL-VACUUM"><command>VACUUM</command></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Change <command>VACUUM FULL</command> to rewrite the entire table and
+       indexes, rather than moving around single rows to compact space
+       (Itagaki Takahiro, Tom Lane)
+      </para>
+
+      <para>
+       The previous method was usually slower and caused index bloat.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new <command>VACUUM</command> syntax that allows parameters to be
+       specified in parentheses (Itagaki Takahiro)
+      </para>
+
+      <para>
+       This allows greater flexibility for future <command>VACUUM</command>
+       options. The old syntax is still supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Indexes</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow an index to be auto-named by not supplying an index name to
+       <link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</command></link> (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <link linkend="SQL-REINDEX"><command>REINDEX</command></link>
+       on system indexes (Tom Lane)
+      </para>
+
+      <para>
+       WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE? NON-HARDWIRED ONES?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <literal>point_ops</literal> opclass for GiST (Teodor Sigaev)
+      </para>
+
+      <para>
+       DETAILS?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Use red-black trees for <acronym>GIN</acronym> index creation
+       (Teodor Sigaev)
+      </para>
+
+      <para>
+       Red-black trees are self-balanced so allow for faster index
+     creation.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Data Types</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Allow hex values to be specified in <link
+      linkend="datatype-binary"><type>bytea</type></link> strings
+      (Peter Eisentraut)
+     </para>
+
+     <para>
+      The variable <link
+      linkend="guc-bytea-output">bytea_output</link> controls
+      if hex (default) or octal escapes are used for <type>bytea</type>
+      output. (SWITCH DEFAULT FOR BETA? PETER) Libpq's
+      <function>PQescapeByteaConn()</function> now uses the hex format
+      for <productname>PostgreSQL</productname> 9.0 servers.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link
+      linkend="guc-extra-float-digits">extra_float_digits</link>
+      to be increased to <literal>3</literal> (Tom Lane)
+     </para>
+
+     <para>
+      The previous maximum <varname>extra_float_digits</varname> was <literal>2</literal>.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><link linkend="textsearch">Full Text Search</link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add prefix support for the full text search synonym dictionary
+       (Teodor Sigaev)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add full text search filtering dictionaries (Teodor Sigaev)
+      </para>
+
+      <para>
+       Filtering dictionaries allow tokens to be modified and passed to
+       subsequent dictionaries.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow underscores in full text email addresses (Teodor Sigaev)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Use more standards-compliant rules for <acronym>URL</acronym>
+       parsing (Tom Lane)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Functions</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Allow case-insensitive <link
+      linkend="functions-posix-regexp">regular expression</link>
+      matching with <acronym>UTF-8</acronym> server encodings.
+     </para>
+
+     <para>
+      Previously, only <acronym>ASCII</acronym> characters and single-byte
+      encodings worked properly. Other multi-byte, non-<acronym>UTF-8</acronym>
+      encodings are still broken for case-insensitive regular expression
+      matching.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow function calls to supply parameter names and match them to named
+      parameters in the function definition (Pavel Stehule)
+     </para>
+
+     <para>
+      For example, if a function is defined to take parameters <literal>a</literal>
+      and <literal>b</literal>, it can be called with <literal>func(7 AS a, 12
+      AS b)</literal> or <literal>func(12 AS b, 7 AS a)</literal>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add support for <link
+      linkend="functions-formatting"><function>to_char()</function></link>
+      scientific notation output (<link
+      linkend="functions-formatting-numeric-table"><literal>'EEEE'</literal></link>)
+      (Pavel Stehule, Brendan Jurd)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have <function>to_char()</function> honor <link
+      linkend="functions-formatting-datetimemod-table"><literal>'FM'</literal></link>
+      (fill mode) in <literal>'Y'</literal>, <literal>'YY'</literal>, and
+      <literal>'YYY'</literal> specifications (Bruce Momjian, Tom Lane)
+     </para>
+
+     <para>
+      It was already honored by <literal>'YYYY'</literal>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <function>to_char()</function> to output the proper localized
+      numeric and monetary characters on <productname>Windows</productname>
+      (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Correct calculations of <link
+      linkend="functions-geometry-op-table">"overlap"</link>
+      and "contains" operations over polygons (Teodor Sigaev)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Aggregates</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow aggregate functions to use <literal>ORDER BY</literal> (Andrew
+       Gierth)
+      </para>
+
+      <para>
+       For example, this is now supported, <literal>array_agg(a ORDER BY
+       b)</literal>. This is useful for aggregates where the order of values is
+       significant.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the <link
+       linkend="functions-aggregate-table"><function>string_agg()</function></link>
+       aggregate function which aggregates values into a single
+       string (Pavel Stehule)
+      </para>
+
+      <para>
+       An optional second argument allows specification of a delimiter.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Aggregate functions that are called with <literal>DISTINCT</literal> are
+       now passed NULL values if the aggregate transition function is
+       not marked as <literal>STRICT</literal> (Andrew Gierth)
+      </para>
+
+      <para>
+       For example, <literal>agg(DISTINCT x)</literal> might pass NULL <literal>x</literal>
+       values to <function>agg()</function>.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Bit Strings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-binarystring-other"><function>get_bit()</function></link>
+       and <function>set_bit()</function> functions for <type>bit</type>
+       strings, mirroring those for <type>bytea</type> (Leonardo
+       F)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Implement <link
+       linkend="functions-string-sql"><function>OVERLAY()</function></link>
+       (replace) for <type>bit</type> strings and <type>bytea</type>
+       (Leonardo F)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Object Information Functions</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-admin-dbsize"><function>pg_table_size()</function></link>
+       and <function>pg_indexes_size()</function> to provide a more
+       user-friendly interface to the <function>pg_relation_size()</function>
+       function (Bernd Helmle)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-info-access-table"><function>has_sequence_privilege()</function></link>
+       for sequence permission checking (Abhijit Menon-Sen)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have <link linkend="information-schema">information
+       schema</link> properly display date type octet lengths
+       (Peter Eisentraut)
+      </para>
+
+      <para>
+       The reported length is now the maximum octet length; previously,
+       a huge value was reported.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Speed up information schema privilege views (Joachim Wieland)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Function and Trigger Creation</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Implement anonymous functions using the <link
+       linkend="SQL-DO"><command>DO</command></link> statement (Petr
+       Jelinek, Joshua Tolley, Hannu Valtonen)
+      </para>
+
+      <para>
+       This allows execution of server-side code without the need to create
+       a new function and execute it.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow SQL-compliant <link
+       linkend="SQL-CREATETRIGGER">per-column triggers</link>
+       (Itagaki Takahiro)
+      </para>
+
+      <para>
+       Such triggers are fired only if the specified columns are affected
+       by the query, e.g. in <command>UPDATE</command>'s <literal>SET</literal> list.
+       information_schema now also shows this information.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <literal>WHEN</literal> clause to <link
+       linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</command></link>
+       to allow control over whether a trigger is fired (Takahiro
+       Itagaki)
+      </para>
+
+      <para>
+       While a check can be performed inside the trigger, doing it in an
+       external <literal>WHERE</literal> clause has performance benefits.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Server-Side Languages</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Add the <literal>OR REPLACE</literal> clause to <link
+      linkend="SQL-CREATELANGUAGE"><command>CREATE LANGUAGE</command></link>
+      (Tom Lane)
+     </para>
+
+     <para>
+      This is helpful to optionally install a language if it does not
+      already exist, and is particularly helpful now that PL/pgSQL is
+      installed by default.
+     </para>
+    </listitem>
+
+    </itemizedlist>
+
+    <sect4>
+    <title><link linkend="plpgsql">PL/PgSQL</link> Server-Side
+    Language</title>
+
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Install server-side language PL/pgSQL by default (Bruce Momjian)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <literal>IN</literal> parameters to be assigned values within
+       PL/pgSQL functions (Steve Prentice)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve error location reporting in PL/pgSQL (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have PL/pgSQL use the main lexer, rather than a custom version (Tom Lane)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="plpgsql-cursors">PL/pgSQL Cursors</link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add count and <literal>ALL</literal> options to <command>MOVE
+       FORWARD</command>/<literal>BACKWARD</literal> in PL/pgSQL (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow PL/pgSQL's <literal>WHERE CURRENT OF</literal> to use a cursor
+       variable (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add PL/pgSQL's <command>OPEN cursor FOR EXECUTE</command> to use parameters
+       (Pavel Stehule, Itagaki Takahiro)
+      </para>
+
+      <para>
+       This is accomplished with a new <literal>USING</literal> clause.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add new PL/Perl functions: <link
+       linkend="plperl-utility-functions"><function>quote_literal()</function></link>,
+       <function>quote_nullable()</function>, <function>quote_ident()</function>,
+       <function>encode_bytea()</function>, <function>decode_bytea()</function>,
+       <function>looks_like_number()</function>,
+       <function>encode_array_literal()</function>,
+       <function>encode_array_constructor()</function> (Tim Bunce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add server variable <link
+       linkend="guc-plperl-on-init">plperl.on_init</link> to
+       specify a PL/Perl Perl initialization function (Tim
+       Bunce)
+      </para>
+
+      <para>
+       <link
+       linkend="guc-plperl-on-plperl-init">plperl.on_plperl_init</link>
+       and <varname>plperl.on_plperlu_init</varname> are also available
+       for trusted/untrusted-specific initialization.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve error context support in PL/Perl (Alexey Klyukin)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support <command>END</command> blocks in PL/Perl (Tim Bunce)
+      </para>
+
+      <para>
+       <command>END</command> blocks do not currently allow database access.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>use strict</command> in PL/Perl (Tim Bunce)
+      </para>
+
+      <para>
+       This can be enabled with the server variable <link
+       linkend="guc-plperl-use-strict">plperl.use_strict</link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>require</command> in PL/Perl (Tim Bunce)
+      </para>
+
+      <para>
+       This basically tests to see if the module is loaded, and if not,
+       generates an error.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>use feature</command> in PL/Perl if Perl version 5.10 or
+       later is used (Tim Bunce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Verify that PL/Perl return values are valid in the server encoding
+       (Andrew Dunstan)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve PL/Perl code structure (Tim Bunce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       PL/Perl subroutines are now given perl-visible names (Tim Bunce)
+      </para>
+
+      <para>
+       PL/Perl subroutines are anonymous subrefs; this change adds entries 
+       to the Perl symbol table for them, making profiling and code coverage 
+       tools much more usable.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add Unicode support in PL/Python (Peter Eisentraut)
+      </para>
+
+      <para>
+       Strings are automatically converted from/to the server encoding as
+       necessary.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve <type>bytea</type> support in PL/Python (Caleb Welton)
+      </para>
+
+      <para>
+       <type>Bytea</type> values passed into PL/Python now are represented as
+       binary, rather than the Postgres <type>bytea</type> text format. Null
+       bytes are now also output properly from PL/Python. <type>Boolean</type>
+       and <type>numeric</type> value passing in PL/Python was also improved.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link linkend="plpython-arrays">array parameter/return
+       support</link> to PL/Python (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <application>Python</application> 3 support to PL/Python (Peter Eisentraut)
+      </para>
+
+      <para>
+       The new server-side language is called <link
+       linkend="plpython-python23"><literal>plpython3u</literal></link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve error location and exception reporting in PL/Python (Peter Eisentraut)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Client Applications</title>
+   <itemizedlist>
+
+    <listitem>
+    <para>
+     Add <link linkend="APP-VACUUMDB"><command>vacuumdb</command></link>
+     <option>--analyze-only</option> option to only analyze (Bruce Momjian)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><link linkend="APP-PSQL"><application>psql</application></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Properly escape <application>psql</application> <link
+       linkend="APP-PSQL-variables">variables</link> and
+       identifiers (Pavel Stehule, Robert Haas)
+      </para>
+
+      <para>
+       For example, <literal>:'var'</literal> will be escaped as a literal string, and
+       <literal>:"var"</literal> will be escaped as an SQL identifier.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Ignore leading UTF-8-encoded Unicode byte-order marker in
+       <application>psql</application> (Itagaki Takahiro)
+      </para>
+
+      <para>
+       This is enabled when the client encoding is <acronym>UTF-8</acronym>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix <command>psql --file -</command> to properly honor <link
+       linkend="R1-APP-PSQL-3"><option>--single-transaction</option></link>
+       (Bruce Momjian)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Prevent overwriting of <application>psql</application>'s command-line history
+       if two <application>psql</application> sessions are run simultaneously (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve <application>psql</application>'s tab completion support (Itagaki
+       Takahiro)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+    <sect5>
+    <title><application>psql</application> Display</title>
+     <itemizedlist>
+
+      <listitem>
+       <para>
+        Allow <application>psql</application> to use fancy Unicode line-drawing
+        characters via <command>\pset linestyle unicode</command> (Roger Leigh)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Improve display of wrapped columns in <application>psql</application> (Roger
+        Leigh)
+       </para>
+
+       <para>
+        The previous format is available by using <command>\pset linestyle
+        old-ascii</command>.
+       </para>
+      </listitem>
+
+     </itemizedlist>
+
+    </sect5>
+
+    <sect5>
+     <title><application>psql</application> <link
+     linkend="APP-PSQL-meta-commands"><command>\d</command></link>
+     Commands</title>
+     <itemizedlist>
+
+      <listitem>
+       <para>
+        Have <command>\d</command> show child tables that inherit from the specified
+        parent (Damien Clochard)
+       </para>
+
+       <para>
+        <command>\d</command> shows only the number of child tables, while
+        <command>\d+</command> shows the names of all child tables.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Show definition of indexes in <command>\d index_name</command> (Khee Chin)
+       </para>
+
+       <para>
+        The definition is useful for expression indexes.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        In <application>psql</application>, show the view definition only with <command>\d+</command>,
+        not with <command>\d</command> (Peter Eisentraut)
+       </para>
+      </listitem>
+
+     </itemizedlist>
+
+    </sect5>
+   </sect4>
+
+   <sect4>
+    <title><link linkend="APP-PGDUMP"><application>pg_dump</application></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have <application>pg_dump</application>/<application>pg_restore</application>
+       <link linkend="pg-dump-options"><option>--clean</option></link>
+       also remove large objects (Itagaki Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix <application>pg_dump</application> to properly dump large objects if
+       standard_conforming_strings is enabled (Tom Lane)
+      </para>
+
+      <para>
+       Large objects dumps now use hex format for output. (SWITCH DEFAULT
+       FOR BETA? TOM)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <application>pg_dump</application> to dump comments attached to columns
+       of composite types (Taro Minowa (Higepon))
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have <application>pg_dump</application> <link
+       linkend="pg-dump-options"><option>--verbose</option></link>
+       output the <application>pg_dump</application> and server versions
+       in text output mode (Jim Cox, Tom Lane)
+      </para>
+
+      <para>
+       These were already present in custom output mode.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link
+    linkend="app-pg-ctl"><application>pg_ctl</application></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow <application>pg_ctl</application> to be safely used to start the
+       <application>postmaster</application> at boot-time (Tom Lane)
+      </para>
+
+      <para>
+       Previously the <application>pg_ctl</application> process could have been mistakenly
+       identified as a running <application>postmaster</application> based on a stale
+       <application>postmaster</application> lock file.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Give <application>pg_ctl</application> the ability to initialize the database
+       (like <application>initdb</application>) (Zdenek Kotala)
+      </para>
+     </listitem>
+
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title><application>Development Tools</application></title>
+
+   <sect4>
+    <title><link linkend="libpq"><application>libpq</application></link></title>
+
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add new <application>libpq</application> functions
+       <link
+       linkend="libpq-connect"><function>PQconnectdbParams()</function></link>
+       and <function>PQconnectStartParams()</function> (Guillaume
+       Lelarge)
+      </para>
+
+      <para>
+       These functions are similar to <function>PQconnectdb()</function> and
+       <function>PQconnectStart()</function> except they allow a null-terminated
+       array of connection options, rather than requiring all options to
+       be sent in a single string.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <application>libpq</application> functions <link
+       linkend="libpq-exec-escape-string"><function>PQescapeLiteral()</function></link>
+       and <function>PQescapeIdentifier()</function> (Robert Haas)
+      </para>
+
+      <para>
+       These functions return appropriately quoted and escaped literal
+       strings and identifiers. The caller is not required to pre-allocate
+       the string result, as is required by <function>PQescapeStringConn()</function>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add checking for a per-user service file (<link
+       linkend="libpq-pgservice"><filename>.pg_service.conf</filename></link>),
+       which is checked before the site-wide service file
+       (Peter Eisentraut)
+      </para>
+
+      <para>
+       The file <filename>.pg_service.conf</filename> is assumed to be in the
+       user's home directory.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Properly report an error if the specified <application>libpq</application> service
+       cannot be found (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Issue a warning if the <link
+       linkend="libpq-pgpass"><filename>.pgpass</filename></link>-retrieved
+       password fails (Bruce Momjian)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="ecpg"><application>ecpg</application></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link linkend="ecpg-descriptors"><acronym>SQLDA</acronym></link>
+       (SQL Descriptor Area) support to <application>ecpg</application>
+       (Boszormenyi Zoltan)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the <link linkend="ecpg-descriptors"><command>DESCRIBE</command>
+       [<literal>OUTPUT</literal>]</link> statement to <application>ecpg</application>
+       (Boszormenyi Zoltan)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add an <application>ecpg</application> <link
+       linkend="ecpg-library">function</link> to return the
+       current transaction status (Bernd Helmle)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the <literal>string</literal> data type in <application>ecpg</application>
+       Informix-compatibility mode (Zoltan Boszormenyi)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <application>ecpg</application> to use <literal>new</literal> and <literal>old</literal>
+       variable names without restriction (Michael Meskes)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <application>ecpg</application> to use variable names in
+       <function>free()</function>(Michael Meskes)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have <application>ecpg</application> return zero for non-SQL3 data types
+       (Michael Meskes))
+      </para>
+
+      <para>
+       Previously it returned the negative of the data type <type>oid</type>.
+      </para>
+     </listitem>
+
+     </itemizedlist>
+
+     <sect5>
+      <title><application>ecpg</application> Cursors</title>
+      <itemizedlist>
+
+      <listitem>
+       <para>
+        Add <application>ecpg</application> out-of-scope cursor support in native mode
+        (Boszormenyi Zoltan)
+       </para>
+
+       <para>
+        This allows <command>DECLARE</command> to use variables that are not in
+        scope when <command>OPEN</command> is called. This facility already existed
+        in <application>ecpg</application> Informix-compatibility mode.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow dynamic <application>ecpg</application> cursor names (Boszormenyi Zoltan)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow <application>ecpg</application> to use noise words <literal>FROM</literal> and
+        <literal>IN</literal> in <command>FETCH</command> and <command>MOVE</command> (Zoltan
+        Boszormenyi)
+       </para>
+      </listitem>
+
+     </itemizedlist>
+
+    </sect5>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Build Options</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Enable client thread safety by default (Bruce Momjian)
+     </para>
+
+     <para>
+      Thread-safe builds can be disabled with <link
+      linkend="configure"><application>configure</application></link>
+      <option>--disable-thread-safety</option>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add a compile-time option to allow the Linux out-of-memory killer
+      to kill backends (Alex Hunsaker, Tom Lane)
+     </para>
+
+     <para>
+      Now that <filename>/proc/self/oom_adj</filename> allows disabling
+      of the <productname>Linux</productname> out-of-memory (<acronym>OOM</acronym>)
+      killer for the postmaster and its children, the new
+      compile-time option <link
+      linkend="linux-memory-overcommit"><literal>-DLINUX_OOM_ADJ=0</literal></link>
+      allows the killer to be enabled for <application>postmaster</application>
+      children. <application>pg_config</application> shows if this flag
+      was used during compilation.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Use <productname>DocBook</productname> <acronym>XSL</acronym> stylesheets for man page
+      building (Peter Eisentraut)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Makefiles</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       New <filename>Makefile</filename> targets <link
+       linkend="build"><literal>world</literal></link>,
+       <literal>install-world</literal>, and <literal>installcheck-world</literal>
+       (Andrew Dunstan)
+      </para>
+
+      <para>
+       These are similar to the existing <literal>all</literal>, <literal>install</literal>,
+       and <literal>installcheck</literal> targets, but they build <acronym>HTML</acronym>
+       documentation, build and test <filename>/contrib</filename>, and test
+       server-side languages and <application>ecpg</application>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add data and documentation location control to <link
+       linkend="xfunc-c-pgxs"><acronym>PGXS</acronym></link> Makefiles
+       (Mark Cave-Ayland)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Restructure the <acronym>HTML</acronym> documentation build
+       <filename>Makefile</filename> rules (Peter Eisentraut)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>New Requirements</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Require <application>Autoconf</application> 2.63 for building from source (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require <application>Flex</application> 2.5.31 or later to build from source
+       (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require <application>Perl</application> version 5.8 or greater to build the server
+       from a <acronym>CVS</acronym> copy (John Naylor, Andrew)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Windows</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for compiling on <link
+       linkend="install-win32-full">64-bit
+       <productname>Windows</productname></link> and running in 64-bit
+       mode (Tsutomu Yamada, Magnus)
+      </para>
+
+      <para>
+       This allows for large shared memory sizes on <productname>Windows</productname>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow server builds using <link
+       linkend="install-win32-full"><productname>Visual Studio
+       2008</productname></link> (Magnus Hagander)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow multi-processor compilation using <productname>Microsoft Visual
+       C</productname> (Magnus Hagander)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Source Code</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Distribute documentation in a proper directory tree, rather than
+      as tar archive files inside the main distribution tarball (Peter Eisentraut)
+     </para>
+
+     <para>
+      For example, the <acronym>HTML</acronym> documentation is now in
+      <filename>doc/src/sgml/html</filename>; the manual pages are packaged
+      similarly.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Enable the server lexer to be reentrant (Tom Lane)
+     </para>
+
+     <para>
+      This was needed for use of the lexer by PL/pgSQL.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve speed of memory allocation (Tom Lane, Greg Stark)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add system columns to better document the use of indexes for constraint
+      enforcement (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow multiple actions to be communicated using the same operating
+      system signal (Fujii Masao)
+     </para>
+
+     <para>
+      This allows improved backend communication as new features are
+      added.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve source code test coverage, including /contrib, PL/Python,
+      and PL/Perl (Peter Eisentraut, Andrew Dustan)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove the use of flat files for system table bootstrapping
+      (Tom Lane, Alvaro Herrera)
+     </para>
+
+     <para>
+      This also improves performance when using millions of users and
+      databases.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve the ability to translate <application>psql</application> strings
+      (Peter Eisentraut)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Reduce the length of some file names so file paths are less than
+      100 characters (Tom Lane)
+     </para>
+
+     <para>
+      Some decompression programs have problems with long file names.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Tighten input requirements for <type>int2</type> vector input (Caleb
+      Welton)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add a new <link
+      linkend="errcodes-table"><literal>ERRCODE_INVALID_PASSWORD</literal></link>
+      <literal>SQLSTATE</literal> error code (Bruce Momjian)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Properly remove the few remaining personal source code copyright
+      entries (Bruce Momjian)
+     </para>
+
+     <para>
+      The personal copyright notices were insignificant but the community
+      occasionally had to answer questions about them.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Feature Support</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Use a more modern <acronym>API</acronym> for <application>Bonjour</application> (Tom Lane)
+      </para>
+
+      <para>
+       Bonjour now requires <productname>OS X</productname> 10.3 or later.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add processor test-and-test lock support for the <productname>SuperH</productname>
+       architecture (Nobuhiro Iwamatsu)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow non-<application>GCC</application> compilers to use inline functions if
+       they support them (Kurt Harriman)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove support for platforms that don't have a working 64-bit
+       integer data types (Tom Lane)
+      </para>
+
+      <para>
+       It is believed all supported platforms have working 64-bit integer
+       data types.
+      </para>
+     </listitem>
+
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Server Programming</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow use of <productname>C++</productname> functions in backend code (Kurt
+       Harriman, Peter Eisentraut)
+      </para>
+
+      <para>
+       This removes keyword conflicts that previously made <productname>C++</productname>
+       usage difficult in backend code. <literal>extern "C" { }</literal> might still
+       be necessary.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="xaggr"><function>AggCheckCallContext()</function></link>
+       for use in detecting if a <productname>C</productname> function is
+       being called as an aggregate (Hitoshi Harada)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require <function>fastgetattr()</function> and <function>heap_getattr()</function>
+       backend macros to use a non-NULL fourth argument (Robert Haas)
+       KEEP?
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Server Hooks</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add parser hooks to access column and parameter references in
+       queries (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add a hook so loadable modules can control utility commands (Itagaki
+       Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the calling of parser hooks from <acronym>SPI</acronym> and cached
+       plans (Tom Lane)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Binary Upgrade Support</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for preservation of all <link
+       linkend="catalog-pg-class"><structname>relfilenodes</structname></link>,
+       for use during binary upgrades (Bruce Momjian)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for binary upgrades to preserve <structname>pg_type</structname>
+       and <structname>pg_enum</structname> <type>oids</type> (Bruce Momjian)
+      </para>
+
+      <para>
+       This is needed to allow binary upgrades of user-defined composite
+       types, arrays, and enums (enumerated types).
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Move tablespace data directories into their own
+       <productname>PostgreSQL</productname> version-specific subdirectory (Bruce Momjian)
+      </para>
+
+      <para>
+       This simplifies binary upgrades.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Contrib</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</filename></link>
+      to support in-place upgrades (Bruce)
+     </para>
+
+     <para>
+      This avoids the requirement of dumping/reloading the database when
+      upgrading to a new major release of PostgreSQL.  It supports upgrades
+      from PostgreSQL 8.3 and 8.4.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add multi-threaded option (<option>-j</option>) to <link
+      linkend="pgbench"><filename>/contrib/pgbench</filename></link>
+      (Itagaki Takahiro)
+     </para>
+
+     <para>
+      This allows multiple <acronym>CPU</acronym>s to be used for pgbench tests.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <command>\shell</command> and <command>\setshell</command> meta
+      commands to <link
+      linkend="pgbench"><filename>/contrib/pgbench</filename></link>
+      (Michael Paquier)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      New features for <link
+      linkend="dict-xsyn"><filename>/contrib/dict_xsyn</filename></link>
+      (Sergey Karpov)
+     </para>
+
+     <para>
+      The new options are <literal>matchorig</literal>, <literal>matchsynonyms</literal>,
+      and <literal>keepsynonyms</literal>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add full text dictionary <link
+      linkend="unaccent"><filename>/contrib/unaccent</filename></link>
+      (Teodor Sigaev)
+     </para>
+
+     <para>
+      This filter dictionary removes accents from tokens.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link
+      linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</function></link>
+      to <filename>/contrib/dblink</filename> (Marcus Kempe)
+     </para>
+
+     <para>
+      This allows async notifications in <productname>dblink</productname>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Greatly increase <link
+      linkend="hstore"><filename>/contrib/hstore</filename></link>'s
+      length limit and add btree and hash abilities so <literal>GROUP
+      BY</literal> and <literal>DISTINCT</literal> operations are possible
+      (Andrew Gierth)
+     </para>
+
+     <para>
+      New functions and operators were also added.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link
+      linkend="passwordcheck"><filename>/contrib/passwordcheck</filename></link>
+      which can check the strength of assigned passwords (Laurenz
+      Albe)
+     </para>
+
+     <para>
+      The source code of this module should be modified to implement
+      site-specific password policies.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add query text to <link
+      linkend="auto-explain"><filename>/contrib/auto_explain</filename></link>
+      output (Andrew Dunstan)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add buffer access counters to <link
+      linkend="pgstatstatements"><filename>/contrib/pg_stat_statements</filename></link>
+      (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update <link
+      linkend="server-start"><filename>/contrib/start-scripts/linux</filename></link>
+      to use <filename>/proc/self/oom_adj</filename> to disable the
+      <link linkend="linux-memory-overcommit"><productname>Linux</productname>
+      out-of-memory</link> (<acronym>OOM</acronym>) killer (Alex
+      Hunsaker, Tom Lane)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+ </sect2>
+</sect1>

Added: traduc/trunk/postgresql/release-alpha.xml
===================================================================
--- traduc/trunk/postgresql/release-alpha.xml	                        (rev 0)
+++ traduc/trunk/postgresql/release-alpha.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,1486 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-alpha.sgml,v 2.1 2010-04-29 20:54:28 momjian Exp $ -->
+
+<sect1 id="release-9-0-alpha">
+  <title>Release 9.0alpha4</title>
+  <sect2>
+    <title>Overview</title>
+    <para>
+      PostgreSQL alpha releases are snapshots of development code. They
+      are intended to preview and test upcoming features and to provide
+      the possibility for early feedback. They should not be used in
+      production installations or active development projects. While the
+      PostgreSQL code is continuously subject to a number of automated
+      and manual tests, alpha releases might have serious bugs. Also
+      features may be changed incompatibly or removed at any time during
+      the development cycle.
+    </para>
+    <para>
+      The development cycle of a PostgreSQL major release alternates
+      between periods of development and periods of integration work,
+      called commit fests, normally one month each. Alpha releases are
+      planned to be produced at the end of every commit fest, thus every
+      two months. Since the first commit fest starts within a month from
+      the beginning of development altogether, early alpha releases are
+      not indicative of the likely feature set of the final release.
+    </para>
+    <para>
+      The release notes below highlight user visible changes and new
+      features. There are normally numerous bug fixes and performance
+      improvements in every new snapshot of PostgreSQL, and it would be
+      too bulky to attempt to list them all. Note that many bug fixes are
+      also backported to stable releases of PostgreSQL, and you should be
+      using those if you are looking for bug-fix-only upgrades for your
+      current installations.
+    </para>
+    <para>
+      The release notes are cumulative over all alpha releases.  Items
+      that are new in the latest alpha release
+      are <emphasis>emphasized</emphasis>.
+    </para>
+  </sect2>
+  <sect2>
+    <title>Migration</title>
+    <para>
+      To upgrade from any release to an alpha release or from an alpha
+      release to any other release will most likely require a
+      dump/restore upgrade procedure. It may happen that this is not
+      necessary in particular cases, but that is not verified beforehand.
+      (The server will warn you in any case when a dump/restore is
+      necessary if you attempt to use it with an old data directory.)
+      Note, however, that the dump/restore upgrade procedure is expected
+      to work for alpha releases, and problems in this area should be
+      reported.
+    </para>
+  </sect2>
+  <sect2>
+    <title>Testing</title>
+    <para>
+      The primary reason we release alphas is to get users to test new
+      features as early as possible.  If you are interested in helping
+      with organized testing, please see
+      <ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
+      testing information page</ulink>.
+      </para>
+  </sect2>
+  <sect2>
+    <title>Changes</title>
+    <sect3>
+      <title>SQL Features</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Disallow comments on columns of relation types
+         other than tables, views, and composite types, that is,
+         sequences and TOAST tables.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Adjust naming of indexes and their columns. Index
+         expression columns are now named after the FigureColname
+         result for their expressions, rather than always being
+         "pg_expression_N".  Digits are appended to this name if
+         needed to make the column name unique within the index.
+         Default names for indexes and associated constraints now
+         include the column names of all their columns, not only the
+         first one as in previous practice.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Allow the index name to be omitted in CREATE INDEX,
+         causing the system to choose an index name the same as it
+         would do for an unnamed index constraint.  A necessary
+         side-effect is to promote the word CONCURRENTLY to a more
+         reserved status; it can't be a table/column/index name
+         anymore unless quoted.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Improve the handling of SET CONSTRAINTS commands by
+         having them search pg_constraint before searching pg_trigger.
+         This allows saner handling of corner cases.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Typed table feature; this adds the CREATE TABLE
+         name OF type command.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Tighten integrity checks on ALTER TABLE ... RENAME
+         COLUMN in inheritance hierarchies.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Replace the pg_listener-based LISTEN/NOTIFY
+         mechanism with an in-memory queue.  In addition, add support
+         for a "payload" string to be passed along with each notify
+         event.</emphasis>
+        </para>
+        <para>
+         <emphasis>This implementation should be significantly more
+         efficient than the old one, and is also more compatible with
+         Hot Standby usage.  There is not yet any facility for HS
+         slaves to receive notifications generated on the master,
+         although such a thing is possible in future.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Have SELECT and CREATE TABLE AS queries return a
+         row count.  While this is invisible in psql, other
+         interfaces, like libpq, make this value visible.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Extend the set of frame options supported for
+         window functions.  This allows the frame to start from
+         CURRENT ROW (in either RANGE or ROWS mode), and it also adds
+         support for ROWS n PRECEDING and ROWS n FOLLOWING start and
+         end points.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add DO statement to support execution of procedural language
+         code without having to create a function for it.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support use of function argument names to identify which
+         actual arguments match which function parameters. The syntax
+         uses AS, for example funcname(value AS arg1, anothervalue AS
+         arg2).
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove previously deprecated configuration
+         parameter add_missing_from. The system now always behaves as
+         though add_missing_from were off.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Performance and behavioral improvements in UPDATE,
+         DELETE, and SELECT FOR UPDATE/SHARE queries with joins.
+         Fix various corner cases that could have resulted in duplicated output
+         rows. Set-returning functions are now prohibited in the
+         target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
+         propagate into a WITH query anymore.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix SELECT FOR UPDATE/SHARE in conjunction with LIMIT.
+          Previously, it could return fewer rows than the limit specified.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
+          to be checked to determine whether the trigger should be fired.
+        </para>
+        <para>
+         For BEFORE triggers this is mostly a matter of spec compliance; but
+          for AFTER triggers it can provide a noticeable performance
+          improvement, since queuing of a deferred trigger event and
+          re-fetching of the row(s) at end of statement can be
+          short-circuited if the trigger does not need to be fired.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add exclusion constraints, which generalize the concept of
+          uniqueness to support any indexable commutative operator, not just
+          equality. Two rows violate the exclusion constraint if
+          &quot;row1.col OP row2.col&quot; is TRUE for each of the columns in
+          the constraint.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support ORDER BY within aggregate function calls, at long last
+          providing a non-kluge method for controlling the order in which
+          values are fed to an aggregate function. At the same time eliminate
+          the old implementation restriction that DISTINCT was only supported
+          for single-argument aggregates.
+        </para>
+        <para>
+         Behavioral change: formerly, agg(DISTINCT x) dropped null values of
+          x unconditionally. Now, it does so only if the aggregate's transition
+          function is strict; otherwise nulls are treated as DISTINCT
+          normally would, i.e., you get one copy.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add SQL-compliant triggers on columns, which fire only if
+         certain columns are named in the UPDATE's SET list.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING
+         ALL shortcut to allow users to make an exact copy of a table including
+         all options and features.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Define a new, more extensible syntax for COPY options
+         in order to support additional COPY options in the future.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Modify the definition of window-function PARTITION
+         BY and ORDER BY clauses so that their elements are always
+         taken as simple expressions over the query's input
+         columns. This fixes a bug.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix bug with nested WITH RECURSIVE statements.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add surrogate pair support for U&amp; string and identifier
+         syntax.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add Unicode escapes in E'...' strings.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            DROP COLUMN and DROP CONSTRAINT now support an IF EXISTS clause so
+            that users can avoid fatal errors when running repeatable scripts.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            UNIQUE constraints can now be DEFERRABLE. This is primarily useful
+            for incremental updates of numerical keys, e.g. &quot;ID = ID +
+            1&quot;
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Allow parentheses around the query expression that follows a WITH
+            clause.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            INFORMATION_SCHEMA, a catalog of standard views of database
+            objects, has been updated to the SQL:2008 standard.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Change character_octet_length to more sensible values in
+            INFORMATION_SCHEMA.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Allow * as parameter for FORCE QUOTE for COPY CSV, so that all
+            columns will be quoted.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Performance</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Support "x IS NOT NULL" clauses as index-scan
+         conditions.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>When estimating the selectivity of an inequality
+         "column &gt; constant" or "column &lt; constant", and the
+         comparison value is in the first or last histogram bin or
+         outside the histogram entirely, try to fetch the actual
+         column min or max value using an index scan (if there is an
+         index on the column).  If successful, replace the lower or
+         upper histogram bound with that value before carrying on with
+         the estimate.  This limits the estimation error caused by
+         moving min/max values when the comparison value is close to
+         the min or max.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Generic implementation of red-black binary tree.
+         For now, only GIN uses it during index creation.  Using
+         self-balanced tree greatly speeds up index creation in corner
+         cases with preordered data.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow rewriting forms of ALTER TABLE to skip WAL
+          logging.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Speed up INFORMATION_SCHEMA's privilege views.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Make TRUNCATE do truncate-in-place when processing
+         a relation that was created or previously truncated in the
+         current (sub)transaction.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Implement &quot;join removal&quot; for cases where the inner side
+          of a left join is unique and is not referenced above the join.  This should
+          speed up many ORM-generated and reporting tool queries.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove the use of the flat files pg_auth and
+         pg_database in order to improve performance. (Warning: pgbouncer
+         and possibly other tools currently suggest referring to the pg_auth
+         file for its user database. Such schemes will no longer work.)
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            EXPLAIN allows output of plans in XML, JSON, or YAML format for automated
+            processing of explain plans by analysis or visualization tools.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            EXPLAIN now supports the use of generic options in EXPLAIN ( option
+            value, ... ) format, which permits the creation of additional
+            EXPLAIN options.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DISTINCT allows
+            users to manually tweak the number of distinct values estimated for
+            a column, to fix cases where ANALYZE estimates are incorrect.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Make GEQO's planning deterministic by having it start from a
+            predictable random number seed each time.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Rewrite GEQO's gimme_tree function so that it always finds a legal
+            join sequence. Previously, it could have failed to produce a plan
+            in some cases.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Tweak TOAST code so that columns marked with MAIN storage strategy
+            are not forced out-of-line unless that is necessary to make the row
+            fit on a page. Previously, they were forced out-of-line if needed
+            to get the row down to the default target size (1/4th page).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Simplify the forms foo &lt;&gt; true and foo &lt;&gt; false to foo
+            = false and foo = true during query optimization.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Avoid per-send() system calls to manage SIGPIPE in libpq, if the
+            platform provides either sockopt(SO_NOSIGPIPE) or the MSG_NOSIGNAL
+            flag to send().
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Administration and Monitoring</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add the ability to store inheritance-tree
+         statistics in pg_statistic, and teach ANALYZE to compute such
+         stats for tables that have subclasses.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Revise pgstat's tracking of tuple changes to
+         improve the reliability of decisions about when to
+         auto-analyze.  The previous code depended on n_live_tuples +
+         n_dead_tuples - last_anl_tuples, where all three of these
+         numbers could be bad estimates from ANALYZE itself.  Even
+         worse, in the presence of a steady flow of HOT updates and
+         matching HOT-tuple reclamations, auto-analyze might never
+         trigger at all, even if all three numbers are exactly right,
+         because n_dead_tuples could hold steady.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Support ALTER TABLESPACE name SET/RESET (
+         tablespace_options ), currently supporting seq_page_cost and
+         random_page_cost as parameters.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>New faster implementation of VACUUM FULL.  The old
+         idiom of using CLUSTER instead of VACUUM FULL for speed is
+         now obsolete.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add buffer access counters to
+         pg_stat_statements.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add some simple support and documentation for using
+         process-specific oom_adj settings to prevent the postmaster
+         from being OOM-killed on Linux systems.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Place tablespace directories in their own
+         subdirectory so pg_migrator can upgrade clusters without
+         renaming the tablespace directories.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Introduce Streaming Replication.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add pg_table_size() and pg_indexes_size() to
+         provide more user-friendly wrappers around the
+         pg_relation_size() function.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add pg_stat_reset_shared('bgwriter') to reset the
+         cluster-wide shared statistics of the bgwriter.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Replace ALTER TABLE ... SET STATISTICS DISTINCT
+         with a more general mechanism.  Attributes can now have
+         options, just as relations and tablespaces do, and the
+         reloptions code is used to parse, validate, and store
+         them.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Fix longstanding gripe that we check for
+         0000000001.history at start of archive recovery, even when we
+         know it is never present.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Make standby server continuously retry restoring
+         the next WAL segment with restore_command, if the connection
+         to the primary server is lost.  This ensures that the standby
+         can recover automatically, if the connection is lost for a
+         long time and standby falls behind so much that the required
+         WAL segments have been archived and deleted in the
+         master.</emphasis>
+        </para>
+        <para>
+         <emphasis>This also makes standby_mode useful without
+         streaming replication; the server will keep retrying
+         restore_command every few seconds until the trigger file is
+         found.  That's the same basic functionality pg_standby
+         offers, but without the bells and whistles.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add functions to reset the statistics counter for a
+         single table/index or a single function.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Augment EXPLAIN output with more details on Hash
+         nodes.</emphasis>
+         </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Reindexing shared system catalogs is now fully
+         transactional and crash-safe.</emphasis>
+         </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow read-only connections during recovery, also
+         known as Hot Standby.  This provides a built-in master-slave
+         replication solution.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Provide a parenthesized-options syntax for VACUUM, analogous to
+          that recently adopted for EXPLAIN. This will allow additional
+          options to be implemented in future without having to make them
+          fully-reserved keywords. The old syntax remains available for
+          existing options, however.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add support for an application_name parameter, which is displayed
+          in pg_stat_activity and recorded in log entries.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix longstanding problems in VACUUM caused by untimely
+          interruptions.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add YAML to list of EXPLAIN formats.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a hook to let loadable modules get control at ProcessUtility
+          execution, and use it to extend contrib/pg_stat_statements to track
+          utility commands.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a Boolean server configuration parameter
+         &quot;bonjour&quot; to control whether a Bonjour-enabled
+         build actually attempts to advertise itself via Bonjour.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         When reloading postgresql.conf, log what parameters actually
+         changed.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Make it possibly to specify server configuration parameters
+         per user-database combination. Add a \drds command to psql to
+         display the settings.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow the collection of statistics on sequences.
+        </para>
+       </listitem>
+      <listitem>
+       <para>
+        Increase the maximum value of extra_float_digits to
+        3, and have pg_dump use that value when the backend is new
+        enough to allow it, because it is possible to need 3 extra
+        digits for float4 values (but not for float8 values).
+       </para>
+      </listitem>
+        <listitem>
+          <para>
+            Add the ability to include the SQLSTATE error code of any error
+            messages in the PostgreSQL activity log with the new
+            log_line_prefix placeholder %e.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Show the exact value being complained of in
+            unique-constraint-violation error messages, including unique-index
+            build failures.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Security</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add support for RADIUS authentication.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         When querying a table with child tables, do not check permissions
+          on the child tables, only on the parent table. The old behavior was
+          found to be useless and confusing in virtually all cases, and also
+          contrary to the SQL standard.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a hook to CREATE/ALTER ROLE to allow an external module to
+          check the strength of database passwords, and create a sample
+          implementation of such a hook as a new contrib module
+          &quot;passwordcheck&quot;.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add large object access control.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow LDAP authentication to operate in search+bind
+         mode, meaning it does a search for the user in the directory
+         first, and then binds with the DN found for this user.  This
+         allows for LDAP logins in scenarios where the DN of the user
+         cannot be determined simply by prefix and suffix, such as the
+         case where different users are located in different
+         containers.  The old way of authentication can be
+         significantly faster, so it's kept as an option.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add ALTER DEFAULT PRIVILEGES command, which allows
+         users to adjust the privileges that will be applied to
+         subsequently-created objects.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA.
+         This makes it easier to manage permissions on database objects.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support &quot;samehost&quot; and &quot;samenet&quot; specifications
+         in pg_hba.conf.  This allows users with dynamic server addresses to run
+         PostgreSQL without frequently modifying pg_hba.conf.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            New has_sequence_privilege() functions allow you to check sequence
+            privileges for a given ROLE.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Built-In Functions</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Fix 3-parameter form of bit substring() to throw
+         error for negative length, as required by SQL
+         standard.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add get_bit/set_bit functions for bit strings,
+         paralleling those for bytea, and implement OVERLAY() for bit
+         strings and bytea.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add string_agg aggregate functions.  The
+         one-argument version concatenates the input values into a
+         string.  The two-argument version also does the same thing,
+         but inserts delimiters between elements.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Honor to_char() "FM" specification in YYY, YY, and
+         Y; it was already honored by YYYY.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove configuration parameter regex_flavor. It is now always
+          &quot;advanced&quot;.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Teach the regular expression functions to do case-insensitive
+          matching and locale-dependent character classification properly
+          when the database encoding is UTF8. This previously only worked
+          correctly for single-byte encodings.  It is still broken for other
+          multibyte encodings.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support POSIX-compatible interpretation of ? as well as {m,n}
+         and related constructs in SIMILAR TO, per SQL:2008.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            The to_char() formatting functions now supports EEEE (scientific
+            notation).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Use floor() not rint() when reducing precision of fractional
+            seconds in timestamp_trunc, timestamptz_trunc, and interval_trunc()
+            for the float-datetime case. This improves accuracy of time
+            calculations.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Fix ancient bug in handling of to_char() modifier 'TH', when used
+            with HH.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Data Types</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Allow enums to be created with zero labels, for use
+         during binary upgrade.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         When doing &quot;ARRAY[...]::domain&quot;, where domain is a domain
+          over an array type, we need to check domain constraints. Regression
+          introduced in 8.4.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix integer-to-bit-string conversions to handle the first
+          fractional byte correctly when the output bit width is wider than
+          the given integer by something other than a multiple of 8 bits.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix encoding handling in binary input function of xml type.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Tighten binary receive functions so that they reject values
+         that the text input functions don't accept either.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            New hex-string input and output format options for type bytea. Hex
+            output format is enabled by default, which is an incompatible
+            change. See the new bytea_output parameter if you need to restore
+            compatibility.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Adds prefix support for text search synonym dictionary, allowing
+            creation of synonyms on partial matches.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Server Tools</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         initdb now selects the encoding SQL_ASCII when the locale specifies
+          US-ASCII. This case previously failed.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add init[db] option to pg_ctl.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         It is now reasonably safe to use pg_ctl to start
+         the postmaster from a boot-time script.
+        </para>
+       </listitem>
+       <listitem>
+          <para>
+            pg_dump/pg_restore --clean now drops large objects.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Modify parallel pg_restore ordering logic to avoid a potential
+            O(N^2) slowdown for some complex databases.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>libpq</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add user-specific .pg_service.conf file.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add new escaping functions PQescapeLiteral and
+         PQescapeIdentifier.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Introduce two new libpq connection functions,
+         PQconnectdbParams and PQconnectStartParams, which are
+         analogous to PQconnectdb and PQconnectStart respectively, but
+         accept two NULL-terminated arrays, keywords and values,
+         rather than conninfo strings. This avoids the need to build
+         the conninfo string in cases where it might be inconvenient
+         to do so.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Throw error when a specified connection service name is not
+          found in pg_service.conf, instead of ignoring it.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Make libpq reject non-numeric and out-of-range port numbers with a
+         suitable error message.
+        </para>
+       </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>psql</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Allow psql variables to be interpolated with
+         literal or identifier escaping.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         In psql, show view definition only with \d+, not with \d.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         In psql, ignore UTF-8-encoded Unicode byte-order mark at the
+          beginning of a file if the client encoding is UTF-8.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Improve psql's tabular display of wrapped-around data by inserting
+          markers in the formerly-always-blank columns just to left and right
+          of the data. &quot;pset linestyle old-ascii&quot; is added to make
+          the previous behavior available if anyone really wants it.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Simplify psql's new linestyle behavior to default to
+          linestyle=ascii all the time, rather than hoping we can tell
+          whether the terminal supports UTF-8 characters.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Implement significantly saner behavior when two or
+         more psql sessions overlap in their use of the history file.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add &quot;pset linestyle ascii/unicode&quot; option to psql,
+         allowing our traditional ASCII-art style of table output to
+         be upgraded to use Unicode box drawing characters if
+         desired.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            Have \d show child tables that inherit from the specified parent
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            psql now shows the index methods in \di
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>Procedural Languages</title>
+      <sect4>
+       <title>PL/pgSQL</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add "USING expressions" option to PL/pgSQL's OPEN
+         cursor FOR EXECUTE.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         PL/pgSQL is installed by default.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove PL/pgSQL's RENAME declaration, which has
+          bizarre and mostly nonfunctional behavior, and is so little
+          used that no one has been interested in fixing it. To ensure
+          that possible uses are covered, remove the ALIAS declaration's
+          arbitrary restriction that only $n identifiers can be
+          aliased.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         The PL/pgSQL parser and scanner were reworked to behave much more
+          sanely:
+        </para>
+        <para>
+         A variable reference will only be recognized where it can validly
+          go, ie, a place where a column value or parameter would be legal,
+          instead of the former behavior that would replace any textual match
+          including table names and column aliases (leading to syntax errors
+          later on).
+        </para>
+        <para>
+         When a name could refer either to a PL/pgSQL variable or a
+          table column, PL/pgSQL formerly always assumed the variable was
+          meant, sometimes resulting in surprising behavior.  Now, PL/pgSQL
+          can assume the variable is meant, or assume the table column is
+          meant, or throw an error in ambiguous cases.  For safety the default
+          is to throw error.  To configure this see <link
+          linkend="plpgsql-var-subst">the PL/pgSQL documentation</link>.
+        </para>
+        <para>
+         Error reporting is much nicer: it no longer shows edited
+          versions of statements that look significantly different from what
+          you wrote.
+        </para>
+        <para>
+         Note that this change affects the set of keywords that are
+          reserved in PL/pgSQL (i.e., cannot be the name of a PL/pgSQL
+          variable).  Now, all keywords shown as reserved in <link
+          linkend="sql-keywords-appendix">Appendix C</link> are reserved for
+          PL/pgSQL purposes as well.  However, many PL/pgSQL-only keywords
+          that were formerly treated as reserved no longer are.  As in regular
+          SQL, you can double-quote a variable's name if you want to use a
+          name that conflicts with a reserved keyword.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         PL/pgSQL IN parameters now accept value assignments.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
+         MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            PL/pgSQL functions can now better cope with row types
+            containing dropped columns.
+          </para>
+        </listitem>
+      </itemizedlist>
+      </sect4>
+
+      <sect4>
+       <title>PL/Perl</title>
+       <itemizedlist>
+        <listitem>
+         <para>
+          <emphasis>Add utility functions to PL/Perl: quote_literal,
+          quote_nullable, quote_ident, encode_bytea, decode_bytea,
+          looks_like_number, encode_array_literal,
+          encode_array_constructor.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Add plperl.on_plperl_init, plperl.on_plperlu_init,
+          and plperl.on_init settings for startup code.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Allow (ineffective) use of "require".  If the
+          required module is not already loaded then it dies.  So "use
+          strict;" now works in PL/Perl.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Pre-load the feature module if Perl &gt;= 5.10.
+          So "use feature :5.10;" now works in PL/Perl.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Stored procedure subs are now given names.  The
+          names are not visible in ordinary use, but they make tools
+          like Devel::NYTProf and Devel::Cover much more
+          useful.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Handle END blocks in PL/Perl.</emphasis>
+         </para>
+        </listitem>
+       <listitem>
+        <para>
+         <emphasis>Clean up package namespace use and use of Safe.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Change log level of Perl warnings from NOTICE to
+         WARNING.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add support for anonymous code blocks (DO blocks) to PL/Perl.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Improve error context reporting in PL/Perl, for
+         easier debugging.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Convert a Perl array to a PostgreSQL array when returned by
+         set-returning functions as well as non-SRFs.
+        </para>
+       </listitem>
+       </itemizedlist>
+      </sect4>
+
+      <sect4>
+       <title>PL/Python</title>
+       <itemizedlist>
+        <listitem>
+         <para>
+          <emphasis>Improved printing of Python exceptions in
+          PL/Python.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Add PL/Python DO handler.</emphasis>
+         </para>
+        </listitem>
+       <listitem>
+        <para>
+         Support arrays as parameters and return values of PL/Python
+          functions.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add Python 3 support to PL/Python.  It behaves more or less
+          unchanged compared to Python 2, but the new language variant is
+          called plpython3u.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix/improve bytea and boolean support in PL/Python. Data type
+         conversion into and out of PL/Python previously went through
+         an intermediate string representation, which caused various
+         discrepancies especially with bytea and boolean data. This is
+         now fixed by converting the values directly.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         PL/Python now accepts Unicode objects where it previously
+         only accepted string objects (for example, as return
+         value). Unicode objects are converted to the PostgreSQL
+         server encoding as necessary.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            Improve error context reporting in PL/Python, for easier
+            debugging.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Greatly expand the regression testing for PL/Python.
+          </para>
+        </listitem>
+      </itemizedlist>
+      </sect4>
+    </sect3>
+
+    <sect3>
+      <title>Additional Supplied Modules</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add query text to auto_explain output.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add \shell and \setshell meta commands to pgbench.
+        </para>
+        <para>
+         \shell runs an external shell command. \setshell
+          does the same and assigns the result to a variable.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Multiple improvements in contrib/hstore, including
+         raising limits on keys and values, conversions to and from
+         records and arrays, and support for GROUP BY and DISTINCT.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            pgbench is now multi-threaded, allowing it to use multiple CPU's
+            for its client connections, and to do more realistic workload
+            testing.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added the ability to retrieve asynchronous notifications using
+            dblink, via the addition of the function dblink_get_notify().
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added matchorig, matchsynonyms, and keepsynonyms options to
+            contrib/dict_xsyn.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added contrib/unaccent.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>ECPG</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add sqlda support in both native and compatibility
+         mode.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Fix SQL3 type return value: For non-SQL3 types ECPG
+         used to return -OID. This will break if there are enough OIDs
+         to fill the namespace.  Therefore we play it safe and return
+         0 if there is no OID->SQL3 type mapping available.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Make char the default sqlda type.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add DESCRIBE [OUTPUT] statement.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add out-of-scope cursor support to native mode.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Refactor ECPG grammar so that it uses the core grammar's
+          unreserved_keyword list, minus a few specific words that have to be
+          treated specially. This de-reserves a number of words in ECPG.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Added dynamic cursor names to ECPG.
+        </para>
+       </listitem>
+      <listitem>
+       <para>
+        Add ECPG function that returns the current transaction status.
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+        Make ECPG more robust against applications freeing strings.
+       </para>
+      </listitem>
+        <listitem>
+          <para>
+            ECPG now includes a STRING datatype for Informix compatibility
+            mode.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Ports</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add basic build support for Visual Studio 2008,
+         without resorting to generating the build files for 2005 and
+         then converting them.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Added support for 64-bit Windows platforms.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Disable triggering failover with a signal in pg_standby on Windows.
+          It never really worked before anyway.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Change the WIN32 API version to be 5.01 (Windows XP), to
+         bring in the proper IPv6 headers in newer SDKs.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Write to the Windows eventlog in UTF-16, converting the
+         message encoding as necessary.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Replace use of the long-deprecated Bonjour API
+         DNSServiceRegistrationCreate with the not-so-deprecated
+         DNSServiceRegister. The new code will fail on Mac OS X
+         releases before 10.3.
+        </para>
+       </listitem>
+       <listitem>
+          <para>
+            Reserve the shared memory region during backend startup on Windows,
+            so that memory allocated by starting third party DLLs doesn't end
+            up conflicting with it. Hopefully this solves the long-time issue
+            with &quot;could not reattach to shared memory&quot; errors on
+            Win32.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Add s_lock support for SuperH architecture (not well tested).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Source Code, Build Options</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Improve PGXS makefile system to allow the module's
+         makefile to specify where to install DATA and DOCS files.
+         This is mainly intended to allow versioned installation, eg,
+         install into contrib/fooM.N/ rather than directly into
+         contrib/.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Get rid of the need for manual maintenance of the
+         initial contents of pg_attribute, by having genbki.pl derive
+         the information from the various catalog header files.  This
+         greatly simplifies modification of the "bootstrapped"
+         catalogs.  This patch finally kills genbki.sh and
+         Gen_fmgrtab.sh; we now rely entirely on Perl scripts for
+         those build steps.  To avoid creating a Perl build dependency
+         where there was not one before, they will be built and
+         shipped in tarballs.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Move the default configuration for the MSVC build
+         system to config_default.pl, and allow using config.pl to
+         override the defaults.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Make configure check the version of Perl we're
+         building with, and reject versions &lt; 5.8.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Remove all support for working around on systems
+         that don't provide a working 64-bit integer type.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add new make targets "world", "install-world" and
+         "installcheck-world" to build, install and check just about
+         everything.  In addition to everything built installed and
+         tested by all, install and installcheck targets, these build
+         HTML documentation, build and test contrib, and test
+         procedural languages and ECPG.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         configure --enable-thread-safety is now the default (but can still
+          be turned off).
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix inclusions of readline/editline header files so that we
+         only attempt to #include the version of history.h that is in
+         the same directory as the readline.h we are using. This
+         avoids problems in some scenarios where both readline and
+         editline are installed.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Derived files that are shipped in the distribution used to be
+         built in the source directory even for out-of-tree
+         builds. They are now built in the build tree. This
+         should be more convenient for certain developers' workflows.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            Functions which conflict with C++ reserved words have been renamed,
+            making backend header files now safe to use with C++ libraries.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Add man pages for SPI functions.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Upgrade to Autoconf 2.63 (not relevant to users of distribution
+            tarballs).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Minimum version of Flex is now 2.5.31, to support reentrant
+            scanners (not relevant to users of distribution tarballs).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Documentation build rules have been improved. The generated
+            documentation files are now shipped &quot;loose&quot;, not in
+            sub-tarballs.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            New toolchain to generate man pages. From now on, the man pages
+            will be current in every release.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Code-coverage testing support now extends to the entire source
+            tree, not only src/backend/.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Make the core scanner re-entrant, along with additional fixes that
+            will let it be used directly by PL/pgSQL.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+  </sect2>
+</sect1>

Modified: traduc/trunk/postgresql/release.xml
===================================================================
--- traduc/trunk/postgresql/release.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/release.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -11,11 +11,13 @@
 &<>                             use & escapes
 PostgreSQL                      <productname>
 postgresql.conf, pg_hba.conf    <filename>
-[A-Z][A-Z ]+[A-Z]               <command>
+[A-Z][A-Z ]+[A-Z]               <command>, <literal>, <envar>
 [A-Za-z_][A-Za-z0-9_]+()        <function>
+-[-A-Za-z_]+                    <option>
 [A-Za-z_]/[A-Za-z_]+            <filename>
-pg_[A-Za-z0-9_]                 <application>
-[A-Z][A-Z][A-Z_ ]*              <type>, <envar>, <literal>
+psql                            <application>
+pg_[A-Za-z0-9_]+                <application>, <structname>
+[A-Z][A-Z][A-Z_ ]*              <type>, <varname>
 
 non-ASCII characters            convert to HTML4 entity (&) escapes
 
@@ -33,7 +35,7 @@
 
 For new features, add links to the documentation sections.  Use </link>
 so that perl can remove it so HISTORY.html can be created with no
-links to the main documentation.
+links to the main documentation. Don't use <xref>.
 
 -->
 
@@ -78,6 +80,7 @@
   The reason for splitting the release notes this way is so that appropriate
   subsets can easily be copied into back branches.
 -->
+&release-9.0;
 &release-8.4;
 &release-8.3;
 &release-8.2;

Modified: traduc/trunk/postgresql/rules.xml
===================================================================
--- traduc/trunk/postgresql/rules.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/rules.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -447,8 +447,7 @@
     <note>
     <para>
     Les deux entrées supplémentaires de la table d'échelle pour <literal>new</literal>
-    et <literal>old</literal> (nommées <literal>*new*</literal> et <literal>*old*</literal> pour des
-    raisons historiques dans l'arbre de requête affiché) que vous pouvez voir
+    et <literal>old</literal> que vous pouvez voir
     dans l'entrée de <structname>pg_rewrite</structname> ne sont d'aucun intérêt
     pour les règles <command>select</command>.
     </para>
@@ -514,7 +513,7 @@
 <programlisting>SELECT s.nom_lacet, s.dispo_lacet,
        s.couleur_lacet, s.longueur_lacet, s.unite_lacet,
        s.longueur_lacet * u.facteur_unite AS longueur_lacet_cm
-  FROM lacet *OLD*, lacet *NEW*,
+  FROM lacet old, lacet new,
        donnees_lacet s, unit u
  WHERE s.unite_lacet = u.nom_unite;
 </programlisting>
@@ -541,8 +540,8 @@
 </programlisting>
 
      Néanmoins, il y a une différence&nbsp;: la table d'échelle de la
-     sous-requête a deux entrées supplémentaires, <literal>lacet *old*</literal> et
-     <literal>lacet *new*</literal>. ces entrées ne participent pas directement dans
+     sous-requête a deux entrées supplémentaires, <literal>lacet old</literal> et
+     <literal>lacet new</literal>. ces entrées ne participent pas directement dans
      la requête car elles ne sont pas référencées par l'arbre de jointure de la
      sous-requête ou par la liste cible. La réécriture les utilise pour
      enregistrer l'information de vérification des droits d'accès qui étaient
@@ -558,7 +557,7 @@
     principale (dans cet exemple, il n'en existe pas plus), et il vérifiera
     récursivement les entrées de la table d'échelle dans la sous-requête ajoutée
     pour voir si une d'elle référence les vues. (Mais il n'étendra ni
-    <literal>*old*</literal> ni <literal>*new*</literal> &mdash; sinon nous aurions une récursion
+    <literal>old</literal> ni <literal>new</literal> &mdash; sinon nous aurions une récursion
     infinie&nbsp;!) Dans cet exemple, il n'existe pas de règles de réécriture
     pour <literal>donnees_lacet</literal> ou <literal>unit</literal>, donc la réécriture est
     terminée et ce qui est ci-dessus est le résultat final donné au
@@ -1081,15 +1080,15 @@
     et l'action&nbsp;:
 
 <programlisting>INSERT INTO lacet_log VALUES (
-       *NEW*.nom_lacet, *NEW*.dispo_lacet,
+       new.nom_lacet, new.dispo_lacet,
        current_user, current_timestamp )
-  FROM donnees_lacet *NEW*, donnees_lacet *OLD*;
+  FROM donnees_lacet new, donnees_lacet old;
 </programlisting>
 
     (ceci semble un peu étrange car, normalement, vous ne pouvez pas écrire
     <literal>insert ... values ... from</literal>. ici, la clause <literal>from</literal>
     indique seulement qu'il existe des entrées de la table d'échelle dans
-    l'arbre de requête pour <literal>*new*</literal> et <literal>*old*</literal>. elles sont
+    l'arbre de requête pour <literal>new</literal> et <literal>old</literal>. elles sont
     nécessaires pour qu'elles puissent être référencées par des variables dans
     l'arbre de requête de la commande <command>insert</command>).
 </para>
@@ -1102,9 +1101,9 @@
     de requête d'action de la règle. Ceci a pour résultat&nbsp;:
 
 <programlisting>INSERT INTO lacet_log VALUES (
-       *NEW*.nom_lacet, *NEW*.dispo_lacet,
+       new.nom_lacet, new.dispo_lacet,
        current_user, current_timestamp )
-  FROM donnees_lacet *NEW*, donnees_lacet *OLD*,
+  FROM donnees_lacet new, donnees_lacet old,
        <emphasis>donnees_lacet donnees_lacet</emphasis>;
 </programlisting>
 
@@ -1113,11 +1112,11 @@
     changé&nbsp;:
 
 <programlisting>INSERT INTO lacet_log VALUES (
-       *NEW*.nom_lacet, *NEW*.dispo_lacet,
+       new.nom_lacet, new.dispo_lacet,
        current_user, current_timestamp )
-  FROM donnees_lacet *NEW*, donnees_lacet *OLD*,
+  FROM donnees_lacet new, donnees_lacet old,
        donnees_lacet donnees_lacet
- <emphasis>where *new*.dispo_lacet &lt;&gt; *old*.dispo_lacet</emphasis>;
+ <emphasis>where new.dispo_lacet &lt;&gt; old.dispo_lacet</emphasis>;
 </programlisting>
 
     (Ceci semble encore plus étrange car <literal>insert ... values</literal> n'a pas
@@ -1132,11 +1131,11 @@
     auront été modifiées par la requête originale&nbsp;:
 
 <programlisting>INSERT INTO lacet_log VALUES (
-       *NEW*.nom_lacet, *NEW*.dispo_lacet,
+       new.nom_lacet, new.dispo_lacet,
        current_user, current_timestamp )
-  FROM donnees_lacet *NEW*, donnees_lacet *OLD*,
+  FROM donnees_lacet new, donnees_lacet old,
        donnees_lacet donnees_lacet
- WHERE *NEW*.dispo_lacet &lt;&gt; *OLD*.dispo_lacet
+ WHERE new.dispo_lacet &lt;&gt; old.dispo_lacet
    <emphasis>and donnees_lacet.nom_lacet = 'sl7'</emphasis>;
 </programlisting>
    </para>
@@ -1150,9 +1149,9 @@
 <programlisting>INSERT INTO lacet_log VALUES (
        <emphasis>donnees_lacet.nom_lacet</emphasis>, <emphasis>6</emphasis>,
        current_user, current_timestamp )
-  FROM donnees_lacet *NEW*, donnees_lacet *OLD*,
+  FROM donnees_lacet new, donnees_lacet old,
        donnees_lacet donnees_lacet
- WHERE <emphasis>6</emphasis> &lt;&gt; *old*.dispo_lacet
+ WHERE <emphasis>6</emphasis> &lt;&gt; old.dispo_lacet
    AND donnees_lacet.nom_lacet = 'sl7';
 </programlisting>
 
@@ -1165,7 +1164,7 @@
 <programlisting>INSERT INTO lacet_log VALUES (
        donnees_lacet.nom_lacet, 6,
        current_user, current_timestamp )
-  FROM donnees_lacet *NEW*, donnees_lacet *OLD*,
+  FROM donnees_lacet new, donnees_lacet old,
        donnees_lacet donnees_lacet
  WHERE 6 &lt;&gt; <emphasis>donnees_lacet.dispo_lacet</emphasis>
    AND donnees_lacet.nom_lacet = 'sl7';
@@ -1447,7 +1446,7 @@
 <programlisting>UPDATE lacet
    SET dispo_lacet = lacet.dispo_lacet + lacet_arrive.arr_quant
   FROM lacet_arrive lacet_arrive, lacet_ok lacet_ok,
-       lacet_ok *OLD*, lacet_ok *NEW*,
+       lacet_ok old, lacet_ok new,
        lacet lacet
  WHERE lacet.nom_lacet = lacet_arrive.arr_name;
 </programlisting>
@@ -1464,9 +1463,9 @@
        longueur_lacet = lacet.longueur_lacet,
        unite_lacet = lacet.unite_lacet
   FROM lacet_arrive lacet_arrive, lacet_ok lacet_ok,
-       lacet_ok *OLD*, lacet_ok *NEW*,
-       lacet lacet, lacet *OLD*,
-       lacet *NEW*, donnees_lacet donnees_lacet
+       lacet_ok old, lacet_ok new,
+       lacet lacet, lacet old,
+       lacet new, donnees_lacet donnees_lacet
  WHERE lacet.nom_lacet = lacet_arrive.arr_name
    AND donnees_lacet.nom_lacet = lacet.nom_lacet;
 </programlisting>
@@ -1484,10 +1483,10 @@
        longueur_lacet = s.longueur_lacet,
        unite_lacet = s.unite_lacet
   FROM lacet_arrive lacet_arrive, lacet_ok lacet_ok,
-       lacet_ok *OLD*, lacet_ok *NEW*,
-       lacet lacet, lacet *OLD*,
-       lacet *NEW*, donnees_lacet donnees_lacet,
-       lacet *OLD*, lacet *NEW*,
+       lacet_ok old, lacet_ok new,
+       lacet lacet, lacet old,
+       lacet new, donnees_lacet donnees_lacet,
+       lacet old, lacet new,
        donnees_lacet s, unit u
  WHERE s.nom_lacet = lacet_arrive.arr_name
    AND donnees_lacet.nom_lacet = s.nom_lacet;
@@ -1502,12 +1501,12 @@
        current_user,
        current_timestamp
   FROM lacet_arrive lacet_arrive, lacet_ok lacet_ok,
-       lacet_ok *OLD*, lacet_ok *NEW*,
-       lacet lacet, lacet *OLD*,
-       lacet *NEW*, donnees_lacet donnees_lacet,
-       lacet *OLD*, lacet *NEW*,
+       lacet_ok old, lacet_ok new,
+       lacet lacet, lacet old,
+       lacet new, donnees_lacet donnees_lacet,
+       lacet old, lacet new,
        donnees_lacet s, unit u,
-       donnees_lacet *OLD*, donnees_lacet *NEW*
+       donnees_lacet old, donnees_lacet new
        lacet_log lacet_log
  WHERE s.nom_lacet = lacet_arrive.arr_name
    AND donnees_lacet.nom_lacet = s.nom_lacet

Modified: traduc/trunk/postgresql/runtime.xml
===================================================================
--- traduc/trunk/postgresql/runtime.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/runtime.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -20,7 +20,7 @@
   </indexterm>
 
   <para>
-   Comme avec tout autre démon serveur accessible au monde externe, il est
+   Comme avec tout démon serveur accessible au monde externe, il est
    conseillé de lancer <productname>PostgreSQL</productname> sous un compte
    utilisateur séparé. Ce compte devrait seulement être le propriétaire des
    données gérées par le serveur et ne devrait pas être partagé avec d'autres
@@ -99,6 +99,20 @@
   </tip>
 
   <para>
+   Alternatively, you can run <command>initdb</command> via
+   the <xref linkend="app-pg-ctl"/>
+   program<indexterm><primary>pg_ctl</primary></indexterm> like so:
+<screen>
+<prompt>$</prompt> <userinput>pg_ctl -D /usr/local/pgsql/data initdb</userinput>
+</screen>
+   This may be more intuitive if you are
+   using <command>pg_ctl</command> for starting and stopping the
+   server (see <xref linkend="server-start"/>), so
+   that <command>pg_ctl</command> would be the sole command you use
+   for managing the database server instance.
+  </para>
+
+  <para>
    <command>initdb</command> tentera de créer le répertoire que vous avez
    spécifié si celui-ci n'existe pas déjà. Il est possible qu'il n'ait pas le
    droit de le faire (si vous avez suivi notre conseil et créé un compte sans
@@ -224,7 +238,7 @@
 
   <para>
    Habituellement, il est préférable de lancer <command>postgres</command> en tâche
-   de fond. Pour cela, utilisez la syntaxe shell habituelle&nbsp;:
+   de fond. Pour cela, utilisez la syntaxe shell Unix habituelle&nbsp;:
 <screen>$ <userinput>postgres -d /usr/local/pgsql/data &gt;journaux_trace 2&gt;&amp;1 &amp;</userinput></screen>
    Il est important de sauvegarder les sorties <systemitem>stdout</systemitem> et
    <systemitem>stderr</systemitem> du serveur quelque part, comme montré ci-dessus. Cela
@@ -494,8 +508,9 @@
     (ensemble avec les queues de messages, qui n'ont pas d'importance pour
     <productname>PostgreSQL</productname>). Pratiquement, tous les systèmes d'exploitation
     modernes fournissent ces fonctionnalités mais, parmi elles, toutes ne sont pas
-    activées ou dimensionnées suffisamment par défaut, spécialement les systèmes
-    ayant l'héritage BSD (Sur <systemitem class="osname">windows</systemitem>,
+    activées ou dimensionnées suffisamment par défaut, as
+    available RAM and the demands of database applications grow. (Sur
+    <systemitem class="osname">Windows</systemitem>,
     <productname>PostgreSQL</productname> fournit sa
     propre implémentation de remplacement de ces fonctionnalités, du coup, ce qui suit peut être ignoré).
    </para>
@@ -505,6 +520,7 @@
     une erreur <errorname>illegal system call</errorname> au lancement du serveur. Dans
     ce cas, il n'y a rien à faire à part reconfigurer votre noyau.
     <productname>PostgreSQL</productname> ne fonctionnera pas sans.
+    This situation is rare, however, among modern operating systems.
    </para>
 
    <para>
@@ -515,9 +531,7 @@
     paramètres adéquats du noyau sont nommés de façon cohérente parmi les
     différents systèmes&nbsp;; le <xref linkend="sysvipc-parameters"/> donne un
     aperçu. Néanmoins, les méthodes pour les obtenir varient. Les suggestions
-    pour quelques plateformes sont données ci-dessous. Attention, il est souvent
-    nécessaire de redémarrer votre machine, voire même de recompiler le noyau,
-    pour changer ces paramétrages.
+    pour quelques plateformes sont données ci-dessous.
    </para>
 
 
@@ -614,8 +628,8 @@
     <indexterm><primary>shmmax</primary></indexterm> le paramètre de mémoire
     partagé le plus important est <varname>shmmax</varname>, la taille maximum, en
     octets, d'un segment de mémoire partagée. Si vous obtenez un message
-    d'erreur à partir de <function>shmget</function> comme <errorname>invalid
-    argument</errorname>, il est possible que cette limite soit dépassée.
+    d'erreur à partir de <function>shmget</function> comme <quote>invalid
+    argument</quote>, il est possible que cette limite soit dépassée.
     La taille du segment de mémoire partagée requis dépend de plusieurs
     paramètres de configuration de <productname>PostgreSQL</productname>, comme indiqué
     dans le <xref linkend="shared-memory-parameters"/> (tout message
@@ -625,14 +639,14 @@
     <productname>PostgreSQL</productname> qu'il fonctionne avec un <varname>shmmax</varname>
     de 2&nbsp;Mo, vous avez besoin de bien plus pour obtenir
     des performances acceptables. Les paramètrages désirables sont plutôt de
-    l'ordre de dizaines voire de centaines de Mo.
+    l'ordre de centaines de Mo à quelques Go.
    </para>
 
    <para>
     Certains systèmes ont aussi une limite sur le nombre total de mémoire partagée
     dans le système (<varname>shmall</varname>). Assurez-vous que cela soit suffisamment
     important pour <productname>PostgreSQL</productname> et quelque autres applications
-    utilisant des segments de mémoire partagée (attention&nbsp;:
+    utilisant des segments de mémoire partagée (notez que
     <varname>shmall</varname> est mesuré en pages plutôt qu'en octets sur beaucoup de
     systèmes).
    </para>
@@ -665,8 +679,8 @@
     système à un instant précis. Donc, ce paramètre doit être au moins égal à
     <literal>ceil((max_connections + autovacuum_max_workers) / 16)</literal>. Baisser le nombre de connexions
     autorisées est un contournement temporaire pour les échecs qui sont
-    habituellement indiqués par le message <errorname>no space left on
-    device</errorname>, à partir de la fonction <function>semget</function>.
+    habituellement indiqués par le message <quote>no space left on
+    device</quote>, à partir de la fonction <function>semget</function>.
    </para>
 
    <para>
@@ -688,7 +702,7 @@
 
    <para>
     D'autres paramètres en relation avec l'<quote>annulation de sémaphores</quote>,
-    tels que <varname>semmnu</varname> et <varname>semume</varname>, ne concernent pas
+    tels que <varname>semmnu</varname> et <varname>semume</varname>, n'affectent pas
     <productname>PostgreSQL</productname>.
    </para>
 
@@ -744,21 +758,6 @@
         </para>
        </formalpara>
 
-       <para>
-        Pour ceux utilisant une version 4.0 ou antérieures, utilisez
-         <command>bpatch</command> pour connaître la valeur <varname>sysptsize</varname> dans
-         le noyau actuel. Elle est calculée dynamiquement au démarrage.
-<screen>$ <userinput>bpatch -r sysptsize</userinput>
-<computeroutput>0x9 = 9</computeroutput></screen>
-        Ensuite, ajoutez <varname>sysptsize</varname> comme valeur codée en dur dans
-        le fichier de configuration du noyau. Augmentez la valeur que vous
-        trouvez en utilisant <command>bpatch</command>. Ajoutez 1 pour chaque
-        4&nbsp;Mo supplémentaire de mémoire partagée que vous souhaitez.
-<programlisting>options "SYSPTSIZE=16"</programlisting>
-        <varname>sysptsize</varname> ne peut pas être modifié
-        avec <command>sysctl</command>.
-       </para>
-
        <formalpara>
         <title>Sémaphores</title>
         <para>
@@ -844,7 +843,8 @@
         activées à la compilation du noyau (ils le sont par défaut). La taille
         maximum de mémoire partagée est déterminée par l'option
         <varname>shmmaxpgs</varname> (en pages). Ce qui suit montre un exemple de
-        l'initialisation des différents paramètres (<systemitem
+        l'initialisation des différents paramètres  on
+        <systemitem class="osname">NetBSD</systemitem> (<systemitem
 	class="osname">OpenBSD</systemitem> utilise <literal>option</literal> à la place)&nbsp;:
 <programlisting>options         SYSVSHM
 options         SHMMAXPGS=4096
@@ -893,28 +893,41 @@
       <indexterm><primary>linux</primary><secondary>configuration ipc</secondary></indexterm>
        <para>
         La taille maximale du segment par défaut est de 32&nbsp;Mo, ce qui
-	n'est adéquat que pour les petites installations de
-	<productname>PostgreSQL</productname>.
-	Néanmoins, les paramètres restants sont assez généreusement configurés
-	et ne requièrent pas habituellement de modifications. La taille du
-	segment maximum de mémoire partagé peut être modifiée via l'interface <command>sysctl</command>.
-	Par exemple, pour autoriser 128&nbsp;Mo et pour configurer explicitement
-	la taille de la mémoire partagée à 2097152 pages (la valeur par
-	défaut)&nbsp;:
-<screen><prompt>$</prompt> <userinput>sysctl -w kernel.shmmax=134217728</userinput>
-<prompt>$</prompt> <userinput>sysctl -w kernel.shmall=2097152</userinput></screen>
-        De plus, ces paramètrages peuvent être conservés entre les redémarrages
-        dans <filename>/etc/sysctl.conf</filename>.
+	n'est adéquat que pour les très petites installations de
+	<productname>PostgreSQL</productname>.The default maximum total size is 2097152
+        pages.  A page is almost always 4096 bytes except in unusual
+        kernel configurations with <quote>huge pages</quote>
+        (use <literal>getconf PAGE_SIZE</literal> to verify).  That
+        makes a default limit of 8 GB, which is often enough, but not
+        always.
        </para>
 
        <para>
-        Les anciennes distributions pourraient ne pas disposer du programme
-	<command>sysctl</command> mais des modifications équivalentes peuvent
-	se faire en manipulant le système de fichiers
-	<filename>/proc</filename>&nbsp;:
-<screen><prompt>$</prompt> <userinput>echo 134217728 &gt;/proc/sys/kernel/shmmax</userinput>
-<prompt>$</prompt> <userinput>echo 2097152 &gt;/proc/sys/kernel/shmall</userinput></screen>
+        The shared memory size settings can be changed via the
+        <command>sysctl</command> interface.  For example, to allow 16 GB:
+<screen>
+<prompt>$</prompt> <userinput>sysctl -w kernel.shmmax=17179869184</userinput>
+<prompt>$</prompt> <userinput>sysctl -w kernel.shmall=4194304</userinput>
+</screen>
+        In addition these settings can be preserved between reboots in
+        the file <filename>/etc/sysctl.conf</filename>.  Doing that is
+        highly recommended.
        </para>
+
+       <para>
+        Ancient distributions might not have the <command>sysctl</command> program,
+        but equivalent changes can be made by manipulating the 
+        <filename>/proc</filename> file system:
+<screen>
+<prompt>$</prompt> <userinput>echo 17179869184 &gt;/proc/sys/kernel/shmmax</userinput>
+<prompt>$</prompt> <userinput>echo 4194304 &gt;/proc/sys/kernel/shmall</userinput>
+</screen>
+       </para>
+
+       <para>
+        The remaining defaults are quite generously sized, and usually
+        do not require changes.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -924,27 +937,8 @@
       <listitem>
       <indexterm><primary>macos x</primary><secondary>configuration ipc</secondary></indexterm>
        <para>
-        Avec OS X 10.2 et antérieures, éditez le fichier
-        <filename>/system/library/startupitems/systemtuning/systemtuning</filename>
-	et modifiez les valeurs avec les commandes suivantes&nbsp;:
-<programlisting>sysctl -w kern.sysv.shmmax
-sysctl -w kern.sysv.shmmin
-sysctl -w kern.sysv.shmmni
-sysctl -w kern.sysv.shmseg
-sysctl -w kern.sysv.shmall</programlisting>
-       </para>
-
-       <para>
-        Avec OS X 10.3 et les versions suivantes, ces commandes ont été
-        déplacées dans <filename>/etc/rc</filename> et doivent être éditées là-bas.
-        Notez que <filename>/etc/rc</filename> est habituellement surchargé par les
-        mises à jour d'OS X (comme celle de 10.3.6 à 10.3.7) donc vous devez
-        vous attendre à avoir à refaire votre édition après chaque mise à jour.
-       </para>
-
-       <para>
-        Sous OS X 10.3.9 et les versions ultérieures, au lieu de modifier
-	<filename>/etc/rc</filename>, vous pouvez créer un fichier nommé
+        The recommended method for configuring shared memory in OS X
+        is to create a file named
 	<filename>/etc/sysctl.conf</filename> contenant des affectations de
 	variables comme&nbsp;:
 <programlisting>kern.sysv.shmmax=4194304
@@ -953,9 +947,7 @@
 kern.sysv.shmseg=8
 kern.sysv.shmall=1024
 </programlisting>
-        Cette méthode est préférée à la modification de <filename>/etc/rc</filename>
-        car vos modifications seront préservées y compris après les mises à jour
-	du système. Notez que <emphasis>les cinq</emphasis> paramètres de mémoire
+        Notez que, in some OS X versions, <emphasis>les cinq</emphasis> paramètres de mémoire
 	partagée doivent être configurés dans <filename>/etc/sysctl.conf</filename>,
 	sinon les valeurs seront ignorées.
        </para>
@@ -972,9 +964,35 @@
        </para>
 
        <para>
-        Dans toutes les versions d'OS X, vous aurez besoin de redémarrer pour que
-	les modifications de mémoire partagée soient prises en considération.
+        In older OS X versions, you will need to reboot to have changes in the
+        shared memory parameters take effect.  As of 10.5 it is possible to
+        change all but <varname>SHMMNI</varname> on the fly, using
+        <application>sysctl</application>.  But it's still best to set up your preferred
+        values via <filename>/etc/sysctl.conf</filename>, so that the values will be
+        kept across reboots.
        </para>
+
+       <para>
+        The file <filename>/etc/sysctl.conf</filename> is only honored in OS X
+        10.3.9 and later.  If you are running a previous 10.3.x release,
+        you must edit the file <filename>/etc/rc</filename>
+        and change the values in the following commands:
+<programlisting>
+sysctl -w kern.sysv.shmmax
+sysctl -w kern.sysv.shmmin
+sysctl -w kern.sysv.shmmni
+sysctl -w kern.sysv.shmseg
+sysctl -w kern.sysv.shmall
+</programlisting>
+        Note that
+        <filename>/etc/rc</filename> is usually overwritten by OS X system updates,
+        so you should expect to have to redo these edits after each update.
+       </para>
+
+       <para>
+        In OS X 10.2 and earlier, instead edit these commands in the file
+        <filename>/System/Library/StartupItems/SystemTuning/SystemTuning</filename>.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -1025,12 +1043,12 @@
 
        <para>
         Voir aussi <ulink      
-url="http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html"/>
+url="http://sunsite.uakom.sk/sunworldonline/swol-09-1997/swol-09-insidesolaris.html">
         pour des informations sur la mémoire partagée sous
         <productname>solaris</productname>.
-       </para>
-      </listitem>
-     </varlistentry>
+       </ulink>
+      </para>
+     </listitem>
 
 
      <varlistentry>
@@ -1055,7 +1073,7 @@
       </listitem>
      </varlistentry>
 
-    </variablelist>
+    </varlistentry>
 
    <table id="shared-memory-parameters">
     <title>Usage de la mémoire partagée <productname>PostgreSQL</productname></title>
@@ -1108,6 +1126,7 @@
      </tbody>
     </tgroup>
    </table>
+  </variablelist>
   </sect2>
 
 
@@ -1194,7 +1213,7 @@
    </para>
   </sect2>
 
-  <sect2>
+  <sect2 id="linux-memory-overcommit">
    <title>Linux memory overcommit</title>
 
    <para>
@@ -1230,7 +1249,7 @@
    </para>
 
    <para>
-    Sur Linux 2.6 et ultérieur, une mesure supplémentaire revient à modifier
+    Sur Linux 2.6 et ultérieur, il est possible de modifier
     le comportement du noyau avec le <quote>overcommit memory</quote>.
     Bien que ce paramétrage n'empêchera pas ce <ulink
     url="http://lwn.net/Articles/104179/">comportement</ulink>, il réduira sa
@@ -1240,22 +1259,43 @@
 <programlisting>sysctl -w vm.overcommit_memory=2</programlisting>
     ou en plaçant une entrée équivalente dans <filename>/etc/sysctl.conf</filename>.
     Vous pourriez souhaiter modifier le paramétrage relatif
-    <literal>vm.overcommit_ratio</literal>. Pour les détails, voir la documentation du
+    <varname>vm.overcommit_ratio</varname>. Pour les détails, voir la documentation du
     noyau (<filename>documentation/vm/overcommit-accounting</filename>).
    </para>
 
    <para>
+    Another approach, which can be used with or without altering
+    <varname>vm.overcommit_memory</varname>, is to set the process-specific
+    <varname>oom_adj</varname> value for the postmaster process to <literal>-17</literal>,
+    thereby guaranteeing it will not be targeted by the OOM killer.  The
+    simplest way to do this is to execute
+<programlisting>
+echo -17 > /proc/self/oom_adj
+</programlisting>
+    in the postmaster's startup script just before invoking the postmaster.
+    Note that this action must be done as root, or it will have no effect;
+    so a root-owned startup script is the easiest place to do it.  If you
+    do this, you may also wish to build <productname>PostgreSQL</productname>
+    with <literal>-DLINUX_OOM_ADJ=0</literal> added to <varname>CFLAGS</varname>.
+    That will cause postmaster child processes to run with the normal
+    <varname>oom_adj</varname> value of zero, so that the OOM killer can still
+    target them at need.
+   </para>
+
+   <note>
+   <para>
     Quelques noyaux 2.4 de vendeurs ont des pré-versions de l'overcommit du
     2.6. Néanmoins, configurer <literal>vm.overcommit_memory</literal> à 2 sur un noyau
-    qui n'a pas le code correspondant rendra les choses pires qu'elles
+    2.4 qui n'a pas le code correspondant rendra les choses pires qu'elles
     n'étaient. Il est recommandé d'inspecter le code source du noyau (voir la
     fonction <function>vm_enough_memory</function> dans le fichier
-    <filename>mm/mmap.c</filename>) pour vérifier ce qui est supporté dans votre copie
+    <filename>mm/mmap.c</filename>) pour vérifier ce qui est supporté dans votre noyau
     avant d'essayer ceci avec une installation 2.4. La présence du fichier de
     documentation <filename>overcommit-accounting</filename> ne devrait <emphasis>pas</emphasis>
     être pris comme une preuve de la présence de cette fonctionnalité. En cas de
     doute, consultez un expert du noyau ou le vendeur de votre noyau.
    </para>
+   </note>
   </sect2>
  </sect1>
 
@@ -1288,7 +1328,9 @@
        est actif, les nouvelles connexions sont toujours autorisées, mais
        seulement pour les superutilisateurs (cette exception permet à un
        superutilisateur de se connecter pour terminer le mode de sauvegarde en
-       ligne).
+       ligne). If the server is in recovery when a smart
+       shutdown is requested, recovery and streaming replication will be
+       stopped only after all regular sessions have terminated.
       </para>
      </listitem>
     </varlistentry>
@@ -1301,7 +1343,7 @@
        Le serveur désactive les nouvelles connexions et envoie à tous
        les processus serveur le signal <systemitem>sigterm</systemitem>, qui les
        fera annuler leurs transactions courantes pour quitter rapidement. Il
-       attend ensuite la fin des processus serveur et s'arrête finalement.
+       attend ensuite la fin de tous les processus serveur et s'arrête finalement.
        Si le serveur est en mode de sauvegarde en ligne, le mode est annulé,
        rendant la sauvegarde inutilisable.
       </para>
@@ -1469,8 +1511,9 @@
      de fichiers en utilisant un <quote>périphérique loopback</quote>. Ceci
      permet à une partition entière du système de fichiers d'être cryptée et
      décryptée par le système d'exploitation. Sur FreeBSD, la fonctionnalité
-     équivalent est appelé <quote>geom based disk encryption</quote>, ou
-     <acronym>gbde</acronym>.
+     équivalent est appelé <quote>geom based disk encryption</quote>
+     (<acronym>gbde</acronym>), and many
+     other operating systems support this functionality, including Windows..
     </para>
 
     <para>
@@ -1778,7 +1821,7 @@
   </indexterm>
 
   <para>
-   Vous pouvez utiliser <application>ssh</application> pour crypter la
+   Il est possible d'utiliser <application>ssh</application> pour crypter la
    connexion réseau entre les clients et un serveur
    <productname>PostgreSQL</productname>. Réalisé correctement, ceci fournit une
    connexion réseau sécurisée, y compris pour les clients non SSL.
@@ -1793,7 +1836,8 @@
    cliente&nbsp;:
 <programlisting>ssh -L 63333:localhost:5432 joe at foo.com</programlisting>
    Le premier numéro de l'argument <option>-l</option>, 63333, est le numéro de
-   port de votre bout du tunnel&nbsp;; il peut être choisi librement.
+   port de votre bout du tunnel&nbsp;; il peut être choisi parmi tous les ports
+   non utilisés.
    (IANA réserve les ports 49152 à 65535 pour une utilisation privée.)  Le second
    numéro, 5432, est le bout distant du tunnel&nbsp;: le numéro de port que votre
    serveur utilise. Le nom ou l'adresse entre les numéros de port est l'hôte
@@ -1817,7 +1861,7 @@
   <para>
    Pour réussir la configuration du tunnel, vous devez être autorisé pour vous
    connecter via <command>ssh</command> sur <literal>joe at foo.com</literal>,
-   comme si vous aviez tenté d'utiliser <command>ssh</command> pour initialiser
+   comme si vous aviez tenté d'utiliser <command>ssh</command> pour créer
    une session de terminal.
   </para>
 

Modified: traduc/trunk/postgresql/sources.xml
===================================================================
--- traduc/trunk/postgresql/sources.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/sources.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -137,7 +137,7 @@
         (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
          errmsg("function %s is not unique",
                 func_signature_string(funcname, nargs,
-                                      actual_arg_types)),
+                                      NIL, actual_arg_types)),
          errhint("Unable to choose a best candidate function. "
                  "You might need to add explicit typecasts.")));
 </programlisting>

Modified: traduc/trunk/postgresql/spi.xml
===================================================================
--- traduc/trunk/postgresql/spi.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/spi.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -70,6 +70,7 @@
  <refentry id="spi-spi-connect">
   <refmeta>
    <refentrytitle>SPI_connect</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
 
   <refnamediv>
@@ -139,6 +140,7 @@
 <refentry id="spi-spi-finish">
  <refmeta>
   <refentrytitle>SPI_finish</refentrytitle>
+   <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -203,6 +205,7 @@
 <refentry id="spi-spi-push">
   <refmeta>
     <refentrytitle>SPI_push</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -251,6 +254,7 @@
 <refentry id="spi-spi-pop">
   <refmeta>
     <refentrytitle>SPI_pop</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -281,6 +285,7 @@
 <refentry id="spi-spi-execute">
  <refmeta>
   <refentrytitle>SPI_execute</refentrytitle>
+   <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -629,6 +634,7 @@
 <refentry id="spi-spi-exec">
   <refmeta>
     <refentrytitle>SPI_exec</refentrytitle>
+   <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -690,6 +696,7 @@
 <refentry id="spi-spi-execute-with-args">
  <refmeta>
   <refentrytitle>SPI_execute_with_args</refentrytitle>
+   <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -836,6 +843,7 @@
 <refentry id="spi-spi-prepare">
  <refmeta>
   <refentrytitle>SPI_prepare</refentrytitle>
+   <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -959,6 +967,7 @@
 <refentry id="spi-spi-prepare-cursor">
  <refmeta>
   <refentrytitle>SPI_prepare_cursor</refentrytitle>
+   <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -983,7 +992,7 @@
    s'agit d'un champ de bits dont les valeurs sont indiquées dans
    <filename>nodes/parsenodes.h</filename> pour le champ
    <structfield>options</structfield> de <structname>DeclareCursorStmt</structname>.
-   <function>SPI_prepare</function> utilise zéro pour ces options.
+   <function>SPI_prepare</function> utilise zéro pour les options du curseur.
   </para>
  </refsect1>
 
@@ -1055,9 +1064,98 @@
 
 <!-- *********************************************** -->
 
+<refentry id="spi-spi-prepare-params">
+ <refmeta>
+  <refentrytitle>SPI_prepare_params</refentrytitle>
+  <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+  <refname>SPI_prepare_params</refname>
+  <refpurpose>prepare a plan for a command, without executing it yet</refpurpose>
+ </refnamediv>
+
+ <indexterm><primary>SPI_prepare_params</primary></indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+SPIPlanPtr SPI_prepare_params(const char * <parameter>command</parameter>,
+                              ParserSetupHook <parameter>parserSetup</parameter>,
+                              void * <parameter>parserSetupArg</parameter>,
+                              int <parameter>cursorOptions</parameter>)
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+  <title>Description</title>
+
+  <para>
+   <function>SPI_prepare_params</function> creates and returns an execution
+   plan for the specified command, but doesn't execute the command.
+   This function is equivalent to <function>SPI_prepare_cursor</function>,
+   with the addition that the caller can specify parser hook functions
+   to control the parsing of external parameter references.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>Arguments</title>
+
+  <variablelist>
+   <varlistentry>
+    <term><literal>const char * <parameter>command</parameter></literal></term>
+    <listitem>
+     <para>
+      command string
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>ParserSetupHook <parameter>parserSetup</parameter></literal></term>
+    <listitem>
+     <para>
+      Parser hook setup function
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>void * <parameter>parserSetupArg</parameter></literal></term>
+    <listitem>
+     <para>
+      passthrough argument for <parameter>parserSetup</parameter>
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>int <parameter>cursorOptions</parameter></literal></term>
+    <listitem>
+     <para>
+      integer bitmask of cursor options; zero produces default behavior
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1>
+  <title>Return Value</title>
+
+  <para>
+   <function>SPI_prepare_params</function> has the same return conventions as
+   <function>SPI_prepare</function>.
+  </para>
+ </refsect1>
+</refentry>
+
+<!-- *********************************************** -->
+
 <refentry id="spi-spi-getargcount">
   <refmeta>
     <refentrytitle>SPI_getargcount</refentrytitle>
+  <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1112,6 +1210,7 @@
 <refentry id="spi-spi-getargtypeid">
   <refmeta>
     <refentrytitle>SPI_getargtypeid</refentrytitle>
+  <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1179,6 +1278,7 @@
 <refentry id="spi-spi-is-cursor-plan">
   <refmeta>
     <refentrytitle>SPI_is_cursor_plan</refentrytitle>
+  <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1244,6 +1344,7 @@
 <refentry id="spi-spi-execute-plan">
   <refmeta>
     <refentrytitle>SPI_execute_plan</refentrytitle>
+  <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1367,16 +1468,102 @@
    <function>SPI_execute</function> en cas de réussite.
   </para>
  </refsect1>
+</refentry>
 
+<!-- *********************************************** -->
+
+<refentry id="spi-spi-execute-plan-with-paramlist">
+ <refmeta>
+  <refentrytitle>SPI_execute_plan_with_paramlist</refentrytitle>
+  <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+  <refname>SPI_execute_plan_with_paramlist</refname>
+  <refpurpose>execute a plan prepared by <function>SPI_prepare</function></refpurpose>
+ </refnamediv>
+
+ <indexterm><primary>SPI_execute_plan_with_paramlist</primary></indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+int SPI_execute_plan_with_paramlist(SPIPlanPtr <parameter>plan</parameter>,
+                                    ParamListInfo <parameter>params</parameter>,
+                                    bool <parameter>read_only</parameter>,
+                                    long <parameter>count</parameter>)
+</synopsis>
+ </refsynopsisdiv>
+
  <refsect1>
-  <title>Notes</title>
+  <title>Description</title>
 
   <para>
-   Si l'un des objets (une table, une fonction, etc.) référencés par le
-   plan préparé est effacé pendant la session, alors le résultat de
-   <function>SPI_executeplan</function> pour ce plan sera imprévisible.
+   <function>SPI_execute_plan_with_paramlist</function> executes a plan
+   prepared by <function>SPI_prepare</function>.
+   This function is equivalent to <function>SPI_execute_plan</function>
+   except that information about the parameter values to be passed to the
+   query is presented differently.  The <literal>ParamListInfo</literal>
+   representation can be convenient for passing down values that are
+   already available in that format.  It also supports use of dynamic
+   parameter sets via hook functions specified in <literal>ParamListInfo</literal>.
   </para>
  </refsect1>
+
+ <refsect1>
+  <title>Arguments</title>
+
+  <variablelist>
+   <varlistentry>
+    <term><literal>SPIPlanPtr <parameter>plan</parameter></literal></term>
+    <listitem>
+     <para>
+      execution plan (returned by <function>SPI_prepare</function>)
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>ParamListInfo <parameter>params</parameter></literal></term>
+    <listitem>
+     <para>
+      data structure containing parameter types and values; NULL if none
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>bool <parameter>read_only</parameter></literal></term>
+    <listitem>
+     <para>
+      <literal>true</literal> for read-only execution
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>long <parameter>count</parameter></literal></term>
+    <listitem>
+     <para>
+      maximum number of rows to process or return
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1>
+  <title>Return Value</title>
+
+  <para>
+   The return value is the same as for <function>SPI_execute_plan</function>.
+  </para>
+
+  <para>
+   <varname>SPI_processed</varname> and
+   <varname>SPI_tuptable</varname> are set as in
+   <function>SPI_execute_plan</function> if successful.
+  </para>
+ </refsect1>
 </refentry>
 
 <!-- *********************************************** -->
@@ -1384,6 +1571,7 @@
 <refentry id="spi-spi-execp">
   <refmeta>
     <refentrytitle>SPI_execp</refentrytitle>
+  <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -1479,6 +1667,7 @@
 <refentry id="spi-spi-cursor-open">
  <refmeta>
   <refentrytitle>SPI_cursor_open</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -1600,6 +1789,7 @@
 <refentry id="spi-spi-cursor-open-with-args">
  <refmeta>
   <refentrytitle>SPI_cursor_open_with_args</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -1745,9 +1935,108 @@
 
 <!-- *********************************************** -->
 
+<refentry id="spi-spi-cursor-open-with-paramlist">
+ <refmeta>
+  <refentrytitle>SPI_cursor_open_with_paramlist</refentrytitle>
+  <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+  <refname>SPI_cursor_open_with_paramlist</refname>
+  <refpurpose>set up a cursor using parameters</refpurpose>
+ </refnamediv>
+
+ <indexterm><primary>SPI_cursor_open_with_paramlist</primary></indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+Portal SPI_cursor_open_with_paramlist(const char *<parameter>name</parameter>,
+                                      SPIPlanPtr <parameter>plan</parameter>,
+                                      ParamListInfo <parameter>params</parameter>,
+                                      bool <parameter>read_only</parameter>)
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+  <title>Description</title>
+
+  <para>
+   <function>SPI_cursor_open_with_paramlist</function> sets up a cursor
+   (internally, a portal) that will execute a plan prepared by
+   <function>SPI_prepare</function>.
+   This function is equivalent to <function>SPI_cursor_open</function>
+   except that information about the parameter values to be passed to the
+   query is presented differently.  The <literal>ParamListInfo</literal>
+   representation can be convenient for passing down values that are
+   already available in that format.  It also supports use of dynamic
+   parameter sets via hook functions specified in <literal>ParamListInfo</literal>.
+  </para>
+
+  <para>
+   The passed-in parameter data will be copied into the cursor's portal, so it
+   can be freed while the cursor still exists.
+  </para>
+ </refsect1>
+
+ <refsect1>
+  <title>Arguments</title>
+
+  <variablelist>
+   <varlistentry>
+    <term><literal>const char * <parameter>name</parameter></literal></term>
+    <listitem>
+     <para>
+      name for portal, or <symbol>NULL</symbol> to let the system
+      select a name
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>SPIPlanPtr <parameter>plan</parameter></literal></term>
+    <listitem>
+     <para>
+      execution plan (returned by <function>SPI_prepare</function>)
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>ParamListInfo <parameter>params</parameter></literal></term>
+    <listitem>
+     <para>
+      data structure containing parameter types and values; NULL if none
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><literal>bool <parameter>read_only</parameter></literal></term>
+    <listitem>
+     <para>
+      <literal>true</literal> for read-only execution
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </refsect1>
+
+ <refsect1>
+  <title>Return Value</title>
+
+  <para>
+   Pointer to portal containing the cursor.  Note there is no error
+   return convention; any error will be reported via <function>elog</function>.
+  </para>
+ </refsect1>
+</refentry>
+
+<!-- *********************************************** -->
+
 <refentry id="spi-spi-cursor-find">
  <refmeta>
   <refentrytitle>SPI_cursor_find</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -1800,6 +2089,7 @@
 <refentry id="spi-spi-cursor-fetch">
  <refmeta>
   <refentrytitle>SPI_cursor_fetch</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -1881,6 +2171,7 @@
 <refentry id="spi-spi-cursor-move">
  <refmeta>
   <refentrytitle>SPI_cursor_move</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -1952,6 +2243,7 @@
 <refentry id="spi-spi-scroll-cursor-fetch">
  <refmeta>
   <refentrytitle>SPI_scroll_cursor_fetch</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2028,7 +2320,7 @@
   <title>Notes</title>
 
   <para>
-   Voir la commande SQL <xref linkend="sql-fetch" endterm="sql-fetch-title"/>
+   Voir la commande SQL <xref linkend="sql-fetch"/>
    pour des détails sur l'interprétation des paramètres
    <parameter>direction</parameter> et <parameter>count</parameter>.
   </para>
@@ -2046,6 +2338,7 @@
 <refentry id="spi-spi-scroll-cursor-move">
  <refmeta>
   <refentrytitle>SPI_scroll_cursor_move</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2124,7 +2417,7 @@
   <title>Notes</title>
 
   <para>
-   Voir la commande SQL <xref linkend="sql-fetch" endterm="sql-fetch-title"/>
+   Voir la commande SQL <xref linkend="sql-fetch"/>
    pour des détails sur l'interprétation des paramètres
    <parameter>direction</parameter> et <parameter>count</parameter>.
   </para>
@@ -2142,6 +2435,7 @@
 <refentry id="spi-spi-cursor-close">
  <refmeta>
   <refentrytitle>SPI_cursor_close</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2190,6 +2484,7 @@
 <refentry id="spi-spi-saveplan">
  <refmeta>
   <refentrytitle>SPI_saveplan</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2299,6 +2594,7 @@
 <refentry id="spi-spi-fname">
  <refmeta>
   <refentrytitle>SPI_fname</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2363,6 +2659,7 @@
 <refentry id="spi-spi-fnumber">
  <refmeta>
   <refentrytitle>SPI_fnumber</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2436,6 +2733,7 @@
 <refentry id="spi-spi-getvalue">
  <refmeta>
   <refentrytitle>SPI_getvalue</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2516,6 +2814,7 @@
 <refentry id="spi-spi-getbinval">
  <refmeta>
   <refentrytitle>SPI_getbinval</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2607,6 +2906,7 @@
 <refentry id="spi-spi-gettype">
  <refmeta>
   <refentrytitle>SPI_gettype</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2670,6 +2970,7 @@
 <refentry id="spi-spi-gettypeid">
  <refmeta>
   <refentrytitle>SPI_gettypeid</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2733,6 +3034,7 @@
 <refentry id="spi-spi-getrelname">
  <refmeta>
   <refentrytitle>SPI_getrelname</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2783,6 +3085,7 @@
 <refentry id="spi-spi-getnspname">
  <refmeta>
   <refentrytitle>SPI_getnspname</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2915,6 +3218,7 @@
 <refentry id="spi-spi-palloc">
  <refmeta>
   <refentrytitle>SPI_palloc</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -2966,6 +3270,7 @@
 <refentry id="spi-realloc">
  <refmeta>
   <refentrytitle>SPI_repalloc</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -3033,6 +3338,7 @@
 <refentry id="spi-spi-pfree">
  <refmeta>
   <refentrytitle>SPI_pfree</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -3083,6 +3389,7 @@
 <refentry id="spi-spi-copytuple">
  <refmeta>
   <refentrytitle>SPI_copytuple</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -3138,6 +3445,7 @@
 <refentry id="spi-spi-returntuple">
   <refmeta>
     <refentrytitle>SPI_returntuple</refentrytitle>
+  <manvolnum>3</manvolnum>
   </refmeta>
   
   <refnamediv>
@@ -3211,6 +3519,7 @@
 <refentry id="spi-spi-modifytuple">
  <refmeta>
   <refentrytitle>SPI_modifytuple</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -3345,6 +3654,7 @@
 <refentry id="spi-spi-freetuple">
  <refmeta>
   <refentrytitle>SPI_freetuple</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -3394,6 +3704,7 @@
 <refentry id="spi-spi-freetupletable">
  <refmeta>
   <refentrytitle>SPI_freetuptable</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>
@@ -3448,6 +3759,7 @@
 <refentry id="spi-spi-freeplan">
  <refmeta>
   <refentrytitle>SPI_freeplan</refentrytitle>
+  <manvolnum>3</manvolnum>
  </refmeta>
 
  <refnamediv>

Modified: traduc/trunk/postgresql/start.xml
===================================================================
--- traduc/trunk/postgresql/start.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/start.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -387,8 +387,7 @@
     Le programme <command>psql</command> dispose d'un certain nombre de
     commandes internes qui ne sont pas des commandes SQL.  Elles
     commencent avec le caractère barre oblique inverse,
-    <quote><literal>\</literal></quote>.  Certaines de ces
-    commandes sont listées dans le message de bienvenue.  Par exemple,
+    <quote><literal>\</literal></quote>. Par exemple,
     vous pouvez obtenir de l'aide sur la syntaxe de nombreuses
     commandes <acronym>SQL</acronym> de
     <productname>PostgreSQL</productname> en exécutant&nbsp;:
@@ -411,4 +410,4 @@
    </para>
 
   </sect1>
- </chapter>
\ No newline at end of file
+ </chapter>

Modified: traduc/trunk/postgresql/storage.xml
===================================================================
--- traduc/trunk/postgresql/storage.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/storage.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -87,6 +87,11 @@
 </row>
 
 <row>
+ <entry><filename>pg_notify</filename></entry>
+ <entry>Subdirectory containing LISTEN/NOTIFY status data</entry>
+</row>
+
+<row>
  <entry><filename>pg_stat_tmp</filename></entry>
  <entry>Sous-répertoire contenant les fichiers temporaires pour le sous-système
   des statistiques</entry>
@@ -162,6 +167,11 @@
 <command>CLUSTER</command> et quelques formes d'<command>ALTER TABLE</command>, peuvent
 modifier le filenode tout en préservant l'OID. Évitez de supposer que filenode
 et OID sont identiques.
+Also, for certain system catalogs including <structname>pg_class</structname> itself,
+<structname>pg_class</structname>.<structfield>relfilenode</structfield> contains zero.  The
+actual filenode number of these catalogs is stored in a lower-level data
+structure, and can be obtained using the <function>pg_relation_filenode()</function>
+function.
 </para>
 </caution>
 
@@ -208,6 +218,16 @@
 </para>
 
 <para>
+The <function>pg_relation_filepath()</function> function shows the entire path
+(relative to <varname>PGDATA</varname>) of any relation.  It is often useful
+as a substitute for remembering many of the above rules.  But keep in
+mind that this function just gives the name of the first segment of the
+main fork of the relation &mdash; you may need to append a segment number
+and/or <literal>_fsm</literal> or <literal>_vm</literal> to find all the files associated
+with the relation.
+</para>
+
+<para>
 Les fichiers temporaires (pour des opérations comme le tri de plus de données
 que ce que la mémoire peut contenir) sont créés à l'intérieur de <varname>PGDATA</varname><filename>/base/pgsql_tmp</filename>,
 ou dans un sous-répertoire <filename>pgsql_tmp</filename> du répertoire du
@@ -377,7 +397,8 @@
       <literal>MAIN</literal> autorise la compression mais pas le stockage
       hors-ligne. (En réalité le stockage hors-ligne sera toujours réalisé
       pour de telles colonnes mais seulement en dernier ressort s'il n'existe
-      aucune autre solution pour diminuer suffisamment la taille de la ligne.)
+      aucune autre solution pour diminuer suffisamment la taille de la ligne
+      pour qu'elle tienne sur une page.)
      </para>
     </listitem>
    </itemizedlist>

Modified: traduc/trunk/postgresql/syntax.xml
===================================================================
--- traduc/trunk/postgresql/syntax.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/syntax.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -147,7 +147,8 @@
      <primary>sensibilité à la casse</primary>
      <secondary>des commandes SQL</secondary>
     </indexterm>
-    L'identifieur et les noms de mots clés sont insensibles à la casse. Du coup&nbsp;:
+    Les mots clés et les identifiants sans guillemets doubles sont insensibles
+    à la casse. Du coup&nbsp;:
 <programlisting>UPDATE MA_TABLE SET A = 5;</programlisting>
     peut aussi s'écrire de cette façon&nbsp;:
 <programlisting>uPDaTE ma_TabLE SeT a = 5;</programlisting>
@@ -234,6 +235,10 @@
     serveur est UTF8. Quand d'autres encodages clients sont utilisés, seuls les
     codes dans l'échelle ASCII (jusqu'à <literal>\007F</literal>) peuvent être
     utilisés.
+    Both the 4-digit and the 6-digit form can be used to specify
+    UTF-16 surrogate pairs to compose characters with code points
+    larger than <literal>\FFFF</literal> (although the availability of
+    the 6-digit form technically makes this unnecessary).
    </para>
 
    <para>
@@ -383,6 +388,14 @@
         </entry>
         <entry>valeur hexadécimale</entry>
        </row>
+       <row>
+        <entry>
+         <literal>\u<replaceable>xxxx</replaceable></literal>,
+         <literal>\U<replaceable>xxxxxxxx</replaceable></literal>
+         (<replaceable>x</replaceable> = 0 - 9, A - F)
+        </entry>
+        <entry>16 or 32-bit hexadecimal Unicode character value</entry>
+       </row>
       </tbody>
       </tgroup>
      </table>
@@ -396,15 +409,27 @@
     </para>
 
     <para>
-     Il est de votre responsabilité que les séquences d'octet que vous créez
+     Il est de votre responsabilité que les séquences d'octet que vous créez,
+     especially when using the octal or hexadecimal escapes,
      soient des caractères valides dans l'encodage du jeu de caractères du
-     serveur. Quand l'encodage est UTF-8, alors la syntaxe d'échappement
-     alternatif de l'Unicode, expliqué dans <xref
-     linkend="sql-syntax-strings-uescape"/>, doit être utilisé à la place.
-     (L'alternative serait de faire l'encodage UTF-8 manuellement et d'écrire
-     les octets, ce qui serait très complexe.)
+     serveur. Quand l'encodage est UTF-8, alors the Unicode escapes or the
+     alternative Unicode escape syntax, explained
+     in <xref linkend="sql-syntax-strings-uescape"/>, should be used
+     instead.  (The alternative would be doing the UTF-8 encoding by
+     hand and writing out the bytes, which would be very cumbersome.)
     </para>
 
+    <para>
+     The Unicode escape syntax works fully only when the server
+     encoding is UTF-8.  When other server encodings are used, only
+     code points in the ASCII range (up to <literal>\u007F</literal>) can be
+     specified.  Both the 4-digit and the 8-digit form can be used to
+     specify UTF-16 surrogate pairs to compose characters with code
+     points larger than <literal>\FFFF</literal> (although the
+     availability of the 8-digit form technically makes this
+     unnecessary).
+    </para>
+
     <caution>
     <para>
      Si le paramètre de configuration
@@ -490,6 +515,10 @@
      serveur est UTF8. Quand d'autres encodages de serveur sont utilisés, seuls
      les codes dans l'échelle ASCII (jusqu'à <literal>\007F</literal>) peuvent
      être utilisés.
+     Both the 4-digit and the 6-digit form can be used to specify
+     UTF-16 surrogate pairs to compose characters with code points
+     larger than <literal>\FFFF</literal> (although the availability
+     of the 6-digit form technically makes this unnecessary).
     </para>
 
     <para>
@@ -1269,11 +1298,8 @@
    <para>
     <replaceable>correlation</replaceable> est le nom d'une table (parfois
     qualifié par son nom de schéma) ou un alias d'une table définie au moyen de
-    la clause <literal>FROM</literal> ou un des mots clés <literal>NEW</literal>
-    ou <literal>OLD</literal> (<literal>NEW</literal> et <literal>OLD</literal>
-    peuvent seulement apparaître dans les règles de réécriture alors que les
-    autres noms de corrélation peuvent être utilisés dans toute instruction
-    SQL). Le nom de corrélation et le point de séparation peuvent être omis si
+    la clause <literal>FROM</literal>. Le nom de corrélation et le point de
+    séparation peuvent être omis si
     le nom de colonne est unique dans les tables utilisées par la requête
     courante (voir aussi le <xref linkend="queries"/>).
    </para>
@@ -1447,6 +1473,11 @@
     linkend="functions"/>. D'autres fonctions pourraient être ajoutées par
     l'utilisateur.
    </para>
+
+   <para>
+    The arguments can optionally have names attached.
+    See <xref linkend="sql-syntax-calling-funcs"/> for details.
+   </para>
   </sect2>
 
   <sect2 id="syntax-aggregates">
@@ -1464,15 +1495,17 @@
     sortie, comme la somme ou la moyenne des valeurs en entrée. La syntaxe d'une
     expression d'agrégat est une des suivantes&nbsp;:
 
-<synopsis><replaceable>nom_agregat</replaceable> (<replaceable>expression</replaceable> [ , ... ] )
-<replaceable>nom_agregat</replaceable> (ALL <replaceable>expression</replaceable> [ , ... ] )
-<replaceable>nom_agregat</replaceable> (DISTINCT <replaceable>expression</replaceable>)
+<synopsis><replaceable>nom_agregat</replaceable> (<replaceable>expression</replaceable> [ , ... ] [ <replaceable>order_by_clause</replaceable> ] )
+<replaceable>nom_agregat</replaceable> (ALL <replaceable>expression</replaceable> [ , ... ] [ <replaceable>order_by_clause</replaceable> ] )
+<replaceable>nom_agregat</replaceable> (DISTINCT <replaceable>expression</replaceable> [ , ... ] [ <replaceable>order_by_clause</replaceable> ] )
 <replaceable>nom_agregat</replaceable> ( * )</synopsis>
 
     où <replaceable>nom_agregat</replaceable> est un agrégat précédemment
-    défini (parfois qualifié d'un nom de schéma) et 
+    défini (parfois qualifié d'un nom de schéma),
     <replaceable>expression</replaceable> est toute expression de valeur qui ne
-    contient pas lui-même une expression d'agrégat or a window function call.
+    contient pas lui-même une expression d'agrégat or a window function call., and
+    <replaceable>order_by_clause</replaceable> is a optional
+    <literal>ORDER BY</literal> clause as described below.
    </para>
 
    <para>
@@ -1482,8 +1515,9 @@
     elle doit ignorer ou non les valeurs NULL... mais toutes les fonctions
     standards le font). La seconde forme est identique à la première car
     <literal>ALL</literal> est ajouté par défaut. La troisième forme implique
-    l'agrégat pour toutes les valeurs non NULL et distinctes des expressions
-    trouvées dans les lignes en entrée. La dernière forme appelle l'agrégat une
+    l'agrégat pour toutes les valeurs distinctes des expressions
+    trouvées dans les lignes en entrée (ignoring nulls if the function chooses
+    to do so). La dernière forme appelle l'agrégat une
     fois pour chaque ligne en entrée qu'elle soit NULL ou non&nbsp;; comme
     aucune valeur particulière en entrée n'est spécifiée, c'est généralement
     utile pour la fonction d'agrégat <function>count(*)</function>.
@@ -1498,6 +1532,40 @@
    </para>
 
    <para>
+    Ordinarily, the input rows are fed to the aggregate function in an
+    unspecified order.  In many cases this does not matter; for example,
+    <function>min</function> produces the same result no matter what order it
+    receives the inputs in.  However, some aggregate functions
+    (such as <function>array_agg</function> and <function>xmlagg</function>) produce
+    results that depend on the ordering of the input rows.  When using
+    such an aggregate, the optional <replaceable>order_by_clause</replaceable> can be
+    used to specify the desired ordering.  The <replaceable>order_by_clause</replaceable>
+    has the same syntax as for a query-level <literal>ORDER BY</literal> clause, as
+    described in <xref linkend="queries-order"/>, except that its expressions
+    are always just expressions and cannot be output-column names or numbers.
+    For example:
+
+<programlisting>
+SELECT array_agg(a ORDER BY b DESC) FROM table;
+</programlisting>
+   </para>
+
+   <para>
+    If <literal>DISTINCT</literal> is specified in addition to an
+    <replaceable>order_by_clause</replaceable>, then all the <literal>ORDER BY</literal>
+    expressions must match regular arguments of the aggregate; that is,
+    you cannot sort on an expression that is not included in the
+    <literal>DISTINCT</literal> list.
+   </para>
+
+   <note>
+    <para>
+     The ability to specify both <literal>DISTINCT</literal> and <literal>ORDER BY</literal>
+     in an aggregate function is a <productname>PostgreSQL</productname> extension.
+    </para>
+   </note>
+
+   <para>
     Les fonctions d'agrégat prédéfinies sont décrites dans la <xref
     linkend="functions-aggregate"/>. D'autres fonctions d'agrégat
     pourraient être ajoutées par l'utilisateur. 
@@ -1525,13 +1593,6 @@
     <literal>HAVING</literal> s'applique avec respect du niveau de requête auquel
     appartient l'agrégat.
    </para>
-
-   <note>
-    <para>
-     <productname>PostgreSQL</productname> ne supporte pas actuellement un
-     <literal>DISTINCT</literal> avec plus d'une expression en entrée.
-    </para>
-   </note>
   </sect2>
 
   <sect2 id="syntax-window-functions">
@@ -1574,14 +1635,21 @@
     et la clause <replaceable class="parameter">clause_frame</replaceable>
     optionnelle fait partie de&nbsp;:
 <synopsis>
-RANGE UNBOUNDED PRECEDING
-RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
-ROWS UNBOUNDED PRECEDING
-ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
+[ RANGE | ROWS ] <replaceable>frame_start</replaceable>
+[ RANGE | ROWS ] BETWEEN <replaceable>frame_start</replaceable> AND <replaceable>frame_end</replaceable>
 </synopsis>
+    where <replaceable>frame_start</replaceable> and <replaceable>frame_end</replaceable> can be
+    one of
+<synopsis>
+UNBOUNDED PRECEDING
+<replaceable>value</replaceable> PRECEDING
+CURRENT ROW
+<replaceable>value</replaceable> FOLLOWING
+UNBOUNDED FOLLOWING
+</synopsis>
+   </para>
 
+   <para>
     Ici, <replaceable>expression</replaceable> représente toute expression de
     valeur qui ne contient pas elle-mêle d'appel à des fonctions window. Les
     listes <literal>PARTITION BY</literal> et <literal>ORDER BY</literal> ont
@@ -1599,29 +1667,43 @@
     clauses si elles sont fournies ici). Cette dernière syntaxe suit les même
     règles que la modification d'un nom de window existant dans une clause
     <literal>WINDOW</literal>&nbsp;; voir la page de référence de
-    <xref linkend="sql-select" endterm="sql-select-title"/> pour les détails.
+    <xref linkend="sql-select"/> pour les détails.
    </para>
 
    <para>
     La clause <replaceable class="parameter">clause_frame</replaceable> indique
     l'ensemble de lignes constituant le <firstterm>frame window</firstterm>,
     pour les fonctions window qui agissent sur le frame et non pas sur la
-    partition entière. L'option de frame par défaut est <literal>RANGE
+    partition entière.
+    If <replaceable>frame_end</replaceable> is omitted it defaults to <literal>CURRENT
+    ROW</literal>.  Restrictions are that
+    <replaceable>frame_start</replaceable> cannot be <literal>UNBOUNDED FOLLOWING</literal>,
+    <replaceable>frame_end</replaceable> cannot be <literal>UNBOUNDED PRECEDING</literal>,
+    and the <replaceable>frame_end</replaceable> choice cannot appear earlier in the
+    above list than the <replaceable>frame_start</replaceable> choice &mdash; for example
+    <literal>RANGE BETWEEN CURRENT ROW AND <replaceable>value</replaceable>
+    PRECEDING</literal> is not allowed.
+    L'option de frame par défaut est <literal>RANGE
     UNBOUNDED PRECEDING</literal>, qui est identique à <literal>RANGE BETWEEN
-    UNBOUNDED PRECEDING AND CURRENT ROW</literal>&nbsp;; elle sélectionne les
-    lignes jusqu'au dernier pair de la ligne courante dans l'ordre établi par
-    la clause <literal>ORDER BY</literal> (ce qui signifie toutes les lignes
-    s'il n'y a pas de clause <literal>ORDER BY</literal>). Les options
-    <literal>RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED
-    FOLLOWING</literal> et <literal>ROWS BETWEEN UNBOUNDED PRECEDING AND
-    UNBOUNDED FOLLOWING</literal> sont aussi équivalentes&nbsp;; elles
-    sélectionnent toujours toutes les lignes dans la partition. Enfin,
-    <literal>ROWS UNBOUNDED PRECEDING</literal> ou son équivalent verbeux
-    <literal>ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW</literal>
-    sélectionnent toutes les lignes jusqu'à la ligne actuelle (sans considération
-    pour les lignes dupliquées). Attention que cette option peut produire des
-    résultats dépendants de l'implantation si la clause <literal>ORDER
-    BY</literal> n'ordonne pas les lignes de façon unique.
+    UNBOUNDED PRECEDING AND CURRENT ROW</literal>&nbsp;; it sets the frame to be all rows from the partition start
+    up through the current row's last peer in the <literal>ORDER BY</literal>
+    ordering (which means all rows if there is no <literal>ORDER BY</literal>).
+    In general, <literal>UNBOUNDED PRECEDING</literal> means that the frame
+    starts with the first row of the partition, and similarly
+    <literal>UNBOUNDED FOLLOWING</literal> means that the frame ends with the last
+    row of the partition (regardless of <literal>RANGE</literal> or <literal>ROWS</literal>
+    mode).  In <literal>ROWS</literal> mode, <literal>CURRENT ROW</literal>
+    means that the frame starts or ends with the current row; but in
+    <literal>RANGE</literal> mode it means that the frame starts or ends with
+    the current row's first or last peer in the <literal>ORDER BY</literal> ordering.
+    The <replaceable>value</replaceable> <literal>PRECEDING</literal> and
+    <replaceable>value</replaceable> <literal>FOLLOWING</literal> cases are currently only
+    allowed in <literal>ROWS</literal> mode.  They indicate that the frame starts
+    or ends with the row that many rows before or after the current row.
+    <replaceable>value</replaceable> must be an integer expression not
+    containing any variables, aggregate functions, or window functions.
+    The value must not be null or negative; but it can be zero, which
+    selects the current row itself.
    </para>
 
    <para>
@@ -1638,7 +1720,7 @@
     <literal>*</literal> n'est habituellement pas utilisé pour les fonctions window
     qui ne sont pas des agrégats. Les fonctions window agrégats, contrairement aux
     fonctions d'agrégats normales, n'autorisent pas l'utilisation de
-    <literal>DISTINCT</literal> dans la liste des arguments de la fonction.
+    <literal>DISTINCT</literal> or <literal>ORDER BY</literal> dans la liste des arguments de la fonction.
    </para>
 
    <para>
@@ -1726,7 +1808,7 @@
      <quote>syntaxe style fonction</quote> n'est rien de plus qu'un appel direct à la
      fonction de conversion sous-jacente. Évidemment, une application portable ne
      devrait pas s'y fier. Pour plus d'informations, voir
-     <xref linkend="sql-createcast" endterm="sql-createcast-title"/>.
+     <xref linkend="sql-createcast"/>.
     </para>
    </note>
   </sect2>
@@ -2048,4 +2130,168 @@
   </sect2>
  </sect1>
 
+ <sect1 id="sql-syntax-calling-funcs">
+  <title>Calling Functions</title>
+
+   <indexterm zone="sql-syntax-calling-funcs">
+    <primary>notation</primary>
+    <secondary>functions</secondary>
+   </indexterm>
+
+   <para>
+    <productname>PostgreSQL</productname> allows functions that have named
+    parameters to be called using either <firstterm>positional</firstterm> or
+    <firstterm>named</firstterm> notation.  Named notation is especially
+    useful for functions that have a large number of parameters, since it
+    makes the associations between parameters and actual arguments more
+    explicit and reliable.
+    In positional notation, a function call is written with
+    its argument values in the same order as they are defined in the function
+    declaration.  In named notation, the arguments are matched to the
+    function parameters by name and can be written in any order.
+   </para>
+
+   <para>
+    In either notation, parameters that have default values given in the
+    function declaration need not be written in the call at all.  But this
+    is particularly useful in named notation, since any combination of
+    parameters can be omitted; while in positional notation parameters can
+    only be omitted from right to left.
+   </para>
+
+   <para>
+    <productname>PostgreSQL</productname> also supports
+    <firstterm>mixed</firstterm> notation, which combines positional and
+    named notation.  In this case, positional parameters are written first
+    and named parameters appear after them.
+   </para>
+
+   <para>
+    The following examples will illustrate the usage of all three
+    notations, using the following function definition:
+<programlisting>
+CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false)
+RETURNS text
+AS
+$$
+ SELECT CASE
+        WHEN $3 THEN UPPER($1 || ' ' || $2)
+        ELSE LOWER($1 || ' ' || $2)
+        END;
+$$
+LANGUAGE SQL IMMUTABLE STRICT;
+</programlisting>
+    Function <function>concat_lower_or_upper</function> has two mandatory
+    parameters, <literal>a</literal> and <literal>b</literal>.  Additionally
+    there is one optional parameter <literal>uppercase</literal> which defaults
+    to <literal>false</literal>.  The <literal>a</literal> and
+    <literal>b</literal> inputs will be concatenated, and forced to either
+    upper or lower case depending on the <literal>uppercase</literal>
+    parameter.  The remaining details of this function
+    definition are not important here (see <xref linkend="extend"/> for
+    more information).
+   </para>
+
+   <sect2 id="sql-syntax-calling-funcs-positional">
+    <title>Using positional notation</title>
+
+    <indexterm>
+     <primary>function</primary>
+     <secondary>positional notation</secondary>
+    </indexterm>
+
+    <para>
+     Positional notation is the traditional mechanism for passing arguments
+     to functions in <productname>PostgreSQL</productname>.  An example is:
+<screen>
+SELECT concat_lower_or_upper('Hello', 'World', true);
+ concat_lower_or_upper 
+-----------------------
+ HELLO WORLD
+(1 row)
+</screen>
+     All arguments are specified in order.  The result is upper case since
+     <literal>uppercase</literal> is specified as <literal>true</literal>.
+     Another example is:
+<screen>
+SELECT concat_lower_or_upper('Hello', 'World');
+ concat_lower_or_upper 
+-----------------------
+ hello world
+(1 row)
+</screen>
+     Here, the <literal>uppercase</literal> parameter is omitted, so it
+     receives its default value of <literal>false</literal>, resulting in
+     lower case output.  In positional notation, arguments can be omitted
+     from right to left so long as they have defaults.
+    </para>
+   </sect2>
+
+   <sect2 id="sql-syntax-calling-funcs-named">
+    <title>Using named notation</title>
+
+    <indexterm>
+     <primary>function</primary>
+     <secondary>named notation</secondary>
+    </indexterm>
+
+    <para>
+     In named notation, each argument's name is specified using the
+     <literal>AS</literal> keyword.  For example:
+<screen>
+SELECT concat_lower_or_upper('Hello' AS a, 'World' AS b);
+ concat_lower_or_upper 
+-----------------------
+ hello world
+(1 row)
+</screen>
+     Again, the argument <literal>uppercase</literal> was omitted
+     so it is set to <literal>false</literal> implicitly.  One advantage of
+     using named notation is that the arguments may be specified in any
+     order, for example:
+<screen>
+SELECT concat_lower_or_upper('Hello' AS a, 'World' AS b, true AS uppercase);
+ concat_lower_or_upper 
+-----------------------
+ HELLO WORLD
+(1 row)
+
+SELECT concat_lower_or_upper('Hello' AS a, true AS uppercase, 'World' AS b);
+ concat_lower_or_upper 
+-----------------------
+ HELLO WORLD
+(1 row)
+</screen>
+    </para>
+   </sect2>
+
+  <sect2 id="sql-syntax-calling-funcs-mixed">
+   <title>Using mixed notation</title>
+
+   <indexterm>
+    <primary>function</primary>
+    <secondary>mixed notation</secondary>
+   </indexterm>
+
+   <para>
+    The mixed notation combines positional and named notation. However, as
+    already mentioned, named arguments cannot precede positional arguments.
+    For example:
+<screen>
+SELECT concat_lower_or_upper('Hello', 'World', true AS uppercase);
+ concat_lower_or_upper 
+-----------------------
+ HELLO WORLD
+(1 row)
+</screen>
+    In the above query, the arguments <literal>a</literal> and
+    <literal>b</literal> are specified positionally, while
+    <literal>uppercase</literal> is specified by name.  In this example,
+    that adds little except documentation.  With a more complex function
+    having numerous parameters that have default values, named or mixed
+    notation can save a great deal of writing and reduce chances for error.
+   </para>
+  </sect2>
+ </sect1>
+
 </chapter>

Modified: traduc/trunk/postgresql/textsearch.xml
===================================================================
--- traduc/trunk/postgresql/textsearch.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/textsearch.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 
 <chapter id="textsearch">
- <title id="textsearch-title">Recherche plein texte</title>
+ <title>Recherche plein texte</title>
 
   <indexterm zone="textsearch">
    <primary>recherche plein texte</primary>
@@ -2033,6 +2033,13 @@
    </para>
   </note>
 
+   <para>
+    <literal>email</literal> does not support all valid email characters as
+    defined by RFC 5322.  Specifically, the only non-alphanumeric
+    characters supported for email user names are period, dash, and
+    underscore.
+   </para>
+
   <para>
    Il est possible que l'analyseur produise des jetons qui coïncident à partir
    du même texte. Comme exemple, un mot composé peut être reporté à la fois
@@ -2390,8 +2397,65 @@
  asciiword | Word, all ASCII | Paris | {my_synonym,english_stem} | my_synonym | {paris}
 </programlisting>
    </para>
+   
+   <para>
+    An asterisk (<literal>*</literal>) at the end of definition word indicates 
+    that definition word is a prefix, and <function>to_tsquery()</function> 
+    function will transform that definition to the prefix search format (see 
+    <xref linkend="textsearch-parsing-queries"/>). 
+    Notice that it is ignored in <function>to_tsvector()</function>.
+   </para>
 
    <para>
+    Contents of <filename>$SHAREDIR/tsearch_data/synonym_sample.syn</filename>:
+   </para>
+<programlisting>
+postgres        pgsql
+postgresql      pgsql
+postgre pgsql
+gogle   googl
+indices index*
+</programlisting>
+
+   <para>
+    Results:
+   </para>
+<programlisting>
+=# create text search dictionary syn( template=synonym,synonyms='synonym_sample');
+=# select ts_lexize('syn','indices');
+ ts_lexize
+-----------
+ {index}
+(1 row)
+
+=# create text search configuration tst ( copy=simple);
+=# alter text search configuration tst alter mapping for asciiword with syn;
+=# select to_tsquery('tst','indices');
+ to_tsquery
+------------
+ 'index':*
+(1 row)
+
+=# select 'indexes are very useful'::tsvector;
+            tsvector             
+---------------------------------
+ 'are' 'indexes' 'useful' 'very'
+(1 row)
+
+=# select 'indexes are very useful'::tsvector @@ to_tsquery('tst','indices');
+ ?column?
+----------
+ t
+(1 row)
+
+=# select to_tsvector('tst','indices');
+ to_tsvector
+-------------
+ 'index':1
+(1 row)
+</programlisting>
+
+   <para>
     Le seul paramètre requis par le modèle <literal>synonym</literal> est
     <literal>SYNONYMS</literal>, qui est le nom de base de son fichier de
     configuration &mdash; <literal>my_synonyms</literal> dans l'exemple ci-dessus.

Modified: traduc/trunk/postgresql/trigger.xml
===================================================================
--- traduc/trunk/postgresql/trigger.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/trigger.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -39,11 +39,13 @@
     exécuté. Les fonctions déclencheur peuvent être définies pour s'exécuter
     avant ou après une commande <command>INSERT</command>,
     <command>UPDATE</command> ou <command>DELETE</command>, soit une fois par
-    ligne modifiée, soit une fois par expression <acronym>SQL</acronym>. Les
-    triggers peuvent aussi être déclenchés par des instructions
-    <command>TRUNCATE</command>. Si un événement déclencheur se produit, le
-    gestionnaire de déclencheurs est appelé au bon moment pour gérer
-    l'événement.
+    ligne modifiée, soit une fois par expression <acronym>SQL</acronym>.
+    <command>UPDATE</command> triggers can moreover be set to fire only if
+    certain columns are mentioned in the <literal>SET</literal> clause of the
+    <command>UPDATE</command> statement.
+    Triggers can also fire for <command>TRUNCATE</command> statements.
+    If a trigger event occurs, the trigger's function is called at the
+    appropriate time to handle the event.
     </para>
 
    <para>
@@ -57,8 +59,7 @@
 
    <para>
     Une fois qu'une fonction déclencheur est créée, le déclencheur (trigger)
-    est créé avec
-    <xref linkend="sql-createtrigger" endterm="sql-createtrigger-title"/>.
+    est créé avec <xref linkend="sql-createtrigger"/>.
     La même fonction déclencheur est utilisable par plusieurs déclencheurs.
    </para>
 
@@ -147,6 +148,25 @@
    </para>
 
    <para>
+    A trigger definition can also specify a boolean <literal>WHEN</literal>
+    condition, which will be tested to see whether the trigger should
+    be fired.  In row-level triggers the <literal>WHEN</literal> condition can
+    examine the old and/or new values of columns of the row.  (Statement-level
+    triggers can also have <literal>WHEN</literal> conditions, although the feature
+    is not so useful for them.)  In a before trigger, the <literal>WHEN</literal>
+    condition is evaluated just before the function is or would be executed,
+    so using <literal>WHEN</literal> is not materially different from testing the
+    same condition at the beginning of the trigger function.  However, in
+    an after trigger, the <literal>WHEN</literal> condition is evaluated just after
+    the row update occurs, and it determines whether an event is queued to
+    fire the trigger at the end of statement.  So when an after trigger's
+    <literal>WHEN</literal> condition does not return true, it is not necessary
+    to queue an event nor to re-fetch the row at end of statement.  This
+    can result in significant speedups in statements that modify many
+    rows, if the trigger only needs to be fired for a few of the rows.
+   </para>
+
+   <para>
     Les déclencheurs avant en mode ligne sont typiquement utilisés pour
     vérifier ou modifier les données qui seront insérées ou mises à jour. Par
     exemple, un déclencheur avant pourrait être utilisé pour insérer l'heure
@@ -497,15 +517,17 @@
     Oid         tgfoid;
     int16       tgtype;
     bool        tgenabled;
-    bool        tgisconstraint;
+    bool        tgisinternal;
     Oid         tgconstrrelid;
+    Oid         tgconstrindid;
     Oid         tgconstraint;
     bool        tgdeferrable;
     bool        tginitdeferred;
     int16       tgnargs;
     int16       tgnattr;
-    int16       *tgattr;
+    int16      *tgattr;
     char      **tgargs;
+    char       *tgqual;
 } Trigger;
 </programlisting>
 
@@ -556,7 +578,7 @@
   </sect1>
 
   <sect1 id="trigger-example">
-   <title>Un exemple complet</title>
+   <title>Un exemple complet de trigger</title>
 
    <para>
     Voici un exemple très simple de fonction déclencheur écrite en C (les
@@ -585,6 +607,10 @@
 #include "executor/spi.h"       /* nécessaire pour fonctionner avec SPI */
 #include "commands/trigger.h"   /* ... et les déclencheurs */
 
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
 extern Datum trigf(PG_FUNCTION_ARGS);
 
 PG_FUNCTION_INFO_V1(trigf);

Modified: traduc/trunk/postgresql/typeconv.xml
===================================================================
--- traduc/trunk/postgresql/typeconv.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/typeconv.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -158,7 +158,7 @@
 d'exécuter ces conversions.  Les conversions sont appelées
 <firstterm>casts</firstterm> en anglais. Des conversions de types
 supplémentaires peuvent être ajoutées par l'utilisateur avec la commande
-<xref linkend="sql-createcast" endterm="sql-createcast-title"/> (c'est
+<xref linkend="sql-createcast"/> (c'est
 habituellement réalisé en
 conjonction avec la définition de nouveaux types de données.
 L'ensemble des conversions entre les types prédéfinis a été
@@ -575,7 +575,7 @@
     n'existe pas. S'il existe une fonction de conversion, elle est
     habituellement nommée suivant le nom du type en sortie et donc il n'est
     pas nécessaire d'avoir un cas spécial. Pour plus d'informations, voir
-    <xref linkend="sql-createcast" endterm="sql-createcast-title"/>.
+    <xref linkend="sql-createcast"/>.
    </para>
   </footnote>
 

Added: traduc/trunk/postgresql/unaccent.xml
===================================================================
--- traduc/trunk/postgresql/unaccent.xml	                        (rev 0)
+++ traduc/trunk/postgresql/unaccent.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -0,0 +1,150 @@
+<sect1 id="unaccent">
+ <title>unaccent</title>
+
+ <indexterm zone="unaccent">
+  <primary>unaccent</primary>
+ </indexterm>
+
+ <para>
+  <filename>unaccent</filename> removes accents (diacritic signs) from a lexeme.
+  It's a filtering dictionary, that means its output is 
+  always passed to the next dictionary (if any), contrary to the standard 
+  behavior. Currently, it supports most important accents from european 
+  languages. 
+ </para>
+
+ <para>
+  Limitation: Current implementation of <filename>unaccent</filename> 
+  dictionary cannot be used as a normalizing dictionary for 
+  <filename>thesaurus</filename> dictionary.
+ </para>
+ 
+ <sect2>
+  <title>Configuration</title>
+
+  <para>
+   A <literal>unaccent</literal> dictionary accepts the following options:
+  </para>
+  <itemizedlist>
+   <listitem>
+    <para>
+     <literal>RULES</literal> is the base name of the file containing the list of
+     translation rules.  This file must be stored in
+     <filename>$SHAREDIR/tsearch_data/</filename> (where <literal>$SHAREDIR</literal> means
+     the <productname>PostgreSQL</productname> installation's shared-data directory).
+     Its name must end in <literal>.rules</literal> (which is not to be included in
+     the <literal>RULES</literal> parameter).
+    </para>
+   </listitem>
+  </itemizedlist>
+  <para>
+   The rules file has the following format:
+  </para>
+  <itemizedlist>
+   <listitem>
+    <para>
+     Each line represents pair: character_with_accent  character_without_accent
+    <programlisting>
+&Agrave;        A
+&Aacute;        A
+&Acirc;         A
+&Atilde;        A
+&Auml;          A
+&Aring;         A
+&AElig;         A
+    </programlisting>
+    </para>
+   </listitem>
+  </itemizedlist>
+
+  <para>
+   Look at <filename>unaccent.rules</filename>, which is installed in
+   <filename>$SHAREDIR/tsearch_data/</filename>, for an example.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Usage</title>
+
+  <para>
+   Running the installation script creates a text search template
+   <literal>unaccent</literal> and a dictionary <literal>unaccent</literal>
+   based on it, with default parameters.  You can alter the
+   parameters, for example
+
+<programlisting>
+=# ALTER TEXT SEARCH DICTIONARY unaccent (RULES='my_rules');
+</programlisting>
+
+   or create new dictionaries based on the template.
+  </para>
+
+  <para>
+   To test the dictionary, you can try
+
+<programlisting>
+=# select ts_lexize('unaccent','Hôtel');
+ ts_lexize 
+-----------
+ {Hotel}
+(1 row)
+</programlisting>
+  </para>
+  
+  <para>
+  Filtering dictionary are useful for correct work of 
+  <function>ts_headline</function> function.
+<programlisting>
+=# CREATE TEXT SEARCH CONFIGURATION fr ( COPY = french );
+=# ALTER TEXT SEARCH CONFIGURATION fr
+        ALTER MAPPING FOR hword, hword_part, word
+        WITH unaccent, french_stem;
+=# select to_tsvector('fr','Hôtels de la Mer');
+    to_tsvector    
+-------------------
+ 'hotel':1 'mer':4
+(1 row)
+
+=# select to_tsvector('fr','Hôtel de la Mer') @@ to_tsquery('fr','Hotels');
+ ?column? 
+----------
+ t
+(1 row)
+=# select ts_headline('fr','Hôtel de la Mer',to_tsquery('fr','Hotels'));
+      ts_headline       
+------------------------
+  &lt;b&gt;Hôtel&lt;/b&gt;de la Mer
+(1 row)
+
+</programlisting>
+  </para>
+ </sect2>
+
+ <sect2>
+ <title>Function</title>
+
+ <para>
+  <function>unaccent</function> function removes accents (diacritic signs) from
+  argument string. Basically, it's a wrapper around 
+  <filename>unaccent</filename> dictionary.
+ </para>
+
+ <indexterm>
+  <primary>unaccent</primary>
+ </indexterm>
+
+ <synopsis>
+   unaccent(<optional><replaceable class="PARAMETER">dictionary</replaceable>,
+   </optional> <replaceable class="PARAMETER">string</replaceable>) 
+  returns <type>text</type>
+ </synopsis>  
+
+ <para>
+<programlisting>
+SELECT unaccent('unaccent','Hôtel');
+SELECT unaccent('Hôtel');
+</programlisting>
+ </para>
+ </sect2>
+
+</sect1>

Modified: traduc/trunk/postgresql/user-manag.xml
===================================================================
--- traduc/trunk/postgresql/user-manag.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/user-manag.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -16,7 +16,7 @@
   exemple des tables) et peuvent affecter des droits sur ces objets à d'autres
   rôles pour contrôler qui a accès à ces objets. De plus, il est possible de
   donner l'<firstterm>appartenance</firstterm> d'un rôle à un autre rôle, l'autorisant
-  du coup à utiliser les droits affectés au rôle dont il est membre.
+  du coup à utiliser les droits affectés à un autre rôle.
  </para>
 
  <para>
@@ -56,15 +56,14 @@
    n'est pas requis. Les rôles sont globaux à toute une
    installation de groupe de bases de données (et non individuelle pour
    chaque base). Pour créer un rôle, utilisez la commande SQL
-   <xref linkend="sql-createrole" endterm="sql-createrole-title"/>&nbsp;:
+   <xref linkend="sql-createrole"/>&nbsp;:
 <synopsis>CREATE ROLE <replaceable>nom_utilisateur</replaceable>;</synopsis>
    <replaceable>nom_utilisateur</replaceable> suit les règles des
    identifiants SQL&nbsp;: soit sans guillemets et sans caractères spéciaux,
    soit entre double-guillemets (en pratique, vous voudrez surtout ajouter
    des options supplémentaires, comme <literal>LOGIN</literal>, à cette commande.
    Vous trouverez plus de détails ci-dessous). Pour supprimer un rôle existant,
-   utilisez la commande analogue <xref linkend="sql-droprole"
-   endterm="sql-droprole-title"/>&nbsp;:
+   utilisez la commande analogue <xref linkend="sql-droprole"/>&nbsp;:
 <synopsis>DROP ROLE <replaceable>nom_utilisateur</replaceable>;</synopsis>
   </para>
 
@@ -125,12 +124,12 @@
    quel rôle de la base, la connexion cliente donnée se
    connectera, comme cela est expliqué dans le
    <xref linkend="client-authentication"/> (donc, un client n'est pas
-   nécessairement obligé de se connecter avec le rôle du même nom que
+   obligé de se connecter avec le rôle du même nom que
    son nom d'utilisateur dans le système d'exploitation&nbsp;; de la même
    façon que le nom de connexion d'un utilisateur peut ne pas correspondre à
    son vrai nom). Comme le rôle détermine l'ensemble des
    droits disponibles pour le client connecté, il est important de configurer
-   cela soigneusement quand un environnement multi-utilisateurs est mis en
+   soigneusement les droits quand un environnement multi-utilisateurs est mis en
    place.
   </para>
  </sect1>
@@ -232,9 +231,8 @@
 
     Les attributs d'un rôle peuvent être modifiés après sa
     création avec <command>ALTER ROLE</command>.<indexterm><primary>ALTER ROLE</primary></indexterm>
-    Regardez les pages de références de <xref linkend="sql-createrole"
-    endterm="sql-createrole-title"/> et de <xref linkend="sql-alterrole"
-    endterm="sql-alterrole-title"/> pour plus de détails.
+    Regardez les pages de références de <xref linkend="sql-createrole"/> et de
+    <xref linkend="sql-alterrole"/> pour plus de détails.
    </para>
 
   <tip>
@@ -255,14 +253,14 @@
    ou une autre, vous voulez désactiver les parcours d'index (conseil&nbsp;:
    ce n'est pas une bonne idée) à chaque fois que vous vous connectez, vous
    pouvez utiliser&nbsp;:
-<programlisting>ALTER ROLE nom_utilisateur SET enable_indexscan TO off;</programlisting>
+<programlisting>ALTER ROLE nom_utilisateur SET statement_timeout = '5min';</programlisting>
    Cela sauve les paramètres (mais ne les applique pas immédiatement).
    Dans les connexions ultérieures de ce rôle, c'est comme si 
-   <literal>SET enable_indexscan TO off;</literal> avait été appelé
+   <literal>SET statement_timeout = '5min';</literal> avait été appelé
    juste avant le démarrage de la session. Vous pouvez toujours
    modifier les paramètres durant la session. Pour supprimer une configuration
    par défaut spécifique à un rôle, utilisez <literal>ALTER ROLE
-   <replaceable>nom_utilisateur</replaceable> RESET <replaceable>nom_variable</replaceable>;</literal>.
+   <replaceable>nom_utilisateur</replaceable> RESET <replaceable>nom_variable</replaceable></literal>.
    Notez que les valeurs par défaut spécifiques aux rôles sans droit de connexion
    (<literal>LOGIN</literal>) sont vraiment inutiles car ils ne seront jamais appelés.
   </para>
@@ -301,7 +299,7 @@
    <literal>EXECUTE</literal>, and <literal>USAGE</literal>.
    Pour plus d'informations sur le support des différents types de droits par
    <productname>PostgreSQL</productname>, regardez la page de
-   référence <xref linkend="sql-grant" endterm="sql-grant-title"/>.
+   référence <xref linkend="sql-grant"/>.
   </para>
 
   <para>
@@ -320,7 +318,7 @@
 
   <para>
    Pour révoquer un droit, utilisez la commande nommée
-   <xref linkend="sql-revoke" endterm="sql-revoke-title"/>&nbsp;:
+   <xref linkend="sql-revoke"/>&nbsp;:
 <programlisting>REVOKE ALL ON comptes FROM PUBLIC;</programlisting>
   </para>
 
@@ -366,9 +364,8 @@
 
   <para>
    Une fois que ce rôle existe, vous pouvez lui ajouter et lui supprimer des
-   membres en utilisant les commandes <xref linkend="sql-grant"
-   endterm="sql-grant-title"/> et <xref linkend="sql-revoke"
-   endterm="sql-revoke-title"/>&nbsp;:
+   membres en utilisant les commandes <xref linkend="sql-grant"/> et <xref
+   linkend="sql-revoke"/>&nbsp;:
 <synopsis>GRANT <replaceable>role_groupe</replaceable> TO <replaceable>role1</replaceable>, ... ;
 REVOKE <replaceable>role_groupe</replaceable> FROM <replaceable>role1</replaceable>, ... ;</synopsis>
    Vous pouvez aussi faire en sorte que d'autres rôles groupes appartiennent à
@@ -379,16 +376,17 @@
   </para>
 
   <para>
-   Les membres d'un rôle peuvent utiliser les droits du rôle de deux façons.
+   Les membres d'un rôle groupe peuvent utiliser les droits du rôle de deux façons.
    Tout d'abord, chaque membre d'un groupe peut exécuter explicitement
-   <xref linkend="sql-set-role" endterm="sql-set-role-title"/> pour
+   <xref linkend="sql-set-role"/> pour
    <quote>devenir</quote> temporairement le rôle groupe. Dans cet état, la session
    de la base de données a accès aux droits du rôle groupe plutôt qu'à ceux
    du rôle de connexion original et tous les objets créés sont considérés comme
    appartenant au rôle groupe, et non pas au rôle utilisé lors de la connexion.
    Deuxièmement, les rôles membres qui ont l'attribut <literal>INHERIT</literal>
-   peuvent utiliser automatiquement les droits des rôles dont ils sont
-   membres. Comme exemple, supposons que nous avons lancé les commandes
+   héritent automatiquement des droits des rôles dont ils sont
+   membres, including their
+   <literal>INHERIT</literal> attributes. Comme exemple, supposons que nous avons lancé les commandes
    suivantes&nbsp;:
 <programlisting>CREATE ROLE joe LOGIN INHERIT;
 CREATE ROLE admin NOINHERIT;
@@ -458,7 +456,7 @@
 
   <para>
    Pour détruire un rôle groupe, utilisez <xref
-   linkend="sql-droprole" endterm="sql-droprole-title"/>:
+   linkend="sql-droprole"/>:
 <synopsis>DROP ROLE <replaceable>nom</replaceable>;</synopsis>
    Toute appartenance à ce rôle est automatiquement supprimée (mais les rôles
    membres ne sont pas autrement affectés). Notez néanmoins que tous les objets
@@ -469,7 +467,7 @@
  </sect1>
 
  <sect1 id="perm-functions">
-  <title>Fonctions et déclencheurs (triggers)</title>
+  <title>Sécurité des fonctions et déclencheurs (triggers)</title>
 
   <para>
    Les fonctions et les déclencheurs autorisent à l'intérieur du

Modified: traduc/trunk/postgresql/version.xml
===================================================================
--- traduc/trunk/postgresql/version.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/version.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -1,2 +1,2 @@
-<!ENTITY version "8.4.4">
-<!ENTITY majorversion "8.4">
+<!ENTITY version "9.0beta">
+<!ENTITY majorversion "9.0">

Modified: traduc/trunk/postgresql/wal.xml
===================================================================
--- traduc/trunk/postgresql/wal.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/wal.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -50,15 +50,28 @@
    Ensuite, il pourrait y avoir un cache dans le contrôleur du disque dur&nbsp;;
    ceci est assez commun sur les cartes contrôleur <acronym>RAID</acronym>. Certains
    de ces caches sont <firstterm>write-through</firstterm>, signifiant que les écritures
-   sont passées au lecteur dès qu'elles arrivent. D'autres sont
-   <firstterm>write-back</firstterm>, signifiant que les données sont passées au lecteur
+   sont envoyées au lecteur dès qu'elles arrivent. D'autres sont
+   <firstterm>write-back</firstterm>, signifiant que les données sont envoyées au lecteur
    un peu après. De tels caches peuvent apporter une faille dans la fiabilité car
    la mémoire du cache du disque contrôleur est volatile et qu'elle perdra son
    contenu à la prochaine coupure de courant. Des cartes contrôleur de meilleure
    qualité ont des caches <firstterm>avec batterie</firstterm>, signifiant que la carte
    dispose d'une batterie qui maintient le courant dans le cache en cas de perte
    de courant. Une fois le courant revenu, les données seront écrites sur les
-   disques durs. Pour vérifier le cache en écriture sur
+   disques durs.
+  </para>
+
+  <para>
+   Et enfin, la plupart des disques durs ont des caches. Certains sont
+   <quote>write-through</quote> alors que d'autres sont
+   <quote>write-back</quote>. Les mêmes soucis sur la perte de données existent
+   pour ces deux types de cache. Les lecteurs IDE ont principalement des caches
+   <quote>write-back</quote> qui ne survivront pas à une perte de courant,
+   though <acronym>ATAPI-6</acronym> introduced a drive cache
+   flush command (FLUSH CACHE EXT) that some file systems use, e.g. <acronym>ZFS</acronym>.
+   Many solid-state drives (SSD) also have volatile write-back
+   caches, and many do not honor cache flush commands by default.
+   Pour vérifier le cache en écriture sur
    <productname>Linux</productname>, utilisez <command>hdparm
    -I</command>&nbsp;; il est activé si une étoile (<literal>*</literal>) est
    affichée au côté de  <literal>Write cache</literal>. <command>hdparm
@@ -66,7 +79,7 @@
    <productname>FreeBSD</productname>, utilisez l'outil
    <application>atacontrol</application>. (Pour les disques SCSI, utilisez
    <ulink
-   url="http://sg.torque.net/sg/sdparm.html"><application>sdparm</application></ulink>
+   url="http://sg.danny.cz/sg/sdparm.html"><application>sdparm</application></ulink>
    pour désactiver <literal>WCE</literal>.)  Sur
    <productname>Solaris</productname>, le cache en écriture du disque est
    contrôlé par <ulink
@@ -84,15 +97,8 @@
   </para>
 
   <para>
-   Et enfin, la plupart des disques durs ont des caches. Certains sont
-   <quote>write-through</quote> alors que d'autres sont
-   <quote>write-back</quote>. Les mêmes soucis sur la perte de données existent
-   pour ces deux types de cache. Les lecteurs IDE ont principalement des caches
-   <quote>write-back</quote> qui ne survivront pas à une perte de courant.
-  </para>
-
-  <para>
-   Quand le système d'exploitation envoie une demande d'écriture au disque,
+   Quand le système d'exploitation envoie une demande d'écriture au système de
+   stockage,
    il ne peut pas faire grand chose pour s'assurer que les données sont
    arrivées dans un espace de stockage non volatile. Ce travail incombe à
    l'administrateur&nbsp;: ce dernier doit s'assurer que tous les composants de
@@ -100,6 +106,8 @@
    ne disposant pas de caches protégés par batterie. Au niveau du disque,
    désactivez le cache <quote>write-back</quote> si le disque ne garantit pas
    que les données seront écrites avant un arrêt.
+   You can test for reliable I/O subsystem behavior using <ulink
+   url="http://brad.livejournal.com/2116715.html">diskchecker.pl</ulink>.
   </para>
 
   <para>
@@ -112,12 +120,13 @@
    tout moment signifiant que certains octets pourraient être écrits et les
    autres perdus. Pour se prévenir contre ce type d'échec,
    <productname>PostgreSQL</productname> écrit périodiquement des images de page complète
-   sur le stockage permanent <emphasis>avant</emphasis> de modifier la page réelle sur
+   sur le stockage permanent des journaux de transactions
+   <emphasis>avant</emphasis> de modifier la page réelle sur
    disque. En effectuant ceci, lors d'une récupération après un arrêt brutal,
    <productname>PostgreSQL</productname> peut restaurer des pages écrites partiellement. Si
    vous avez un contrôleur disque avec un cache préservé par batterie ou un
    logiciel pour le système de fichiers qui protège les écritures de pages
-   incomplètes (c'est-à-dire ReiserFS 4), vous pouvez désactiver la création des images
+   incomplètes (par exemple ZFS), vous pouvez désactiver la création des images
    de page en utilisant le paramètre <xref linkend="guc-full-page-writes"/>.
   </para>
 
@@ -358,7 +367,7 @@
    <firstterm>points de contrôles</firstterm><indexterm><primary>points de
    contrôle</primary></indexterm> (appelés
    <foreignphrase>checkpoints</foreignphrase>) sont des
-   points qui garantissent que les fichiers de données ont été mis à
+   points qui garantissent que les fichiers de données table et index ont été mis à
    jour avec toutes les informations enregistrées dans le journal avant le
    point de contrôle.  Au moment du point de contrôle, toutes les
    pages de données non propres sont écrites sur le disque et une
@@ -394,7 +403,7 @@
    linkend="guc-checkpoint-segments"/> journaux de transaction ou dès que <xref
    linkend="guc-checkpoint-timeout"/> secondes se sont
    écoulées.  Les paramètres par défaut sont respectivement de trois journaux
-   et de 300 secondes.  Il est également possible de forcer la création
+   et de 300 secondes (5 minutes).  Il est également possible de forcer la création
    d'un point de contrôle en utilisant la commande SQL
    <command>CHECKPOINT</command>.
   </para>
@@ -589,8 +598,8 @@
    du type de l'événement qui est enregistré.  Les fichiers
    sont nommés suivant un nombre qui est toujours incrémenté et qui
    commence à <filename>000000010000000000000000</filename>.  Les nombres ne
-   bouclent pas actuellement, mais cela devrait prendre beaucoup de temps
-   pour épuiser le stock de nombres disponibles.
+   bouclent pas, mais cela prendra beaucoup de temps pour épuiser le stock de
+   nombres disponibles.
   </para>
 
   <para>
@@ -604,13 +613,13 @@
   </para>
 
   <para>
-   Le but de <acronym>WAL</acronym>, s'assurer que le journal est écrit
-   avant l'altération des entrées dans la base, peut être mis en échec par
+   Le but de <acronym>WAL</acronym> est de s'assurer que le journal est écrit
+   avant l'altération des entrées dans la base, mais cela peut être mis en échec par
    les disques<indexterm><primary>disques durs</primary></indexterm> qui
    rapportent une écriture
    réussie au noyau quand, en fait, ils ont seulement mis en cache
    les données et ne les ont pas encore stockés sur le disque.  Une
-   coupure de courant dans ce genre de situation peut toujours mener à
+   coupure de courant dans ce genre de situation peut mener à
    une corruption irrécupérable des données.  Les administrateurs
    devraient s'assurer que les disques contenant les journaux de
    transaction de <productname>PostgreSQL</productname> ne
@@ -620,8 +629,8 @@
   <para>
    Après qu'un point de contrôle ait été fait et que le journal ait été
    écrit, la position du point de contrôle est sauvegardée dans le
-   fichier <filename>pg_control</filename>.  Donc, quand la
-   restauration doit se faire, le serveur lit en premier
+   fichier <filename>pg_control</filename>.  Donc, au début de la
+   restauration, le serveur lit en premier
    <filename>pg_control</filename> et ensuite l'entrée du point de
    contrôle&nbsp;; ensuite, il exécute l'opération REDO en parcourant vers
    l'avant à partir de la position du journal indiquée dans l'entrée du

Modified: traduc/trunk/postgresql/xaggr.xml
===================================================================
--- traduc/trunk/postgresql/xaggr.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/xaggr.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -153,31 +153,26 @@
 </programlisting>
   </para>
 
-  <!-- J'ai besoin de la VO, vraiment !!! -->
   <para>
-   En fonction du <quote>contexte</quote> de l'appel, consultable
-   par le n&oelig;ud <structname>AggState</structname> ou
-   <structname>WindowAggState</structname>, une fonction C 
-   sait si elle est appelée en tant que
-   transition d'agrégat ou en tant que fonction finale. Par exemple&nbsp;:
-<programlisting>        if (fcinfo-&gt;context &amp;&amp;
-            (IsA(fcinfo-&gt;context, AggState) ||
-             IsA(fcinfo-&gt;context, WindowAggState)))
+   A function written in C can detect that it is being called as an
+   aggregate transition or final function by calling
+   <function>AggCheckCallContext</function>, for example:
+<programlisting>
+        if (AggCheckCallContext(fcinfo, NULL))
 </programlisting>
-   L'intérêt de cette vérification est que, lorsque cela est vrai pour une
-   fonction de transition, la première
-   entrée doit être une valeur de transition, temporaire, et peut donc être
-   modifiée sans risque plutôt que d'allouer une nouvelle copie (ceci est
-   <emphasis>seulement</emphasis> le cas quand la modification d'une entrée passée par
-   référence est sûre pour une fonction. En particulier, les fonctions finales
-   d'agrégat ne devraient pas modifier leurs entrées dans tous les cas car
-   elles seront ré-exécutées dans certains cas sur la même valeur de transition
-   finale). Voir <literal>int8inc()</literal> pour un
-   exemple.
+   One reason for checking this is that when it is true for a transition
+   function, the first input
+   must be a temporary transition value and can therefore safely be modified
+   in-place rather than allocating a new copy.  (This is the <emphasis>only</emphasis>
+   case where it is safe for a function to modify a pass-by-reference input.
+   In particular, aggregate final functions should not modify their inputs in
+   any case, because in some cases they will be re-executed on the same
+   final transition value.)
+   See <literal>int8inc()</literal> for an example.
   </para>
-<!-- Rien compris -->
+
   <para>
    Pour de plus amples détails, on se réfèrera à la commande
-   <xref linkend="sql-createaggregate" endterm="sql-createaggregate-title"/>.
+   <xref linkend="sql-createaggregate"/>.
   </para>
  </sect1>

Modified: traduc/trunk/postgresql/xfunc.xml
===================================================================
--- traduc/trunk/postgresql/xfunc.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/xfunc.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -67,8 +67,7 @@
 
   <para>
    Lors de  la lecture de ce chapitre, il peut être utile de consulter la page
-   de référence de la commande <xref linkend="sql-createfunction"
-   endterm="sql-createfunction-title"/> pour mieux
+   de référence de la commande <xref linkend="sql-createfunction"/> pour mieux
    comprendre les exemples. Quelques exemples extraits de ce chapitre peuvent 
    être trouvés dans les fichiers <filename>funcs.sql</filename> et
    <filename>funcs.c</filename> du répertoire du tutoriel de la distribution
@@ -480,6 +479,39 @@
     </para>
    </sect2>
 
+   <sect2 id="xfunc-named-parameters">
+    <title><acronym>SQL</acronym> Functions with Parameter Names</title>
+
+   <indexterm>
+    <primary>function</primary>
+    <secondary>named parameter</secondary>
+   </indexterm>
+
+    <para>
+     It is possible to attach names to a function's parameters, for example
+
+<programlisting>
+CREATE FUNCTION tf1 (acct_no integer, debit numeric) RETURNS numeric AS $$
+    UPDATE bank
+        SET balance = balance - $2
+        WHERE accountno = $1
+    RETURNING balance;
+$$ LANGUAGE SQL;
+</programlisting>
+
+     Here the first parameter has been given the name <literal>acct_no</literal>,
+     and the second parameter the name <literal>debit</literal>.
+     So far as the SQL function itself is concerned, these names are just
+     decoration; you must still refer to the parameters as <literal>$1</literal>,
+     <literal>$2</literal>, etc within the function body.  (Some procedural
+     languages let you use the parameter names instead.)  However,
+     attaching names to the parameters is useful for documentation purposes.
+     When a function has many parameters, it is also useful to use the names
+     while calling the function, as described in
+     <xref linkend="sql-syntax-calling-funcs"/>.
+    </para>
+   </sect2>
+
    <sect2 id="xfunc-output-parameters">
     <title>Fonctions <acronym>SQL</acronym> avec des paramètres en sortie</title>
 
@@ -532,7 +564,10 @@
 </screen>
 
      mais ne pas avoir à s'embêter avec la définition séparée du type
-     composite est souvent agréable.
+     composite est souvent agréable. Notice that the names attached to the output parameters
+     are not just decoration, but determine the column names of the anonymous
+     composite type.  (If you omit a name for an output parameter, the
+     system will choose a name on its own.)
     </para>
 
     <para>
@@ -584,7 +619,7 @@
      déclaré de type tableau. Par exemple&nbsp;:
 
 <screen>
-CREATE FUNCTION mleast(VARIADIC numeric[]) RETURNS numeric AS $$
+CREATE FUNCTION mleast(VARIADIC arr numeric[]) RETURNS numeric AS $$
     SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i);
 $$ LANGUAGE SQL;
 
@@ -624,6 +659,25 @@
      normally.  <literal>VARIADIC</literal> can only be attached to the last
      actual argument of a function call.
     </para>
+
+    <para>
+     The array element parameters generated from a variadic parameter are
+     treated as not having any names of their own.  This means it is not
+     possible to call a variadic function using named arguments (<xref
+     linkend="sql-syntax-calling-funcs"/>), except when you specify
+     <literal>VARIADIC</literal>.  For example, this will work:
+
+<screen>
+SELECT mleast(VARIADIC ARRAY[10, -1, 5, 4.4] AS arr);
+</screen>
+
+     but not these:
+
+<screen>
+SELECT mleast(10 AS arr);
+SELECT mleast(ARRAY[10, -1, 5, 4.4] AS arr);
+</screen>
+    </para>
    </sect2>
 
    <sect2 id="xfunc-sql-parameter-defaults">
@@ -642,7 +696,9 @@
      à priori nécessaires. Comme les arguments peuvent seulement être omis
      à partir de la fin de la liste des arguments, tous les paramètres après
      un paramètres disposant d'une valeur par défaut disposeront eux-aussi
-     d'une valeur par défaut.
+     d'une valeur par défaut. (Although the use of named argument notation
+     could allow this restriction to be relaxed, it's still enforced so that
+     positional argument notation works sensibly.)
     </para>
 
     <para>
@@ -768,7 +824,8 @@
      définies par des paramètres en sortie, comme ceci&nbsp;:
 
 <programlisting>
-CREATE FUNCTION sum_n_product_with_tab (x int, OUT sum int, OUT product int) RETURNS SETOF record AS $$
+CREATE FUNCTION sum_n_product_with_tab (x int, OUT sum int, OUT product int)
+RETURNS SETOF record AS $$
     SELECT $1 + tab.y, tab.y * tab.y FROM tab;
 $$ LANGUAGE SQL;
 </programlisting>
@@ -867,7 +924,8 @@
      suivante&nbsp;:
 
 <programlisting>
-CREATE FUNCTION sum_n_product_with_tab (x int) RETURNS TABLE(sum int, product int) AS $$
+CREATE FUNCTION sum_n_product_with_tab (x int)
+RETURNS TABLE(sum int, product int) AS $$
     SELECT $1 + tab.y, $1 * tab.y FROM tab;
 $$ LANGUAGE SQL;
 </programlisting>
@@ -1086,7 +1144,7 @@
     (<firstterm>volatility</firstterm>) comprenant
     <literal>VOLATILE</literal>, <literal>STABLE</literal> ou <literal>IMMUTABLE</literal>.
     <literal>VOLATILE</literal> est la valeur par défaut si la commande
-    <xref linkend="sql-createfunction" endterm="sql-createfunction-title"/> ne
+    <xref linkend="sql-createfunction"/> ne
     spécifie pas de catégorie. La catégorie de volatilité est une promesse
     à l'optimiseur sur le comportement de la fonction&nbsp;:
 
@@ -1286,7 +1344,7 @@
    <para>
     Normalement, toutes les fonctions internes présentes dans le serveur sont
     déclarées pendant l'initialisation du groupe de base de données
-    (<command>initdb</command>) mais un utilisateur peut utiliser la commande  
+    (see <xref linkend="creating-cluster"/>) mais un utilisateur peut utiliser la commande  
     <command>CREATE FUNCTION</command> pour créer des noms d'alias
     supplémentaires pour une fonction interne. Les fonctions internes sont
     déclarées dans la commande <command>CREATE FUNCTION</command> avec le nom
@@ -1866,7 +1924,12 @@
 
 <programlisting><![CDATA[#include "postgres.h"
 #include <string.h>
+#include "utils/geo_decls.h"
 
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
 /* par valeur */
          
 int
@@ -2036,7 +2099,12 @@
 <programlisting><![CDATA[#include "postgres.h"
 #include <string.h>
 #include "fmgr.h"
+#include "utils/geo_decls.h"
 
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
 /* par valeur */
 
 PG_FUNCTION_INFO_V1(add_one);
@@ -2339,25 +2407,59 @@
   </para>
 
   <para>
-    Les variables suivantes peuvent être configurées&nbsp;:
+    Set one of these three variables to specify what is built&nbsp;:
   
   <variablelist>
     <varlistentry>
       <term><varname>MODULES</varname></term>
       <listitem>
         <para>
-          liste des objets partagés à construire à partir du fichier source
+          liste des objets partagés à construire à partir des fichiers source
           de même base (ne pas inclure le suffixe dans cette liste)
         </para>
       </listitem>
     </varlistentry>
     
+     <varlistentry>
+      <term><varname>MODULE_big</varname></term>
+      <listitem>
+       <para>
+        a shared object to build from multiple source files
+        (list object files in <varname>OBJS</varname>)
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><varname>PROGRAM</varname></term>
+      <listitem>
+       <para>
+        a binary program to build
+        (list object files in <varname>OBJS</varname>)
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+
+    The following variables can also be set:
+
+    <variablelist>
+     <varlistentry>
+      <term><varname>MODULEDIR</varname></term>
+      <listitem>
+       <para>
+        subdirectory into which DATA and DOCS files should be
+        installed (if not set, default is <literal>contrib</literal>)
+       </para>
+      </listitem>
+     </varlistentry>
+
     <varlistentry>
       <term><varname>DATA</varname></term>
       <listitem>
         <para>
           fichiers spécifiques à installer dans
-          <literal><replaceable>prefix</replaceable>/share/contrib</literal>
+          <literal><replaceable>prefix</replaceable>/share/$MODULEDIR</literal>
         </para>
       </listitem>
     </varlistentry>
@@ -2367,18 +2469,28 @@
       <listitem>
         <para>
           fichiers spécifiques à installer dans
-          <literal><replaceable>prefix</replaceable>/share/contrib</literal>
+          <literal><replaceable>prefix</replaceable>/share/$MODULEDIR</literal>
           qui ont besoin d'être construit au début
         </para>
       </listitem>
     </varlistentry>
     
+     <varlistentry>
+      <term><varname>DATA_TSEARCH</varname></term>
+      <listitem>
+       <para>
+        random files to install under
+        <literal><replaceable>prefix</replaceable>/share/tsearch_data</literal>
+       </para>
+      </listitem>
+     </varlistentry>
+
     <varlistentry>
       <term><varname>DOCS</varname></term>
       <listitem>
         <para>
           fichiers spécifiques à installer dans
-          <literal><replaceable>prefix</replaceable>/doc/contrib</literal>
+          <literal><replaceable>prefix</replaceable>/doc/$MODULEDIR</literal>
         </para>
       </listitem>
     </varlistentry>
@@ -2412,37 +2524,8 @@
         </para>
       </listitem>
     </varlistentry>
-  </variablelist>
-  
-    ou au moins un parmi ces deux-là&nbsp;:
-  
-  <variablelist>
-    <varlistentry>
-      <term><varname>PROGRAM</varname></term>
-      <listitem>
-        <para>
-          un programme binaire à construire (liste des fichiers objets dans
-          <varname>OBJS</varname>)
-        </para>
-      </listitem>
-    </varlistentry>
     
     <varlistentry>
-      <term><varname>MODULE_big</varname></term>
-      <listitem>
-        <para>
-          un objet partagé à construire (liste des fichiers objets dans
-          <varname>OBJS</varname>)
-        </para>
-      </listitem>
-    </varlistentry>
-  </variablelist>
-  
-    Ce qui suit peut être configuré&nbsp;:
-  
-  <variablelist>
-    
-    <varlistentry>
       <term><varname>EXTRA_CLEAN</varname></term>
       <listitem>
         <para>
@@ -2577,6 +2660,10 @@
 <programlisting><![CDATA[#include "postgres.h"
 #include "executor/executor.h"  /* pour GetAttributeByName() */
 
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
 bool
 c_surpaye(HeapTupleHeader *t, /* la ligne courante d'emp */
            int32 limite)
@@ -2596,6 +2683,10 @@
 <programlisting><![CDATA[#include "postgres.h"
 #include "executor/executor.h"  /* pour GetAttributeByName() */
 
+#ifdef PG_MODULE_MAGIC
+PG_MODULE_MAGIC;
+#endif
+
 PG_FUNCTION_INFO_V1(c_surpaye);
 
 Datum
@@ -2949,11 +3040,12 @@
 {
     FuncCallContext  *funcctx;
     Datum             result;
-    MemoryContext     oldcontext;
     <replaceable>further declarations as needed</replaceable>
 
     if (SRF_IS_FIRSTCALL())
     {
+        MemoryContext oldcontext;
+        
         funcctx = SRF_FIRSTCALL_INIT();
         oldcontext = MemoryContextSwitchTo(funcctx-&gt;multi_call_memory_ctx);
         /* One-time setup code appears here: */
@@ -3248,8 +3340,6 @@
 
                 LWLockAcquire(AddinShmemInitLock, LW_EXCLUSIVE);
                 ptr = ShmemInitStruct("my struct name", size, &amp;found);
-                if (!ptr)
-                        elog(ERROR, "out of shared memory");
                 if (!found)
                 {
                         initialize contents of shmem area;

Modified: traduc/trunk/postgresql/xplang.xml
===================================================================
--- traduc/trunk/postgresql/xplang.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/xplang.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -5,7 +5,7 @@
      révision $Revision$ -->
 
  <chapter id="xplang">
-  <title id="xplang-title">Langages de procédures</title>
+  <title>Langages de procédures</title>
 
   <indexterm zone="xplang">
    <primary>langage de procédures</primary>
@@ -66,9 +66,9 @@
     <command>CREATE LANGUAGE</command> <replaceable>langage</replaceable>. 
     On peut également utiliser le programme <xref linkend="app-createlang"/> 
     pour installer le langage en ligne de commande. Par exemple, pour
-    installer le langage <application>PL/pgSQL</application> dans la base de
+    installer le langage <application>PL/Perl</application> dans la base de
     données <literal>template1</literal>, on écrit&nbsp;:
-<programlisting>createlang plpgsql template1
+<programlisting>createlang plperl template1
 </programlisting>
     La procédure manuelle décrite ci-dessous n'est recommandée que pour
     installer des langages personnalisés que <command>CREATE LANGUAGE</command>
@@ -81,10 +81,11 @@
     </title>
 
     <para>
-     Un langage de procédures s'installe en quatre étapes effectuées 
+     Un langage de procédures s'installe en cinq étapes effectuées 
      obligatoirement par le superutilisateur des bases de données. 
      Pour les langages connus par <command>CREATE LANGUAGE</command>, 
-     les deuxième et troisième étapes peuvent être omises, parce qu'automatiquement réalisées.
+     les deuxième, troisième et quatrième étapes peuvent être omises, parce
+     qu'automatiquement réalisées.
     </para>
 
     <step performance="required" id="xplang-install-cr1">
@@ -115,11 +116,27 @@
 
     <step performance="optional" id="xplang-install-cr3">
      <para>
+      Optionally, the language handler can provide an <quote>inline</quote>
+      handler function that executes anonymous code blocks
+      (<xref linkend="sql-do"/> commands)
+      written in this language.  If an inline handler function
+      is provided by the language, declare it with a command like
+<synopsis>
+CREATE FUNCTION <replaceable>inline_function_name</replaceable>(internal)
+    RETURNS void
+    AS '<replaceable>path-to-shared-object</replaceable>'
+    LANGUAGE C;
+</synopsis>
+     </para>
+    </step>
+
+    <step performance="optional" id="xplang-install-cr4">
+     <para>
       En option, le gestionnaire de langages peut fournir une fonction de
       <quote>validation</quote> qui vérifie la définition d'une fonction sans
       réellement l'exécuter. La fonction de validation, si elle existe, est
       appelée par <command>CREATE FUNCTION</command>. Si une telle fonction
-      est fournie par le gestionnaire, elle sera déclarée avec une commande de la forme
+      est fournie par le langage, elle sera déclarée avec une commande de la forme
 <synopsis>CREATE FUNCTION <replaceable>nom_fonction_validation</replaceable>(oid)
     RETURNS void
     AS '<replaceable>chemin-vers-objet-partagé</replaceable>'
@@ -128,11 +145,12 @@
      </para>
     </step>
 
-    <step performance="required" id="xplang-install-cr4">
+    <step performance="required" id="xplang-install-cr5">
      <para>
       Le LP doit être déclaré par la commande
 <synopsis>CREATE <optional>TRUSTED</optional> <optional>PROCEDURAL</optional> LANGUAGE <replaceable>nom_langage</replaceable>
     HANDLER <replaceable>nom_fonction_gestionnaire</replaceable>
+    <optional>INLINE <replaceable>inline_function_name</replaceable></optional>
     <optional>VALIDATOR <replaceable>nom_fonction_valideur</replaceable></optional> ;
 </synopsis>
       Le mot clé optionnel <literal>TRUSTED</literal> (N.d.T.&nbsp;: digne de confiance)
@@ -160,38 +178,43 @@
    <para>
     L'<xref linkend="xplang-install-example"/> présente le fonctionnement de
     la procédure
-    d'installation manuelle du langage <application>PL/pgSQL</application>.
+    d'installation manuelle du langage <application>PL/Perl</application>.
    </para>
 
    <example id="xplang-install-example">
-    <title>Installation manuelle de <application>PL/pgSQL</application></title>
+    <title>Installation manuelle de <application>PL/Perl</application></title>
 
      <para>
       La commande suivante indique au serveur l'emplacement
       de la bibliothèque partagée pour la fonction de gestion des appels du
-      langage <application>PL/pgSQL</application>.
+      langage <application>PL/Perl</application>.
 
-<programlisting>CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS 
-    '$libdir/plpgsql' LANGUAGE C;
+<programlisting>CREATE FUNCTION plperl_call_handler() RETURNS language_handler AS
+    '$libdir/plperl' LANGUAGE C;
 </programlisting>
      </para>
 
      <para>
-      <application>PL/pgSQL</application> possède une fonction de validation, 
-      qui est également déclarée&nbsp;:
+      <application>PL/Perl</application> has an inline handler function
+      and a validator function, so we declare those too:
 
-<programlisting>CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS
-    '$libdir/plpgsql' LANGUAGE C;
+<programlisting>CREATE FUNCTION plperl_inline_handler(internal) RETURNS void AS
+    '$libdir/plperl' LANGUAGE C;
+
+CREATE FUNCTION plperl_validator(oid) RETURNS void AS
+    '$libdir/plperl' LANGUAGE C;
 </programlisting>
      </para>
 
      <para>
       La commande&nbsp;:
-<programlisting>CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql
-    HANDLER plpgsql_call_handler
-    VALIDATOR plpgsql_validator;
+<programlisting>CREATE TRUSTED PROCEDURAL LANGUAGE plperl
+    HANDLER plperl_call_handler
+    INLINE plperl_inline_handler
+    VALIDATOR plperl_validator;
 </programlisting>
-	  indique l'évocation des fonctions précédentes pour les fonctions et procédures de déclencheur lorsque l'attribut de langage est  <literal>plpgsql</literal>.
+	  indique l'évocation des fonctions précédentes pour les fonctions et
+	  procédures de déclencheur lorsque l'attribut de langage est  <literal>plperl</literal>.
      </para>
   </example>
 
@@ -199,13 +222,16 @@
     Lors de l'installation par défaut de <productname>PostgreSQL</productname>,
     le gestionnaire du langage <application>PL/pgSQL</application> est
     compilé et installé dans le répertoire des bibliothèques
-    (<quote>lib</quote>). Si le support de <application>Tcl</application> est
-    configuré, les gestionnaires du <application>PL/Tcl</application> et du
-    <application>PL/TclU</application> sont compilés et installés au même endroit. De
-    même, les gestionnaires du <application>PL/Perl</application> et du
-    <application>PL/PerlU</application> sont compilés et installés si le support de Perl
-    est configuré, et <application>PL/PythonU</application> est installé si le support de
-    Python est configuré.
+    (<quote>lib</quote>); furthermore, the <application>PL/pgSQL</application> language
+    itself is installed in all databases.
+    If <application>Tcl</application> support is configured in, the handlers for
+    <application>PL/Tcl</application> and <application>PL/TclU</application> are built and installed
+    in the library directory, but the language itself is not installed in any
+    database by default.
+    Likewise, the <application>PL/Perl</application> and <application>PL/PerlU</application>
+    handlers are built and installed if Perl support is configured, and the
+    <application>PL/PythonU</application> handler is installed if Python support is
+    configured, but these languages are not installed by default.
    </para>
 
   </sect1>

Modified: traduc/trunk/postgresql/xtypes.xml
===================================================================
--- traduc/trunk/postgresql/xtypes.xml	2010-05-26 16:04:41 UTC (rev 1514)
+++ traduc/trunk/postgresql/xtypes.xml	2010-05-30 17:31:13 UTC (rev 1515)
@@ -306,6 +306,6 @@
 
  <para>
   Pour plus de détails, voir la description de la commande
-  <xref linkend="sql-createtype" endterm="sql-createtype-title"/>.
+  <xref linkend="sql-createtype"/>.
  </para>
 </sect1>



Plus d'informations sur la liste de diffusion Trad