]> granicus.if.org Git - postgresql/commitdiff
Make an editorial pass over the 9.2 release notes.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 22 Aug 2012 21:37:02 +0000 (17:37 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 22 Aug 2012 21:37:02 +0000 (17:37 -0400)
A very large number of small improvements ...

doc/src/sgml/datatype.sgml
doc/src/sgml/func.sgml
doc/src/sgml/release-9.2.sgml

index e64e4ea64a44fef26238f3a6d15e18ce1ac718c4..7f6e661adb3af83e9fc67a7ba8d03d727b3e6d92 100644 (file)
@@ -4196,7 +4196,9 @@ SET xmloption TO { DOCUMENT | CONTENT };
    </indexterm>
 
    <para>
-    The <type>json</type> data type can be used to store JSON data.  Such
+    The <type>json</type> data type can be used to store JSON (JavaScript
+    Object Notation) data, as specified in <ulink
+    url="http://www.ietf.org/rfc/rfc4627.txt">RFC 4627</ulink>.  Such
     data can also be stored as <type>text</type>, but the
     <type>json</type> data type has the advantage of checking that each
     stored value is a valid JSON value.  There are also related support
index d5ad4718b156b7bfce26f5047d62d7e4cce085e5..5caf10711ac52a0ddacc9fe37330f604e1c46d7d 100644 (file)
@@ -9620,7 +9620,7 @@ table2-mapping
  <sect1 id="functions-json">
   <title>JSON Functions</title>
 
-  <indexterm zone="datatype-json">
+  <indexterm zone="functions-json">
     <primary>JSON</primary>
     <secondary>Functions and operators</secondary>
   </indexterm>
index b62c9e7cdced766f9b0fb76c376b5e0bd1563af6..360b1155605523de7e9dbfcdb8987a4eeed8228d 100644 (file)
    </para>
 
    <sect3>
-    <title>Functions</title>
+    <title>System Catalogs</title>
 
     <itemizedlist>
 
       <listitem>
        <para>
-        Ensure that <link
-        linkend="functions-xml-processing"><function>xpath()</></link>
-        escapes special characters in string values (Florian Pflug)
+        Remove the <structfield>spclocation</> field from <link
+        linkend="catalog-pg-tablespace"><structname>pg_tablespace</></link>
+        (Magnus Hagander)
        </para>
 
        <para>
-        Without this it is possible to output illegal
-        <acronym>XML</acronym>.
+        This field was duplicative of the symbolic links that actually define
+        tablespace locations, and thus risked errors of omission when moving
+        a tablespace.  This change allows tablespace directories to be moved
+        while the server is down, by manually adjusting the symbolic links.
+        To replace this field, we have added <link
+        linkend="functions-info-catalog-table"><function>pg_tablespace_location()</></link>
+        to allow querying of the symbolic links.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Remove <link linkend="hstore">hstore</link>'s <literal>=&gt;</>
-        operator (Robert Haas)
+        Move <type>tsvector</> most-common-element statistics to new
+        <link linkend="view-pg-stats"><structname>pg_stats</></link> columns
+        (Alexander Korotkov)
        </para>
 
        <para>
-        Users should now use hstore(text, text).  Since
-        <productname>PostgreSQL</productname> 9.0, a warning message is
-        emitted when an operator named =&gt; is created because
-        the <acronym>SQL</acronym> standard reserves that token for
-        another use.
+        Consult <structfield>most_common_elems</>
+        and <structfield>most_common_elem_freqs</> for the data formerly
+        available in <structfield>most_common_vals</>
+        and <structfield>most_common_freqs</> for a <type>tsvector</> column.
        </para>
       </listitem>
 
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Functions</title>
+
+    <itemizedlist>
+
       <listitem>
        <para>
-        Have <link
-        linkend="functions-admin-dbobject"><function>pg_relation_size()</></link>
-        and friends return NULL if the object does not exist (Phil Sorber)
+        Remove <link linkend="hstore">hstore</link>'s <literal>=&gt;</>
+        operator (Robert Haas)
        </para>
 
        <para>
-        This prevents queries that call these functions from returning
-        errors during concurrent drop operations.
+        Users should now use <function>hstore(text, text)</>.  Since
+        <productname>PostgreSQL</productname> 9.0, a warning message has been
+        emitted when an operator named <literal>=&gt;</> is created because
+        the <acronym>SQL</acronym> standard reserves that token for
+        another use.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Remove the <link
-        linkend="catalog-pg-tablespace"><structname>spclocation</></link>
-        field from <structname>pg_tablespace</> (Magnus Hagander)
+        Ensure that <link
+        linkend="functions-xml-processing"><function>xpath()</></link>
+        escapes special characters in string values (Florian Pflug)
        </para>
 
        <para>
-        This field was duplicative of the symbolic links already
-        present in the data directory.  This allows tablespace
-        directories to be moved while the server is down.  Also add
-        <function>pg_tablespace_location()</> to allow querying of the
-        symbolic links.
+        Without this it is possible to output invalid <acronym>XML</acronym>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Move <type>tsvector</> most-common-element statistics to new
-        <link linkend="view-pg-stats"><structname>pg_stats</></link> columns
-        (Alexander Korotkov)
+        Make <link
+        linkend="functions-admin-dbobject"><function>pg_relation_size()</></link>
+        and friends return NULL if the object does not exist (Phil Sorber)
        </para>
 
        <para>
-        Consult <structname>most_common_elems</>
-        and <structname>most_common_elem_freqs</> for the data formerly
-        available in <structname>most_common_vals</>
-        and <structname>most_common_freqs</>.
+        This prevents queries that call these functions from returning
+        errors immediately after a concurrent <command>DROP</>.
        </para>
       </listitem>
 
-    </itemizedlist>
-
-    <sect4>
-     <title>Temporal Functions</title>
-
-     <itemizedlist>
-
       <listitem>
        <para>
-        Have <link
+        Make <link
         linkend="functions-datetime-extract"><function>EXTRACT</></link> of
         a non-timezone-aware value measure the epoch from local midnight,
         not <acronym>UTC</acronym> midnight (Tom Lane)
        </para>
 
        <para>
-        Previously, <command>SELECT '04:00:00
-        yesterday'::timestamp</command> returned yesterday's date at
-        midnight.
+        Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
+        returned yesterday's date at midnight.
        </para>
       </listitem>
 
        </para>
       </listitem>
 
-     </itemizedlist>
-    </sect4>
+    </itemizedlist>
 
    </sect3>
 
 
       <listitem>
        <para>
-        No longer auto-lowercase procedural language names (Robert Haas)
+        No longer forcibly lowercase procedural language names (Robert Haas)
        </para>
 
        <para>
        </para>
       </listitem>
 
+      <listitem>
+       <para>
+        Change system-generated names of foreign key enforcement triggers
+        (Tom Lane)
+       </para>
+
+       <para>
+        This change ensures that the triggers fire in the correct order in
+        some corner cases involving self-referential foreign key constraints.
+       </para>
+      </listitem>
+
     </itemizedlist>
 
    </sect3>
        </para>
 
        <para>
-        Previously, such usage was only properly expanded when isolated by
-        whitespace, e.g.  <literal>'FOO'BAR</> was output as <literal>FOO
-        BAR</>.
+        Previously, such references were treated oddly when not separated by
+        whitespace from adjacent text.  For example <literal>'FOO'BAR</> was
+        output as <literal>FOO BAR</> (unexpected insertion of a space) and
+        <literal>FOO'BAR'BAZ</> was output unchanged (not removing the quotes
+        as most would expect).
        </para>
       </listitem>
 
        </para>
 
        <para>
-        Users must supply double-quotes in the command arguments to
-        accomplish double-quoting behavior.
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Disable prompting for the user name in <link
-        linkend="APP-DROPDB"><application>dropdb</></link> unless
-        <option>--interactive</> is specified (Peter Eisentraut)
+        Users must now include double-quotes in the command arguments if
+        quoting is wanted.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        No longer have <link
-        linkend="APP-CREATEUSER"><application>createuser</></link> prompt
-        for settings (Peter Eisentraut)
+        <link linkend="APP-CREATEUSER"><application>createuser</></link>
+        no longer prompts for option settings by default (Peter Eisentraut)
        </para>
 
        <para>
-        Previously <application>createuser</> prompted regarding various
-        user settings.
+        Use <option>--interactive</> to obtain the old behavior.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Remove <link linkend="APP-INITDB"><application>initdb</></link>
-        support for the crypt authentication method (Peter Eisentraut)
-       </para>
-
-       <para>
-        This was removed from the backend years ago.
+        Disable prompting for the user name in <link
+        linkend="APP-DROPUSER"><application>dropuser</></link> unless
+        <option>--interactive</> is specified (Peter Eisentraut)
        </para>
       </listitem>
 
     <title>Server Settings</title>
 
     <itemizedlist>
+
       <listitem>
        <para>
-        Remove the <filename>postgresql.conf</filename> setting
-        <varname>silent_mode</> (Heikki Linnakangas)
+        Add server parameters for specifying the <link
+        linkend="guc-ssl-ca-file">locations of server-side
+        <acronym>SSL</acronym> files</link> (Peter Eisentraut)
        </para>
 
        <para>
-        This behavior could already be accomplished with <command>pg_ctl
-        -l postmaster.log</>.
+        This allows changing the names and locations of the files that were
+        previously hard-coded as <filename>server.crt</>,
+        <filename>server.key</>, <filename>root.crt</>, and
+        <filename>root.crl</> in the data directory.
+        <emphasis>The server will no longer examine <filename>root.crt</> or
+        <filename>root.crl</> by default</emphasis>; to load these files, the
+        associated parameters must be set to non-default values.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Remove <acronym>GUC</acronym> <varname>wal_sender_delay</>,
-        as it is no longer needed (Tom Lane)
+        Remove the <varname>silent_mode</> parameter (Heikki Linnakangas)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Remove the <varname>custom_variable_classes</>
-        <filename>postgresql.conf</filename> parameter (Tom Lane)
+        Similar behavior can be obtained with <command>pg_ctl start
+        -l postmaster.log</>.
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        The checking provided by this setting was dubious.  Now any
-        setting can be prefixed by any class name.
+        Remove the <varname>wal_sender_delay</> parameter,
+        as it is no longer needed (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add GUC <link linkend="guc-ssl-key-file">parameters</link> for
-        specifying the locations of server-side <acronym>SSL</acronym>
-        files (Peter Eisentraut)
+        Remove the <varname>custom_variable_classes</> parameter (Tom Lane)
        </para>
 
        <para>
-        This allows changing the location of the files that were previously
-        hard-coded to <filename>server.crt</>, <filename>server.key</>,
-        <filename>root.crt</>, <filename>root.crl</>.  <acronym>CA</>
-        (crt) and <acronym>CRL</acronym> files no longer have default
-        names, and if specified, these files must exist.
+        The checking provided by this setting was dubious.  Now any
+        setting can be prefixed by any class name.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Rename <link
-        linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link><structname>.procpid</>
-        to <structname>pid</>, to match other system tables (Magnus Hagander)
+        linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link><structfield>.procpid</>
+        to <structfield>pid</>, to match other system tables (Magnus Hagander)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Create a separate <structname>pg_stat_activity</> column to
-        report state information, e.g. idle (Scott Mead, Magnus Hagander)
+        Create a separate <structfield>pg_stat_activity</> column to
+        report process state (Scott Mead, Magnus Hagander)
        </para>
 
        <para>
-        The last query values are preserved, allowing for enhanced analysis.
+        The previous <structfield>query</> and <structfield>query_start</>
+        values now remain available for an idle session, allowing enhanced
+        analysis.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Rename <structname>pg_stat_activity.current_query</> to
-        <structname>query</> because it is not cleared when the query
+        Rename <structname>pg_stat_activity</>.<structfield>current_query</> to
+        <structfield>query</> because it is not cleared when the query
         completes (Magnus Hagander)
        </para>
       </listitem>
       <listitem>
        <para>
         Change all <acronym>SQL</acronym>-level statistics timing values
-        to float8-stored milliseconds (Tom Lane)
+        to be <type>float8</> columns measured in milliseconds (Tom Lane)
        </para>
 
        <para>
-        The columns affected are:
-        <structname>pg_stat_user_functions.total_time</>,
-        <structname>pg_stat_user_functions.self_time</>,
-        <structname>pg_stat_xact_user_functions.total_time</>,
-        <structname>pg_stat_xact_user_functions.self_time</>.
+        The columns affected are
+        <structname>pg_stat_user_functions</>.<structfield>total_time</>,
+        <structname>pg_stat_user_functions</>.<structfield>self_time</>,
+        <structname>pg_stat_xact_user_functions</>.<structfield>total_time</>,
+        and
+        <structname>pg_stat_xact_user_functions</>.<structfield>self_time</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Change <application>pg_stat_statements</>'
-        <structname>total_time</> column to be measured in milliseconds
+        <structfield>total_time</> column to be measured in milliseconds
         (Tom Lane)
        </para>
       </listitem>
        </para>
 
        <para>
-        This is often called "index-only scans", a feature which now enables
-        the use of indexes with additional columns, or "covering indexes".
-        This is possible for heap pages with exclusively all-visible
-        tuples, as reported by the visibility map.  The visibility map was
-        made crash-safe as a necessary part of implementing this feature.
+        This feature is often called <firstterm>index-only scans</>.
+        Heap access can be skipped for heap pages containing only tuples that
+        are visible to all sessions, as reported by the visibility map; so
+        the benefit applies mainly to mostly-static data.  The visibility map
+        was made crash-safe as a necessary part of implementing this feature.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow frequently uncontended locks to be recorded using a new
-        fast-path lock mechanism (Robert Haas)
+        Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
+        GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom
+        Lane)
+       </para>
+
+       <para>
+        SP-GiST is comparable to GiST in flexibility, but supports
+        unbalanced partitioned search structures rather than balanced
+        trees.  For suitable problems, SP-GiST can be faster than GiST in both
+        index build time and search time.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Move the frequently accessed members of the <structname>PGPROC</>
-        shared memory array to a separate section, for performance (Pavan
-        Deolasee, Heikki Linnakangas, Robert Haas)
+        Allow group commit to work effectively under heavy load (Peter
+        Geoghegan, Simon Riggs, Heikki Linnakangas)
+       </para>
+
+       <para>
+        Previously, batching of commits became ineffective as the write
+        workload increased, because of internal lock contention.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Reduce overhead of creating virtual transaction id locks (Robert
-        Haas)
+        Allow uncontended locks to be managed using a new
+        fast-path lock mechanism (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Reduce overhead for shared invalidation cache messages (Robert
+        Reduce overhead of creating virtual transaction id locks (Robert
         Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve <command>COPY</command> performance by adding tuples to
-        the heap in batches (Heikki Linnakangas)
+        Reduce the overhead of serializable isolation level locks (Dan
+        Ports)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve GiST geometric type index performance by producing better
-        trees with less memory allocation overhead (Alexander Korotkov)
+        Improve PowerPC and Itanium spinlock performance (Manabu Ori,
+        Robert Haas, Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow hint bits to be set sooner for temporary and unlogged tables
-        (Robert Haas)
+        Reduce overhead for shared invalidation cache messages (Robert
+        Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow sorting to be performed by inlined and faster,
-        non-<acronym>SQL</acronym>-callable comparison functions (Peter
-        Geoghegan, Robert Haas, Tom Lane)
+        Move the frequently accessed members of the <structname>PGPROC</>
+        shared memory array to a separate array (Pavan
+        Deolasee, Heikki Linnakangas, Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
-        GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom
-        Lane)
+        Improve <command>COPY</command> performance by adding tuples to
+        the heap in batches (Heikki Linnakangas)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        SP-GiST is comparable to GiST in flexibility, but supports
-        non-balanced partitioned search structures rather than balanced
-        trees.  CLARIFY?
+        Improve GiST index performance for geometric data types by producing
+        better trees with less memory allocation overhead (Alexander Korotkov)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Take fewer <acronym>MVCC</acronym> snapshots, for performance
+        Allow hint bits to be set sooner for temporary and unlogged tables
         (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have the number of clog buffers scale based on <link
-        linkend="guc-shared-buffers"><varname>shared_buffers</></link>
-        (Robert Haas, Simon Riggs, Tom Lane)
+        Allow sorting to be performed by inlined,
+        non-<acronym>SQL</acronym>-callable comparison functions (Peter
+        Geoghegan, Robert Haas, Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Reduce the overhead of serializable isolation level locks (Dan
-        Ports)
+        Take fewer <acronym>MVCC</acronym> snapshots
+        (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow group commit to work effectively under heavy load (Peter
-        Geoghegan, Simon Riggs, Heikki Linnakangas)
+        Make the number of CLOG buffers scale based on <link
+        linkend="guc-shared-buffers"><varname>shared_buffers</></link>
+        (Robert Haas, Simon Riggs, Tom Lane)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        Previously, batching of commits became ineffective as the write
-        workload increased because of internal lock contention.
+        Improve performance of buffer pool scans that occur when tables or
+        databases are dropped (Jeff Janes, Simon Riggs)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve PowerPC and Itanium spinlock performance (Manabu Ori,
-        Robert Haas, Tom Lane)
+        Improve performance of checkpointer's fsync-request queue
+        when many tables are being dropped or truncated (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve performance of buffer pool scans that occur when tables or
-        databases are dropped (Jeff Janes, Simon Riggs)
+        Pass the safe number of file descriptors to child processes on Windows
+        (Heikki Linnakangas)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Improve performance of checkpoint process's fsync-request queue
-        when many tables are being dropped or truncated (Tom Lane)
+        This allows Windows sessions to use more open file descriptors.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Create a dedicated worker process to perform checkpoints (Simon
+        Create a dedicated background process to perform checkpoints (Simon
         Riggs)
        </para>
 
        <para>
-        Formerly the background writer did dirty page writing and
-        checkpointing.
+        Formerly the background writer did both dirty-page writing and
+        checkpointing.  Separating this into two processes allows each goal
+        to be accomplished more predictably.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve asynchronous commit behavior by waking up sooner (Simon
-        Riggs)
+        Improve asynchronous commit behavior by waking the walwriter sooner
+        (Simon Riggs)
        </para>
 
        <para>
 
       <listitem>
        <para>
-        Allow the bgwriter, walwriter, checkpointer, <link
-        linkend="monitoring-stats">statistics collector</link>, log
-        collector, and archiver background processes to sleep more
+        Allow the bgwriter, walwriter, checkpointer, statistics collector,
+        log collector, and archiver background processes to sleep more
         efficiently during periods of inactivity (Peter Geoghegan, Tom Lane)
        </para>
 
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Pass the safe number of file descriptors to Windows processes
-        (Heikki Linnakangas)
-       </para>
-
-       <para>
-        This allows Windows sessions to cache more open file descriptors.
-       </para>
-      </listitem>
-
      </itemizedlist>
 
     </sect4>
 
       <listitem>
        <para>
-        Improve the ability of the planner to choose parameterized plans
+        Allow the planner to generate custom plans for specific parameter
+        values even when using prepared statements
         (Tom Lane)
        </para>
 
        <para>
-        A prepared statement is now parsed, analyzed, and rewritten,
-        but not necessarily planned.  When the prepared plan is executed
-        with parameters, the planner might replan it for every constant,
-        or it might execute a generic plan if its cost is close to that
-        of a constant-specific plan. CLARIFY
+        In the past, a prepared statement always had a single
+        <quote>generic</> plan that was used for all parameter values, which
+        was frequently much inferior to the plans used for non-prepared
+        statements containing explicit constant values.  Now, the planner
+        attempts to generate custom plans for specific parameter values.
+        A generic plan will only be used after custom plans have repeatedly
+        proven to provide no benefit.  This change should eliminate the
+        performance penalties formerly seen from use of prepared statements
+        (including non-dynamic statements in PL/pgSQL).
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow the optimizer to use <literal>CHECK</> constraints defined
-        on tables referenced in subqueries in planning decisions (Tom Lane)
+        Improve the planner's ability to use nested loops with inner
+        index scans (Tom Lane)
        </para>
 
        <para>
-        This is only enabled when <link
-        linkend="guc-constraint-exclusion"><literal>constraint_exclusion
-        = on</></link>.
+        The new <quote>parameterized path</> mechanism allows inner
+        indexscans to use values from relations that are more than one join
+        level up from the scan.  This can greatly improve performance in
+        situations where semantic restrictions (such as outer joins) limit
+        the allowed join orderings.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <literal>indexedcol op ANY(ARRAY[...])</> conditions to be
-        used in plain indexscans (Tom Lane)
+        Improve the planning <acronym>API</acronym> for foreign data wrappers
+        (Etsuro Fujita, Shigeru Hanada, Tom Lane)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Improve heuristics for determining the type of unknown values by
-        considering other data types involved in the operation (Tom Lane)
+        Wrappers can now provide multiple access <quote>paths</> for their
+        tables, allowing more flexibility in join planning.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow better matching of index columns with non-default operator
-        qualifications (Tom Lane)
+        Recognize self-contradictory restriction clauses for non-table
+        relations (Tom Lane)
+       </para>
+
+       <para>
+        This is only enabled when <link
+        linkend="guc-constraint-exclusion"><varname>constraint_exclusion</></link>
+        is <literal>on</literal>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve the planner's ability to use nested loops with inner
-        index scans (Tom Lane)
+        Allow <literal>indexed_col op ANY(ARRAY[...])</> conditions to be
+        used in plain indexscans and index-only scans (Tom Lane)
+       </para>
+
+       <para>
+        Formerly such conditions could only be used in bitmap index scans.
        </para>
       </listitem>
 
        </para>
       </listitem>
 
-     </itemizedlist>
-
-    <sect5>
-     <title>Optimizer Statistics</title>
-
-     <itemizedlist>
       <listitem>
        <para>
-        Improve the ability to use statistics on columns referenced in
-        subqueries (Tom Lane)
+        Fix planner to handle indexes with duplicated columns more reliably
+        (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve optimizer estimation for subqueries using
-        <literal>DISTINCT</> (Tom Lane)
+        Collect and use element-frequency statistics for arrays (Alexander
+        Korotkov, Tom Lane)
+       </para>
+
+       <para>
+        This change improves selectivity estimation for the array
+        <literal>&lt;@</literal>, <literal>&amp;&amp;</literal>, and
+        <literal>@&gt;</literal> (containment and overlaps) array operators.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Collect and use element-frequency statistics for arrays (Alexander
-        Korotkov, Tom Lane)
+        Allow statistics to be collected for foreign tables
+        (Etsuro Fujita)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        This patch improves selectivity estimation for the array &lt;@,
-        &amp;&amp;, and @&gt; (containment and overlaps) array operators.
+        Improve cost estimates for use of partial indexes (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve costing of partial indexes (Tom Lane)
+        Improve the planner's ability to use statistics for columns
+        referenced in subqueries (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow analyze statistics to be collected for foreign tables
-        (Etsuro Fujita)
+        Improve statistical estimates for subqueries using
+        <literal>DISTINCT</> (Tom Lane)
        </para>
       </listitem>
 
      </itemizedlist>
 
-    </sect5>
-
     </sect4>
 
     <sect4>
 
       <listitem>
        <para>
-        Do not assume roles and <literal>samerole</> specified in <link
+        Do not treat role names and <literal>samerole</> specified in <link
         linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
-        include superusers (Andrew Dunstan)
+        as automatically including superusers (Andrew Dunstan)
        </para>
 
        <para>
-        This makes it easier to use reject lines with group roles.
+        This makes it easier to use <literal>reject</> lines with group roles.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Make superuser imply replication privilege (Noah Misch)
+        Adjust <filename>pg_hba.conf</filename> processing to handle token
+        parsing more consistently (Brendan Jurd, &Aacute;lvaro Herrera)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        This avoids the need to explicitly assign such privileges.
+        Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Adjust <filename>pg_hba.conf</filename> processing to more
-        consistently handle token parsing (Brendan Jurd, &Aacute;lvaro
-        Herrera)
+        This was done to more quickly detect misconfiguration.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
+        Make superuser privilege imply replication privilege (Noah Misch)
        </para>
 
        <para>
-        This was done to more quickly report misconfiguration.
+        This avoids the need to explicitly assign such privileges.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Attempt to log the current query string before a backend crash
+        Attempt to log the current query string during a backend crash
         (Marti Raudsepp)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <acronym>WAL</acronym> replay report failures sooner
+        Make <acronym>WAL</acronym> replay report failures sooner
         (Fujii Masao)
        </para>
 
        <para>
         Add <link
         linkend="functions-admin-backup"><function>pg_xlog_location_diff()</></link>
-        to simplify xlog comparisons (Euler Taveira de Oliveira)
+        to simplify WAL location comparisons (Euler Taveira de Oliveira)
        </para>
 
        <para>
         This allows different instances to use the eventlog
         with different identifiers, by setting the <link
         linkend="guc-event-source"><varname>event_source</></link>
-        <acronym>GUC</acronym>, which is similar to how <link
+        server parameter, which is similar to how <link
         linkend="guc-syslog-ident"><varname>syslog_ident</></link> works.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Change "unexpected EOF" message to <literal>DEBUG1</> level,
+        Change <quote>unexpected EOF</> messages to <literal>DEBUG1</> level,
         except when there is an open transaction (Magnus Hagander)
        </para>
       </listitem>
       <listitem>
        <para>
         Track temporary file sizes and file counts in the <link
-        linkend="monitoring-stats-views"><structname>pg_stat_database</></link>
+        linkend="pg-stat-database-view"><structname>pg_stat_database</></link>
         system view (Tomas Vondra)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a <acronym>GUC</acronym> setting <link
+        Add a server parameter <link
         linkend="guc-track-io-timing"><varname>track_io_timing</></link>
         to track I/O timings (Ants Aasma, Robert Haas)
        </para>
 
       <listitem>
        <para>
-        Allow <link
+        Silently ignore nonexistent schemas specified in <link
+        linkend="guc-search-path"><varname>search_path</></link> (Tom Lane)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow superusers to set <link
         linkend="guc-deadlock-timeout"><varname>deadlock_timeout</></link>
-        to be set per-session by superusers, not just per-cluster (Noah
-        Misch)
+        per-session, not just per-cluster (Noah Misch)
        </para>
 
        <para>
         This allows <varname>deadlock_timeout</> to be reduced for
-        transactions that are likely to be involved in a deadlock,
-        thus detecting it more quickly. It can also be used to reduce
-        the chances of a session being chosen for cancellation due to
-        a deadlock.
+        transactions that are likely to be involved in a deadlock, thus
+        detecting the failure more quickly.  Alternatively, increasing the
+        value can be used to reduce the chances of a session being chosen for
+        cancellation due to a deadlock.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <acronym>GUC</acronym> parameter <link
+        Add a server parameter <link
         linkend="guc-temp-file-limit"><varname>temp_file_limit</></link>
         to constrain temporary file space usage per session (Mark Kirkwood)
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Add <filename>postgresql.conf</filename> category "Replication /
-        Sending Servers" (Fujii Masao)
-       </para>
-      </listitem>
-
       <listitem>
        <para>
         Allow a superuser to <command>SET</command> an extension's
        </para>
 
        <para>
-        This allows <application>pg_ctl</> to better handle
-        configuration-only directory installations.
+        This allows <application>pg_ctl</> to better handle cases where
+        <envar>PGDATA</> or <option>-D</> points to a configuration-only
+        directory.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Force the locale to be recorded more specifically, rather than
-        using the empty string to mean the default (Tom Lane)
+        Replace an empty locale name with the implied value in
+        <command>CREATE DATABASE</>
+        (Tom Lane)
+       </para>
+
+       <para>
+        This prevents cases where
+        <structname>pg_database</>.<structfield>datcollate</> or
+        <structfield>datctype</> could be interpreted differently after a
+        server restart.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Allow a reload of <filename>postgresql.conf</filename> to be
-        processed by all backends even if there are some settings that
-        are invalid for that session (Alexey Klyukin)
+        processed by all sessions, even if there are some settings that
+        are invalid for particular sessions (Alexey Klyukin)
        </para>
 
        <para>
-        Previously, such not-valid-for-session errors would cause all
-        setting changes to be ignored by that backend.
+        Previously, such not-valid-within-session values would cause all
+        setting changes to be ignored by that session.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Check the server time zone during initdb, and set
-        <filename>postgresql.conf</filename> values
+        Identify the server time zone during <application>initdb</>, and set
+        <filename>postgresql.conf</filename> entries
         <link linkend="guc-timezone"><varname>timezone</></link> and
         <link linkend="guc-log-timezone"><varname>log_timezone</></link>
         accordingly (Tom Lane)
 
       <listitem>
        <para>
-        Allow Windows to report
-        <filename>postgresql.conf</filename> line numbers in <link
-        linkend="view-pg-settings"><structname>pg_settings</></link>
+        Fix <link
+        linkend="view-pg-settings"><structname>pg_settings</></link> to
+        report <filename>postgresql.conf</filename> line numbers on Windows
         (Tom Lane)
        </para>
       </listitem>
    <sect3>
     <title>Replication and Recovery</title>
 
-   <sect4>
-    <title>Streaming Replication</title>
-
-    <itemizedlist>
+     <itemizedlist>
 
       <listitem>
        <para>
-        Allow streaming replications slaves to serve other slaves (Fujii
-        Masao)
+        Allow streaming replication slaves to forward data to other slaves
+        (<link linkend="cascading-replication"><firstterm>cascading
+        replication</></link>) (Fujii Masao)
        </para>
 
        <para>
         Previously, only the master server could supply streaming
-        replication log files to standby servers.  Slaves can also now
-        do continuous archiving. (?)
+        replication log files to standby servers.
        </para>
       </listitem>
 
        <para>
         Add new <link
         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
-        replication mode <literal>remote_write</> (Fujii Masao, Simon Riggs)
+        mode <literal>remote_write</> (Fujii Masao, Simon Riggs)
        </para>
 
        <para>
-        This waits for the remote server to acknowledge that it has received
-        the data, but does not wait for it to be written to the remote disk.
+        This mode waits for the standby server to write transaction data to
+        its own operating system, but does not wait for the data to be
+        flushed to the standby's disk.
        </para>
       </listitem>
 
        <para>
         Add a <link
         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
-        tool to archive xlog file changes as they are written, rather
-        than waiting for completed xlog files (Magnus Hagander)
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Send keepalive messages to standby servers (Simon Riggs)
-       </para>
-
-       <para>
-        This allows administrators to accurately calculate streaming
-        replication transfer and application latency.
+        tool to archive WAL file changes as they are written, rather
+        than waiting for completed WAL files (Magnus Hagander)
        </para>
       </listitem>
 
-     </itemizedlist>
-
-     <sect5>
-      <title><link linkend="app-pgbasebackup"><application>pg_basebackup</></link></title>
-
-      <itemizedlist>
-
       <listitem>
        <para>
-        Allow streaming of xlog files while <application>pg_basebackup</>
+        Allow streaming of WAL files while <link linkend="app-pgbasebackup"><application>pg_basebackup</></link>
         is performing a backup (Magnus Hagander)
        </para>
 
        <para>
-        This allows passing of xlog files to the standby before they are
+        This allows passing of WAL files to the standby before they are
         discarded on the primary.
        </para>
       </listitem>
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Exclude the postmaster.opts file from <application>pg_basebackup</>
-        backups (Magnus Hagander)
-       </para>
-      </listitem>
-
-      </itemizedlist>
-
-     </sect5>
-    </sect4>
+     </itemizedlist>
 
    </sect3>
 
 
       <listitem>
        <para>
-        Improve columns labels produced by subqueries (Marti Raudsepp)
+        Cancel queries if clients get disconnected (Florian Pflug)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        Previously, the generic label <literal>?column?</> was used.
+        Retain column names at runtime for row expressions
+        (Andrew Dunstan, Tom Lane)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Preserve column names in row expressions (Andrew Dunstan, Tom Lane)
+        This change allows better results when a row value is converted to
+        <type>hstore</> or <type>json</> type: the fields of the resulting
+        value will now have the expected names.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Cancel queries if clients get disconnected (Florian Pflug)
+        Improve column labels used for sub-<command>SELECT</> results
+        (Marti Raudsepp)
+       </para>
+
+       <para>
+        Previously, the generic label <literal>?column?</> was used.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Silently ignore nonexistent schemas specified in <link
-        linkend="guc-search-path"><varname>search_path</></link> (Tom Lane)
+        Improve heuristics for determining the types of unknown values
+        (Tom Lane)
+       </para>
+
+       <para>
+        The longstanding rule that an unknown constant might have the
+        same type as the value on the other side of the operator using it
+        is now applied when considering polymorphic operators, not only
+        for simple operator matches.
        </para>
       </listitem>
 
       <listitem>
        <para>
         When a row fails a <literal>CHECK</> or <literal>NOT NULL</>
-        constraint, show the row's contents in errdetail (Jan
+        constraint, show the row's contents as error detail (Jan
         Kundr&aacute;t)
        </para>
 
        </para>
 
        <para>
-        This eliminates "cache lookup failed" errors in many scenarios.
-        Also, it is no longer possible to add relations to a schema which
-        is being concurrently dropped, a scenario that formerly led to
-        inconsistent system catalog contents.
+        This change adds locking that should eliminate <quote>cache lookup
+        failed</> errors in many scenarios.  Also, it is no longer possible
+        to add relations to a schema that is being concurrently dropped, a
+        scenario that formerly led to inconsistent system catalog contents.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add <literal>CONCURRENTLY</> option to <link
-        linkend="SQL-DROPINDEX"><command>DROP INDEX
-        CONCURRENTLY</command></link> (Simon Riggs)
+        linkend="SQL-DROPINDEX"><command>DROP INDEX</command></link>
+        (Simon Riggs)
        </para>
 
        <para>
        </para>
       </listitem>
 
+      <listitem>
+       <para>
+        Allow foreign data wrappers to have per-column options (Shigeru Hanada)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Improve pretty printing of view definitions (Andrew Dunstan)
+       </para>
+      </listitem>
+
      </itemizedlist>
 
     <sect4>
        </para>
 
        <para>
-        A <literal>NOT VALID</> <literal>CHECK</> constraint can be added
-        to a table without the table's data being verified against the
-        constraint.  New rows are verified.
+        Adding a <literal>NOT VALID</> constraint does not cause the table to
+        be scanned to verify that existing rows meet the constraint.
+        Subsequently, newly added or updated rows are checked.
+        Such constraints are ignored by the planner when considering
+        <varname>constraint_exclusion</>, since it is not certain that all
+        rows meet the constraint.
        </para>
 
        <para>
-        Such constraints are ignored by the planner when considering
-        <varname>constraint_exclusion</>.  <command>ALTER TABLE</command> /
-        <literal>VALIDATE</> allows <literal>NOT VALID</> <literal>CHECK</>
-        check constraints to be fully validated and considered for
-        <varname>constraint_exclusion</>, including re-planning of
-        cached plans.
+        The new <command>ALTER TABLE VALIDATE</> command allows <literal>NOT
+        VALID</> constraints to be checked for existing rows, after which
+        they are converted into ordinary constraints.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Reduce need to rebuild tables and indexes for various <link
+        Reduce need to rebuild tables and indexes for certain <link
         linkend="SQL-ALTERTABLE"><command>ALTER TABLE</command></link>
         operations (Noah Misch)
        </para>
 
        <para>
-        Increasing the length constraint on a <type>varchar</> or
-        <type>varbit</> column, or removing it altogether, no longer
-        requires a table rewrite.  Increasing the allowable precision of
-        a <type>numeric</> constraint, or changing a column from constrained
-        <type>numeric</> to unconstrained numeric, no longer requires a
-        table rewrite.  Table rewrites are also avoided in similar cases
-        involving the <type>interval</>, <type>timestamp</>, and
+        Increasing the length limit for a <type>varchar</> or <type>varbit</>
+        column, or removing it altogether, no longer requires a table
+        rewrite.  Similarly, increasing the allowable precision of a
+        <type>numeric</> column, or changing a column from constrained
+        <type>numeric</> to unconstrained <type>numeric</>, no longer
+        requires a table rewrite.  Table rewrites are also avoided in similar
+        cases involving the <type>interval</>, <type>timestamp</>, and
         <type>timestamptz</> types.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <literal>IF EXISTS</> clause to <command>ALTER</command>
+        Add <literal>IF EXISTS</> clause to some <command>ALTER</command>
         commands (Pavel Stehule)
        </para>
 
       <listitem>
        <para>
         Add <link linkend="SQL-ALTERFOREIGNDATAWRAPPER"><command>ALTER
-        FOREIGN DATA WRAPPER</command></link> / <literal>RENAME</>
+        FOREIGN DATA WRAPPER</command></link> ... <literal>RENAME</>
         and <link linkend="SQL-ALTERSERVER"><command>ALTER
-        SERVER</command></link> / <literal>RENAME</> (Peter Eisentraut)
+        SERVER</command></link> ... <literal>RENAME</> (Peter Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Add <link linkend="SQL-ALTERDOMAIN"><command>ALTER
-        DOMAIN</command></link> / <literal>RENAME</> (Peter Eisentraut)
+        DOMAIN</command></link> ... <literal>RENAME</> (Peter Eisentraut)
        </para>
 
        <para>
 
       <listitem>
        <para>
-        Throw an error for <command>ALTER DOMAIN</command> / <literal>DROP
+        Throw an error for <command>ALTER DOMAIN</command> ... <literal>DROP
         CONSTRAINT</> on a nonexistent constraint (Peter Eisentraut)
        </para>
 
        <para>
-        An <literal>IF EXISTS</> option has been added to enable the
+        An <literal>IF EXISTS</> option has been added to provide the
         previous behavior.
        </para>
       </listitem>
     </sect4>
 
     <sect4>
-     <title><link linkend="SQL-CREATETABLE"><command>CREATE/ALTER
-     TABLE</></link></title>
+     <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
 
      <itemizedlist>
 
       <listitem>
        <para>
-        Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</>
-        to handle <literal>WITH NO DATA</> and column name specification
-        (Tom Lane)
+        Allow <command>CREATE TABLE (LIKE ...)</command> from foreign
+        tables, views, and composite types (Peter Eisentraut)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Support <command>CREATE TABLE (LIKE ...)</command> from foreign
-        tables and views (Peter Eisentraut)
+        For example, this allows a table to be created whose schema matches a
+        view.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <command>CREATE TABLE (LIKE ...)</command> from composite
-        type (Peter Eisentraut)
-       </para>
-
-       <para>
-        This also allows a table to be created whose schema matches a view.
+        Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name
+        conflicts when copying index comments (Tom Lane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name
-        conflicts when copying index comments (Tom Lane)
+        Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</>
+        to handle <literal>WITH NO DATA</> and column name specifications
+        (Tom Lane)
        </para>
       </listitem>
+
      </itemizedlist>
 
     </sect4>
        </para>
 
        <para>
-        This prevents <literal>security_barrier</> views from being moved
-        into other scopes, preventing possible leakage of view-prohibited
-        data.  Such views might perform more poorly.
+        This option prevents optimizations that might allow view-protected
+        data to be exposed to users, for example pushing a clause involving
+        an insecure function into the <literal>WHERE</> clause of the view.
+        Such views can be expected to perform more poorly than ordinary
+        views.
        </para>
       </listitem>
 
        <para>
         Add a new <link
         linkend="SQL-CREATEFUNCTION"><literal>LEAKPROOF</></link> function
-        specification to mark functions that can be safely pushed down
+        attribute to mark functions that can safely be pushed down
         into <literal>security_barrier</> views (KaiGai Kohei)
        </para>
       </listitem>
        </para>
 
        <para>
-        Because the object is being created by <command>SELECT
-        INTO</command> or <command>CREATE TABLE AS</command>, it will
-        have default insert permissions, except if <literal>ALTER DEFAULT
-        PRIVILEGES</> has removed such permissions, hence the need for
-        a permission check.
+        Because the object is being created by <command>SELECT INTO</command>
+        or <command>CREATE TABLE AS</command>, the creator would ordinarily
+        have insert permissions; but there are corner cases where this is not
+        true, such as when <literal>ALTER DEFAULT PRIVILEGES</> has removed
+        such permissions.
        </para>
       </listitem>
 
 
        <para>
         This change should greatly reduce the incidence of vacuum getting
-        "stuck".
+        <quote>stuck</>.
        </para>
       </listitem>
 
-    </itemizedlist>
-
-    <sect4>
-     <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
-
-      <itemizedlist>
-
       <listitem>
        <para>
-        Make <command>EXPLAIN (BUFFERS)</command> track blocks dirtied
-        and written (Robert Haas)
+        Make <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
+        <literal>(BUFFERS)</> count blocks dirtied and written (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <command>EXPLAIN ANALYZE</command> report the number of rows
+        Make <command>EXPLAIN ANALYZE</command> report the number of rows
         rejected by filter steps (Marko Tiikkaja)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <command>EXPLAIN</command> to avoid timing overhead when
-        time values are unwanted (Tomas Vondra)
+        Allow <command>EXPLAIN ANALYZE</command> to avoid timing overhead when
+        time values are not wanted (Tomas Vondra)
        </para>
 
        <para>
-        This is accomplished by setting <literal>TIMING</> to
+        This is accomplished by setting the new <literal>TIMING</> option to
         <literal>FALSE</>.
        </para>
       </listitem>
 
-     </itemizedlist>
-
-    </sect4>
+    </itemizedlist>
 
    </sect3>
 
 
       <listitem>
        <para>
-        Add a <link linkend="datatype-json"><type>JSON</type></link>
-        data type (Robert Haas)
+        Add support for <link linkend="rangetypes">range data types</link>
+        (Jeff Davis, Tom Lane, Alexander Korotkov)
        </para>
 
        <para>
-        This stores <acronym>JSON</acronym> data as text after proper
-        validation.
+        A range data type stores a lower and upper bound belonging to its
+        base data type.  It supports operations like contains, overlaps, and
+        intersection.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link
-        linkend="functions-json"><function>array_to_json()</></link>
-        and <function>row_to_json()</> (Andrew Dunstan)
+        Add a <link linkend="datatype-json"><type>JSON</type></link>
+        data type (Robert Haas)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Add support for <link linkend="rangetypes">range data types</link>
-        (Jeff Davis, Tom Lane, Alexander Korotkov)
+        This type stores <acronym>JSON</acronym> (JavaScript Object Notation)
+        data with proper validation.
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        The range data type records a lower and upper bound, and supports
-        operations like contains, overlaps, and intersection.
+        Add <link
+        linkend="functions-json"><function>array_to_json()</></link>
+        and <function>row_to_json()</> (Andrew Dunstan)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <link linkend="datatype-serial"><type>SMALLSERIAL</></link>
+        Add <link linkend="datatype-serial"><type>SMALLSERIAL</></link>
         data type (Mike Pultz)
        </para>
 
        <para>
         This is like <type>SERIAL</>, except it stores the sequence in
-        a two-byte integer column (int2).
+        a two-byte integer column (<type>int2</>).
        </para>
       </listitem>
 
        </para>
 
        <para>
-        This can be set at domain creation time, or via
-        <command>ALTER DOMAIN</command> / <literal>ADD CONSTRAINT / NOT
-        VALID</>. <command>ALTER DOMAIN</command> / <literal>VALIDATE
-        CONSTRAINT</> fully validates the domain.
+        This option can be set at domain creation time, or via <command>ALTER
+        DOMAIN</command> ... <literal>ADD CONSTRAINT</> ... <literal>NOT
+        VALID</>. <command>ALTER DOMAIN</command> ... <literal>VALIDATE
+        CONSTRAINT</> fully validates the constraint.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Support more locale-specific formatting options for the <link
-        linkend="datatype-money">MONEY</link> data type (Tom Lane)
+        linkend="datatype-money"><type>money</></link> data type (Tom Lane)
        </para>
 
        <para>
-        Specifically, display the plus/minus sign, currency symbol,
-        and separators in a locale-specific order.  CORRECT?
+        Specifically, honor all the POSIX options for ordering of the value,
+        sign, and currency symbol in monetary output.  Also, make sure that
+        the thousands separator is only inserted to the left of the decimal
+        point, as required by POSIX.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add bitwise "and", "or", and "not" <link
-        linkend="macaddr-functions-table">operators</link> for the macaddr
-        data type (Brendan Jurd)
+        Add bitwise <quote>and</>, <quote>or</>, and <quote>not</>
+        operators for the <type>macaddr</> data type (Brendan Jurd)
        </para>
       </listitem>
 
-    </itemizedlist>
-
-    <sect4>
-     <title><link linkend="functions-xml"><acronym>XML</></link></title>
-
-     <itemizedlist>
-
       <listitem>
        <para>
-        Allow <function>xpath()</> to return a single-element
-        <acronym>XML</acronym> array when supplied a scalar value (Florian
-        Pflug)
+        Allow <link
+        linkend="functions-xml-processing"><function>xpath()</></link> to
+        return a single-element <acronym>XML</acronym> array when supplied a
+        scalar value (Florian Pflug)
        </para>
 
        <para>
        </para>
       </listitem>
 
-     </itemizedlist>
-
-    </sect4>
+    </itemizedlist>
 
    </sect3>
 
         Allow non-superusers to use <link
         linkend="functions-admin-signal"><function>pg_cancel_backend()</></link>
         and <link
-        linkend="functions-admin-signal"><function>pg_terminate_backend()()</></link>
-        on other sessions for the same user
+        linkend="functions-admin-signal"><function>pg_terminate_backend()</></link>
+        on other sessions belonging to the same user
         (Magnus Hagander, Josh Kupershmidt, Dan Farina)
        </para>
 
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Allow <link
-        linkend="functions-aggregate-table"><function>string_agg()</></link>
-        to process bytea values (Pavel Stehule)
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Allow regular expressions to use back-references (Tom Lane)
-       </para>
-
-       <para>
-        For example, '^(\w+)( \1)+$'.
-       </para>
-      </listitem>
-
       <listitem>
        <para>
         Allow importing and exporting of transaction snapshots (Joachim
        </para>
 
        <para>
+        This allows multiple transactions to share identical views of the
+        database state.
         Snapshots are exported via <link
-        linkend="functions-snapshot-synchronization"><function>pg_export_snapshot()</></link>,
-        and imported via <command>SET TRANSACTION SNAPSHOT</command>.
-        Only snapshots of currently-running transactions can be imported.
+        linkend="functions-snapshot-synchronization"><function>pg_export_snapshot()</></link>
+        and imported via <link linkend="SQL-SET-TRANSACTION"><command>SET
+        TRANSACTION SNAPSHOT</command></link>.  Only snapshots from
+        currently-running transactions can be imported.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add a <type>NUMERIC</> variant of <link
-        linkend="functions-admin-dbsize"><function>pg_size_pretty()</></link>
-        for use with <function>pg_xlog_location_diff()</> (Fujii Masao)
+        Add <link
+        linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link>
+        (Josh Kupershmidt)
        </para>
       </listitem>
 
-     </itemizedlist>
-
-    <sect4>
-     <title>Function and Trigger Creation</title>
-
-     <itemizedlist>
-
       <listitem>
        <para>
-        Change default names of triggers to fire "action" triggers before
-        "check" triggers (Tom Lane)
-       </para>
-
-       <para>
-        This allows default-named check triggers to check post-action rows.
+        Add a <type>numeric</> variant of <link
+        linkend="functions-admin-dbsize"><function>pg_size_pretty()</></link>
+        for use with <function>pg_xlog_location_diff()</> (Fujii Masao)
        </para>
       </listitem>
 
        </para>
       </listitem>
 
-     </itemizedlist>
-
-    </sect4>
-
-    <sect4>
-     <title>Object Information Functions</title>
-
-     <itemizedlist>
       <listitem>
        <para>
-        Add <link
-        linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link>
-        (Josh Kupershmidt)
+        Allow <link
+        linkend="functions-aggregate-table"><function>string_agg()</></link>
+        to process <type>bytea</> values (Pavel Stehule)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow per-column foreign data wrapper options and
-        <literal>force_not_null</> (Shigeru Hanada)
+        Fix regular expressions in which a back-reference occurs within
+        a larger quantified subexpression (Tom Lane)
        </para>
 
        <para>
-        This allows <acronym>SQL</acronym> specification of per-column
-        information useful to foreign data sources.  Includes
-        <application>psql</> option display support.
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Improve pretty printing of view definitions (Andrew Dunstan)
+        For example, <literal>^(\w+)( \1)+$</>.  Previous releases did not
+        check that the back-reference actually matched the first occurrence.
        </para>
       </listitem>
 
      </itemizedlist>
 
-    </sect4>
+   </sect3>
 
-    <sect4>
-     <title><link linkend="information-schema">Information Schema</link></title>
+   <sect3>
+    <title><link linkend="information-schema">Information Schema</link></title>
 
      <itemizedlist>
 
       <listitem>
        <para>
-        Add <structname>information_schema</> views
+        Add information schema views
         <structname>role_udt_grants</>, <structname>udt_privileges</>,
         and <structname>user_defined_types</> (Peter Eisentraut)
        </para>
       <listitem>
        <para>
         Add composite-type attributes to the
-        <varname>information_schema</>.<varname>element_types</> view
+        information schema <structname>element_types</> view
         (Peter Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Implement information schema <varname>interval_type</> columns
-        (Peter Eisentraut)
+        Implement <structfield>interval_type</> columns in the information
+        schema (Peter Eisentraut)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Add collation columns to various information schema views (Peter
-        Eisentraut)
+        Formerly these columns read as nulls.
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        Specifically, provide collation columns for views referencing
-        attributes, columns, domains, and <varname>element_types</>.
+        Implement collation-related columns in the information schema
+        <structname>attributes</>, <structname>columns</>,
+        <structname>domains</>, and <structname>element_types</>
+        views (Peter Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add display of sequence <literal>USAGE</> privileges to information
-        schema (Peter Eisentraut)
+        Implement the <structfield>with_hierarchy</> column in the
+        information schema <structname>table_privileges</> view (Peter
+        Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a <varname>with_hierarchy</> column to the information schema
-        privileges display (Peter Eisentraut)
+        Add display of sequence <literal>USAGE</> privileges to information
+        schema (Peter Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have the information schema show default privileges (Peter
+        Make the information schema show default privileges (Peter
         Eisentraut)
        </para>
 
        <para>
-        Previously, default permissions generated <literal>NULL</> fields.
-        (WAS IT NULL?)
+        Previously, non-empty default permissions were not represented in the
+        views.
        </para>
       </listitem>
 
      </itemizedlist>
 
-    </sect4>
-
    </sect3>
 
    <sect3>
 
       <listitem>
        <para>
-        Improve performance and memory consumption of the PL/pgSQL
+        Improve performance and memory consumption for long chains of
         <literal>ELSIF</> clauses (Tom Lane)
        </para>
       </listitem>
        </para>
 
        <para>
-        Specifically, this adds result object functions .colnames,
-        .coltypes, and .coltypmods.
+        Specifically, this adds result object functions
+        <literal>.colnames</literal>, <literal>.coltypes</literal>, and
+        <literal>.coltypmods</literal>.
        </para>
       </listitem>
 
        </para>
 
        <para>
-        To use this, simply name the function arguments and reference
+        To use this, simply name the function arguments and then reference
         the argument names in the <acronym>SQL</acronym> function body.
        </para>
       </listitem>
        </para>
 
        <para>
-        This allows individual control of <literal>local</> and
+        This allows separate control of <literal>local</> and
         <literal>host</> <filename>pg_hba.conf</filename> authentication
         settings.  <option>--auth</> still controls both.
        </para>
       <listitem>
        <para>
         Give command-line tools the ability to specify the name of the
-        database to connect to, and fall back to <varname>template1</>
+        database to connect to, and fall back to <literal>template1</>
         if a <literal>postgres</> database connection fails (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <application>psql</> mode to auto-expand output based on the
+        Add a display mode to auto-expand output based on the
         display width (Peter Eisentraut)
        </para>
 
 
       <listitem>
        <para>
-        Allow inclusion of <application>psql</> files relative to the
-        directory of the input file from which it was invoked (Gurjeet
-        Singh)
+        Allow inclusion of a script file relative to the directory of the
+        file from which it was invoked (Gurjeet Singh)
        </para>
 
        <para>
-        The <application>psql</> command is <command>\ir</>.
+        This is done with a new command <command>\ir</>.
        </para>
       </listitem>
 
 
        <para>
         <application>psql</> already supported minor-version-specific
-        <filename>.psqlrc</>
-        files.
+        <filename>.psqlrc</> files.
        </para>
       </listitem>
 
 
        <para>
         Specifically, <envar>PSQL_HISTORY</envar> and
-        <envar>PSQLRC</envar>.
+        <envar>PSQLRC</envar> determine these file names if set.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a <application>psql</> <command>\setenv</> command to modify
-        the environment variables used by child processes (Andrew Dunstan)
-       </para>
-
-       <para>
-        This is useful in <filename>.psqlrc</> files.
+        Add a <command>\setenv</> command to modify
+        the environment variables passed to child processes (Andrew Dunstan)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <application>psql</> temporary editor files use a
+        Make <application>psql</>'s temporary editor files use a
         <filename>.sql</> extension (Peter Eisentraut)
        </para>
+
+       <para>
+        This allows extension-sensitive editors to select the right mode.
+       </para>
       </listitem>
 
       <listitem>
        <para>
-        Allows <application>psql</> to use zero-byte field and record
+        Allow <application>psql</> to use zero-byte field and record
         separators (Peter Eisentraut)
        </para>
 
        <para>
-        Various shell tools use zero/null-byte separators, e.g. find.
+        Various shell tools use zero-byte (NUL) separators, e.g. find.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <application>psql</> <command>\timing</> report times for
+        Make the <command>\timing</> option report times for
         failed queries (Magnus Hagander)
        </para>
 
        <para>
-        Previously only successful query times were reported.
+        Previously times were reported only for successful queries.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Unify and tighten <application>psql</> treatment of <command>\copy</>
-        and plain <command>COPY</> (Noah Misch)
+        Unify and tighten <application>psql</>'s treatment of <command>\copy</>
+        and SQL <command>COPY</> (Noah Misch)
        </para>
 
        <para>
-        This makes failure behavior more predictable and honors <command>\set
-        ON_ERROR_ROLLBACK</>.
+        This fix makes failure behavior more predictable and honors
+        <command>\set ON_ERROR_ROLLBACK</>.
        </para>
       </listitem>
 
      <itemizedlist>
       <listitem>
        <para>
-        Make <application>psql</> <command>\d</> on a sequence show the
+        Make <command>\d</> on a sequence show the
         table/column name owning it (Magnus Hagander)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Show statistics target for columns in <application>psql</>
-        <command>\d+</> (Magnus Hagander)
+        Show statistics target for columns in <command>\d+</> (Magnus
+        Hagander)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Show role password expiration dates in <application>psql</>
-        <command>\du</> (Fabr&iacute;zio de Royes Mello)
+        Show role password expiration dates in <command>\du</>
+        (Fabr&iacute;zio de Royes Mello)
        </para>
       </listitem>
 
-     </itemizedlist>
-
-
-    <sect5>
-     <title>Comments</title>
-
-     <itemizedlist>
       <listitem>
        <para>
-        Allow <application>psql</> to display comments for languages and
-        casts (Josh Kupershmidt)
+        Display comments for casts, conversions, domains, and languages
+        (Josh Kupershmidt)
        </para>
 
        <para>
-        These are output via <command>\dL</> and <command>\dC</>.
+        These are included in the output of <command>\dC+</>,
+        <command>\dc+</>, <command>\dD+</>, and <command>\dL</> respectively.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <application>psql</> to display comments for conversions
-        and domains (Josh Kupershmidt)
+        Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
+        objects (Josh Kupershmidt)
        </para>
 
        <para>
-        This is accomplished with the addition of <literal>+</> to
-        <command>\dc</> and <command>\dD</> commands.
+        These are included in the output of <command>\des+</>,
+        <command>\det+</>, and <command>\dew+</> for foreign servers, foreign
+        tables, and foreign data wrappers respectively.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <application>psql</> to display the comments on
-        <acronym>SQL</acronym>/<acronym>MED</acronym> objects in verbose
-        mode (Josh Kupershmidt)
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        Change <application>psql</>'s <command>\dd</> command to display
-        only objects without their own backslash command (Josh Kupershmidt)
+        Change <command>\dd</> to display comments only for object types
+        without their own backslash command (Josh Kupershmidt)
        </para>
       </listitem>
 
      </itemizedlist>
 
-    </sect5>
-
     </sect4>
 
     <sect4>
 
       <listitem>
        <para>
-        In <application>psql</> tab completion,
-        complete <acronym>SQL</acronym> keywords based on
-        <varname>COMP_KEYWORD_CASE</> setting and the perhaps case of
-        the partially-supplied word (Peter Eisentraut)
+        In <application>psql</> tab completion, complete <acronym>SQL</>
+        keywords in either upper or lower case according to the new <link
+        linkend="APP-PSQL-variables"><literal>COMP_KEYWORD_CASE</></link>
+        setting (Peter Eisentraut)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <application>psql</> tab completion support for
+        Add tab completion support for
         <command>EXECUTE</command> (Andreas Karlsson)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Change <application>psql</> tab completion support for
-        <command>TABLE</command> to also display views (Magnus Hagander)
+        Change tab completion support for
+        <command>TABLE</command> to also include views (Magnus Hagander)
        </para>
       </listitem>
 
        <para>
         Valid values are <literal>pre-data</>, <literal>data</>,
         and <literal>post-data</>. The option can be
-        given more than once. <option>--schema-only</>
-        is equivalent to <literal>--section=pre-data
-        --section=post-data</>. <option>--data-only</> is equivalent to
-        <literal>--section=data</>.
+        given more than once to select two or more sections.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <link
+        Make <link
         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link> dump all
         roles first, then all configuration settings on roles (Phil Sorber)
        </para>
 
        <para>
-        This allows a role's configuration settings to rely on other
+        This allows a role's configuration settings to mention other
         roles without generating an error.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add <acronym>URI</acronym>s support to libpq connection functions
-        (Alexander Shulgin)
+        Allow connection strings to have the format of a <link
+        linkend="libpq-connstring"><acronym>URI</acronym></link> (Alexander
+        Shulgin)
        </para>
 
        <para>
-        The syntax begins with <literal>postgres://</>.
+        The syntax begins with <literal>postgres://</>.  This can allow
+        applications to avoid implementing their own parser for URIs
+        representing database connections.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a libpq <link linkend="libpq-connect-sslcompression">connection
+        Add a <link linkend="libpq-connect-sslcompression">connection
         option</link> to disable <acronym>SSL</acronym> compression
         (Laurenz Albe)
        </para>
       <listitem>
        <para>
         Add a <link linkend="libpq-single-row-mode">single-row processing
-        mode</link> to libpq for better handling of large result sets
+        mode</link> for better handling of large result sets
         (Kyotaro Horiguchi, Marko Kreen)
        </para>
 
        <para>
-        Previously, libpq always collected the entire query result in memory
-        before passing it back to the application.
+        Previously, <application>libpq</> always collected the entire query
+        result in memory before passing it back to the application.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Enhance <literal>const</> qualifiers in the libpq functions
-        PQconnectdbParams, PQconnectStartParams, and PQpingParams (Lionel
-        Elie Mamane)
+        Add <literal>const</> qualifiers to the declarations of the functions
+        <function>PQconnectdbParams</>, <function>PQconnectStartParams</>,
+        and <function>PQpingParams</> (Lionel Elie Mamane)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow libpq's <filename>.pgpass</> file to process escaped characters
+        Allow the <filename>.pgpass</> file to include escaped characters
         in the password field (Robert Haas)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have library functions use <function>abort()</> instead of
-        <function>exit()</> to terminate the executable (Peter Eisentraut)
+        Make library functions use <function>abort()</> instead of
+        <function>exit()</> when it is necessary to terminate the process
+        (Peter Eisentraut)
        </para>
 
        <para>
-        This does not interfere with the normal exit codes used by the
+        This choice does not interfere with the normal exit codes used by the
         program, and generates a signal that can be caught by the caller.
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Fix a libpq memory leak by freeing client encoding connection
-        parameters (Peter Eisentraut)
-       </para>
-      </listitem>
-
      </itemizedlist>
 
    </sect3>
        </para>
 
        <para>
-        The following platforms are no longer considered supported: dgux,
+        The following platforms are no longer supported: dgux,
         nextstep, sunos4, svr4, ultrix4, univel, bsdi.
        </para>
       </listitem>
       <listitem>
        <para>
         Improve the concurrent transaction regression tests
-        (isolationtester) (Noah Misch)
+        (<application>isolationtester</>) (Noah Misch)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Modify <application>thread_test</> to create its test files in
-        the current directory, rather than /tmp (Bruce Momjian)
+        the current directory, rather than <filename>/tmp</> (Bruce Momjian)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <link linkend="tcn">tcn</link> (triggered change notification)
-        to generate <command>NOTIFY</command> events on table changes
-        (Kevin Grittner)
+        Support <literal>force_not_null</> option in <link
+        linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
        </para>
       </listitem>
 
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Have <link linkend="vacuumlo">vacuumlo</link> remove large objects
-        in batches, to reduce locking (Tim Lewis, Tom Lane)
-       </para>
-
-       <para>
-        The new <option>-l</> option allows changing the number of large
-        objects removed per transaction.
-       </para>
-      </listitem>
-
       <listitem>
        <para>
         Change <link
        </para>
       </listitem>
 
+      <listitem>
+       <para>
+        Add a <link linkend="tcn">tcn</link> (triggered change notification)
+        module to generate <command>NOTIFY</command> events on table changes
+        (Kevin Grittner)
+       </para>
+      </listitem>
+
     </itemizedlist>
 
     <sect4>
 
       <listitem>
        <para>
-        Allow <application>pg_upgrade</> to upgrade an old cluster that
-        does not have a <literal>postgres</> database (Bruce Momjian)
+        Adjust <application>pg_upgrade</> environment variables (Bruce
+        Momjian)
+       </para>
+
+       <para>
+        Rename data, bin, and port environment
+        variables to begin with <literal>PG</>, and support
+        <envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
+        <envar>PGPORT</envar>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow <application>pg_upgrade</> to handle cases where some
-        old or new databases are missing, as long as they are empty
+        Overhaul <application>pg_upgrade</> logging and failure reporting
         (Bruce Momjian)
        </para>
-      </listitem>
 
-      <listitem>
        <para>
-        Allow <application>pg_upgrade</> to handle configuration-only
-        directory installations (Bruce Momjian)
+        Create four append-only log files, and delete them on success.
+        Add <option>-r</>/<option>--retain</> option to unconditionally
+        retain these files.  Also remove <application>pg_upgrade</> options
+        <option>-g</>/<option>-G</>/<option>-l</> options as unnecessary,
+        and tighten log file permissions.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
-        options to pass parameters to the servers (Bruce Momjian)
+        Make <application>pg_upgrade</> create a script to incrementally
+        generate more accurate optimizer statistics (Bruce Momjian)
        </para>
 
        <para>
-        This is useful for configuration-only directory installs.
+        This reduces the time needed to generate minimal cluster statistics
+        after an upgrade.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Change <application>pg_upgrade</> to use port 50432 by default
-        (Bruce Momjian)
-       </para>
-
-       <para>
-        This helps avoid unintended client connections during the upgrade.
+        Allow <application>pg_upgrade</> to upgrade an old cluster that
+        does not have a <literal>postgres</> database (Bruce Momjian)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Overhaul <application>pg_upgrade</> logging and failure reporting
+        Allow <application>pg_upgrade</> to handle cases where some
+        old or new databases are missing, as long as they are empty
         (Bruce Momjian)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        Create four append-only log files, and delete them on success.
-        Add <option>-r</>/<option>--retain</> option to unconditionally
-        retain these files.  Also remove <application>pg_upgrade</> options
-        <option>-g</>/<option>-G</>/<option>-l</> options as unnecessary,
-        and tighten log file permissions.
+        Allow <application>pg_upgrade</> to handle configuration-only
+        directory installations (Bruce Momjian)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Adjust <application>pg_upgrade</> environment variables (Bruce
-        Momjian)
+        In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
+        options to pass parameters to the servers (Bruce Momjian)
        </para>
 
        <para>
-        Rename data, bin, and port environment
-        variables to begin with <literal>PG</>, and support
-        <envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
-        <envar>PGPORT</envar>.  INCOMPATIBILITY?
+        This is useful for configuration-only directory installs.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have <application>pg_upgrade</> create a script to incrementally
-        generate more accurate optimizer statistics (Bruce Momjian)
+        Change <application>pg_upgrade</> to use port 50432 by default
+        (Bruce Momjian)
        </para>
 
        <para>
-        This reduces the time needed to generate minimal cluster statistics
-        after an upgrade.
+        This helps avoid unintended client connections during the upgrade.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Allow <application>pg_stat_statements</> to aggregate similar
-        queries via SQL text normalisation (Peter Geoghegan, Tom Lane)
+        queries via SQL text normalization (Peter Geoghegan, Tom Lane)
        </para>
 
        <para>
         Users with applications that use non-parameterized SQL will now
-        be able to monitor query performance without using log file
-        analysis.
+        be able to monitor query performance without detailed log analysis.
        </para>
       </listitem>
 
        </para>
 
        <para>
-        Specifically, add <literal>SECURITY LABEL</>s to databases,
+        Specifically, add security labels to databases,
         tablespaces, and roles.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a rule to optionally build docs with the stylesheet from the
-        website (Magnus Hagander)
+        Add a rule to optionally build HTML documentation using the
+        stylesheet from the website (Magnus Hagander)
        </para>
 
        <para>
-        Use <command>make STYLE=website draft</>.
+        Use <command>gmake STYLE=website draft</>.
        </para>
       </listitem>
 
        </para>
       </listitem>
 
-      <listitem>
-       <para>
-        Improve the foreign data wrapper <acronym>API</acronym> and
-        documentation (Hanada Shigeru)
-       </para>
-      </listitem>
-
       <listitem>
        <para>
         Document the actual string returned by the client for MD5