]> granicus.if.org Git - postgresql/commitdiff
First version of 8.4 release notes; markup/cleanup/reorganization still
authorBruce Momjian <bruce@momjian.us>
Thu, 26 Mar 2009 01:19:07 +0000 (01:19 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 26 Mar 2009 01:19:07 +0000 (01:19 +0000)
required.

doc/src/sgml/release.sgml

index 653402247c09115a1334faaa67f5192cf42c60ca..b137478df83392c49547db730f5a041013be351d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.591 2009/03/17 21:36:21 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.592 2009/03/26 01:19:07 momjian Exp $ -->
 <!--
 
 Typical markup:
@@ -63,226 +63,2560 @@ do it for earlier branch release files.
    review, so each item is truly a community effort.
   </para>
 
- <sect1 id="release-8-3-7">
-  <title>Release 8.3.7</title>
+ <sect1 id="release-8-4">
+  <title>Release 8.4</title>
 
   <note>
-  <title>Release date</title>
-  <simpara>2009-03-16</simpara>
+   <title>Release date</title>
+   <simpara>2009-XX-XX</simpara>
   </note>
 
-  <para>
-   This release contains a variety of fixes from 8.3.6.
-   For information about new features in the 8.3 major release, see
-   <xref linkend="release-8-3">.
-  </para>
-
   <sect2>
-   <title>Migration to Version 8.3.7</title>
+   <title>Overview</title>
 
    <para>
-    A dump/restore is not required for those running 8.3.X.
-    However, if you are upgrading from a version earlier than 8.3.5,
-    see the release notes for 8.3.5.
+    This major PostgreSQL release brings SQL features people have been
+    waiting for for years, as well as performance enhancements
+    and changes to make space reuse more efficient and
+    more automatic.  This release adds the following major features:
    </para>
 
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
    <itemizedlist>
 
     <listitem>
      <para>
-      Prevent error recursion crashes when encoding conversion fails (Tom)
-     </para>
-
-     <para>
-      This change extends fixes made in the last two minor releases for
-      related failure scenarios.  The previous fixes were narrowly tailored
-      for the original problem reports, but we have now recognized that
-      <emphasis>any</> error thrown by an encoding conversion function could
-      potentially lead to infinite recursion while trying to report the
-      error.  The solution therefore is to disable translation and encoding
-      conversion and report the plain-ASCII form of any error message,
-      if we find we have gotten into a recursive error reporting situation.
-      (CVE-2009-0922)
+      *MAJOR ITEM LIST GOES HERE*
      </para>
     </listitem>
 
-    <listitem>
-     <para>
-      Disallow <command>CREATE CONVERSION</> with the wrong encodings
-      for the specified conversion function (Heikki)
-     </para>
+   </itemizedlist>
 
-     <para>
-      This prevents one possible scenario for encoding conversion failure.
-      The previous change is a backstop to guard against other kinds of
-      failures in the same area.
-     </para>
-    </listitem>
+   <para>
+    The above items are explained in more detail in the sections below.
+   </para>
 
-    <listitem>
-     <para>
-      Fix <function>xpath()</> to not modify the path expression unless
-      necessary, and to make a saner attempt at it when necessary (Andrew)
-     </para>
+  </sect2>
 
-     <para>
-      The SQL standard suggests that <function>xpath</> should work on data
-      that is a document fragment, but <application>libxml</> doesn't support
-      that, and indeed it's not clear that this is sensible according to the
-      XPath standard.  <function>xpath</> attempted to work around this
-      mismatch by modifying both the data and the path expression, but the
-      modification was buggy and could cause valid searches to fail.  Now,
-      <function>xpath</> checks whether the data is in fact a well-formed
-      document, and if so invokes <application>libxml</> with no change to the
-      data or path expression.  Otherwise, a different modification method
-      that is somewhat less likely to fail is used.
-     </para>
+  <sect2>
+   <title>Migration to Version 8.4</title>
 
-     <note>
+   <para>
+    A dump/restore using <application>pg_dump</application> is
+    required for those wishing to migrate data from any previous
+    release.
+   </para>
+
+   <para>
+    Observe the following incompatibilities:
+   </para>
+
+   <sect3>
+    <title>General</title>
+    <itemizedlist>
+
+     <listitem>
       <para>
-       The new modification method is still not 100% satisfactory, and it
-       seems likely that no real solution is possible.  This patch should
-       therefore be viewed as a band-aid to keep from breaking existing
-       applications unnecessarily.  It is likely that
-       <productname>PostgreSQL</> 8.4 will simply reject use of
-       <function>xpath</> on data that is not a well-formed document.
+       Use 64-bit integer datetimes by default (Neil Conway)
       </para>
-     </note>
-    </listitem>
 
-    <listitem>
-     <para>
-      Fix core dump when <function>to_char()</> is given format codes that
-      are inappropriate for the type of the data argument (Tom)
-     </para>
-    </listitem>
+      <para>
+       This was available previously via a configure --enable-integer-datetimes
+       (Neil Conway)
+      </para>
+     </listitem>
 
-    <listitem>
-     <para>
-      Fix possible failure in text search when C locale is used with
-      a multi-byte encoding (Teodor)
-     </para>
+     <listitem>
+      <para>
+       Change postgresql.conf default for log_min_messages to 'warning'
+       (previously 'notice') to reduce log file volume (Tom)
+      </para>
+     </listitem>
 
-     <para>
-      Crashes were possible on platforms where <type>wchar_t</> is narrower
-      than <type>int</>; Windows in particular.
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Have debug_print_parse, debug_print_rewritten, and debug_print_plan
+       output appear as LOG message level, not DEBUG1 (Tom) bjm: inconsistency
+       because of var names?
+      </para>
+     </listitem>
 
-    <listitem>
-     <para>
-      Fix extreme inefficiency in text search parser's handling of an
-      email-like string containing multiple <literal>@</> characters (Heikki)
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Have debug_pretty_print default to on (Tom)
+      </para>
+     </listitem>
 
-    <listitem>
-     <para>
-      Fix planner problem with sub-<command>SELECT</> in the output list
-      of a larger subquery (Tom)
-     </para>
+     <listitem>
+      <para>
+       Make "log_temp_files" super-user set only, like other logging options
+       (Simon)
+      </para>
+     </listitem>
 
-     <para>
-      The known symptom of this bug is a <quote>failed to locate grouping
-      columns</> error that is dependent on the datatype involved;
-      but there could be other issues as well.
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Disable appending of the epoch date/time when '%' escapes are missing in
+       log_filename (Robert Haas)
+      </para>
 
-    <listitem>
-     <para>
-      Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
-      (Tom)
-     </para>
+      <para>
+       This change was made because some users wanted a consistent log
+       filename.
+      </para>
+     </listitem>
 
-     <para>
-      This mistake could lead to Assert failures in an Assert-enabled build,
-      or an <quote>unexpected CASE WHEN clause</> error message in other
-      cases, when trying to examine or dump a view.
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Remove explain_pretty_print postgresql.conf setting (no longer needed)
+       (Tom)
+      </para>
+     </listitem>
 
-    <listitem>
-     <para>
-      Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
-     </para>
+     <listitem>
+      <para>
+       Remove log_restartpoints from recovery.conf;  instead use
+       log_checkpoints (Simon Riggs)
+      </para>
+     </listitem>
 
-     <para>
-      If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
-      were executed by someone other than the table owner, the
-      <structname>pg_type</> entry for the table's TOAST table would end up
-      marked as owned by that someone.  This caused no immediate problems,
-      since the permissions on the TOAST rowtype aren't examined by any
-      ordinary database operation.  However, it could lead to unexpected
-      failures if one later tried to drop the role that issued the command
-      (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
-      warnings from <application>pg_dump</> after having done so (in 8.3).
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Remove support for the (insecure) crypt authentication method (Magnus)
+      </para>
 
-    <listitem>
-     <para>
-      Change <command>UNLISTEN</> to exit quickly if the current session has
-      never executed any <command>LISTEN</> command (Tom)
-     </para>
+      <para>
+       This breaks compatibility with pre-7.2 versions.
+      </para>
+     </listitem>
 
-     <para>
-      Most of the time this is not a particularly useful optimization, but
-      since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
-      coding caused a substantial performance problem for applications that
-      made heavy use of <command>DISCARD ALL</>.
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Remove krb_realm and krb_server_hostname, now pg_hba.conf-only settings
+       (Magnus)
+      </para>
+     </listitem>
 
-    <listitem>
-     <para>
-      Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
-      an INTO-variables clause anywhere in the string, not only at the start;
-      in particular, don't fail for <command>INSERT INTO</> within
-      <command>CREATE RULE</> (Tom)
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       Remove ipcclean utility command (Bruce)
+      </para>
 
-    <listitem>
-     <para>
-      Clean up PL/pgSQL error status variables fully at block exit
-      (Ashesh Vashi and Dave Page)
-     </para>
+      <para>
+       The utility only worked on a few platforms;  users should use their
+       operating system tools instead.
+      </para>
+     </listitem>
 
-     <para>
-      This is not a problem for PL/pgSQL itself, but the omission could cause
-      the PL/pgSQL Debugger to crash while examining the state of a function.
-     </para>
-    </listitem>
+     <listitem>
+      <para>
+       pg_hba.conf also has extensive changes related to migration. bjm: add markup
+      </para>
+     </listitem>
 
-    <listitem>
-     <para>
-      Retry failed calls to <function>CallNamedPipe()</> on Windows
-      (Steve Marshall, Magnus)
-     </para>
+    </itemizedlist>
 
-     <para>
-      It appears that this function can sometimes fail transiently;
-      we previously treated any failure as a hard error, which could
-      confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
-      operations.
-     </para>
-    </listitem>
+    </sect3>
 
-    <listitem>
-     <para>
-      Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
-      of known timezone abbreviations (Xavier Bugaud)
-     </para>
-    </listitem>
+    <sect3>
+     <title>Queries</title>
 
-   </itemizedlist>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have children inherit CHECK constraints from parents (Alex Hunsaker,
+       Nikhil Sontakke, Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Force child tables to have the same CHECK constraints as parents (Alex
+       Hunsaker, Nikhil Sontakke, Tom Lane) bjm: verify
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Change TRUNCATE and LOCK behavior to apply to all child tables (Peter)
+      </para>
+
+      <para>
+       There is a new ONLY clause which disables this behavior.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Disallow negative LIMIT or OFFSET values, rather than treating them as
+       zero (Simon)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Disallow LOCK TABLE outside a transaction block (Tom)
+      </para>
+
+      <para>
+       Such an operation is useless because the lock would be immediately
+       released.
+      </para>
+     </listitem>
 
+     <listitem>
+      <para>
+       Make DISCARD ALL also discard advisory locks (Marko Kreen)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+    </sect3>
+
+
+    <sect3>
+     <title>Functions and Operators</title>
+
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have NUMERIC 0 ^ 4.3 return 1, rather than an error, and have 0 ^ 0.0
+       return 1, rather than error (Bruce)
+      </para>
+
+      <para>
+       This was already the float8 behavior.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove code that prevented unary minus of floating-point values from
+       producing '-0' (Tom)
+      </para>
+
+      <para>
+        The changed behavior is more IEEE-standards compliant.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Throw an error of an escape character is the last character in a LIKE
+       pattern (nothing to escape) (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have to_char()'s localized month/day names depend on LC_TIME, not
+       LC_MESSAGES (Euler Taveira de Oliveira)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Cause to_date() and to_timestamp() to more consistently report errors on
+       invalid input (Brendan Jurd)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Provide consistent rounding for fractional seconds (Ron Mayer) bjm:
+       combine with another item?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix to_timestamp() to not require upper/lower case matching for meridian
+       (AM/PM) and era (BC/AD) format designations  (Brendan Jurd)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require the existence of periods in to_timestamp() meridian
+       (AM/PM) and era (BC/AD) format designations to match (Brendan Jurd)
+      </para>
+
+      <para>
+       For example, input value 'AD' does not match format string 'A.D.'.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove ~=~ and ~<>~ operators used for LIKE index comparisons (Tom) bjm:
+       needed?  
+      </para>
+
+      <para>
+       A not-immediately-obvious incompatibility is that the sort order within
+       bpchar_pattern_ops indexes changes --- it had been identical to plain
+       strcmp, but is now trailing-blank-insensitive.  This will impact
+       in-place upgrades, if those ever happen.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    Below you will find a detailed account of the
+    changes between <productname>PostgreSQL</productname> 8.4 and
+    the previous major release.
+   </para>
+
+   <sect3>
+    <title>Performance</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Improve optimizer statistics calculations (Tom, Jan
+       Urbanski)
+      </para>
+
+      <para>
+       This includes improved statistics for full text columns.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow SELECT DISTINCT and UNION/INTERSECT/EXCEPT to use hashing (Tom)
+      </para>
+
+      <para>
+       This causes SELECT DISTINCT no longer always produces sorted output;
+       add an ORDER BY clause. The old SELECT DISTINCT behavior can be
+       restored by disabling enable_hashagg. SELECT DISTINCT ON does not use
+       hashing. bjm: enable_hashagg accurate?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       New semi- and ansi-joins (Tom)
+      </para>
+
+      <para>
+       While semi-joins merely replace existing IN joins, anti-joins
+       are a new capability for NOT IN and NOT EXIST clauses (Tom)
+       This improves optimization possibilities.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve IN/ANY/EXISTS processing (Tom)
+      </para>
+
+      <para>
+       IN and EXISTs now provide similar performance for equivalent clauses.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the performance of text_position() and related functions by
+       using Boyer-Moore-Horspool searching (David Rowley)
+      </para>
+
+      <para>
+       This is particularly useful for long search patterns.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve handling of subqueries by the optimizer (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Reduce I/O frequency of writing the  backend statistics file by writing
+       the file only when requested (Martin Pihlak)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve performance for bulk inserts (Robert Haas, Simon)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Increase the default value of default_statistics_target from 10 to 100
+       (Tom)
+      </para>
+
+      <para>
+       The maximum value was also increased from 1000 to 10000.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Modify 'constraint_exclusion' to check for partitioned tables by default
+       when inheritance or UNION ALL is used (Tom)
+      </para>
+
+      <para>
+       A new constraint_exclusion setting, "partition", which matches this
+       behavior.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow I/O read-ahead for bitmap index scans (Greg Stark)
+      </para>
+
+      <para>
+       The amount of read-ahead is controlled by effective_io_concurrency.
+       This requires posix_fadvise() support in the kernel.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Inline simple set-returning SQL functions in FROM clauses (Richard Rowell)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>TOAST</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Consider TOAST compression on values as short as 32 bytes (previously
+       256 bytes) (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require 25% of space savings before using TOAST compression (previously
+       20%) (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Be more aggressive in storing EXTERNAL and EXTENDED column values in
+       TOAST (Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Server Settings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Convert many postgresql.conf settings to enumerated values so
+       pg_settings can easily display valid values (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add postgresql.conf setting cursor_tuple_fraction to control the 
+       fraction of a cursor's rows expected to be requested by the user (Robert
+       Hell)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow underscores in postgresql.conf custom variable classes (Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Monitoring</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add pg_conf_load_time() function to report when the Postgres configuration
+       files were last loaded (George Gensure)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_terminate_backend() to safely terminate a backend (the SIGTERM
+       signal also works) (Tom, Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add ability to track user-defined functions call counts and runtimes via
+       postgresql.conf variable 'track_functions' (Martin Pihlak)
+      </para>
+
+      <para>
+       Function statistics appear in a new system table, pg_stat_user_functions.
+       However, inlined SQL functions are not tracked.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow specification of the maximum pg_stat_activity query string size
+       via postgresql.conf variable track_activity_query_size (Thomas Lee)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve syslog performance by increasing the maximum line length
+       (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add read-only postgresql.conf variables segment_size, wal_block_size,
+       and wal_segment_size (Bernd Helmle)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       When reporting a deadlock, report all session queries involved in the
+       deadlock to the server log  (Itagaki Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       New pg_stat_get_activity(pid) function to return information about a
+       specific process id (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Move that server statistics file into the subdirectory pg_stat_tmp
+       (Magnus)
+      </para>
+
+      <para>
+       This allows the statistics file to be placed in a RAM-resident
+       directory to reduce I/O requirements.  On startup/shutdown, the
+       file is copied to the top-level $PGDATA directory so it is preserved
+       between restarts.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the location of the new pg_stat_tmp to be configured via
+       the stats_temp_directory setting (Magnus)
+
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>pg_hba.conf</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Parse pg_hba.conf in the postmaster so errors are reported on reload
+       (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make pg_hba.conf "sameuser" an optional argument for ident
+       authentication (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Change all pg_hba.conf authentication options to be 'name=value'
+       settings (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow 'ident' authentication over Unix-domain sockets on Solaris (Garick
+       Hamlin)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_hba.conf option "clientcert" to control requesting of a client
+       certificate (Magnus)
+      </para>
+
+      <para>
+       Previously this was controlled by the presence of a root certificate
+       file in the server's data directory.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_hba.conf "cert" authentication method to allow user
+       authentication via SSL certificates (Magnus)
+      </para>
+
+      <para>
+       Previously SSL certificates could only authenticate hosts, not users.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow krb5, gssapi and sspi realm and krb5 host settings to be specified
+       in pg_hba.conf (Magnus)
+      </para>
+
+      <para>
+       These override the settings in postgresql.conf.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Addkrb5, gssapi and sspi 'include_realm' parameter to pg_hba.conf
+       (Magnus)
+      </para>
+
+      <para>
+       This allows identical usernames from different realms to be
+       authenticated as different database users. bjm: correct?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Issue a warning rather than shut down when pg_hba.conf can't be loaded
+       (Selena Deckelmann)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Authentication</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Report appropriate error message for combination of MD5 authentication
+       and db_user_namespace enabled (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support regular expressions in pg_ident.conf (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow Kerberos/GSSAPI parameters to be changed without restarting the
+       postmaster (Magnus)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Continuous Archiving</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have pg_stop_backup() wait for modified WAL files to be archived (Simon)
+      </para>
+
+      <para>
+       This guarantees that the backup is valid at the time pg_stop_backup()
+       completes.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Prevent normal shutdown if a continuous archiving base backup is in
+       progress (Laurenz Albe)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Cancel a continuous archiving base backup if a fast shutdown is requested
+       (Laurenz Albe)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow recovery.conf boolean variables to take the same range of string
+       alues as postgresql.conf (Bruce)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Queries</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for WINDOW functions (Hitoshi Harada)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add WITH clauses support, including WITH RECURSIVE (Yoshiyuki Asaba,
+       Tatsuo Ishii, Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       New TABLE command (Peter)
+      </para>
+
+      <para>
+       "TABLE tablename" is a short-hand for "SELECT * FROM tablename".
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow AS to be optional when specifying a SELECT (or RETURNING) column
+       output label (assuming the label is not an SQL keyword) (Hiroshi Saito)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support set-returning functions in the target lists of Agg and Group plan
+       nodes.  This is a pretty ugly feature but since we don't yet have a
+       plausible substitute, we'd better support it everywhere (Tom) bjm:
+       details?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow SELECT FOR UPDATE/SHARE to work on inheritance trees (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add infrastructure for SQL/MED (Martin Pihlak, Peter)
+      </para>
+
+      <para>
+       There are no remote or external SQL/MED capabilities yet. bjm:
+       accurate?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Invalidate cached plans when schemas, operators, or operator classes are
+       modified (Tom) bjm: effect?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the plan cache invalidation mechanism to make it invalidate plans
+       when user-defined functions used in a plan are modified (Tom, Martin
+       Pihlak) bjm: explain
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow comparison of composite types and allow arrays of
+       possibly-anonymous composite types (Tom)  bjm: clear?
+      </para>
+
+      <para>
+       Specifically this allows 'array[ row(1,2), row(3,4)]' and 'row(1,1.1)
+       = any (array[ row(7,7.7), row(1,1.0)'.  This is particularly useful
+       for recursive queries.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for Unicode sting and identifier specifications using code
+       points, e.g. U&'d\0061t\+000061' (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the parser's ability to report the error location of a query
+       (Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>LIMIT/OFFSET</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow LIMIT and OFFSET to use subselects as arguments (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Document that LIMIT NULL and OFFSET NULL have no effect (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add SQL-standards syntax for LIMIT/OFFSET capabilities (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+               OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} ONLY.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>ALTER TABLE</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add ALTER TYPE RENAME (Petr Jelinek)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add ALTER SEQUENCE ... RESTART (no parameter) to reset a sequence to its
+       initial value (Zoltan Boszormenyi)  bjm: compatibility problem?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Modify the ALTER TABLE syntax to allow all reasonable combinations for
+       tables, indexes, sequences, and views (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+               New syntax supported (these formerly required "ALTER TABLE")
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       <itemizedlist>
+        <listitem>
+         <para>
+          ALTER SEQUENCE OWNER TO
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+                 ALTER VIEW ALTER COLUMN SET/DROP DEFAULT
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+                 ALTER VIEW OWNER TO
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+                 ALTER VIEW SET SCHEMA
+         </para>
+        </listitem>
+       </itemizedlist>
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for the syntax ALTER TABLE ... ALTER COLUMN ... SET DATA
+       TYPE (Peter)
+      </para>
+
+      <para>
+       This is SQL-standard syntax for functionality that was already
+       supported.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have ALTER TABLE SET WITHOUT OIDS rewrite the table to remove oid values
+       (Tom)
+      </para>
+
+      <para>
+       Also, add ALTER TABLE SET WITH OIDS to rewrite the table to add oids.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add ALTER DATABASE SET TABLESPACE to move a database to a new tablespace
+       (Guillaume Lelarge, Bernd Helmle)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>TRUNCATE</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Support statement-level ON TRUNCATE triggers (Simon)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add TRUNCATE TABLE ... RESTART/CONTINUE IDENTITY clauses (Zoltan
+       Boszormenyi)
+      </para>
+
+      <para>
+       The start value of a sequence can be changed by ALTER SEQUENCE START
+       WITH.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow TRUNCATE foo, foo to succeed (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add a separate TRUNCATE permission (Robert Haas)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Database Operations</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Improve reporting of CREATE/DROP/RENAME DATABASE failure when
+       uncommitted prepared transactions are the cause (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make LC_COLLATE and LC_CTYPE database-level settings (Radek Strnad, Heikki)
+      </para>
+
+      <para>
+       This makes collation similar to encoding, which was always configurable
+       per database.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve checks that the database encoding, collation (LC_COLLATE), and
+       character classes (LC_CTYPE) match (Heikki)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Object Manipulation</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for column-level privileges (Stephen Frost, KaiGai Kohei)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve reporting of dependencies during DROP commands (Alex Hunsaker)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Refactor multi-object DROP operations so conflicting dependencies don't
+       generate an error (Alex Hunsaker)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add WITH [NO] DATA clause to CREATE TABLE AS, per the SQL standard (Tom, Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for user-defined I/O conversion casts (Heikki)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow CREATE AGGREGATE to user an "internal" transition datatype (for
+       super-users only)  (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add LIKE clause to CREATE TYPE (Tom)
+      </para>
+
+      <para>
+       This simplifies creation of data types like existing types.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow CREATE OR REPLACE VIEW to add columns to the _end_ of the view
+       (Robert Haas)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Vacuum</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow relation forks to track free space (Heikki)
+      </para>
+
+      <para>
+       This allows the recording of all free space discovered by vacuum in
+       *.fsm files, rather than having to limit recording to a fixed-sized
+       shared memory area;  max_fsm_pages and max_fsm_relations settings
+       have been removed.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       New visibility map file to track pages that do not require vacuum
+       (Heikki)
+      </para>
+
+      <para>
+       This allows VACUUM to avoid sequentially scanning a table when only a
+       portion of the table needs vacuuming.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Track explicit transaction snapshots (Alvaro)
+      </para>
+
+      <para>
+       This improves space reuse by vacuum in the presence of long-running
+       transactions.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add vacuum_freeze_table_age to postgresql.conf to control when VACUUM should
+       ignore the visibility map and do a full table scan to set frozen xids
+       (Heikki)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add ability to specify autovacuum and TOAST parameters in
+       CREATE TABLE (Alvaro, Euler Taveira de Oliveira)
+      </para>
+
+      <para>
+       Autovacuum options uses to be stored in a system table.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add --freeze option to vacuumdb (Bruce)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>EXPLAIN</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have EXPLAIN VERBOSE show the output columns of a query (Tom)
+      </para>
+
+      <para>
+       Previously EXPLAIN VERBOSE output an internal representation of the
+       output columns.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have EXPLAIN honor debug_print_plan (Tom)  bjm: verify behavior, this
+       replaces EXPLAIN VERBOSE?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow EXPLAIN on CREATE TABLE AS (Peter)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Other Utility Operations</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add verbose option to the CLUSTER command and clusterdb (Jim Cox)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Decrease memory requirements for recording pending trigger events (Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>General Data Types</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add a CaseSensitive option for text search synonym dictionaries (Simon)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the precision of NUMERIC division (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add int2 with int8 basic arithmetic operators (Tom)
+      </para>
+
+      <para>
+       This simplifies casting requirements.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow UUID input to accept optional hyphens after every four digits
+       (Robert Haas)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Accept 'on'/'off' as boolean data type values (ITAGAKI Takahiro)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Temporal Data Types</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Reject year '0 BC' and years '000' and '0000' (Tom)
+      </para>
+
+      <para>
+       Previously these were interpreted as 1 BC.  (Years '0' and '00' are
+       assumed to be the year 2000.)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Include SGT (Singapore time) as a valid timezone abbreviation (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support the IS0 8601 time interval syntax (Tom) bjm: sufficient?
+      </para>
+
+      <para>
+       For example, INTERVAL 'P1Y2M3DT4H5M6.7S' is now supported.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the interval precision to be specified after the last field, for
+       SQL-standards compliance (Tom)
+      </para>
+
+      <para>
+       Formerly the precision had to be specified after the keyword INTERVAL
+       (the old syntax is still supported).  Data type definitions will now
+       be output using the new format.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support 'infinite' dates (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add postgresql.conf variable IntervalStyle which controls how interval
+       values are output (Ron Mayer)
+      </para>
+
+      <para>
+       Valid value are:  postgres, postgres_verbose, sql_standard, iso_8601.
+       This also controls handling of negative interval input when only some
+       fields have positive/negative designations.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Increase the number of fractional seconds digits displayed by intervals (Ron
+       Mayer)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Increase variability in the number of fractional seconds digits
+       displayed (Ron Mayer)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>General Functions</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Document that setseed() allows values from -1 to 1 (not 0 to 1), and
+       enforce the valid range (Kris Jurka)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add server side lo_import(filename, oid) function (Tatsuo)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add quote_nullable(), which behaves like quote_literal() but returns
+       'NULL' for a null argument (Brendan Jurd)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve full text search headline() generation to allow several
+       fragments (Sushant Sinha)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add suppress_redundant_updates_trigger() trigger function to avoid
+       non-data-changing updates (Andrew)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add div(NUMERIC, NUMERIC) for NUMERIC division, without rounding (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add timestamp and timestamptz versions of generate_series() (Hitoshi
+       Harada)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Database Informational Functions</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Implement current_query() for use by functions that need to know the
+       currently running query (Tomas Doran)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_get_keywords() function to return predefined parser keywords
+       (Dave Page)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add function pg_get_functiondef() to see a functions definition (Abhijit
+       Menon-Sen)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Modify pg_relation_size() to handle free space map (*.fsm) files
+       (Heikki)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Modify pg_relation_size() to use 'regclass' (Heikki)
+      </para>
+
+      <para>
+       pg_relation_size(data_type_name) no longer works.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add boot_val and reset_val columns to pg_settings output (Greg Smith)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for CURRENT_CATALOG, CURRENT_SCHEMA, SET CATALOG, SET SCHEMA
+       (Peter)
+      </para>
+
+      <para>
+       These are SQL-standard capabilities.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_typeof() function to return the data type of any value (Brendan
+       Jurd)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have version() return information about whether the server is a 32
+       or 64-bit binary (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix the behavior of information schema columns is_insertable_into and
+       is_updatable to be consistent (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Convert remaining builtin set-returning functions to use OUT parameters
+       (Jaime Casanova)
+      </para>
+
+      <para>
+       This makes it possible to call these functions without specifying
+       a column list:  pg_show_all_settings(), pg_lock_status(),
+       pg_prepared_xact(), pg_prepared_statement(), pg_cursor()
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have pg_*_is_visible and has_*_privilege functions return NULL for
+       invalid oids, rather than generate an error (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add has_column_privilege() and has_any_column_privilege() functions
+       (Stephen Frost, Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Function Creation</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Support variadic functions (functions with a variable number of
+       arguments) (Pavel Stehule)
+      </para>
+
+      <para>
+       Only trailing arguments can be of variable length, and they all must
+       be of the same data type.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow DEFAULT values for function arguments (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add CREATE FUNCTION ... RETURNS TABLE clause (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow SQL-language functions to return the output of an INSERT/UPDATE/DELETE
+       RETURNING clause (Tom)
+      </para>
+
+      <para>
+       Formerly only SELECT was supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Arrays</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have cast on ARRAY[] apply to all elements, not just the array result
+       (Brendan Jurd)
+      </para>
+
+      <para>
+       This allows NULL ARRAY[] entries as long as it is properly cast
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make the SQL ARRAY dimensions optional to match the SQL standard
+       (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add array_ndims() function to return the number of dimensions of an array (Robert
+       Haas)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add array_length() function to return the length of an array for the
+       specified dimensions (Jim Nasby, Robert Haas, Peter Eisentraut)
+      </para>
+
+      <para>
+       Also add identically-functioning SQL-standard function cardinality().
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new aggregate function array_agg(), which returns all aggregated
+       values as a single array (Robert Haas, Jeff Davis, Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add function unnest(), which converts an array to individual row values
+       (Tom)
+      </para>
+
+      <para>
+       This is the opposite of array_agg().
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add array_fill() to create arrays initialized with a value (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add generate_subscripts() to generate array subscripts (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Generate proper error if a SERIAL array is specified (Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Indexes</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Dramatically improve the speed of building and accessing hash indexes
+       (Tom Raney, Shreya Bhargava, Kenneth Marshall, Tom) 
+      </para>
+
+      <para>
+       This allows hash indexes to be often faster than btree indexes.
+       However, hash indexes are still not crash-safe.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have hash indexes store only the hashed value, not the full indexed
+       columns (Xiao Meng)
+      </para>
+
+      <para>
+       This greatly reduces the size of hash indexes for long indexed
+       values, and improves performance.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove requirement to use "@@@" when doing GIN weighted lookups on full
+       text indexes (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add optimizer selectivity function for '@@' text search operations (Jan
+       Urbanski)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add partial match support for GIN indexes (Teodor Sigaev, Oleg Bartunov)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow prefix matching in full text searches (Teodor Sigaev, Oleg
+       Bartunov)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support multi-column GIN indexes (Teodor Sigaev)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Special xxx_pattern_ops LIKE indexes can now be used for simple equality
+       comparisons (Tom)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>PL/PgSQL Server-Side Language</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Support EXECUTE USING in PL/pgSQL (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow PL/pgSQL to loop over an open cursor using a FOR loop (Pavel
+       Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support RETURN QUERY EXECUTE in PL/pgSQL (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the PL/pgSQL RAISE command (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       <itemizedlist>
+        <listitem>
+         <para>
+                 Support DETAIL and HINT fields
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+                 Support SQLSTATE error codes
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+                 Support an exception name parameter
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+                 Allow RAISE without parameters in an exception
+                 block to rethrow the current error
+         </para>
+        </listitem>
+       </itemizedlist>
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the specification of SQLSTATE numeric codes in EXCEPTION lists
+       (Pavel Stehule)
+      </para>
+
+      <para>
+       This is useful for handling custom SQLSTATE codes.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support CASE statement in PL/pgSQL (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add PL/PgSQL FOUND and GET DIAGNOSTICS support for the RETURN QUERY
+        statement (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add PL/pgSQL translation (Alvaro)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>General <link linkend="APP-PSQL"><application>psql</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Remove psql startup banner;  now just suggest 'help' (Joshua Drake)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have psql 'help' show common backslash commands (Greg Sabino Mullane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add psql '\pset format wrapped' mode to wrap output to screen width, or
+        file/pipe output too if \pset columns' is set (Bryce Nesbitt)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Use the psql pager for wide output (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require a space between a psql backslash command and the first argument (Bernd
+       Helmle)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Display access control rights on multiple lines in psql (Brendan Jurd,
+       Andreas Scherbaum)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve psql tab completion support for schema qualified and quoted
+       identifiers (Greg Sabino Mullane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the normal range of boolean values in \pset, rather than just
+       'on' and 'off' (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add optional on/off argument to psql \timing (David Fetter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have psql \l show access privileges (Andrew Gilligan)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have psql \l+ show database sizes, if permissions allow (Andrew Gilligan)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add psql \ef command to edit function definitions (Abhijit Menon-Sen)
+      </para>
+
+      <para>
+       \ef without a function names creates an empty function template for
+       editing.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title><link linkend="APP-PSQL"><application>psql</></link> \d*</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Have psql \d display references to this table as a foreign-key constraint
+       (Kenneth D'Souza)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have psql \d show the value of sequence columns (Euler Taveira de
+       Oliveira)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add column storage type and other relation options to psql \d+ display
+       (Gregory Stark, Euler Taveira de Oliveira)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Show relation size in psql \d+ output (Dickson S. Guedes)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have all psql \d* commands show system objects only if 'S' is specified
+       (Greg Sabino Mullane)
+      </para>
+
+      <para>
+       psql \dt already behaved this way.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make psql \d and \dt consistent in their display of system tables
+       (Bruce)
+      </para>
+
+      <para>
+       Previously, '\d pg_class' would show pg_class while '\dt pg_class'
+       would not.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Show enumerated values in psql's \dT+ (David Fetter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow psql \dC to accept wildcard patterns (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow psql \d* commands to work with versions of Postgres back to 7.4
+       (Guillaume Lelarge)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add --no-tablespaces option to pg_dump/pg_dumpall/pg_restore so dumps
+       can be restored to clusters that have non-matching tablespace layouts
+       (Gavin Roy)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove -i/--ignore-version option from pg_dump and pg_dumpall (Tom)
+      </para>
+
+      <para>
+       Use of the options does not throw an error, but it has no effect.
+       This option was removed because the version checks are considered
+       necessary.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Disable statement_timeout during dump and restore (Joshua Drake)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_dump/pg_dumpall option --lock-wait-timeout (David Gould)
+      </para>
+
+      <para>
+       Allows dumps to fail if unable to acquire shared table within the
+       specified amount of time.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Reorder pg_dump --data-only output to dump primary-key tables referenced
+       by foreign keys are dumped before the foreign-key referencing tables
+       (Tom)
+      </para>
+
+      <para>
+       This allows data loads when foreign keys are already present.  If
+       circular references make this impossible, issue a NOTICE.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow pg_dump, pg_dumpall, and pg_restore to use a specified role (Benedek
+       László)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow pg_restore of a custom format archive to use multiple concurrent
+       connections to do the restore (Andrew)
+      </para>
+
+      <para>
+       The number of concurrent connections is controlled by the option
+       --jobs.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new pg_dump --binary-upgrade flag to be used by binary upgrade
+       utilities (Bruce)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Other Client Applications</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Fix 'pg_ctl restart' to preserve command-line arguments (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add -w/--no-password option that suppresses password prompts to all
+       utilities that have a -W/--password option (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove -q (quiet) option for create* and drop* utility commands (Peter)
+      </para>
+
+      <para>
+       These options have had no effect since 8.3.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>General <link linkend="libpq"><application>libpq</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow the OID to be specified when importing large objects using
+       libpq lo_import_with_oid() (Tatsuo)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add events support to libpq (Andrew Chernow, Merlin Moncure)
+      </para>
+
+      <para>
+       This adds the ability to register callbacks to handle private data
+       for connection and result creation and destruction.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve libpq error handling to allow the return of multiple error
+       messages as multi-line error reports (Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have libpq PQexecParams() return PGRES_EMPTY_QUERY for an empty query
+       (Tom)
+      </para>
+
+      <para>
+        It previously returned PGRES_COMMAND_OK.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Document how to avoid the libpq overhead of WSACleanup() overhead on
+       Windows (Andrew Chernow)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title><link linkend="libpq"><application>libpq</></link> SSL</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Fix libpq certificate validation for SSL connections (Magnus) bjm:
+       details?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the file locations for libpq SSL certificates to be specified
+       (Mark Woodward, Alvaro, Magnus)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add libpq connection parameter "sslverify" to control the verification
+       of the server's SSL certificate (Magnus)
+      </para>
+
+      <para>
+       The default is full verification.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Properly unregister OpenSSL callbacks when libpq is done with
+       all connection (Bruce, Magnus, Russell Smith)
+      </para>
+
+      <para>
+       This is required for applications that unload the libpq library so
+       no invalid OpenSSL callbacks remain.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title><link linkend="ecpg"><application>ecpg</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add localization support for ecpg messages (Euler Taveira de Oliveira)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       ecpg parser is now automatically generated from the server parser
+       (Michael)
+      </para>
+
+      <para>
+       Previously a separate ecpg parser was maintained.
+
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Server Programming Interface (<acronym>SPI</>)</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add SPI support for single-use plans with out-of-line parameters (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new SPI_OK_REWRITTEN return code to SPI_execute() (Heikki)
+      </para>
+
+      <para>
+       This is used when a command is rewritten to another type of command.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Build Options</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Support 64-bit timezone data files (Heikki)
+      </para>
+
+      <para>
+       This adds support for daylight saving time (DST) calculations beyond 2038.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix bug in handling of the timezone database when cross-compiling
+       (Richard Evans)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Update build system to use Autoconf 2.61 (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require GNU bison for source code builds (Peter)
+      </para>
+
+      <para>
+       This has been a requirement for several years but this removes the
+       infrastructure for supporting other parser tools.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add pg_config --htmldir option (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Pass float4 by value inside the server (Zoltan Boszormenyi)
+      </para>
+
+      <para>
+       Add configure option --disable-float4-byval to use the old behavior.
+                                                                                tgl
+       Pass float8 and int8 by value in the server where possible (Zoltan
+       Boszormenyi)
+      </para>
+
+      <para>
+       Add configure option --disable-float8-byval to use the old behavior.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add configure options -with-segsize, --with-blocksize,
+       --with-wal-blocksize, --with-wal-segsize (Zdenek Kotala, Tom)
+      </para>
+
+      <para>
+       This allows compile-time control over several compile-time constants
+       that control how large tables and WAL are segmented into separate files and
+       their internal block sizes
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow threaded builds on Solaris 2.5 (Bruce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for Sun Studio compiler on Linux (Julius Stroffek)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Append major version number to the gettext domain name, and for
+       libraries the soname major version number (Peter)
+      </para>
+
+      <para>
+       This simplifies parallel installations.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow out-of-tree builds on Mingw and Cygwin (Richard Evans)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix the use of Mingw32 as a cross-compiling source platform (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix problem when setting LC_MESSAGES on MSVC-built systems (Hiroshi
+       Inoue, Hiroshi Saito, Magnus)  bjm: details?
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Source Code</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Link backend object files in one step, rather than in stages (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Additional DTrace probes (Robert Lor)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add DTrace support on Mac OS X Leopard (Robert Lor)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new cstring to text conversion functions (Brendan Jurd, Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve logic for shared cache invalidation (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make "name" char-aligned (Tom) bjm: pg_upgrade?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add function hook to let plug-ins control the executor (ITAGAKI
+       Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add a hook to allow planner statistics lookup behavior to be overridden
+       (Simon Riggs)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add "shmem_startup_hook" for custom shared memory requirements (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Replace pg_class column reltriggers with boolean relhastriggers (Simon)
+      </para>
+
+      <para>
+       Also remove unused pg_class columns relukeys, relfkeys, and relrefs.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Move SQL-command manual pages from the 'manl' (man-el) section to 'man7'
+       (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Move platform FAQs into the main documentation (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add %expect 0 to all parser input files to prevent builds with parser
+       conflicts (Peter)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for the KOI8U (Ukrainian) encoding (Peter)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
+
+   <sect3>
+    <title>Contrib</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add -M (query mode) to /contrib/pgbench (ITAGAKI Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add duration option to /contrib/pgbench (Takahiro Itagaki)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Fix /contrib/pgstattuple to handle tables and indexes with over 2
+       billion pages (Tatsuhito Kasahara)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add Levenshtein string-distance function to /contrib/fuzzystrmatch
+       that allows the user to specify the cost of insertion, deletion,
+       and substitution (Volkan Yazici)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove dblink_current_query() from /contrib/dblink;  it should now use
+       current_query() (Tomas Doran)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have /contrib/ltree support multibyte encodings (laser)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add /contrib/citext as a case-insensitive text data type (David Wheeler)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make sure /contrib/dblink uses a password supplied by the user, and not
+       accidentally from the server .pgpass file (Joe Conway)
+      </para>
+
+      <para>
+       This is a security enhancement.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add fsm_page_contents() to contrib/pageinspect (Heikki)
+      </para>
+
+      <para>
+       Modify get_raw_page() to support free space map (*.fsm) files.
+       Also update /contrib/pg_freespacemap.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for multibyte encodings to /contrib/pg_trgm (Teodor)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Rewrite contrib/intagg to user new server-side functions array_agg() and
+       unnest() (Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add /contrib/auto_explain to automatically run EXPLAIN on queries
+       exceeding a specified duration (Takahiro Itagaki, Tom)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add contrib/pg_stat_statements for server-wide tracking of statement execution
+       statistics (Takahiro Itagaki)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect3>
   </sect2>
  </sect1>