]> granicus.if.org Git - postgresql/commitdiff
Make an editorial pass over the 9.4 release notes.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 18 Aug 2014 02:26:44 +0000 (22:26 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 18 Aug 2014 02:26:44 +0000 (22:26 -0400)
Update the notes to include commits through today, and do a lot of
wordsmithing and markup adjustment.  Notably, don't use <link> where <xref>
will do; since we got rid of the text-format HISTORY file, there is no
longer a reason to avoid <xref>.

doc/src/sgml/release-9.4.sgml

index 88935444997abf26eaa66f2eaf8d1fc23566f337..7ae67e0cec2e9848bbecf50da3fcf904f80349e4 100644 (file)
@@ -7,7 +7,7 @@
   <note>
    <title>Release Date</title>
    <simpara>2014-??-??</simpara>
-   <simpara>Current as of 2014-05-10</simpara>
+   <simpara>Current as of 2014-08-17</simpara>
   </note>
 
   <sect2>
 
      <listitem>
       <para>
-       Allow materialized views to be refreshed without blocking reads
+       Allow <link linkend="rules-materializedviews">materialized views</>
+       to be refreshed without blocking reads
       </para>
      </listitem>
 
      <listitem>
       <para>
-       <link linkend="logicaldecoding">Logical decoding</link> allows database
-       changes to be streamed out in a customizable format
+       Add support for <link linkend="logicaldecoding">logical decoding</>
+       of WAL data, to allow database changes to be streamed out in a
+       customizable format
       </para>
      </listitem>
 
      <listitem>
       <para>
-        Allow <link linkend="bgworker">background workers</link>
+        Allow <link linkend="bgworker">background worker processes</>
         to be dynamically registered, started and terminated
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Add structured (non-text) data type (<link
-       linkend="datatype-json"><type>JSONB</></link>) for storing
-       <type>JSON</> data
+       Add <link linkend="datatype-json"><type>jsonb</></link>, a more
+       capable and efficient data type for for storing <acronym>JSON</> data
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Add <acronym>SQL</>-level command <link
-       linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link>
-       to edit the <filename>postgresql.conf</> configuration file
+       Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
+       for updating <filename>postgresql.conf</> configuration file entries
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Reduce lock levels of some <link
-       linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> commands
+       Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
+       commands
       </para>
      </listitem>
 
   <title>Migration to Version 9.4</title>
 
    <para>
-    A dump/restore using <link
-    linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
-    of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
-    required for those wishing to migrate data from any previous release.
+    A dump/restore using <xref linkend="app-pg-dumpall">, or use
+    of <xref linkend="pgupgrade">, is required for those wishing to migrate
+    data from any previous release.
    </para>
 
    <para>
 
     <listitem>
      <para>
-      Cause consecutive whitespace in <link
-      linkend="functions-formatting-table"><function>to_timestamp()</></link>
-      and <function>to_date()</> format strings to consume a corresponding
-      number of characters in the input string (whitespace or not), then
-      conditionally consume adjacent whitespace, if not in <literal>FX</>
-      mode (Jeevan Chalke)
+      Tighten checks for multidimensional <link
+      linkend="arrays">array</link> input (Bruce Momjian)
      </para>
 
      <para>
-      Previously consecutive whitespace characters in a non-<literal>FX</>
-      format string behaved like a single whitespace character and consumed
-      all adjacent whitespace in the input string.  For example, previously
-      format string space-space-space would consume only the first space in
-      ' 12', while it will now consume all three characters.
+      Previously, an input array string that started with a single-element
+      array dimension could later contain multidimensional segments,
+      e.g. <literal>'{{1}, {2,3}}'::int[]</>.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Tighten checks for multidimensional <link
-      linkend="arrays">array</link> input (Bruce Momjian)
+      Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link>
+      text values are no longer rendered with the backslash escaped
+      (Andrew Dunstan)
      </para>
 
      <para>
-      Previously an input array string that started with a single-element
-      array dimension could later contain multidimensional segments,
-      e.g. <literal>'{{1}, {2,3}}'::int[]</>.
+      Previously, all backslashes in text values being formed into JSON
+      were escaped. Now a backslash followed by <literal>u</> and four
+      hexadecimal digits is not escaped, as this is a legal sequence in a
+      JSON string value, and escaping the backslash led to some perverse
+      results.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Change empty arrays returned by <application>intarray</> to be
-      zero-dimensional arrays (Bruce Momjian)
+      When converting values of type <type>timestamp</>
+      or <type>timestamptz</>
+      to <link linkend="datatype-json"><type>JSON</type></link>, render the
+      values in a format compliant with ISO 8601 (Andrew Dunstan)
      </para>
 
      <para>
-      Previously, empty arrays were returned as one-dimensional empty arrays
-      whose text representation looked the same as zero-dimensional arrays
-      (<literal>{}</>).  <application>intarray</>'s behavior in this area
-      now matches the built-in array operators.
+      Previously such values were rendered according to the current
+      <xref linkend="guc-datestyle"> setting; but many JSON processors
+      require timestamps to be in ISO 8601 format.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Disallow NULL <link
-      linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
-      function arguments (Pavel Stehule)
+      Cause consecutive whitespace in <link
+      linkend="functions-formatting-table"><function>to_timestamp()</></link>
+      and <function>to_date()</> format strings to consume a corresponding
+      number of characters in the input string (whitespace or not), then
+      conditionally consume adjacent whitespace, if not in <literal>FX</>
+      mode (Jeevan Chalke)
      </para>
 
      <para>
-      Such arguments must be cast to an array data type.
+      Previously, consecutive whitespace characters in a non-<literal>FX</>
+      format string behaved like a single whitespace character and consumed
+      all adjacent whitespace in the input string.  For example, previously
+      a format string of three spaces would consume only the first space in
+      <literal>' 12'</>, but it will now consume all three characters.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      <link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now
-      outputs constant time zone offsets in <acronym>POSIX</>-style zone
-      format (Tom Lane)
+      Fix <link
+      linkend="textsearch-functions-table"><function>ts_rank_cd()</></link>
+      to ignore stripped lexemes (Alex Hill)
      </para>
 
      <para>
-      Previously it was returned in <link
-      linkend="datatype-interval-output"><type>INTERVAL</></link> format.
-      The new format can be passed to <command>SET TIME ZONE</>.
+      Previously, stripped lexemes were treated as if they had a default
+      location, producing a rank of dubious usefulness.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Values of type
-      <link linkend="datatype-datetime"><type>timestamp</></link>  and
-      <link linkend="datatype-datetime"><type>timestamptz</></link> are now
-      rendered in a string format compliant with ISO 8601 rather than the
-      default output format when converting to or used in
-      <link linkend="datatype-json"><type>JSON</type></link>.
-      (Andrew Dunstan)
+      For functions declared to
+      take <link linkend="xfunc-sql-variadic-functions"><literal>VARIADIC
+      "any"</></link>, an actual parameter marked as <literal>VARIADIC</>
+      must be of a determinable array type (Pavel Stehule)
      </para>
 
      <para>
-      Previously these were rendered in the default text output format
-      for the type, but many JSON processors require timestamps in ISO 8601
-      format.
+      Such parameters can no longer be written as an undecorated string
+      literal or <literal>NULL</>; a cast to an appropriate array data type
+      will now be required.  Note that this does not affect parameters not
+      marked <literal>VARIADIC</>.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Unicode escapes in <link linkend="datatype-json"><type>JSON</type></link>
-      text values are no longer rendered with the backslash escaped.
-      (Andrew Dunstan)
-     </para>
-
-     <para>
-      Previously all backslashes in text values being formed into JSON were
-      escaped. Now a backslash followed by "u" and four hexadecimal digits is
-      not escaped, as this is a legal sequence in a JSON string value, and
-      escaping the backslash led to some perverse results.
+      <xref linkend="sql-discard"> now also discards sequence-related state
+      (Fabr&iacute;zio de Royes Mello, Robert Haas)
      </para>
     </listitem>
 
     <listitem>
      <para>
       Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN
-      ANALYZE</></link>'s <quote>total runtime</quote> output to <quote>execution time</quote>
-      (Tom Lane)
+      ANALYZE</></link>'s <quote>total runtime</quote> output
+      to <quote>execution time</quote> (Tom Lane)
      </para>
 
      <para>
-      This was required now that planning time is also reported.
+      Now that planning time is also reported, the previous name was
+      confusing.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Fix <link
-      linkend="textsearch-functions-table"><function>ts_rank_cd()</></link>
-      to ignore stripped lexemes (Alex Hill)
+      <link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now
+      outputs simple numeric UTC offsets in <acronym>POSIX</> timezone
+      format (Tom Lane)
      </para>
 
      <para>
-      Previously stripped lexemes got a default location and could be
-      considered if mixed with non-stripped lexemes.
+      Previously, such timezone settings were displayed as <link
+      linkend="datatype-interval-output"><type>interval</></link> values.
+      The new output is properly interpreted by <command>SET TIME ZONE</>
+      when passed as a simple string, whereas the old output required
+      special treatment to be re-parsed correctly.
      </para>
     </listitem>
 
      </para>
 
      <para>
-      Restoring such check constraints will lead to restore errors.
+      Previously such check constraints were allowed, but they would often
+      cause errors during restores.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Use the last specified <link
-      linkend="recovery-target"><varname>recovery_target</></link> if
-      multiple are specified (Heikki Linnakangas)
+      Use the last specified <xref linkend="recovery-target"> if multiple
+      values are specified (Heikki Linnakangas)
      </para>
     </listitem>
 
 
      <para>
       User commands that did their own quote preservation might need
-      adjustment, e.g.  <link
-      linkend="guc-archive-command">archive_command</link>, <link
-      linkend="restore-command">restore_command</link>, <command>COPY TO/FROM
-      PROGRAM</>.
+      adjustment.  This is likely to be an issue for commands used in
+      <xref linkend="guc-archive-command">, <xref linkend="restore-command">,
+      and <link linkend="sql-copy"><command>COPY TO/FROM PROGRAM</></link>.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Remove system column <link
+      Remove catalog column <link
       linkend="catalog-pg-class"><structfield>pg_class.reltoastidxid</></link>
       (Michael Paquier)
      </para>
 
     <listitem>
      <para>
-      Remove support for native <application>krb5</> authentication
-      (Magnus Hagander)
+      Remove catalog column <link
+      linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link>
+      (Kevin Grittner)
      </para>
 
      <para>
-      The proper way to use <application>Kerberos</> authentication is
-      with <acronym>GSSAPI</>.
+      Per-column rules have not been supported since
+      <application>PostgreSQL</> 7.3.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Handle domains over arrays like plain arrays in PL/Python
-      (Rodolfo Campero)
+      Remove native support for <application>Kerberos</> authentication
+      (<option>--with-krb5</>, etc)
+      (Magnus Hagander)
      </para>
 
      <para>
-      Previously they were treated as strings.
+      The supported way to use <application>Kerberos</> authentication is
+      with <acronym>GSSAPI</>.  The native code has been deprecated since
+      <productname>PostgreSQL</> 8.3.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Have libpq's <link
-      linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link>
-      and <link
-      linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
-      functions process zero-length strings as defaults (Adrian
-      Vondendriesch)
+      In <application>PL/Python</>, handle domains over arrays like the
+      underlying array type (Rodolfo Campero)
      </para>
 
      <para>
-      Previously, these functions treated zero-length string values as
-      defaults only in some cases.
+      Previously such values were treated as strings.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Remove system column <link
-      linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link>
-      (Kevin Grittner)
+      Make libpq's <link
+      linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link>
+      and <link
+      linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
+      functions process zero-length strings as defaults (Adrian
+      Vondendriesch)
      </para>
 
      <para>
-      Per-column rules have not been supported since
-      <application>PostgreSQL</> 7.3.
+      Previously, these functions treated zero-length string values as
+      selecting the default in only some cases.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      <link linkend="pgupgrade"><application>pg_upgrade</></link> now
-      uses <option>-U</> to specify the user name (Bruce Momjian)
-     </para>
-
-     <para>
-      Previously <option>-u</> was used to specify the user name.
-      Also spell the long option as <option>--username</>, again for
-      consistency with other tools.
+      Change empty arrays returned by the <xref linkend="intarray"> module
+      to be zero-dimensional arrays (Bruce Momjian)
      </para>
-    </listitem>
 
-    <listitem>
      <para>
-      The maximum number of <link linkend="bgworker">background workers</link>
-      that can be registered
-      by <function>RegisterBackgroundWorker()</function> is now limited to
-      <link linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
+      Previously, empty arrays were returned as zero-length one-dimensional
+      arrays, whose text representation looked the same as zero-dimensional
+      arrays (<literal>{}</>), but they acted differently in array
+      operations.  <application>intarray</>'s behavior in this area now
+      matches the built-in array operators.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      <link linkend="bgworker">background workers</link> registered at
-      postmaster startup time should set
-      <structfield>bgw_notify_pid</structfield> to 0.
-      <command></>
+      <xref linkend="pgupgrade"> now uses <option>-U</>
+      or <option>--username</> to specify the user name (Bruce Momjian)
      </para>
-    </listitem>
 
-    <listitem>
      <para>
-      <command>DISCARD ALL</> now also discards sequence state.
+      Previously this option was spelled <option>-u</> or <option>--user</>,
+      but that was inconsistent with other tools.
      </para>
     </listitem>
 
 
       <listitem>
        <para>
-        Have <link linkend="SQL-VACUUM"><command>VACUUM</></link> properly
-        report dead but not removable rows to the statistics collector
-        (Hari Babu)
+        Allow <link linkend="bgworker">background worker processes</link>
+        to be dynamically registered, started and terminated (Robert Haas)
        </para>
 
        <para>
-        Previously these were reported as live rows.
+        The <filename>contrib/worker_spi</> module shows an example of use
+        of this feature.
        </para>
       </listitem>
+
       <listitem>
        <para>
-        Allow <link linkend="bgworker">background workers</link> to be
-        dynamically registered, started and terminated (Robert Haas)
+        Allow dynamic allocation of shared memory segments (Robert Haas,
+        Amit Kapila)
        </para>
 
        <para>
-        <function>worker_spi_launch()</> in <application>worker_spi</>
-        shows an example of its use.
+        This feature is illustrated in <xref linkend="test-shm-mq">.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow dynamic allocation of shared memory segments (Robert Haas,
-        Amit Kapila)
+        During crash recovery or immediate shutdown, send uncatchable
+        termination signals (<systemitem>SIGKILL</>) to child processes
+        that do not shut down promptly (MauMau, &Aacute;lvaro Herrera)
        </para>
 
        <para>
-        This is illustrated in <link
-        linkend="test-shm-mq"><application>test_shm_mq</></link>.
+        This reduces the likelihood of leaving orphaned child processes
+        behind after <xref linkend="app-postmaster"> shutdown, as well
+        as ensuring that crash recovery can proceed if some child processes
+        have become <quote>stuck</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve <acronym>SSL</> renegotiation handling (&Aacute;lvaro
-        Herrera)
+        Improve randomness of the database system identifier (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        During immediate shutdown send uncatchable termination signals
-        to child processes that have not already shutdown (MauMau,
-        &Aacute;lvaro Herrera)
+        Make <xref linkend="SQL-VACUUM"> properly report dead but
+        not-yet-removable rows to the statistics collector (Hari Babu)
        </para>
 
        <para>
-        This reduces the likelihood of orphaned child processes after
-        <link linkend="app-postmaster"><application>postmaster</></link>
-        shutdown.
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Improve randomness of the database system identifier (Tom Lane)
+        Previously these were reported as live rows.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Improve speed of multi-key <link
-        linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov,
-        Heikki Linnakangas)
+        Reduce <link linkend="GIN"><acronym>GIN</></link> index size
+        (Alexander Korotkov, Heikki Linnakangas)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Reduce <link linkend="GIN"><acronym>GIN</></link> index size
-        (Alexander Korotkov, Heikki Linnakangas)
+        Indexes upgraded via <xref linkend="pgupgrade"> will work fine
+        but will still be in the old, larger <acronym>GIN</> format.
+        Use <xref linkend="SQL-REINDEX"> to recreate such an index in the
+        new format.
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        Indexes upgraded via <link
-        linkend="pgupgrade"><application>pg_upgrade</></link> will work
-        fine but will use the old larger <acronym>GIN</> format; <link
-        linkend="SQL-REINDEX"><command>REINDEX</></link> will recreate
-        the index in the new format.
+        Improve speed of multi-key <link
+        linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov,
+        Heikki Linnakangas)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add <link linkend="GiST"><acronym>GiST</></link> index support
-        for <link linkend="datatype-inet"><type>INET</></link> and
-        <link linkend="datatype-cidr"><type>CIDR</></link> data types
+        for <link linkend="datatype-inet"><type>inet</></link> and
+        <link linkend="datatype-cidr"><type>cidr</></link> data types
         (Emre Hasegeli)
        </para>
 
        <para>
         Such indexes improve <link
-        linkend="cidr-inet-operators-table">subnet</link> and supernet
+        linkend="cidr-inet-operators-table">subnet and supernet</link>
         lookups and ordering comparisons.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix race condition in B-tree page deletion (Heikki Linnakangas)
+        Fix rare race condition in B-tree page deletion (Heikki Linnakangas)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Allow multiple backends to simultaneously insert into <link
-        linkend="wal"><acronym>WAL</></link> buffers (Heikki Linnakangas)
+        Allow multiple backends to insert
+        into <link linkend="wal"><acronym>WAL</></link> buffers
+        concurrently (Heikki Linnakangas)
        </para>
 
        <para>
 
       <listitem>
        <para>
-        Improve performance of <link
-        linkend="syntax-window-functions"><literal>WINDOW</></link>
-        aggregate functions (David Rowley, Florian Pflug, Tom Lane)
+        Improve performance of aggregate functions used as <link
+        linkend="syntax-window-functions">window functions</link>
+        (David Rowley, Florian Pflug, Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve speed of aggregates which use <link
-        linkend="datatype-numeric"><type>NUMERIC</></link>s (Hadi
-        Moshayedi)
-       </para>
-
-       <para>
-        These include <function>SUM()</>, <function>AVG()</>, <link
-        linkend="functions-aggregate-statistics-table"><function>STDDEV()</></link>,
-        and <function>VARIANCE()</>.
+        Improve speed of aggregates that
+        use <link linkend="datatype-numeric"><type>numeric</></link> state
+        values (Hadi Moshayedi)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Attempt to <link linkend="vacuum-for-wraparound">freeze</link>
-        tuples when tables are rewritten with <link
-        linkend="SQL-CLUSTER"><command>CLUSTER</></link> or <link
+        tuples when tables are rewritten with <xref
+        linkend="SQL-CLUSTER"> or <link
         linkend="SQL-VACUUM"><command>VACUUM FULL</></link> (Robert Haas,
         Andres Freund)
        </para>
 
       <listitem>
        <para>
-        Improve speed of <link linkend="SQL-COPY"><command>COPY</></link>
+        Improve speed of <xref linkend="SQL-COPY">
         with <literal>DEFAULT</> <link
         linkend="functions-sequence-table"><function>nextval()</></link>
         columns (Simon Riggs)
       <listitem>
        <para>
         Raise hard limit on the number of tuples held in memory during sorting
-        and B-tree <link linkend="SQL-CREATEINDEX">index builds</link> (Noah
-        Misch)
+        and B-tree index builds (Noah Misch)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Reduce memory allocated by <link
-        linkend="SQL-DO"><literal>DO</></link> blocks (Tom Lane)
+        Reduce memory allocated by <application>PL/pgSQL</>
+        <xref linkend="SQL-DO"> blocks (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have the optimizer be more aggressive in creating restrictions
+        Make the planner more aggressive in extracting restriction clauses
         from mixed <literal>AND</>/<literal>OR</> clauses (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Auto-resize the catalog cache (Heikki Linnakangas)
+        Disallow pushing volatile <literal>WHERE</> clauses down
+        into <literal>DISTINCT</> subqueries (Tom Lane)
+       </para>
+
+       <para>
+        Pushing down a <literal>WHERE</> clause can produce a more
+        efficient plan overall, but at the cost of evaluating the clause
+        more often than is implied by the text of the query; so don't do it
+        if the clause contains any volatile functions.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Auto-resize the catalog caches (Heikki Linnakangas)
        </para>
 
        <para>
-        This reduces memory consumption for backends accessing only a few
-        tables, and improves performance for backend accessing many tables.
+        This reduces memory consumption for sessions accessing only a few
+        tables, and improves performance for sessions accessing many tables.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Expose the estimation of number of changed tuples since last <link
-        linkend="vacuum-for-statistics">ANALYZE</link> (Mark Kirkwood)
+        Add <xref linkend="pg-stat-archiver-view"> system view to
+        report <link linkend="wal"><acronym>WAL</></link> archiver activity
+        (Gabriele Bartolini)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        This appears in <link
-        linkend="pg-stat-all-tables-view"><structfield>pg_stat_all_tables.n_mod_since_analyze</></link>.
+        Add <structfield>n_mod_since_analyze</> columns to
+        <xref linkend="pg-stat-all-tables-view"> and related system views
+        (Mark Kirkwood)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Add <link
-        linkend="pg-stat-archiver-view"><structname>pg_stat_archiver</></link>
-        system view to report <link linkend="wal"><acronym>WAL</></link>
-        archiver activity (Gabriele Bartolini)
+        These columns expose the system's estimate of the number of changed
+        tuples since the table's last <xref linkend="sql-analyze">.  This
+        estimate drives decisions about when to auto-analyze.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <varname>backend_xid</> and <varname>backend_xmin</> columns to
-        the system view <link linkend="pg-stat-activity-view"><structname>pg_stat_activity</></link>
-        and <varname>backend_xmin</> to <link linkend="pg-stat-replication-view"><structname>pg_stat_replication</></link>
-        (Christian Kruse)
+        Add <structfield>backend_xid</> and <structfield>backend_xmin</>
+        columns to the system view <xref linkend="pg-stat-activity-view">,
+        and a <structfield>backend_xmin</> column to
+        <xref linkend="pg-stat-replication-view"> (Christian Kruse)
        </para>
       </listitem>
 
 
        <para>
         This allows use of Elliptic Curve keys for server authentication.
-        Such keys are faster and have improved security over <acronym>RSA</> keys.
-        The new configuration parameter
-        <link linkend="guc-ssl-ecdh-curve"><varname>ssl_ecdh_curve</></link>
+        Such keys are faster and have better security than <acronym>RSA</>
+        keys. The new configuration parameter
+        <xref linkend="guc-ssl-ecdh-curve">
         controls which curve is used for <acronym>ECDH</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve the default <link
-        linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> value
+        Improve the default <xref linkend="guc-ssl-ciphers"> setting
         (Marko Kreen)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow the server to specify the preferred <acronym>SSL</> cipher
-        order (Marko Kreen)
+        By default, the server not the client now controls the preference
+        order of <acronym>SSL</> ciphers
+        (Marko Kreen)
+       </para>
+
+       <para>
+        Previously, the order specified by <xref linkend="guc-ssl-ciphers">
+        was usually ignored in favor of client-side defaults, which are not
+        configurable in most <productname>PostgreSQL</> clients.  If
+        desired, the old behavior can be restored via the new configuration
+        parameter <xref linkend="guc-ssl-prefer-server-ciphers">.
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        This is controlled by the new configuration parameter <link
-        linkend="guc-ssl-prefer-server-ciphers"><varname>ssl_prefer_server_ciphers</></link>.
+        Make <xref linkend="guc-log-connections"> show <acronym>SSL</>
+        encryption information (Andreas Kunert)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link
-        linkend="guc-log-connections"><varname>log_connections</></link>
-        show <acronym>SSL</> encryption information (Andreas Kunert)
+        Improve <acronym>SSL</> renegotiation handling (&Aacute;lvaro
+        Herrera)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <acronym>SQL</>-level <link
-        linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></link> command
-        to adjust server-wide settings (Amit Kapila)
+        Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
+        for updating <filename>postgresql.conf</> configuration file entries
+        (Amit Kapila)
        </para>
 
        <para>
-        Previously such settings could only be changed by
-        editing <filename>postgresql.conf</> at the file system level.
+        Previously such settings could only be changed by manually
+        editing <filename>postgresql.conf</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link linkend="guc-huge-pages"><varname>huge_pages</></link>
-        configuration parameter to use huge memory pages on Linux
-        (Christian Kruse, Richard Poole, Abhijit Menon-Sen)
-       </para>
-
-       <para>
-        This can improve performance on large memory systems.
+        Add <xref linkend="guc-autovacuum-work-mem"> configuration parameter
+        to control the amount of memory used by autovacuum workers
+        (Peter Geoghegan)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Show <acronym>PID</>s of lock holders and
-        waiters and improve relation information in <link
-        linkend="guc-log-lock-waits"><varname>log_lock_waits</></link>
-        log messages (Christian Kruse)
+        Add <xref linkend="guc-huge-pages"> parameter to allow using huge
+        memory pages on Linux (Christian Kruse, Richard Poole, Abhijit
+        Menon-Sen)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Add parameter <link
-        linkend="guc-autovacuum-work-mem"><varname>autovacuum_work_mem</></link>
-        to control the amount of memory used by autovacuum workers
-        (Peter Geoghegan)
+        This can improve performance on large-memory systems.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link
-        linkend="guc-max-worker-processes"><varname>max_worker_processes</></link>
+        Add <xref linkend="guc-max-worker-processes"> parameter
         to limit the number of background workers (Robert Haas)
        </para>
 
        <para>
-        This is helpful in configuring the standby server to have the
-        required same number of worker processes as the primary.
+        This is helpful in configuring a standby server to have the
+        required number of worker processes (the same as the primary).
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add configuration parameter <link
-        linkend="guc-wal-log-hints"><varname>wal_log_hints</></link>
-        to enable logging of hint bits (Sawada Masahiko)
+        Add superuser-only <xref linkend="guc-session-preload-libraries">
+        parameter to load libraries at session start (Peter Eisentraut)
        </para>
 
        <para>
-        Hint bits are not normally logged, except when checksums are enabled.
-        This is useful for external tools like <application>pg_rewind</>.
+        In contrast to <xref linkend="guc-local-preload-libraries">, this
+        parameter can load any shared library, not just those in
+        the <filename>$libdir/plugins</> directory.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <function>printf</function>-style space padding to be specified in <link
-        linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
-        (David Rowley)
+        Add <xref linkend="guc-wal-log-hints"> parameter to enable WAL
+        logging of hint-bit changes (Sawada Masahiko)
+       </para>
+
+       <para>
+        Hint bit changes are not normally logged, except when checksums are
+        enabled.  This is useful for external tools
+        like <application>pg_rewind</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add superuser-only <link
-        linkend="guc-session-preload-libraries"><varname>session_preload_libraries</></link>
-        configuration parameter to load libraries at session start
-        (Peter Eisentraut)
+        Increase the default settings of <xref linkend="guc-work-mem">
+        and <xref linkend="guc-maintenance-work-mem"> by four times (Bruce
+        Momjian)
        </para>
 
        <para>
-        In contrast
-        to <link linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
-        this parameter can load any shared library, not just those in
-        the <filename>$libdir/plugins</> directory.
+        The new defaults are 4MB and 64MB respectively.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Reduce server logging level when loading shared libraries (Peter
-        Geoghegan)
+        Increase the default setting of <xref
+        linkend="guc-effective-cache-size">
+        to 4GB (Bruce Momjian, Tom Lane)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        The previous level was <literal>LOG</>, which was too verbose
-        for per-session libraries.
+        Allow <function>printf</function>-style space padding to be
+        specified in <xref linkend="guc-log-line-prefix"> (David Rowley)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Increase <link
-        linkend="guc-work-mem"><varname>work_mem</></link> and <link
-        linkend="guc-maintenance-work-mem"><varname>maintenance_work_mem</></link>
-        defaults by four times (Bruce Momjian)
+        Allow terabyte units (<literal>TB</>) to be used when specifying
+        configuration variable values (Simon Riggs)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        The new defaults are 4MB and 64MB respectively.
+        Show <acronym>PID</>s of lock holders and waiters and improve
+        information about relations in <xref linkend="guc-log-lock-waits">
+        log messages (Christian Kruse)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Increase the default setting of <link
-        linkend="guc-effective-cache-size"><varname>effective_cache_size</></link>
-        to 4GB (Bruce Momjian, Tom Lane)
+        Reduce server logging level when loading shared libraries (Peter
+        Geoghegan)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Allow terabyte units to be specified for configuration variable
-        values (Simon Riggs)
+        The previous level was <literal>LOG</>, which was too verbose
+        for per-session libraries.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have Windows <literal>SQL_ASCII</>-encoded databases and server
-        process (e.g.  <link linkend="app-postmaster">postmaster</>) emit
-        messages in the character encoding of the server's Windows user locale
+        On Windows, make <literal>SQL_ASCII</>-encoded databases and server
+        processes (e.g., <xref linkend="app-postmaster">) emit messages in
+        the character encoding of the server's Windows user locale
         (Alexander Law, Noah Misch)
        </para>
 
 
      <itemizedlist>
 
+      <listitem>
+       <para>
+        Add <link linkend="streaming-replication-slots">replication
+        slots</link> to coordinate activity on streaming standbys with the
+        node they are streaming from (Andres Freund, Robert Haas)
+       </para>
+
+       <para>
+        Replication slots allow preservation of resources like
+        <acronym>WAL</> files on the primary until they are no longer
+        needed by standby servers.
+       </para>
+      </listitem>
+
       <listitem>
        <para>
         Add <link linkend="recovery-config"><filename>recovery.conf</></link>
-        parameter <link linkend="recovery-min-apply-delay"><varname>recovery_min_apply_delay</></link>
+        parameter <xref linkend="recovery-min-apply-delay">
         to delay replication (Robert Haas, Fabr&iacute;zio de Royes Mello,
         Simon Riggs)
        </para>
 
        <para>
-        This is useful for delaying the replay of user errors on standby
-        servers.
+        Delaying replay on standby servers can be useful for recovering
+        from user errors.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link
-        linkend="recovery-target"><varname>recovery_target</></link>
+        Add <xref linkend="recovery-target">
         option <option>immediate</> to stop <link
         linkend="wal"><acronym>WAL</></link> recovery as soon as a
         consistent state is reached (MauMau, Heikki Linnakangas)
        <para>
         The timestamp reported
         by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
-        now shows information about already-committed records, not of transactions
-        about to be committed. Recovering to a restore point now replays the
-        restore point, rather than stopping just before the restore point.
+        now reflects already-committed records, not transactions about to
+        be committed. Recovering to a restore point now replays the restore
+        point, rather than stopping just before the restore point.
        </para>
       </listitem>
 
        <para>
         <link
         linkend="functions-admin-backup-table"><function>pg_switch_xlog()</></link>
-        now clears the trailing unused space in the <acronym>WAL</> file
+        now clears any unused trailing space in the old <acronym>WAL</> file
         (Heikki Linnakangas)
        </para>
 
 
       <listitem>
        <para>
-        Add <link linkend="streaming-replication-slots">replication
-        slots</link> to coordinate activity on streaming standbys with the
-        node they are streaming from (Andres Freund, Robert Haas)
-       </para>
-
-       <para>
-        Replication slots allow preservation of resources like
-        <acronym>WAL</> files on the primary that are needed by standby
-        servers.
+        Report failure return codes from <link
+        linkend="archive-recovery-settings">external recovery commands</>
+        (Peter Eisentraut)
        </para>
       </listitem>
 
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Report failure return codes from <link
-        linkend="archive-recovery-settings">external recovery commands</>
-        (Peter Eisentraut)
-       </para>
-      </listitem>
-
       <listitem>
        <para>
         Write <acronym>WAL</> records of running transactions more
        </para>
 
        <para>
-        This allows standby servers to start faster and cleanup resources
+        This allows standby servers to start faster and clean up resources
         more aggressively.
        </para>
       </listitem>
       <title><link linkend="logicaldecoding">Logical Decoding</></title>
 
       <para>
-       Logical decoding allows database changes to be optionally streamed in a
+       Logical decoding allows database changes to be streamed in a
        configurable format. The data is read from
        the <link linkend="wal"><acronym>WAL</></link> and transformed into the
        desired target format. To implement this feature, the following changes
       </para>
 
       <itemizedlist>
-       <!-- FIXME: This imo needs a pretty fundamental rewrite -->
-       <listitem>
-        <para>
-         Add new <option>logical</> <link
-         linkend="guc-wal-level"><varname>wal_level</></link> to enable
-         logical change-set encoding in <acronym>WAL</> (Andres Freund)
-        </para>
 
+       <listitem>
         <para>
-         This interacts with <link
-         linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>.
+         Add support for <link linkend="logicaldecoding">logical decoding</>
+         of WAL data, to allow database changes to be streamed out in a
+         customizable format
+         (Andres Freund)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Allow <link
-         linkend="app-pgrecvlogical"><application>pg_recvlogical</></link>
-         to receive logical decoding data (Andres Freund)
+         Add new <xref linkend="guc-wal-level"> setting <option>logical</>
+         to enable logical change-set encoding in <acronym>WAL</> (Andres
+         Freund)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Add <link
-         linkend="test-decoding"><application>test_decoding</></link>
-         module to illustrate logical decoding at the <acronym>SQL</>
-         level (Andres Freund)
+         Add table-level parameter <link
+         linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>
+         to control logical replication (Andres Freund)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Allow logical decoding via the walsender interface ? (Andres
-         Freund)
+         Add relation option <link
+         linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link>
+         to identify user-created tables involved in logical change-set
+         encoding (Andres Freund)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Add table-level parameter <link
-         linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>
-         to control logical replication (Andres Freund)
+         Add <xref linkend="app-pgrecvlogical"> application to receive
+         logical-decoding data (Andres Freund)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Add relation option <link
-         linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link>
-         to identify user-created tables involved in logical change-set
-         encoding (Andres Freund)
+         Add <xref linkend="test-decoding"> module to illustrate logical
+         decoding at the <acronym>SQL</> level (Andres Freund)
         </para>
        </listitem>
 
 
      <itemizedlist>
 
-      <listitem>
-       <para>
-        Add <link linkend="queries-tablefunctions"><literal>ROWS
-        FROM()</></link> syntax to allow horizontal concatenation of
-        set-returning functions in the <literal>FROM</>-clause (Andrew Gierth)
-       </para>
-      </listitem>
-
       <listitem>
        <para>
         Add <link linkend="queries-tablefunctions"><literal>WITH
         ORDINALITY</></link> syntax to number rows returned from
-        <literal>FROM</>-clause functions (Andrew Gierth, David Fetter)
+        set-returning functions in the <literal>FROM</> clause
+        (Andrew Gierth, David Fetter)
        </para>
 
        <para>
 
       <listitem>
        <para>
-        Allow <link linkend="SQL-SELECT"><command>SELECT</></link> with
+        Add <link linkend="queries-tablefunctions"><literal>ROWS
+        FROM()</></link> syntax to allow horizontal concatenation of
+        set-returning functions in the <literal>FROM</> clause (Andrew Gierth)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow <xref linkend="SQL-SELECT"> to have
         an empty target list (Tom Lane)
        </para>
 
        <para>
-        This was added so views that select from a table with zero columns
-        can be dumped correctly.
+        This was added so that views that select from a table with zero
+        columns can be dumped and restored correctly.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add <link linkend="SQL-DISCARD"><command>DISCARD
-        SEQUENCES</></link> command to discard cached sequence information
+        SEQUENCES</></link> command to discard cached sequence-related state
         (Fabr&iacute;zio de Royes Mello, Robert Haas)
        </para>
 
 
        <listitem>
         <para>
-         Add <command>FORCE NULL</> option
-         to <link linkend="SQL-COPY"><command>COPY FROM</></link> which causes
-         quoted strings matching the null string to be converted to NULL in
-         <literal>CSV</> mode (Ian Barwick, Michael Paquier)
+         Add <literal>FORCE NULL</> option
+         to <link linkend="SQL-COPY"><command>COPY FROM</></link>, which
+         causes quoted strings matching the specified null string to be
+         converted to NULLs in <literal>CSV</> mode (Ian Barwick, Michael
+         Paquier)
         </para>
 
         <para>
-         Previously only unquoted matching strings would be imported
+         Without this option, only unquoted matching strings will be imported
          as null values.
         </para>
        </listitem>
       <listitem>
        <para>
         Issue warnings for commands used outside of transaction blocks
-        because they have no effect (Bruce Momjian)
+        when they can have no effect (Bruce Momjian)
        </para>
 
        <para>
-        The cases are <literal>SET
-        LOCAL</>, <literal>SET CONSTRAINTS</>, <literal>SET TRANSACTION</> and
-        <literal>ABORT</>.
+        New warnings are issued for <command>SET
+        LOCAL</>, <command>SET CONSTRAINTS</>, <command>SET TRANSACTION</> and
+        <command>ABORT</> when used outside a transaction block.
        </para>
       </listitem>
 
      </itemizedlist>
 
      <sect4>
-      <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
+      <title><xref linkend="SQL-EXPLAIN"></title>
 
       <itemizedlist>
 
        <listitem>
         <para>
-         Have <command>EXPLAIN ANALYZE</> output planning time (Andreas
+         Make <command>EXPLAIN ANALYZE</> show planning time (Andreas
          Karlsson)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Have <command>EXPLAIN</> print the grouping columns in Agg and
+         Make <command>EXPLAIN</> show the grouping columns in Agg and
          Group nodes (Tom Lane)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Have <command>EXPLAIN ANALYZE</> show bitmap heap scan exact/lossy
-         block information (Etsuro Fujita)
+         Make <command>EXPLAIN ANALYZE</> show exact and lossy
+         block counts in bitmap heap scans (Etsuro Fujita)
         </para>
        </listitem>
 
 
       <listitem>
        <para>
-        Allow materialized views to be refreshed without blocking reads
-         (Kevin Grittner)
+        Allow <link linkend="rules-materializedviews">materialized views</>
+        to be refreshed without blocking reads
+        (Kevin Grittner)
        </para>
 
        <para>
        </para>
 
        <para>
-        Previously the presence of non-updatable columns such as
+        Previously the presence of non-updatable output columns such as
         expressions, literals, and function calls prevented automatic
         updates.  Now <command>INSERT</>s, <command>UPDATE</>s and
         <command>DELETE</>s are supported, provided that they do not
        <para>
         Allow control over whether <command>INSERT</>s and
         <command>UPDATE</>s can add rows to an auto-updatable view that
-        would no longer appear in the view (Dean Rasheed)
+        would not appear in the view (Dean Rasheed)
        </para>
 
        <para>
-        This is controlled with the new <link
-        linkend="SQL-CREATEVIEW"><literal>WITH CHECK OPTION</></link>.
+        This is controlled with the new <xref linkend="SQL-CREATEVIEW">
+        clause <literal>WITH CHECK OPTION</>.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Allow triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign
+        Support triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign
         tables</> (Ronan Dunklau)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix <command>DROP IF EXISTS</> to more consistently not error
-        for non-existent objects (Pavel Stehule,  Dean Rasheed)
+        Allow moving groups of objects from one tablespace to another
+        using <xref linkend="SQL-ALTERTABLESPACE"> ... <literal>MOVE</>
+        (Stephen Frost)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve how system-level relations are designated (Andres Freund,
-        Robert Haas)
+        Allow changing foreign key constraint deferrability
+        via <xref linkend="SQL-ALTERTABLE"> ... <literal>ALTER
+        CONSTRAINT</> (Simon Riggs)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        Previously, relations once moved into the system catalog schema could
-        no longer be modified or dropped.
+        Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
+        commands
+        (Simon Riggs, Noah Misch, Robert Haas)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Allow <link linkend="SQL-ALTERTABLESPACE"><command>ALTER
-        TABLESPACE</></link> options to be also set by <link
-        linkend="SQL-CREATETABLESPACE"><command>CREATE TABLESPACE</></link>
-        (Vik Fearing)
+        Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER
+        ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
+        SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
+        <option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
+        <option>(attribute_option)</> no longer require <literal>ACCESS
+        EXCLUSIVE</> locks.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <link linkend="SQL-CREATEAGGREGATE"><command>CREATE
-        AGGREGATE</></link> to supply the size of the aggregate's
-        transition state data (Hadi Moshayedi)
+        Allow tablespace options to be set
+        in <xref linkend="SQL-CREATETABLESPACE"> (Vik Fearing)
        </para>
 
        <para>
-        This allows the optimizer to better estimate how much memory will be
-        used by aggregates.
+        Formerly these options could only be set
+        via <xref linkend="SQL-ALTERTABLESPACE">.
        </para>
       </listitem>
 
-     </itemizedlist>
-
-    <sect4>
-     <title><command>ALTER</></title>
-
-     <itemizedlist>
-
       <listitem>
        <para>
-        Allow moving groups of objects from one tablespace to another
-        using <link linkend="SQL-ALTERTABLESPACE"><command>ALTER
-        TABLESPACE</></link> ... <literal>MOVE</> (Stephen Frost)
+        Allow <xref linkend="SQL-CREATEAGGREGATE"> to define the estimated
+        size of the aggregate's transition state data (Hadi Moshayedi)
+       </para>
+
+       <para>
+        Proper use of this feature allows the planner to better estimate
+        how much memory will be used by aggregates.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow changing foreign key constraint deferrability via <link
-        linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link>
-        ... <literal>ALTER CONSTRAINT</> (Simon Riggs)
+        Fix <command>DROP IF EXISTS</> to avoid errors for non-existent
+        objects in more cases (Pavel Stehule, Dean Rasheed)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Reduce lock levels of some <link
-        linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link> commands
-        (Simon Riggs, Noah Misch, Robert Haas)
+        Improve how system relations are identified (Andres Freund,
+        Robert Haas)
        </para>
 
        <para>
-        Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER
-        ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
-        SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
-        <option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
-        <option>(attribute_option)</> no longer require <literal>ACCESS
-        EXCLUSIVE</> locks.
+        Previously, relations once moved into the <literal>pg_catalog</>
+        schema could no longer be modified or dropped.
        </para>
       </listitem>
 
      </itemizedlist>
 
-    </sect4>
-
    </sect3>
 
    <sect3>
 
        <para>
         The line <emphasis>segment</> data type (<link
-        linkend="datatype-lseg"><type>LSEG</></link>) has always been
+        linkend="datatype-lseg"><type>lseg</></link>) has always been
         fully supported.  The previous <type>line</> data type (enabled
         only via a compile-time option) is not binary or dump-compatible.
        </para>
 
       <listitem>
        <para>
-        Add <link linkend="datatype-pg-lsn"><type>PG_LSN</></link>
+        Add <link linkend="datatype-pg-lsn"><type>pg_lsn</></link>
         data type to represent a <acronym>WAL</> log sequence number
         (<acronym>LSN</>) (Robert Haas, Michael Paquier)
        </para>
       <listitem>
        <para>
         Allow single-point <link
-        linkend="datatype-polygon"><type>POLYGON</></link>s to be converted
-        to <link linkend="datatype-circle"><type>CIRCLE</></link>s
+        linkend="datatype-polygon"><type>polygon</></link>s to be converted
+        to <link linkend="datatype-circle"><type>circle</></link>s
         (Bruce Momjian)
        </para>
       </listitem>
       <listitem>
        <para>
         Allow 5+ digit years for non-<acronym>ISO</> <link
-        linkend="datatype-datetime"><type>TIMESTAMP</></link> and
-        <type>DATE</> strings, where appropriate (Bruce Momjian)
+        linkend="datatype-datetime"><type>timestamp</></link> and
+        <type>date</> strings, where appropriate (Bruce Momjian)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add checks for overflow/underflow of <link
-        linkend="datatype-datetime"><type>INTERVAL</></link> values
+        linkend="datatype-datetime"><type>interval</></link> values
         (Bruce Momjian)
        </para>
       </listitem>
     </itemizedlist>
 
     <sect4>
-     <title><link linkend="datatype-json"><type>JSON</></link></title>
+     <title><link linkend="datatype-json"><acronym>JSON</></link></title>
 
      <itemizedlist>
 
        <listitem>
         <para>
-         Add structured (non-text) data type (<link
-         linkend="datatype-json"><type>jsonb</></link>) for storing
-         JSON data (Oleg Bartunov, Teodor Sigaev, Alexander
-         Korotkov, Peter Geoghegan, and Andrew Dunstan)
+         Add <link linkend="datatype-json"><type>jsonb</></link>, a more
+         capable and efficient data type for for storing <acronym>JSON</> data
+         (Oleg Bartunov, Teodor Sigaev, Alexander
+         Korotkov, Peter Geoghegan, Andrew Dunstan)
         </para>
 
         <para>
-         This allows for faster access to values in the JSON
-         document and faster and more useful indexing of JSON.
-         Scalar values in <type>jsonb</> documents are typed as appropriate
-         scalar SQL types.
+         This new type allows faster access to values in a JSON
+         document and faster and more useful indexing of JSON columns.
+         Scalar values in <type>jsonb</> documents are stored as appropriate
+         scalar SQL types, and the JSON document structure is pre-parsed
+         rather than being stored as text as in the original <type>json</>
+         data type.
         </para>
        </listitem>
 
 
    </sect3>
 
-
    <sect3>
     <title>Functions</title>
 
        <para>
         Add <link
         linkend="functions-datetime-delay"><function>pg_sleep_for(interval)</></link>
-        and <function>pg_sleep_until(timestamp)</> to specify sophisticated
-        delays (Vik Fearing, Julien Rouhaud)
+        and <function>pg_sleep_until(timestamp)</> to specify
+        delays more flexibly (Vik Fearing, Julien Rouhaud)
        </para>
 
        <para>
-        <function>pg_sleep()</> only supports delays specified in seconds.
+        The existing <function>pg_sleep()</> function only supports delays
+        specified in seconds.
        </para>
       </listitem>
 
        </para>
 
        <para>
-        These functions are prefixed with <literal>make_</>,
+        These functions' names are prefixed with <literal>make_</>,
         e.g. <link linkend="functions-datetime-table"><function>make_date()</></link>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link
-        linkend="functions-formatting-table"><function>to_char(<literal>TZ</>)</></link>
-        return the proper value for constant time zone offsets (Tom Lane)
+        Make <link
+        linkend="functions-formatting-table"><function>to_char()</></link>'s
+        <literal>TZ</> format specifier return a useful value for simple
+        numeric time zone offsets (Tom Lane)
        </para>
 
        <para>
         Previously, <literal>to_char(CURRENT_TIMESTAMP, 'TZ')</> returned
-        NULL if the <literal>TIME ZONE</> was set to a constant like
-        <literal>-4</>.
+        an empty string if the <literal>timezone</> was set to a constant
+        like <literal>-4</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add timezone offset output option <literal>OF</> to <link
+        Add timezone offset format specifier <literal>OF</> to <link
         linkend="functions-formatting-table"><function>to_char()</></link>
         (Bruce Momjian)
        </para>
        </para>
       </listitem>
 
+      <listitem>
+       <para>
+        Tighten validity checking for Unicode code points in <link
+        linkend="functions-string-other"><function>chr(int)</></link>
+        (Tom Lane)
+       </para>
+
+       <para>
+        This function now only accepts values that are valid UTF8 characters
+        according to RFC 3629.
+       </para>
+      </listitem>
+
      </itemizedlist>
 
     <sect4>
        <para>
         Add functions for looking up objects in <structname>pg_class</>,
         <structname>pg_proc</>, <structname>pg_type</>, and
-        <structname>pg_operator</> which do not generate errors for
+        <structname>pg_operator</> that do not generate errors for
         non-existent objects (Yugo Nagata, Nozomi Anzai,
         Robert Haas)
        </para>
        <para>
         For example, <link
         linkend="functions-info-catalog-table"><function>to_regclass()</></link>
-        does lookups of <structname>pg_class</> and returns NULL for
-        non-existent objects.
+        does a lookup in <structname>pg_class</> similarly to
+        the <type>regclass</> input function, but it returns NULL for a
+        non-existent object instead of failing.
        </para>
       </listitem>
 
        <para>
         Add function <link
         linkend="functions-admin-dblocation"><function>pg_filenode_relation()</></link>
-        to allow for more efficient lookup of relation names from filenodes (Andres
-        Freund)
+        to allow for more efficient lookup of relation names from filenodes
+        (Andres Freund)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link
-        linkend="information-schema"><structname>information_schema</></link>
-        column <link
-        linkend="infoschema-parameters"><structfield>parameters.parameter_default</></link>
-        (Peter Eisentraut)
+        Add <structfield>parameter_default</> column to <link
+        linkend="infoschema-parameters"><structname>information_schema.parameters</></link>
+        view (Peter Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link
-        linkend="infoschema-schemata"><structfield>information_schema.schemata</></link>
-        show all accessible schema (Peter Eisentraut)
+        Make <link
+        linkend="infoschema-schemata"><structname>information_schema.schemata</></link>
+        show all accessible schemas (Peter Eisentraut)
        </para>
 
        <para>
-        Previously it only showed <emphasis>owned</> schemas.
+        Previously it only showed schemas owned by the current user.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add aggregates <link
-        linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
-        <function>percentile_disc()</>, <link
-        linkend="functions-hypothetical-table"><function>rank()</></link>,
-        <function>dense_rank()</>, <function>percent_rank()</>,
-        <function>cume_dist()</>, and <link
-        linkend="functions-orderedset-table"><function>mode()</></link>
-        (Atri Sharma, Andrew Gierth)
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Add control over which values are passed
+        Add control over which rows are passed
         into aggregate functions using the <link
         linkend="syntax-aggregates"><literal>FILTER</></link> clause
         (David Fetter)
         linkend="syntax-aggregates"><literal>WITHIN GROUP</></link>)
         aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
        </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Add aggregates <link
+        linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
+        <function>percentile_disc()</>, <function>mode()</>, <link
+        linkend="functions-hypothetical-table"><function>rank()</></link>,
+        <function>dense_rank()</>, <function>percent_rank()</>, and
+        <function>cume_dist()</>
+        (Atri Sharma, Andrew Gierth)
+       </para>
+      </listitem>
 
+      <listitem>
        <para>
-        This allows aggregates that require sorted input.
+        Support <link
+        linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
+        aggregate functions (Tom Lane)
        </para>
       </listitem>
 
         types (Tom Lane)
        </para>
        <para>
-        This allows the declaration of aggregates like the built-in
+        This allows proper declaration of aggregates like the built-in
         aggregate <function>array_agg()</> in SQL.
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Allow <link
-        linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
-        aggregate functions (Tom Lane)
-       </para>
-      </listitem>
-
      </itemizedlist>
 
     </sect4>
 
      <listitem>
       <para>
-       Convert <link linkend="datatype-numeric"><type>NUMERIC</></link>s to
-       <type>decimal</> values in <link linkend="plpython">PL/Python</link>
+       Convert <link linkend="datatype-numeric"><type>numeric</></link>
+       values to <type>decimal</> in <link linkend="plpython">PL/Python</link>
        (Szymon Guz, Ronan Dunklau)
       </para>
 
       <para>
-       Previously these were converted to <type>float</>s.
+       Previously such values were converted to Python <type>float</> values,
+       risking loss of precision.
       </para>
      </listitem>
 
        <para>
         Make libpq's <link
         linkend="libpq-pqconndefaults"><function>PQconndefaults()</></link>
-        ignore invalid service files (Steve Singer, Bruce Momjian)
+        function ignore invalid service files (Steve Singer, Bruce Momjian)
        </para>
 
        <para>
-        Previously it returned NULL.
+        Previously it returned NULL if an incorrect service file was
+        encountered.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow libpq to support <acronym>TLS</> versions beyond
-        <literal>TLSv1</> (Marko Kreen)
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Document that libpq's <link
-        linkend="libpq-pqclientencoding"><function>PQclientEncoding()</></link>
-        returns <literal>-1</> for an encoding lookup failure (Bruce
-        Momjian)
+        Accept <acronym>TLS</> protocol versions beyond <literal>TLSv1</>
+        in libpq (Marko Kreen)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <link
-        linkend="APP-CREATEUSER"><application>createuser</></link>
-        <option>-g</> to specify role membership (Chistopher Browne)
+        Add <xref linkend="APP-CREATEUSER"> option <option>-g</>
+        to specify role membership (Chistopher Browne)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
+        Add <xref linkend="APP-VACUUMDB">
         option <option>--analyze-in-stages</> to analyze in stages of
         increasing granularity (Peter Eisentraut)
        </para>
 
       <listitem>
        <para>
-        Allow <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
-        to report a live log stream with <option>--follow</> (Heikki
-        Linnakangas)
+        Make <xref linkend="APP-PGRESETXLOG"> with option <option>-n</>
+        output current and potentially changed values (Rajeev Rastogi)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link linkend="APP-PGRESETXLOG"><command>pg_resetxlog
-        -n</></link> output current and potentially changed values
-        (Rajeev Rastogi)
+        Make <xref linkend="app-initdb"> throw error for incorrect locale
+        settings, rather than silently falling back to a default choice
+        (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
-        C array definitions (Michael Meskes)
+        Make <xref linkend="app-pg-ctl"> return exit code <literal>4</> for
+        an inaccessible data directory (Amit Kapila, Bruce Momjian)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Have <link linkend="ecpg">ECPG</link> properly handle nesting
-        requirements in C and <acronym>SQL</> mode for C-style comments
-        (Michael Meskes)
+        This behavior more closely matches the Linux Standard Base
+        (<acronym>LSB</>) Core Specification.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link linkend="app-pg-ctl"><application>pg_ctl</></link>
-        return <literal>4</> for an inaccessible data directory
-        specification (Amit Kapila, Bruce Momjian)
+        On Windows, ensure that a non-absolute <option>-D</> path
+        specification is interpreted relative
+        to <xref linkend="app-pg-ctl">'s current directory
+        (Kumar Rajeev Rastogi)
+       </para>
+
+       <para>
+        Previously it would be interpreted relative to whichever directory
+        the underlying Windows service was started in.
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        This more closely matches the Linux Standard Base (<acronym>LSB</>)
-        Core Specification.
+        Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
+        C array definitions (Michael Meskes)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        On Windows, interpret <link
-        linkend="app-pg-ctl"><application>pg_ctl</></link>'s non-absolute
-        path <option>-D</> directories relative to <application>pg_ctl</>'s
-        current directory (Kumar Rajeev Rastogi)
+        Make <link linkend="ecpg">ECPG</link> properly handle nesting
+        of C-style comments in both C and <acronym>SQL</> text
+        (Michael Meskes)
        </para>
       </listitem>
 
     </itemizedlist>
 
     <sect4>
-     <title><link linkend="APP-PSQL"><application>psql</></link></title>
+     <title><xref linkend="APP-PSQL"></title>
 
      <itemizedlist>
 
 
       <listitem>
        <para>
-        Suppress "No rows" in <application>psql</> <link
+        Suppress <quote>No rows</quote> output in <application>psql</> <link
         linkend="APP-PSQL-meta-commands"><option>expanded</></link>
         mode when the footer is disabled (Bruce Momjian)
        </para>
 
       <listitem>
        <para>
-        Allow Control-C to abort <application>psql</> hung at connection
+        Allow Control-C to abort <application>psql</> when hung at connection
         startup (Peter Eisentraut)
        </para>
       </listitem>
 
        <listitem>
         <para>
-         Have <application>psql</> <command>\db+</> show tablespace options
+         Make <application>psql</> <command>\db+</> show tablespace options
          (Magnus Hagander)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Have <application>psql</> <command>\do+</> display the functions
+         Make <application>psql</> <command>\do+</> display the functions
          which implement the operators (Marko Tiikkaja)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Have <application>psql</> <command>\d+</> output an
-         <literal>OID</> line only if an <literal>oid</literal> column exists in a table
-         (Bruce Momjian)
+         Make <application>psql</> <command>\d+</> output an
+         <literal>OID</> line only if an <literal>oid</literal> column
+         exists in a table (Bruce Momjian)
         </para>
 
         <para>
-         Previously, the presence or absence of an <literal>oid</literal> column was always
-         reported.
+         Previously, the presence or absence of an <literal>oid</literal>
+         column was always reported.
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Have <command>\d</> show disabled system triggers (Bruce
+         Make <command>\d</> show disabled system triggers (Bruce
          Momjian)
         </para>
 
         <para>
-         Previously if you disabled all triggers, only user triggers
+         Previously, if you disabled all triggers, only user triggers
          would show as disabled.
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Output the row count at the end of
-         <application>psql</> <command>\copy</> just like <link
-         linkend="SQL-COPY"><command>COPY</></link> (Kumar Rajeev Rastogi)
+         Output the row count at the end
+         of <application>psql</> <command>\copy</> just
+         like <xref linkend="SQL-COPY"> (Kumar Rajeev Rastogi)
         </para>
        </listitem>
 
 
        <listitem>
         <para>
-         In <application>psql</>, output the written history file name
-         (<command>\s</>) without adding an absolute path prefix (Tom Lane)
+         In <application>psql</>, display the history file name written by
+         <command>\s</> without converting it to an absolute path (Tom Lane)
         </para>
 
         <para>
-         The previous output was inconsistent.
+         The code previously attempted to convert a relative file name to
+         an absolute path for display, but frequently got it wrong.
         </para>
        </listitem>
 
     </sect4>
 
     <sect4>
-     <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
+     <title><xref linkend="APP-PGDUMP"></title>
 
      <itemizedlist>
 
       <listitem>
        <para>
-        Allow <link
-        linkend="APP-PGRESTORE"><application>pg_restore</></link> options
+        Allow <xref linkend="APP-PGRESTORE"> options
         <option>-I</>, <option>-P</>, <option>-T</> and <option>-n</>
         to be specified multiple times (Heikki Linnakangas)
        </para>
 
        <para>
-        This allows multiple restore object to be specified.
+        This allows multiple objects to be restored in one operation.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <literal>IF EXISTS</> clauses when removing old objects during
-        dump and restore (Pavel Stehule)
+        Optionally add <literal>IF EXISTS</> clauses to the <command>DROP</>
+        commands emitted when removing old objects during a restore (Pavel
+        Stehule)
        </para>
 
        <para>
-        This suppresses errors when removing old objects.
-        The new <option>--if-exists</> option to <link
-        linkend="APP-PGDUMP"><application>pg_dump</></link>, <link
-        linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, and
-        <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
-        is only available when <option>--clean</> is also specified.
+        This change prevents unnecessary errors when removing old objects.
+        The new <option>--if-exists</> option
+        for <xref linkend="APP-PGDUMP">, <xref linkend="APP-PG-DUMPALL">,
+        and <xref linkend="APP-PGRESTORE"> is only available
+        when <option>--clean</> is also specified.
        </para>
       </listitem>
 
     </sect4>
 
     <sect4>
-     <title><link linkend="app-pgbasebackup"><application>pg_basebackup</></link></title>
+     <title><xref linkend="app-pgbasebackup"></title>
 
      <itemizedlist>
 
 
       <listitem>
        <para>
-        Allow network-streams base backups to be throttled (Antonin Houska)
+        Allow network-stream base backups to be throttled (Antonin Houska)
        </para>
 
        <para>
 
       <listitem>
        <para>
-        Improve the way tuples are frozen, to preserve forensic information
+        Improve the way tuples are frozen to preserve forensic information
         (Robert Haas, Andres Freund)
        </para>
 
        <para>
-        Code that inspects tuple flag bits will need to be modified.
+        This change removes the main objection to freezing tuples as soon
+        as possible.  Code that inspects tuple flag bits will need to be
+        modified.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        No longer require function prototypes for function marked with the
+        No longer require function prototypes for functions marked with the
         <link linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</></link>
         macro (Peter Eisentraut)
        </para>
 
        <para>
-        This eliminates needless boilerplate prototypes whose lack
-        generates compiler warnings.
+        This change eliminates the need to write boilerplate prototypes.
+        Note that the <function>PG_FUNCTION_INFO_V1</> macro must appear
+        before the corresponding function definition to avoid compiler
+        warnings.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <acronym>API</> for memory allocations over one gigabyte (Noah
-        Misch)
+        Add an <acronym>API</> to allow memory allocations over one gigabyte
+        (Noah Misch)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <function>printf()</> modifier "z" to specify <type>size_t</>
-        values (Andres Freund)
+        Support <function>printf()</> size modifier <literal>z</> to
+        print <type>size_t</> values (Andres Freund)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Reduce the number of semaphores required by
-        <option>--disable-spinlocks</> (Robert Haas)
+        <option>--disable-spinlocks</> builds (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add make targets <option>check-tests</> and
-        <option>installcheck-tests</> which allow per-test specification
-        (Andrew Dunstan)
+        <option>installcheck-tests</>, which allow selection of individual
+        tests to be run (Andrew Dunstan)
        </para>
       </listitem>
 
        </para>
 
        <para>
-        Its functionality is now done by the default build rules.
+        The default build rules now include all the formerly-optional tests.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add configure flag that appends custom text to the
+        Add a <application>configure</> flag that appends custom text to the
         <envar>PG_VERSION</> string (Oskari Saarenmaa)
        </para>
 
 
       <listitem>
        <para>
-        Various security and sanity fixes reported by the
+        Various minor security and sanity fixes reported by the
         <productname>Coverity</> scanner (Stephen Frost)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve <application>Emacs</> configuration file
+        Improve sample <application>Emacs</> configuration file
         <filename>emacs.samples</> (Peter Eisentraut)
        </para>
 
 
       <listitem>
        <para>
-        Allow <application>pgindent</> to be supplied a command-line list
+        Allow <application>pgindent</> to accept a command-line list
         of typedefs (Bruce Momjian)
        </para>
 
        <para>
-        <application>Pgindent</> is also now smarter about blank lines
+        <application>pgindent</> is also now smarter about blank lines
         around preprocessor conditionals.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Avoid most uses of <command>dlltool</command> in <productname>Cygwin</> and
+        Avoid most uses of <command>dlltool</command>
+        in <productname>Cygwin</> and
         <productname>Mingw</> builds (Marco Atzeri, Hiroshi Inoue)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow client-only installs for <acronym>MSVC</> (Windows) builds (MauMau)
+        Support client-only installs in <acronym>MSVC</> (Windows) builds
+        (MauMau)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <link linkend="pgprewarm"><application>pg_prewarm</></link>
-        extension to preload relation data into the shared buffer cache
-        (Robert Haas)
+        Add <xref linkend="pgprewarm"> extension to preload relation data
+        into the shared buffer cache at server start (Robert Haas)
        </para>
 
        <para>
-        This is useful at server start to produce more consistent
-        performance.
+        This allows reaching full operating performance more quickly.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add <acronym>UUID</> random number generator
-        <function>gen_random_uuid()</> to <link
-        linkend="pgcrypto"><application>pgcrypto</></link> (Oskari
-        Saarenmaa)
+        <function>gen_random_uuid()</> to <xref linkend="pgcrypto">
+        (Oskari Saarenmaa)
        </para>
 
        <para>
-        This allows the creation of version 4 <acronym>UUID</>s without
-        requiring the installation of <literal>uuid-ossp</literal>.
+        This allows creation of version 4 <acronym>UUID</>s without
+        requiring installation of <xref linkend="uuid-ossp">.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add option to include trigger execution time to <link
-        linkend="auto-explain"><application>auto_explain</></link>
-        (Horiguchi Kyotaro)
+        Allow <xref linkend="uuid-ossp"> to work with
+        the <systemitem>BSD</> or <systemitem>e2fsprogs</> UUID libraries,
+        not only the <systemitem>OSSP</> UUID library (Matteo Beccati)
+       </para>
+
+       <para>
+        This improves the <application>uuid-ossp</> module's portability
+        since it no longer has to have the increasingly-obsolete OSSP
+        library.  The module's name is now rather a misnomer, but we won't
+        change it.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix <link linkend="pgstattuple"><application>pgstattuple</></link>
-        to not report rows from uncommitted transactions as dead
-        (Robert Haas)
+        Add option to <xref linkend="auto-explain"> to include trigger
+        execution time (Horiguchi Kyotaro)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link linkend="pgstattuple"><application>pgstattuple</></link>
-        functions use <type>regclass</type>-type arguments (Satoshi Nagayasu)
+        Fix <xref linkend="pgstattuple"> to not report rows from
+        uncommitted transactions as dead (Robert Haas)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        While <type>text</type>-type arguments are still supported, they will be
-        removed in a later major release.
+        Make <xref linkend="pgstattuple"> functions
+        use <type>regclass</type>-type arguments (Satoshi Nagayasu)
+       </para>
+
+       <para>
+        While <type>text</type>-type arguments are still supported, they
+        may be removed in a future major release.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve consistency of <link
-        linkend="pgrowlocks"><application>pgrowlocks</></link> output to
-        honor snapshot rules more consistently (Robert Haas)
+        Improve consistency of <xref linkend="pgrowlocks"> output to honor
+        snapshot rules more consistently (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve <link linkend="pgtrgm"><application>pg_trgm</>'s</link>
-        generation of trigrams for indexed regular expression searches by
-        discouraging the indexing of trigrams containing whitespace (Alexander
-        Korotkov)
+        Improve <xref linkend="pgtrgm">'s choice of trigrams for indexed
+        regular expression searches by discouraging the selection of
+        trigrams containing whitespace (Alexander Korotkov)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Store <link linkend="cube"><type>cube</></link> data more compactly
-        (Stas Kelvich)
+        Allow <xref linkend="pgxlogdump"> to report a live log stream
+        with <option>--follow</> (Heikki Linnakangas)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Store <xref linkend="cube"> data more compactly (Stas Kelvich)
        </para>
 
        <para>
 
       <listitem>
        <para>
-        Reduce <link linkend="vacuumlo"><application>vacuumlo</></link>
-        client-side memory usage by using a cursor (Andrew Dunstan)
+        Reduce <xref linkend="vacuumlo"> client-side memory usage by using
+        a cursor (Andrew Dunstan)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Dramatically reduce memory consumption in <link
-        linkend="pgupgrade"><application>pg_upgrade</></link> (Bruce
-        Momjian)
+        Dramatically reduce memory consumption
+        in <xref linkend="pgupgrade"> (Bruce Momjian)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Pass <link linkend="pgupgrade"><application>pg_upgrade</></link>
-        user names (<option>-U</>) to analyze scripts (Bruce Momjian)
+        Pass <xref linkend="pgupgrade"> user name (<option>-U</> option) to
+        analyze scripts (Bruce Momjian)
        </para>
       </listitem>
 
     </itemizedlist>
 
     <sect4>
-     <title><link linkend="pgbench"><application>pgbench</></link></title>
+     <title><xref linkend="pgbench"></title>
 
      <itemizedlist>
 
 
       <listitem>
        <para>
-        Add <application>pgbench</> option (<option>--rate</>) to control
-        the transaction rate (Fabien Coelho)
+        Add long option names to <application>pgbench</> (Fabien Coelho)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <option>--progress</> output option to <application>pgbench</> (Fabien Coelho)
+        Add <application>pgbench</> option <option>--rate</> to control
+        the transaction rate (Fabien Coelho)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add long options to <application>pgbench</> (Fabien Coelho)
+        Add <application>pgbench</> option <option>--progress</> to
+        print periodic progress reports
+        (Fabien Coelho)
        </para>
       </listitem>
 
     </sect4>
 
     <sect4>
-     <title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title>
+     <title><xref linkend="pgstatstatements"></title>
 
      <itemizedlist>
 
       <listitem>
        <para>
-        Have <application>pg_stat_statements</> use a flat file for query
-        text storage (Peter Geoghegan)
+        Make <application>pg_stat_statements</> use a file, rather than
+        shared memory, for query text storage (Peter Geoghegan)
        </para>
 
        <para>
-        This removes the limitation on query text length, and allows a
-        higher default number of unique statements to be tracked.
+        This removes the previous limitation on query text length, and
+        allows a higher number of unique statements to be tracked by default.
        </para>
       </listitem>
 
 
        <para>
         This allows monitoring tools to only fetch query text for newly
-        created entries, as reported in <structfield>queryid</>.
+        created entries, improving performance for repeated querying of the
+        statistics.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Save the statistics file into <filename>$PGDATA/pg_stat</> at server
+        shutdown, rather than <filename>$PGDATA/global</> (Fujii Masao)
        </para>
       </listitem>