]> granicus.if.org Git - postgresql/commitdiff
Move alpha release notes into a separate file; re-align sgml tags.
authorBruce Momjian <bruce@momjian.us>
Thu, 29 Apr 2010 20:54:28 +0000 (20:54 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 29 Apr 2010 20:54:28 +0000 (20:54 +0000)
doc/src/sgml/release-9.0.sgml
doc/src/sgml/release-alpha.sgml [new file with mode: 0644]

index 8a6923555aa8581e2610d3ce6bcb39a920a6fb54..fd71d2d6ec5cbf0a9315943708fefc58a5540d61 100644 (file)
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.16 2010/04/29 20:43:22 momjian Exp $ -->
-
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.17 2010/04/29 20:54:28 momjian Exp $ -->
 
  <sect1 id="release-9-0">
   <title>Release 9.0</title>
 
-  <note>
-   <title>Release date</title>
-   <simpara>2010-??-??</simpara>
-  </note>
+  <note>
+   <title>Release date</title>
+   <simpara>2010-??-??</simpara>
+  </note>
+
+  <sect2>
+   <title>Overview</title>
+
+   <para>
+    Based on overwhelming user demand, this release of
+    <productname>PostgreSQL</> adds features that have been requested
+    for years, like easy-to-use replication, a mass permission
+    facility, and anonymous blocks. While past major releases have
+    been quite conservative in their scope, this release shows a
+    bold new desire to provide facilities that every new and existing
+    user of <productname>PostgreSQL</> will embrace. This has all
+    been done with few incompatibilities. The major areas of
+    enhancement are:
+   </para>
+
+   <itemizedlist>
+
+    <!-- This list duplicates items below, but without authors or details-->
+
+    <listitem>
+     <para>
+      Allow continuous archive standby systems to accept read-only queries
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow continuous archive (<acronym>WAL</>) files to be streamed to a
+      standby system
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add the ability to make mass permission changes per
+       schema using the new <link
+       linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
+       IN SCHEMA</></link> clause
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add the ability to control large object permissions with
+      <command>GRANT</>/<command>REVOKE</>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Implement anonymous functions using the <link
+      linkend="SQL-DO"><command>DO</></link> statement
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow function calls to supply parameter names and match them to named
+      parameters in the function definition (Pavel Stehule)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Install server-side language PL/pgSQL by default
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Major PL/Perl enhancements
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow SQL-compliant <link
+      linkend="SQL-CREATETRIGGER">per-column triggers</link>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
+      unique constraints</link>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
+      linkend="SQL-NOTIFY"><command>NOTIFY</></link> store events
+      in a memory queue, rather than a system table
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
+      to pass an optional string to listeners
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Change <command>VACUUM FULL</> to rewrite the entire table and
+      indexes, rather than moving around single rows to compact space
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add prefix support for the full text search synonym dictionary
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Use red-black trees for <acronym>GIN</> index creation
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link
+      linkend="functions-binarystring-other"><function>get_bit()</></link>
+      and <function>set_bit()</> functions for <type>bit</>
+      strings, mirroring those for <type>bytea</>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add the ability for clients to set an <link
+      linkend="libpq-connect-application-name">application
+      name</link>, which is displayed in
+      <structname>pg_stat_activity</>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add support for compiling on <link
+      linkend="install-win32-full">64-bit
+      <productname>Windows</></link> and running in 64-bit
+      mode
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      The above items are explained in more detail in the sections below.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+
+  <sect2>
+
+  <title>Migration to Version 9.0</title>
+  <para>CURRENT AS OF 2010-04-29</para>
+
+  <para>
+   A dump/restore using <application>pg_dump</application> is
+   required for those wishing to migrate data from any previous
+   release.
+  </para>
+
+  <para>
+   Observe the following incompatibilities:
+  </para>
+
+  <sect3>
+   <title>Server Settings</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Remove server variable <varname>add_missing_from</>, which was
+      defaulted to off for many years (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove server variable <varname>regex_flavor</>, which
+      was defaulted to <link
+      linkend="posix-syntax-details"><literal>advanced</></link>
+      (e.g. Perl-regex compatible) for many years (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      It is now necessary to set <link
+      linkend="guc-wal-level"><varname>wal_level</></link> to
+      <literal>archive</> to do continuous archiving.
+      (Heikki Linnakangas)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>Queries</title>
+   <itemizedlist>
+
+   <listitem>
+    <para>
+     When querying a <link linkend="ddl-inherit">parent table</link>,
+     do not do additional permission checks on child tables
+     returned as part of the query (Peter Eisentraut)
+    </para>
+
+    <para>
+     The SQL standard specifies this behavior.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Have fractional seconds conversion truncate rather than
+     round when using float-based dates/times (Tom Lane)
+    </para>
+   </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>String Handling</title>
+   <itemizedlist>
+
+   <listitem>
+    <para>
+     Improve standards compliance of <link
+     linkend="functions-similarto-regexp"><literal>SIMILAR TO</></link>
+     patterns and SQL-style <function>substring()</> patterns (Tom Lane)
+    </para>
+
+    <para>
+     This includes treating <literal>?</> and <literal>{...}</> as
+     pattern metacharacters, while they were simple literal characters
+     before; that corresponds to new features added in SQL:2008.
+     Also, <literal>^</> and <literal>$</> are now treated as simple
+     literal characters; formerly they were treated as metacharacters,
+     as if the pattern were following POSIX rather than SQL rules.
+     Also, in SQL-standard <function>substring()</>, use of parentheses
+     for nesting no longer interferes with capturing of a substring.
+     Also, processing of bracket expressions (character classes) is
+     now more standards-compliant.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Reject negative length values in 3-parameter <link
+     linkend="functions-string-sql"><function>substring()</></link>
+     for bit strings, per the SQL standard (Tom Lane)
+    </para>
+   </listitem>
+
+  </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>Object Renaming</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Tighten enforcement of column renaming when a child table inherits
+      the renamed column from an unrelated parent (KaiGai Kohei)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      No longer rename index names and index column names when table
+      columns are renamed (Tom Lane)
+     </para>
+
+     <para>
+      Administrators still can rename such columns manually. Expression
+      index names are also not renamed. WHY ARE EXPRESSION INDEXES
+      SIGNIFICANT?
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+
+  <sect3>
+   <title>PL/pgSQL Variables</title>
+   <itemizedlist>
+
+
+    <listitem>
+     <para>
+      Have PL/pgSQL throw an error if a variable name conflicts with a
+      column name used in a query (Tom Lane)
+     </para>
+
+     <para>
+      This behavior can be changed via the server variable <link
+      linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
+      or by the per-function option <literal>#variable_conflict</>.
+      The former behavior was to bind to variable names over
+      column names.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove PL/pgSQL's <literal>RENAME</> declaration option (Tom Lane)
+     </para>
+
+     <para>
+      Instead, use <link
+      linkend="plpgsql-declaration-parameters"><literal>ALIAS</></link>,
+      which can now alias any variable, not just dollar sign
+      variables, e.g. <literal>$1</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      PL/pgSQL no longer allows unquoted variables names that match SQL
+      reserved words (Tom Lane)
+     </para>
+
+     <para>
+      Variables can be double-quoted to avoid this restriction.
+     </para>
+    </listitem>
+   </itemizedlist>
+
+  </sect3>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+  <sect3>
+   <title>Server</title>
+
+   <sect4>
+    <title>Continuous Archiving</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow continuous archive standby systems to accept read-only queries
+       (Simon Riggs, Heikki Linnakangas)
+      </para>
+
+      <para>
+       This feature is called Hot Standby. There are new
+       <filename>postgresql.conf</> and <filename>recovery.conf</>
+       settings to enable this feature, as well as extensive
+       <link linkend="hot-standby">documentation</link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow continuous archive (<acronym>WAL</>) files to be streamed to a
+       standby system (Fujii Masao, Heikki Linnakangas)
+      </para>
+
+      <para>
+       Previously <acronym>WAL</> files could be sent to standby systems only
+       as 16 megabytes files; this allows master changes to be sent to the
+       slave with very little delay. There are new <filename>postgresql.conf</>
+       and <filename>recovery.conf</> settings to enable this
+       feature, as well as extensive <link
+       linkend="streaming-replication">documentation</link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</></link>
+       and <function>pg_last_xlog_replay_location()</>, which
+       can be used to monitor standby server <acronym>WAL</>
+       activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Performance</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Improve performance of finding inherited child tables (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow per-tablespace sequential and random page cost variables
+       (<varname>seq_page_cost</>/<varname>random_page_cost</>) via
+       <link linkend="SQL-ALTERTABLESPACE"><command>ALTER TABLESPACE
+       ... SET/RESET</></link> (Robert Haas)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve performance of <link
+       linkend="SQL-TRUNCATE"><command>TRUNCATE</></link> when
+       used in the same transaction as table creation (Tom Lane)
+      </para>
+     </listitem>
+
+     </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Optimizer</title>
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
+      </para>
+
+      <para>
+       This is particularly useful for finding
+       <function>MAX()</>/<function>MIN()</> values in indexes that also
+       contain NULLs.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove unnecessary <link linkend="queries-join">outer
+       joins</link> (Robert Haas)
+      </para>
+
+      <para>
+       Outer joins where the inner side is unique and not referenced in
+       the query are unnecessary and are therefore now removed.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve optimizer equivalence detection of &lt;&gt; <type>boolean</>
+       tests (Tom Lane)
+      </para>
+     </listitem>
+    </itemizedlist>
+   </sect4>
+
+   <sect4>
+    <title><link linkend="geqo">GEQO</link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Use the same random seed everytime GEQO plans a query (Andres
+       Freund)
+      </para>
+
+      <para>
+       While the Genetic Query Optimizer (GEQO) still selects
+       random plans, it now selects the same random plans for
+       identical queries. You can modify <link
+       linkend="guc-geqo-seed">geqo_seed</link> to randomize
+       the starting value of the random plan generator.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve GEQO plan selection (Tom Lane).
+      </para>
+
+      <para>
+       This avoids the rare error, "failed to make a valid plan".
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Optimizer Statistics</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Improve <link linkend="SQL-ANALYZE"><command>ANALYZE</></link>
+       to support inheritance-tree statistics (Tom Lane)
+      </para>
+
+      <para>
+       This is particularly useful for partitioned tables.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve <link linkend="routine-vacuuming">autovacuum</link>
+       detection of when re-analyze is necessary (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve optimizer statistics for greater/less-than comparisons
+       (Tom Lane)
+      </para>
+
+      <para>
+       When looking up optimizer statistics for greater/less-than comparisons,
+       if the comparison value is in the first or last histogram bucket,
+       use an index to generate the actual statistics. This is particularly
+       useful for columns that are always increasing, and hence often have
+       inaccurate statistics.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow setting of distinct statistics using <link
+       linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link>
+       (Robert Haas)
+      </para>
+
+      <para>
+       This allows user-override of the number or percentage of distinct
+       values for a column and optionally its child tables. This value
+       is normally computed by <command>ANALYZE</>.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Authentication</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for <link
+       linkend="auth-radius"><acronym>RADIUS</></link> (Remote
+       Authentication Dial In User Service) authentication
+       (Magnus Hagander)
+      </para>
+     </listitem>
+
+
+     <listitem>
+      <para>
+       Allow <link linkend="auth-ldap"><acronym>LDAP</></link>
+       (Lightweight Directory Access Protocol) authentication
+       to operate in "search/bind" mode (Robert Fleming, Magnus)
+      </para>
+
+      <para>
+       This allows the user to be looked up first, then the system uses
+       the <acronym>DN</> (Distinguished Name) returned for that user.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="auth-pg-hba-conf"><literal>samehost</></link>
+       and <literal>samenet</> designations to
+       <filename>pg_hba.conf</> (Stef Walter)
+      </para>
+
+      <para>
+       These match the server's <acronym>IP</> address and network address
+       respectively.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Monitoring</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add the ability for clients to set an <link
+       linkend="libpq-connect-application-name">application
+       name</link>, which is displayed in
+       <structname>pg_stat_activity</> (Dave Page)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add an SQL state option (<literal>%e</>) to <link
+       linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
+       (Guillaume Smet)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Write to the Windows event log in <acronym>UTF16</> encoding
+       (Itagaki Takahiro)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Statistics Counters</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared('bgwriter')</></link>
+       to reset the cluster-wide shared statistics of the
+       bgwriter (Greg Smith)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</></link>
+       and <function>pg_stat_reset_single_function_counters()</>
+       to allow the reseting of statistics counters for individual
+       tables and indexes (Magnus Hagander)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Server Settings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow setting of configuration variables based on <link
+       linkend="sql-alterrole">database/role</link>
+       combinations (Alvaro Herrera)
+      </para>
+
+      <para>
+       Previously only per-database and per-role setting were possible,
+       not combinations. All role and database settings are now stored
+       in the new <structname>pg_db_role_setting</> system table. A new
+       <application>psql</> <literal>\drds</> command shows these settings.
+       Backwards-compatible system views do not show this information.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add boolean variable <link
+       linkend="guc-bonjour"><varname>bonjour</></link>, which
+       controls whether a Bonjour-enabled binary advertises
+       itself via <productname>Bonjour</> (Tom Lane)
+      </para>
+
+      <para>
+       The default is off, meaning it does not advertise.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add boolean variable <link
+       linkend="guc-enable-material"><varname>enable_material</></link>, which
+       controls the use of materialize nodes in the optimizer
+       (Robert Haas)
+      </para>
+
+      <para>
+       The default is on.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Log changed parameter values when <filename>postgresql.conf</> is
+       reloaded (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add proper permissions for custom variables (Tom Lane)
+      </para>
+
+      <para>
+       Custom variables can now only be created by super-users,
+       but can be modified by ordinary users if variable
+       permissions allow it. This makes custom variables
+       appropriate for security settings. Previously, any user
+       could create or modify custom variables.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Queries</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Do <link linkend="SQL-FOR-UPDATE-SHARE"><command>SELECT
+      FOR UPDATE</>/<literal>SHARE</></link> processing after
+      applying <literal>LIMIT</>, so the number of rows returned
+      is always predictable (Tom Lane)
+     </para>
+
+     <para>
+      Previously, concurrent transactions could potentially cause
+      <command>SELECT</> to return fewer rows than specified by
+      <literal>LIMIT</>. <literal>FOR UPDATE</> can still affect
+      <literal>ORDER BY</> ordering, but this can be corrected by using
+      <literal>FOR UPDATE</> in a subquery.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow mixing of traditional and SQL-standard <link
+      linkend="SQL-LIMIT"><literal>LIMIT</>/<literal>OFFSET</></link>
+      syntax in the same query (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Increase the supported frame options in <link
+      linkend="SQL-WINDOW">window functions</link> (Hitoshi
+      Harada)
+     </para>
+
+     <para>
+      This allows frames (<literal>RANGE</> or <literal>ROWS</>) to start
+      with <literal>CURRENT ROW</>, and to use the <literal>ROWS n
+      PRECEDING</>/<literal>FOLLOWING</> clause.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have <command>SELECT</> and <command>CREATE TABLE AS</> return
+      row counts to the client
+      (Boszormenyi Zoltan)
+     </para>
+
+     <para>
+      <application>psql</> does not display these counts.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Unicode Strings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add Unicode surrogate pair (dual 16-bit) support to
+       <link
+       linkend="sql-syntax-strings-uescape"><literal>U&amp;</></link>
+       strings and identifiers (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow Unicode escapes in <link
+       linkend="sql-syntax-strings-escape"><literal>E'...'</></link>
+       strings (Marko Kreen)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Object Manipulation</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Speed up <link linkend="SQL-CREATEDATABASE"><command>CREATE
+      DATABASE</></link> by deferring flushes to disk (Andres
+      Freund, Greg Stark)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-COMMENT">comments</link> only on
+      columns of tables, views, and composite types, not other
+      objects like indexes and <acronym>TOAST</> tables (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow the creation of <link
+      linkend="SQL-CREATETYPE-enum">enumerate types</link> with
+      no labels (Bruce Momjian)
+     </para>
+
+     <para>
+      This is useful for supporting binary upgrades.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have columns defined with storage type <literal>MAIN</> remain on
+      the main heap page unless it cannot fit (Kevin Grittner)
+     </para>
+
+     <para>
+      Previously <literal>MAIN</> values were forced to <acronym>TOAST</>
+      tables until the row size was one-quarter of the page size.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><command>ALTER</></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER
+       DEFAULT PRIVILEGES</></link> command to control privileges
+       of all newly-created objects (Petr Jelinek)
+      </para>
+
+      <para>
+       It currently supports tables, views, sequences, and functions, and
+       also has per-schema control.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Implement <literal>IF EXISTS</> for <literal>DROP COLUMN</> and
+       <literal>DROP CONSTRAINT </> (Andres Freund)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>ALTER TABLE</> commands which rewrite tables to skip
+       <acronym>WAL</> logging (Itagaki Takahiro)
+      </para>
+
+      <para>
+       Such operations either complete fully or are rolled back, so
+       <acronym>WAL</> archiving can be skipped, unless running in continuous
+       archiving mode.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for copying <literal>COMMENTS</> and <literal>STORAGE</>
+       to the <command>CREATE TABLE ... LIKE INCLUDING</> command (Itagaki
+       Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for copying all attributes to the <command>CREATE
+       TABLE LIKE INCLUDING</> command (Itagaki Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the SQL-standard <command>CREATE TABLE ... OF type</> command
+       (Peter Eisentraut)
+      </para>
+
+      <para>
+       This allows the creation of a table to match an existing composite
+       type. Additional constraints and defaults can be specified in the
+       command.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Constraints</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
+       unique constraints</link> (Dean Rasheed)
+      </para>
+
+      <para>
+       This allows <command>UPDATE tab SET col = col + 1</> to work on
+       columns that have a unique indexes or are marked as primary keys,
+       but <literal>DEFERRABLE INITIALLY DEFERRED</> must be used to mark
+       the constraint as deferred.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Generalize uniqueness constraints by allowing arbitrary operator
+       comparisons, not just equality (Jeff Davis)
+      </para>
+
+      <para>
+       This is enabled with the <link
+       linkend="SQL-CREATETABLE-EXCLUDE"><command>CREATE
+       TABLE CONSTRAINT ... EXCLUDE</></link> clause. While
+       uniqueness checks could be specified using this syntax,
+       the real value of this feature is in using complex
+       operators that do not have built-in constraints.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve the constraint violation error message to report the values
+       causing the failure (Itagaki Takahiro)
+      </para>
+
+      <para>
+       For example, a uniqueness constraint violation now reports <literal>Key
+       (x)=(2) already exists</>.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Object Permissions</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add the ability to make mass permission changes per
+       schema using the new <link
+       linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
+       IN SCHEMA</></link> clause (Petr Jelinek)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the ability to control large object permissions with
+       <command>GRANT</>/<command>REVOKE</> (KaiGai Kohei)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Utility Operations</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Have <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
+      linkend="SQL-NOTIFY"><command>NOTIFY</></link> store events
+      in a memory queue, rather than a system table (Joachim
+      Wieland)
+     </para>
+
+     <para>
+      This greatly improves performance for these operations.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
+      to pass an optional string to listeners (Joachim Wieland)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link linkend="SQL-CLUSTER"><command>CLUSTER</></link>
+      on all system tables (Tom Lane)
+     </para>
+
+     <para>
+      Global system tables still cannot be clustered.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><link linkend="SQL-COPY"><command>COPY</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow <literal>*</> as a parameter in <literal>FORCE QUOTE</> for
+       <literal>COPY CSV</> (Itagaki Takahiro)
+      </para>
+
+      <para>
+       This forces quotes for all <acronym>CSV</> output columns.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new <command>COPY</> syntax that allows parameters to be
+       specified in parentheses (Robert Haas, Emmanuel Cecchet)
+      </para>
+
+      <para>
+       This allows greater flexibility for future <command>COPY</> options.
+       The old syntax is still supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add new <command>EXPLAIN (BUFFERS)</> to report query buffer
+       activity (Itagaki Takahiro)
+      </para>
+
+      <para>
+       log_*_stats log output, e.g. <link
+       linkend="runtime-config-statistics-monitor">log_statement_stats</link>,
+       no longer shows this information.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add hash usage information to <command>EXPLAIN</> output (Robert
+       Haas)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>EXPLAIN</> output in <acronym>XML</>, <acronym>JSON</>,
+       and <acronym>YAML</> formats (Robert Haas, Greg Sabino Mullane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>EXPLAIN</> options to be specified inside parentheses
+       (Robert Haas)
+      </para>
+
+      <para>
+       This allows for the expansion of <command>EXPLAIN</> options. The
+       old syntax is still supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="SQL-VACUUM"><command>VACUUM</></link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Change <command>VACUUM FULL</> to rewrite the entire table and
+       indexes, rather than moving around single rows to compact space
+       (Itagaki Takahiro, Tom Lane)
+      </para>
+
+      <para>
+       The previous method was usually slower and caused index bloat.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add new <command>VACUUM</> syntax that allows parameters to be
+       specified in parentheses (Itagaki Takahiro)
+      </para>
+
+      <para>
+       This allows greater flexibility for future <command>VACUUM</>
+       options. The old syntax is still supported.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Indexes</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow an index to be auto-named by not supplying an index name to
+       <link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></link> (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <link linkend="SQL-REINDEX"><command>REINDEX</></link>
+       on system indexes (Tom Lane)
+      </para>
+
+      <para>
+       WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE? NON-HARDWIRED ONES?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <literal>point_ops</> opclass for GiST (Teodor Sigaev)
+      </para>
+
+      <para>
+       DETAILS?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Use red-black trees for <acronym>GIN</> index creation
+       (Teodor Sigaev)
+      </para>
+
+      <para>
+       Red-black trees are self-balanced so allow for faster index
+     creation.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Data Types</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Allow hex values to be specified in <link
+      linkend="datatype-binary"><type>bytea</></link> strings
+      (Peter Eisentraut)
+     </para>
+
+     <para>
+      The variable <link
+      linkend="guc-bytea-output">bytea_output</link> controls
+      if hex (default) or octal escapes are used for <type>bytea</>
+      output. (SWITCH DEFAULT FOR BETA? PETER) Libpq's
+      <function>PQescapeByteaConn()</> now uses the hex format
+      for <productname>PostgreSQL</> 9.0 servers.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <link
+      linkend="guc-extra-float-digits">extra_float_digits</link>
+      to be increased to <literal>3</> (Tom Lane)
+     </para>
+
+     <para>
+      The previous maximum <varname>extra_float_digits</> was <literal>2</>.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title><link linkend="textsearch">Full Text Search</link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add prefix support for the full text search synonym dictionary
+       (Teodor Sigaev)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add full text search filtering dictionaries (Teodor Sigaev)
+      </para>
+
+      <para>
+       Filtering dictionaries allow tokens to be modified and passed to
+       subsequent dictionaries.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow underscores in full text email addresses (Teodor Sigaev)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Use more standards-compliant rules for <acronym>URL</>
+       parsing (Tom Lane)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Functions</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Allow case-insensitive <link
+      linkend="functions-posix-regexp">regular expression</link>
+      matching with <acronym>UTF-8</> server encodings.
+     </para>
+
+     <para>
+      Previously, only <acronym>ASCII</> characters and single-byte
+      encodings worked properly. Other multi-byte, non-<acronym>UTF-8</>
+      encodings are still broken for case-insensitive regular expression
+      matching.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow function calls to supply parameter names and match them to named
+      parameters in the function definition (Pavel Stehule)
+     </para>
+
+     <para>
+      For example, if a function is defined to take parameters <literal>a</>
+      and <literal>b</>, it can be called with <literal>func(7 AS a, 12
+      AS b)</> or <literal>func(12 AS b, 7 AS a)</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add support for <link
+      linkend="functions-formatting"><function>to_char()</></link>
+      scientific notation output (<link
+      linkend="functions-formatting-numeric-table"><literal>'EEEE'</></link>)
+      (Pavel Stehule, Brendan Jurd)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Have <function>to_char()</> honor <link
+      linkend="functions-formatting-datetimemod-table"><literal>'FM'</></link>
+      (fill mode) in <literal>'Y'</>, <literal>'YY'</>, and
+      <literal>'YYY'</> specifications (Bruce Momjian, Tom Lane)
+     </para>
+
+     <para>
+      It was already honored by <literal>'YYYY'</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <function>to_char()</> to output the proper localized
+      numeric and monetary characters on <productname>Windows</>
+      (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Correct calculations of <link
+      linkend="functions-geometry-op-table">"overlap"</link>
+      and "contains" operations over polygons (Teodor Sigaev)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Aggregates</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow aggregate functions to use <literal>ORDER BY</> (Andrew
+       Gierth)
+      </para>
+
+      <para>
+       For example, this is now supported, <literal>array_agg(a ORDER BY
+       b)</>. This is useful for aggregates where the order of values is
+       significant.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add the <link
+       linkend="functions-aggregate-table"><function>string_agg()</></link>
+       aggregate function which aggregates values into a single
+       string (Pavel Stehule)
+      </para>
+
+      <para>
+       An optional second argument allows specification of a delimiter.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Aggregate functions that are called with <literal>DISTINCT</> are
+       now passed NULL values if the aggregate transition function is
+       not marked as <literal>STRICT</> (Andrew Gierth)
+      </para>
+
+      <para>
+       For example, <literal>agg(DISTINCT x)</> might pass NULL <literal>x</>
+       values to <function>agg()</>.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Bit Strings</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-binarystring-other"><function>get_bit()</></link>
+       and <function>set_bit()</> functions for <type>bit</>
+       strings, mirroring those for <type>bytea</> (Leonardo
+       F)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Implement <link
+       linkend="functions-string-sql"><function>OVERLAY()</></link>
+       (replace) for <type>bit</> strings and <type>bytea</>
+       (Leonardo F)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Object Information Functions</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-admin-dbsize"><function>pg_table_size()</></link>
+       and <function>pg_indexes_size()</> to provide a more
+       user-friendly interface to the <function>pg_relation_size()</>
+       function (Bernd Helmle)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="functions-info-access-table"><function>has_sequence_privilege()</></link>
+       for sequence permission checking (Abhijit Menon-Sen)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have <link linkend="information-schema">information
+       schema</link> properly display date type octet lengths
+       (Peter Eisentraut)
+      </para>
+
+      <para>
+       The reported length is now the maximum octet length; previously,
+       a huge value was reported.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Speed up information schema privilege views (Joachim Wieland)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Function and Trigger Creation</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Implement anonymous functions using the <link
+       linkend="SQL-DO"><command>DO</></link> statement (Petr
+       Jelinek, Joshua Tolley, Hannu Valtonen)
+      </para>
+
+      <para>
+       This allows execution of server-side code without the need to create
+       a new function and execute it.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow SQL-compliant <link
+       linkend="SQL-CREATETRIGGER">per-column triggers</link>
+       (Itagaki Takahiro)
+      </para>
+
+      <para>
+       Such triggers are fired only if the specified columns are affected
+       by the query, e.g. in <command>UPDATE</>'s <literal>SET</> list.
+       information_schema now also shows this information.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <literal>WHERE</> clause to <link
+       linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</></link>
+       to allow control over whether a trigger is fired (Takahiro
+       Itagaki)
+      </para>
+
+      <para>
+       While a check can be performed inside the trigger, doing it in an
+       external <literal>WHERE</> clause has performance benefits.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Server-Side Languages</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Add the <literal>OR REPLACE</> clause to <link
+      linkend="SQL-CREATELANGUAGE"><command>CREATE LANGUAGE</></link>
+      (Tom Lane)
+     </para>
+
+     <para>
+      This is helpful to optionally install a language if it does not
+      already exist, and is particularly helpful now that PL/pgSQL is
+      installed by default.
+     </para>
+    </listitem>
+
+    </itemizedlist>
+
+    <sect4>
+    <title><link linkend="plpgsql">PL/PgSQL</link> Server-Side
+    Language</title>
+
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Install server-side language PL/pgSQL by default (Bruce Momjian)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <literal>IN</> parameters to be assigned values within
+       PL/pgSQL functions (Steve Prentice)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve error location reporting in PL/pgSQL (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have PL/pgSQL use the main lexer, rather than a custom version (Tom Lane)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="plpgsql-cursors">PL/pgSQL Cursors</link></title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add count and <literal>ALL</> options to <command>MOVE
+       FORWARD</>/<literal>BACKWARD</> in PL/pgSQL (Pavel Stehule)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow PL/pgSQL's <literal>WHERE CURRENT OF</> to use a cursor
+       variable (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add PL/pgSQL's <command>OPEN cursor FOR EXECUTE</> to use parameters
+       (Pavel Stehule, Itagaki Takahiro)
+      </para>
+
+      <para>
+       This is accomplished with a new <literal>USING</> clause.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add new PL/Perl functions: <link
+       linkend="plperl-utility-functions"><function>quote_literal()</></link>,
+       <function>quote_nullable()</>, <function>quote_ident()</>,
+       <function>encode_bytea()</>, <function>decode_bytea()</>,
+       <function>looks_like_number()</>,
+       <function>encode_array_literal()</>,
+       <function>encode_array_constructor()</> (Tim Bunce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add server variable <link
+       linkend="guc-plperl-on-init">plperl.on_init</link> to
+       specify a PL/Perl Perl initialization function (Tim
+       Bunce)
+      </para>
+
+      <para>
+       <link
+       linkend="guc-plperl-on-plperl-init">plperl.on_plperl_init</link>
+       and <varname>plperl.on_plperlu_init</> are also available
+       for trusted/untrusted-specific initialization.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve error context support in PL/Perl (Alexey Klyukin)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Support <command>END</> blocks in PL/Perl (Tim Bunce)
+      </para>
+
+      <para>
+       <command>END</> blocks do not currently allow database access.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>use strict</> in PL/Perl (Tim Bunce)
+      </para>
+
+      <para>
+       This can be enabled with the server variable <link
+       linkend="guc-plperl-use-strict">plperl.use_strict</link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>require</> in PL/Perl (Tim Bunce)
+      </para>
+
+      <para>
+       This basically tests to see if the module is loaded, and if not,
+       generates an error.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow <command>use feature</> in PL/Perl if Perl version 5.10 or
+       later is used (Tim Bunce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Verify that PL/Perl return values are valid in the server encoding
+       (Andrew Dunstan)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve PL/Perl code structure (Tim Bunce)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       PL/Perl subroutines are now given names (Tim Bunce)
+      </para>
+
+      <para>
+       This is for the use of profiling and code coverage tools. DIDN'T
+       THEY HAVE NAMES BEFORE?
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       PL/Perl no longer allows <application>Safe</> version 2.20 because
+       it is unsafe (Tim Bunce)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add Unicode support in PL/Python (Peter Eisentraut)
+      </para>
+
+      <para>
+       Strings are automatically converted from/to the server encoding as
+       necessary.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve <type>bytea</> support in PL/Python (Caleb Welton)
+      </para>
+
+      <para>
+       <type>Bytea</> values passed into PL/Python now are represented as
+       binary, rather than the Postgres <type>bytea</> text format. Null
+       bytes are now also output properly from PL/Python. <type>Boolean</>
+       and <type>numeric</> value passing in PL/Python was also improved.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link linkend="plpython-arrays">array parameter/return
+       support</link> to PL/Python (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <application>Python</> 3 support to PL/Python (Peter Eisentraut)
+      </para>
+
+      <para>
+       The new server-side language is called <link
+       linkend="plpython-python23"><literal>plpython3u</></link>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Improve error location and exception reporting in PL/Python (Peter Eisentraut)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
 
-  <sect2>
-    <title>Overview</title>
+  <sect3>
+   <title>Client Applications</title>
+   <itemizedlist>
 
+    <listitem>
     <para>
-      Based on overwhelming user demand, this release of
-      <productname>PostgreSQL</> adds features that have been requested
-      for years, like easy-to-use replication, a mass permission
-      facility, and anonymous blocks.  While past major releases have
-      been quite conservative in their scope, this release shows a
-      bold new desire to provide facilities that every new and existing
-      user of <productname>PostgreSQL</> will embrace.  This has all
-      been done with few incompatibilities.  The major areas of
-      enhancement are:
-    </para>
+     Add <link linkend="APP-VACUUMDB"><command>vacuumdb</></link>
+     <option>--analyze-only</> option to only analyze (Bruce Momjian)
+     </para>
+    </listitem>
 
+   </itemizedlist>
+
+   <sect4>
+    <title><link linkend="APP-PSQL"><application>psql</></link></title>
     <itemizedlist>
 
-      <!-- This list duplicates items below, but without authors or details-->
+     <listitem>
+      <para>
+       Properly escape <application>psql</> <link
+       linkend="APP-PSQL-variables">variables</link> and
+       identifiers (Pavel Stehule, Robert Haas)
+      </para>
 
-      <listitem>
-        <para>
-          Allow continuous archive standby systems to accept read-only queries
-        </para>
-      </listitem>
+      <para>
+       For example, <literal>:'var'</> will be escaped as a literal string, and
+       <literal>:"var"</> will be escaped as an SQL identifier.
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          Allow continuous archive (<acronym>WAL</>) files to be streamed to a
-          standby system
-        </para>
-      </listitem>
+     <listitem>
+      <para>
+       Ignore leading UTF-8-encoded Unicode byte-order marker in
+       <application>psql</> (Itagaki Takahiro)
+      </para>
 
-      <listitem>
-        <para>
-          Add the ability to make mass permission changes per
-           schema using the new <link
-           linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
-           IN SCHEMA</></link> clause
-        </para>
-      </listitem>
+      <para>
+       This is enabled when the client encoding is <acronym>UTF-8</>.
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          Add the ability to control large object permissions with
-          <command>GRANT</>/<command>REVOKE</>
-        </para>
-      </listitem>
+     <listitem>
+      <para>
+       Fix <command>psql --file -</> to properly honor <link
+       linkend="R1-APP-PSQL-3"><option>--single-transaction</></link>
+       (Bruce Momjian)
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          Implement anonymous functions using the <link
-          linkend="SQL-DO"><command>DO</></link> statement
-        </para>
-      </listitem>
+     <listitem>
+      <para>
+       Prevent overwriting of <application>psql</>'s command-line history
+       if two <application>psql</> sessions are run simultaneously (Tom Lane)
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          Allow function calls to supply parameter names and match them to named
-          parameters in the function definition (Pavel Stehule)
-        </para>
-      </listitem>
+     <listitem>
+      <para>
+       Improve <application>psql</>'s tab completion support (Itagaki
+       Takahiro)
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          Install server-side language PL/pgSQL by default
-        </para>
-      </listitem>
+    </itemizedlist>
 
-      <listitem>
-        <para>
-          Major PL/Perl enhancements
-        </para>
-      </listitem>
+    <sect5>
+    <title><application>psql</> Display</title>
+     <itemizedlist>
 
       <listitem>
-        <para>
-          Allow SQL-compliant <link
-          linkend="SQL-CREATETRIGGER">per-column triggers</link>
-        </para>
+       <para>
+        Allow <application>psql</> to use fancy Unicode line-drawing
+        characters via <command>\pset linestyle unicode</> (Roger Leigh)
+       </para>
       </listitem>
 
       <listitem>
-        <para>
-          Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
-          unique constraints</link>
-        </para>
-      </listitem>
+       <para>
+        Improve display of wrapped columns in <application>psql</> (Roger
+        Leigh)
+       </para>
 
-      <listitem>
-        <para>
-          Have <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
-          linkend="SQL-NOTIFY"><command>NOTIFY</></link> store events
-          in a memory queue, rather than a system table
-        </para>
+       <para>
+        The previous format is available by using <command>\pset linestyle
+        old-ascii</>.
+       </para>
       </listitem>
 
-      <listitem>
-        <para>
-          Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
-          to pass an optional string to listeners
-        </para>
-      </listitem>
+     </itemizedlist>
 
-      <listitem>
-        <para>
-          Change <command>VACUUM FULL</> to rewrite the entire table and
-          indexes, rather than moving around single rows to compact space
-        </para>
-      </listitem>
+    </sect5>
 
-      <listitem>
-        <para>
-          Add prefix support for the full text search synonym dictionary
-        </para>
-      </listitem>
+    <sect5>
+     <title><application>psql</> <link
+     linkend="APP-PSQL-meta-commands"><command>\d</></link>
+     Commands</title>
+     <itemizedlist>
 
       <listitem>
-        <para>
-          Use red-black trees for <acronym>GIN</> index creation
-        </para>
-      </listitem>
+       <para>
+        Have <command>\d</> show child tables that inherit from the specified
+        parent (Damien Clochard)
+       </para>
 
-      <listitem>
-        <para>
-          Add <link
-          linkend="functions-binarystring-other"><function>get_bit()</></link>
-          and <function>set_bit()</> functions for <type>bit</>
-          strings, mirroring those for <type>bytea</>
-        </para>
+       <para>
+        <command>\d</> shows only the number of child tables, while
+        <command>\d+</> shows the names of all child tables.
+       </para>
       </listitem>
 
       <listitem>
-        <para>
-          Add the ability for clients to set an <link
-          linkend="libpq-connect-application-name">application
-          name</link>, which is displayed in
-          <structname>pg_stat_activity</>
-        </para>
-      </listitem>
+       <para>
+        Show definition of indexes in <command>\d index_name</> (Khee Chin)
+       </para>
 
-      <listitem>
-        <para>
-          Add support for compiling on <link
-          linkend="install-win32-full">64-bit
-          <productname>Windows</></link> and running in 64-bit
-          mode
-        </para>
+       <para>
+        The definition is useful for expression indexes.
+       </para>
       </listitem>
 
       <listitem>
-        <para>
-          The above items are explained in more detail in the sections below.
-        </para>
+       <para>
+        In <application>psql</>, show the view definition only with <command>\d+</>,
+        not with <command>\d</> (Peter Eisentraut)
+       </para>
       </listitem>
 
-    </itemizedlist>
-
-  </sect2>
+     </itemizedlist>
 
-  <sect2>
+    </sect5>
+   </sect4>
 
-    <title>Migration to Version 9.0</title>
-    <para>CURRENT AS OF 2010-04-29</para>
+   <sect4>
+    <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
+    <itemizedlist>
 
-    <para>
-      A dump/restore using <application>pg_dump</application> is
-      required for those wishing to migrate data from any previous
-      release.
-    </para>
+     <listitem>
+      <para>
+       Have <application>pg_dump</>/<application>pg_restore</>
+       <link linkend="pg-dump-options"><option>--clean</></link>
+       also remove large objects (Itagaki Takahiro)
+      </para>
+     </listitem>
 
-    <para>
-      Observe the following incompatibilities:
-    </para>
+     <listitem>
+      <para>
+       Fix <application>pg_dump</> to properly dump large objects if
+       standard_conforming_strings is enabled (Tom Lane)
+      </para>
 
-    <sect3>
-      <title>Server Settings</title>
+      <para>
+       Large objects dumps now use hex format for output. (SWITCH DEFAULT
+       FOR BETA? TOM)
+      </para>
+     </listitem>
 
-      <itemizedlist>
+     <listitem>
+      <para>
+       Allow <application>pg_dump</> to dump comments attached to columns
+       of composite types (Taro Minowa (Higepon))
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Have <application>pg_dump</> <link
+       linkend="pg-dump-options"><option>--verbose</></link>
+       output the <application>pg_dump</> and server versions
+       in text output mode (Jim Cox, Tom Lane)
+      </para>
 
-        <listitem>
-          <para>
-            Remove server variable <varname>add_missing_from</>, which was
-            defaulted to off for many years (Tom Lane)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Remove server variable <varname>regex_flavor</>, which
-            was defaulted to <link
-            linkend="posix-syntax-details"><literal>advanced</></link>
-            (e.g. Perl-regex compatible) for many years (Tom Lane)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            It is now necessary to set <link
-            linkend="guc-wal-level"><varname>wal_level</></link> to
-            <literal>archive</> to do continuous archiving.
-            (Heikki Linnakangas)
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-    </sect3>
-
-    <sect3>
-      <title>Queries</title>
-      <itemizedlist>
+      <para>
+       These were already present in custom output mode.
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          When querying a <link linkend="ddl-inherit">parent table</link>,
-          do not do additional permission checks on child tables
-          returned as part of the query (Peter Eisentraut)
-        </para>
-
-        <para>
-          The SQL standard specifies this behavior.
-        </para>
-      </listitem>
+    </itemizedlist>
 
-      <listitem>
-        <para>
-          Have fractional seconds conversion truncate rather than
-          round when using float-based dates/times (Tom Lane)
-        </para>
-      </listitem>
+   </sect4>
 
-      </itemizedlist>
+   <sect4>
+    <title><link
+    linkend="app-pg-ctl"><application>pg_ctl</></link></title>
+    <itemizedlist>
 
-    </sect3>
+     <listitem>
+      <para>
+       Allow <application>pg_ctl</> to be safely used to start the
+       <application>postmaster</> at boot-time (Tom Lane)
+      </para>
 
-    <sect3>
-      <title>String Handling</title>
-      <itemizedlist>
+      <para>
+       Previously the <application>pg_ctl</> process could have been mistakenly
+       identified as a running <application>postmaster</> based on a stale
+       <application>postmaster</> lock file.
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-          Improve standards compliance of <link
-          linkend="functions-similarto-regexp"><literal>SIMILAR TO</></link>
-          patterns and SQL-style <function>substring()</> patterns (Tom Lane)
-        </para>
-
-        <para>
-          This includes treating <literal>?</> and <literal>{...}</> as
-          pattern metacharacters, while they were simple literal characters
-          before; that corresponds to new features added in SQL:2008.
-          Also, <literal>^</> and <literal>$</> are now treated as simple
-          literal characters; formerly they were treated as metacharacters,
-          as if the pattern were following POSIX rather than SQL rules.
-          Also, in SQL-standard <function>substring()</>, use of parentheses
-          for nesting no longer interferes with capturing of a substring.
-          Also, processing of bracket expressions (character classes) is
-          now more standards-compliant.
-        </para>
-      </listitem>
+     <listitem>
+      <para>
+       Give <application>pg_ctl</> the ability to initialize the database
+       (like <application>initdb</>) (Zdenek Kotala)
+      </para>
+     </listitem>
 
-      <listitem>
-        <para>
-         Reject negative length values in 3-parameter <link
-         linkend="functions-string-sql"><function>substring()</></link>
-         for bit strings, per the SQL standard (Tom Lane)
-        </para>
-      </listitem>
 
     </itemizedlist>
 
-    </sect3>
+   </sect4>
 
-    <sect3>
-      <title>Object Renaming</title>
-      <itemizedlist>
+  </sect3>
 
-        <listitem>
-          <para>
-            Tighten enforcement of column renaming when a child table inherits
-            the renamed column from an unrelated parent (KaiGai Kohei)
-          </para>
-        </listitem>
+  <sect3>
+   <title><application>Development Tools</></title>
 
-        <listitem>
-          <para>
-            No longer rename index names and index column names when table
-            columns are renamed (Tom Lane)
-          </para>
+   <sect4>
+    <title><link linkend="libpq"><application>libpq</></link></title>
 
-          <para>
-            Administrators still can rename such columns manually.  Expression
-            index names are also not renamed.  WHY ARE EXPRESSION INDEXES
-            SIGNIFICANT?
-          </para>
-        </listitem>
+    <itemizedlist>
 
-      </itemizedlist>
+     <listitem>
+      <para>
+       Add new <application>libpq</> functions
+       <link
+       linkend="libpq-connect"><function>PQconnectdbParams()</></link>
+       and <function>PQconnectStartParams()</> (Guillaume
+       Lelarge)
+      </para>
 
-    </sect3>
+      <para>
+       These functions are similar to <function>PQconnectdb()</> and
+       <function>PQconnectStart()</> except they allow a null-terminated
+       array of connection options, rather than requiring all options to
+       be sent in a single string.
+      </para>
+     </listitem>
 
-    <sect3>
-      <title>PL/pgSQL Variables</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Add <application>libpq</> functions <link
+       linkend="libpq-exec-escape-string"><function>PQescapeLiteral()</></link>
+       and <function>PQescapeIdentifier()</> (Robert Haas)
+      </para>
 
+      <para>
+       These functions return appropriately quoted and escaped literal
+       strings and identifiers. The caller is not required to pre-allocate
+       the string result, as is required by <function>PQescapeStringConn()</>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add checking for a per-user service file (<link
+       linkend="libpq-pgservice"><filename>.pg_service.conf</></link>),
+       which is checked before the site-wide service file
+       (Peter Eisentraut)
+      </para>
 
-        <listitem>
-          <para>
-            Have PL/pgSQL throw an error if a variable name conflicts with a
-            column name used in a query (Tom Lane)
-          </para>
-
-          <para>
-            This behavior can be changed via the server variable <link
-            linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
-            or by the per-function option <literal>#variable_conflict</>.
-            The former behavior was to bind to variable names over
-            column names.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Remove PL/pgSQL's <literal>RENAME</> declaration option (Tom Lane)
-          </para>
-
-          <para>
-            Instead, use <link
-            linkend="plpgsql-declaration-parameters"><literal>ALIAS</></link>,
-            which can now alias any variable, not just dollar sign
-            variables, e.g. <literal>$1</>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            PL/pgSQL no longer allows unquoted variables names that match SQL
-            reserved words (Tom Lane)
-          </para>
-
-          <para>
-            Variables can be double-quoted to avoid this restriction.
-          </para>
-        </listitem>
-      </itemizedlist>
-
-    </sect3>
-  </sect2>
+      <para>
+       The file <filename>.pg_service.conf</> is assumed to be in the
+       user's home directory.
+      </para>
+     </listitem>
 
-  <sect2>
-    <title>Changes</title>
-
-    <sect3>
-      <title>Server</title>
-
-      <sect4>
-        <title>Continuous Archiving</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow continuous archive standby systems to accept read-only queries
-              (Simon Riggs, Heikki Linnakangas)
-            </para>
-
-            <para>
-              This feature is called Hot Standby.  There are new
-              <filename>postgresql.conf</> and <filename>recovery.conf</>
-              settings to enable this feature, as well as extensive
-              <link linkend="hot-standby">documentation</link>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow continuous archive (<acronym>WAL</>) files to be streamed to a
-              standby system (Fujii Masao, Heikki Linnakangas)
-            </para>
-
-            <para>
-              Previously <acronym>WAL</> files could be sent to standby systems only
-              as 16 megabytes files;  this allows master changes to be sent to the
-              slave with very little delay.  There are new <filename>postgresql.conf</>
-              and <filename>recovery.conf</> settings to enable this
-              feature, as well as extensive <link
-              linkend="streaming-replication">documentation</link>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</></link>
-              and <function>pg_last_xlog_replay_location()</>, which
-              can be used to monitor standby server <acronym>WAL</>
-              activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Performance</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Improve performance of finding inherited child tables (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow per-tablespace sequential and random page cost variables
-              (<varname>seq_page_cost</>/<varname>random_page_cost</>) via
-              <link linkend="SQL-ALTERTABLESPACE"><command>ALTER TABLESPACE
-              ...  SET/RESET</></link> (Robert Haas)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve performance of <link
-              linkend="SQL-TRUNCATE"><command>TRUNCATE</></link> when
-              used in the same transaction as table creation (Tom Lane)
-            </para>
-          </listitem>
-
-          </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Optimizer</title>
-
-        <itemizedlist>
-          <listitem>
-            <para>
-              Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
-            </para>
-
-            <para>
-              This is particularly useful for finding
-              <function>MAX()</>/<function>MIN()</> values in indexes that also
-              contain NULLs.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Remove unnecessary <link linkend="queries-join">outer
-              joins</link> (Robert Haas)
-            </para>
-
-            <para>
-              Outer joins where the inner side is unique and not referenced in
-              the query are unnecessary and are therefore now removed.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve optimizer equivalence detection of &lt;&gt; <type>boolean</>
-              tests (Tom Lane)
-            </para>
-          </listitem>
-        </itemizedlist>
-      </sect4>
-
-      <sect4>
-        <title><link linkend="geqo">GEQO</link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Use the same random seed everytime GEQO plans a query (Andres
-              Freund)
-            </para>
-
-            <para>
-              While the Genetic Query Optimizer (GEQO) still selects
-              random plans, it now selects the same random plans for
-              identical queries.  You can modify <link
-              linkend="guc-geqo-seed">geqo_seed</link> to randomize
-              the starting value of the random plan generator.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve GEQO plan selection (Tom Lane).
-            </para>
-
-            <para>
-              This avoids the rare error, "failed to make a  valid plan".
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Optimizer Statistics</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Improve <link linkend="SQL-ANALYZE"><command>ANALYZE</></link>
-              to support inheritance-tree statistics (Tom Lane)
-            </para>
-
-            <para>
-              This is particularly useful for partitioned tables.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve <link linkend="routine-vacuuming">autovacuum</link>
-              detection of when re-analyze is necessary (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve optimizer statistics for greater/less-than comparisons
-              (Tom Lane)
-            </para>
-
-            <para>
-              When looking up optimizer statistics for greater/less-than comparisons,
-              if the comparison value is in the first or last histogram bucket,
-              use an index to generate the actual statistics.  This is particularly
-              useful for columns that are always increasing, and hence often have
-              inaccurate statistics.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow setting of distinct statistics using <link
-              linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link>
-              (Robert Haas)
-            </para>
-
-            <para>
-              This allows user-override of the number or percentage of distinct
-              values for a column and optionally its child tables.  This value
-              is normally computed by <command>ANALYZE</>.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Authentication</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add support for <link
-              linkend="auth-radius"><acronym>RADIUS</></link> (Remote
-              Authentication Dial In User Service) authentication
-              (Magnus Hagander)
-            </para>
-          </listitem>
-
-
-          <listitem>
-            <para>
-              Allow <link linkend="auth-ldap"><acronym>LDAP</></link>
-              (Lightweight Directory Access Protocol) authentication
-              to operate in "search/bind" mode (Robert Fleming, Magnus)
-            </para>
-
-            <para>
-              This allows the user to be looked up first, then the system uses
-              the <acronym>DN</> (Distinguished Name) returned for that user.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="auth-pg-hba-conf"><literal>samehost</></link>
-              and <literal>samenet</> designations to
-              <filename>pg_hba.conf</> (Stef Walter)
-            </para>
-
-            <para>
-              These match the server's <acronym>IP</> address and network address
-              respectively.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Monitoring</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add the ability for clients to set an <link
-              linkend="libpq-connect-application-name">application
-              name</link>, which is displayed in
-              <structname>pg_stat_activity</> (Dave Page)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add an SQL state option (<literal>%e</>) to <link
-              linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
-              (Guillaume Smet)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Write to the Windows event log in <acronym>UTF16</> encoding
-              (Itagaki Takahiro)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Statistics Counters</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared('bgwriter')</></link>
-              to reset the cluster-wide shared statistics of the
-              bgwriter (Greg Smith)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</></link>
-              and <function>pg_stat_reset_single_function_counters()</>
-              to allow the reseting of statistics counters for individual
-              tables and indexes (Magnus Hagander)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Server Settings</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow setting of configuration variables based on <link
-              linkend="sql-alterrole">database/role</link>
-              combinations (Alvaro Herrera)
-            </para>
-
-            <para>
-              Previously only per-database and per-role setting were possible,
-              not combinations.  All role and database settings are now stored
-              in the new <structname>pg_db_role_setting</> system table.  A new
-              <application>psql</> <literal>\drds</> command shows these settings.
-              Backwards-compatible system views do not show this information.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add boolean variable <link
-              linkend="guc-bonjour"><varname>bonjour</></link>, which
-              controls whether a Bonjour-enabled binary advertises
-              itself via <productname>Bonjour</> (Tom Lane)
-            </para>
-
-            <para>
-              The default is off, meaning it does not advertise.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add boolean variable <link
-              linkend="guc-enable-material"><varname>enable_material</></link>, which
-              controls the use of materialize nodes in the optimizer
-              (Robert Haas)
-            </para>
-
-            <para>
-              The default is on.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Log changed parameter values when <filename>postgresql.conf</> is
-              reloaded (Peter Eisentraut)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add proper permissions for custom variables (Tom Lane)
-            </para>
-
-            <para>
-              Custom variables can now only be created by super-users,
-              but can be modified by ordinary users if variable
-              permissions allow it.  This makes custom variables
-              appropriate for security settings.  Previously, any user
-              could create or modify custom variables.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Queries</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Properly report an error if the specified <application>libpq</> service
+       cannot be found (Peter Eisentraut)
+      </para>
+     </listitem>
 
-        <listitem>
-          <para>
-            Do <link linkend="SQL-FOR-UPDATE-SHARE"><command>SELECT
-            FOR UPDATE</>/<literal>SHARE</></link> processing after
-            applying <literal>LIMIT</>, so the number of rows returned
-            is always predictable (Tom Lane)
-          </para>
-
-          <para>
-            Previously, concurrent transactions could potentially cause
-            <command>SELECT</> to return fewer rows than specified by
-            <literal>LIMIT</>.  <literal>FOR UPDATE</> can still affect
-            <literal>ORDER BY</> ordering, but this can be corrected by using
-            <literal>FOR UPDATE</> in a subquery.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow mixing of traditional and SQL-standard <link
-            linkend="SQL-LIMIT"><literal>LIMIT</>/<literal>OFFSET</></link>
-            syntax in the same query (Tom Lane)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Increase the supported frame options in <link
-            linkend="SQL-WINDOW">window functions</link> (Hitoshi
-            Harada)
-          </para>
-
-          <para>
-            This allows frames (<literal>RANGE</> or <literal>ROWS</>) to start
-            with <literal>CURRENT ROW</>, and to use the <literal>ROWS n
-            PRECEDING</>/<literal>FOLLOWING</> clause.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Have <command>SELECT</> and <command>CREATE TABLE AS</> return
-            row counts to the client
-            (Boszormenyi Zoltan)
-          </para>
-
-          <para>
-            <application>psql</> does not display these counts.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title>Unicode Strings</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add Unicode surrogate pair (dual 16-bit) support to
-              <link
-              linkend="sql-syntax-strings-uescape"><literal>U&amp;</></link>
-              strings and identifiers (Peter Eisentraut)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow Unicode escapes in <link
-              linkend="sql-syntax-strings-escape"><literal>E'...'</></link>
-              strings (Marko Kreen)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Object Manipulation</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Issue a warning if the <link
+       linkend="libpq-pgpass"><filename>.pgpass</></link>-retrieved
+       password fails (Bruce Momjian)
+      </para>
+     </listitem>
 
-        <listitem>
-          <para>
-            Speed up <link linkend="SQL-CREATEDATABASE"><command>CREATE
-            DATABASE</></link> by deferring flushes to disk (Andres
-            Freund, Greg Stark)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow <link linkend="SQL-COMMENT">comments</link> only on
-            columns of tables, views, and composite types, not other
-            objects like indexes and <acronym>TOAST</> tables (Tom Lane)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow the creation of <link
-            linkend="SQL-CREATETYPE-enum">enumerate types</link> with
-            no labels (Bruce Momjian)
-          </para>
-
-          <para>
-            This is useful for supporting binary upgrades.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Have columns defined with storage type <literal>MAIN</> remain on
-            the main heap page unless it cannot fit (Kevin Grittner)
-          </para>
-
-          <para>
-            Previously <literal>MAIN</> values were forced to <acronym>TOAST</>
-            tables until the row size was one-quarter of the page size.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-       <title><command>ALTER</></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER
-              DEFAULT PRIVILEGES</></link> command to control privileges
-              of all newly-created objects (Petr Jelinek)
-            </para>
-
-            <para>
-              It currently supports tables, views, sequences, and functions, and
-              also has per-schema control.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Implement <literal>IF EXISTS</> for <literal>DROP COLUMN</> and
-              <literal>DROP CONSTRAINT </> (Andres Freund)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <command>ALTER TABLE</> commands which rewrite tables to skip
-              <acronym>WAL</> logging (Itagaki Takahiro)
-            </para>
-
-            <para>
-              Such operations either complete fully or are rolled back, so
-              <acronym>WAL</> archiving can be skipped, unless running in continuous
-              archiving mode.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add support for copying <literal>COMMENTS</> and <literal>STORAGE</>
-              to the <command>CREATE TABLE ... LIKE INCLUDING</> command (Itagaki
-              Takahiro)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add support for copying all attributes to the <command>CREATE
-              TABLE LIKE INCLUDING</> command (Itagaki Takahiro)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add the SQL-standard <command>CREATE TABLE ... OF type</> command
-              (Peter Eisentraut)
-            </para>
-
-            <para>
-              This allows the creation of a table to match an existing composite
-              type.  Additional constraints and defaults can be specified in the
-              command.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Constraints</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
-              unique constraints</link> (Dean Rasheed)
-            </para>
-
-            <para>
-              This allows <command>UPDATE tab SET col = col + 1</> to work on
-              columns that have a unique indexes or are marked as primary keys,
-              but <literal>DEFERRABLE INITIALLY DEFERRED</> must be used to mark
-              the constraint as deferred.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Generalize uniqueness constraints by allowing arbitrary operator
-              comparisons, not just equality (Jeff Davis)
-            </para>
-
-            <para>
-              This is enabled with the <link
-              linkend="SQL-CREATETABLE-EXCLUDE"><command>CREATE
-              TABLE CONSTRAINT ...  EXCLUDE</></link> clause.  While
-              uniqueness checks could be specified using this syntax,
-              the real value of this feature is in using complex
-              operators that do not have built-in constraints.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve the constraint violation error message to report the values
-              causing the failure (Itagaki Takahiro)
-            </para>
-
-            <para>
-              For example, a uniqueness constraint violation now reports <literal>Key
-              (x)=(2) already exists</>.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Object Permissions</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add the ability to make mass permission changes per
-              schema using the new <link
-              linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
-              IN SCHEMA</></link> clause (Petr Jelinek)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add the ability to control large object permissions with
-              <command>GRANT</>/<command>REVOKE</> (KaiGai Kohei)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Utility Operations</title>
+    </itemizedlist>
 
-      <itemizedlist>
+   </sect4>
 
-        <listitem>
-          <para>
-            Have <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
-            linkend="SQL-NOTIFY"><command>NOTIFY</></link> store events
-            in a memory queue, rather than a system table (Joachim
-            Wieland)
-          </para>
-
-          <para>
-            This greatly improves performance for these operations.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
-            to pass an optional string to listeners (Joachim Wieland)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow <link linkend="SQL-CLUSTER"><command>CLUSTER</></link>
-            on all system tables (Tom Lane)
-          </para>
-
-          <para>
-            Global system tables still cannot be clustered.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title><link linkend="SQL-COPY"><command>COPY</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow <literal>*</> as a parameter in <literal>FORCE QUOTE</> for
-              <literal>COPY CSV</> (Itagaki Takahiro)
-            </para>
-
-            <para>
-              This forces quotes for all <acronym>CSV</> output columns.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add new <command>COPY</> syntax that allows parameters to be
-              specified in parentheses (Robert Haas, Emmanuel Cecchet)
-            </para>
-
-            <para>
-              This allows greater flexibility for future <command>COPY</> options.
-              The old syntax is still supported.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add new <command>EXPLAIN (BUFFERS)</> to report query buffer
-              activity (Itagaki Takahiro)
-            </para>
-
-            <para>
-              log_*_stats log output, e.g. <link
-              linkend="runtime-config-statistics-monitor">log_statement_stats</link>,
-              no longer shows this information.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add hash usage information to <command>EXPLAIN</> output (Robert
-              Haas)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <command>EXPLAIN</> output in <acronym>XML</>, <acronym>JSON</>,
-              and <acronym>YAML</> formats (Robert Haas, Greg Sabino Mullane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <command>EXPLAIN</> options to be specified inside parentheses
-              (Robert Haas)
-            </para>
-
-            <para>
-              This allows for the expansion of <command>EXPLAIN</> options.  The
-              old syntax is still supported.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="SQL-VACUUM"><command>VACUUM</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Change <command>VACUUM FULL</> to rewrite the entire table and
-              indexes, rather than moving around single rows to compact space
-              (Itagaki Takahiro, Tom Lane)
-            </para>
-
-            <para>
-              The previous method was usually slower and caused index bloat.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add new <command>VACUUM</> syntax that allows parameters to be
-              specified in parentheses (Itagaki Takahiro)
-            </para>
-
-            <para>
-              This allows greater flexibility for future <command>VACUUM</>
-              options.  The old syntax is still supported.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Indexes</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow an index to be auto-named by not supplying an index name to
-              <link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></link> (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <link linkend="SQL-REINDEX"><command>REINDEX</></link>
-              on system indexes (Tom Lane)
-            </para>
-
-            <para>
-              WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE?  NON-HARDWIRED ONES?
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <literal>point_ops</> opclass for GiST (Teodor Sigaev)
-            </para>
-
-            <para>
-              DETAILS?
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Use red-black trees for <acronym>GIN</> index creation
-             (Teodor Sigaev)
-            </para>
-
-            <para>
-              Red-black trees are self-balanced so allow for faster index
-          creation.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Data Types</title>
-      <itemizedlist>
+   <sect4>
+    <title><link linkend="ecpg"><application>ecpg</></link></title>
+    <itemizedlist>
 
-        <listitem>
-          <para>
-            Allow hex values to be specified in <link
-            linkend="datatype-binary"><type>bytea</></link> strings
-            (Peter Eisentraut)
-          </para>
-
-          <para>
-            The variable <link
-            linkend="guc-bytea-output">bytea_output</link> controls
-            if hex (default) or octal escapes are used for <type>bytea</>
-            output.  (SWITCH DEFAULT FOR BETA?  PETER) Libpq's
-            <function>PQescapeByteaConn()</> now uses the hex format
-            for <productname>PostgreSQL</> 9.0 servers.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow <link
-            linkend="guc-extra-float-digits">extra_float_digits</link>
-            to be increased to <literal>3</> (Tom Lane)
-          </para>
-
-          <para>
-            The previous maximum <varname>extra_float_digits</> was <literal>2</>.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title><link linkend="textsearch">Full Text Search</link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add prefix support for the full text search synonym dictionary
-              (Teodor Sigaev)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add full text search filtering dictionaries (Teodor Sigaev)
-            </para>
-
-            <para>
-              Filtering dictionaries allow tokens to be modified and passed to
-              subsequent dictionaries.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow underscores in full text email addresses (Teodor Sigaev)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Use more standards-compliant rules for <acronym>URL</>
-              parsing (Tom Lane)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Functions</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Add <link linkend="ecpg-descriptors"><acronym>SQLDA</></link>
+       (SQL Descriptor Area) support to <application>ecpg</>
+       (Boszormenyi Zoltan)
+      </para>
+     </listitem>
 
-        <listitem>
-          <para>
-            Allow case-insensitive <link
-            linkend="functions-posix-regexp">regular expression</link>
-            matching with <acronym>UTF-8</> server encodings.
-          </para>
-
-          <para>
-            Previously, only <acronym>ASCII</> characters and single-byte
-            encodings worked properly.  Other multi-byte, non-<acronym>UTF-8</>
-            encodings are still broken for case-insensitive regular expression
-            matching.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow function calls to supply parameter names and match them to named
-            parameters in the function definition (Pavel Stehule)
-          </para>
-
-          <para>
-            For example, if a function is defined to take parameters <literal>a</>
-            and <literal>b</>, it can be called with <literal>func(7 AS a, 12
-            AS b)</> or <literal>func(12 AS b, 7 AS a)</>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add support for <link
-            linkend="functions-formatting"><function>to_char()</></link>
-            scientific notation output (<link
-            linkend="functions-formatting-numeric-table"><literal>'EEEE'</></link>)
-            (Pavel Stehule, Brendan Jurd)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Have <function>to_char()</> honor <link
-            linkend="functions-formatting-datetimemod-table"><literal>'FM'</></link>
-            (fill mode) in <literal>'Y'</>, <literal>'YY'</>, and
-            <literal>'YYY'</> specifications (Bruce Momjian, Tom Lane)
-          </para>
-
-          <para>
-            It was already honored by <literal>'YYYY'</>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Fix <function>to_char()</> to output the proper localized
-            numeric and monetary characters on <productname>Windows</>
-            (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Correct calculations of <link
-            linkend="functions-geometry-op-table">"overlap"</link>
-            and "contains" operations over polygons (Teodor Sigaev)
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title>Aggregates</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow aggregate functions to use <literal>ORDER BY</> (Andrew
-              Gierth)
-            </para>
-
-            <para>
-              For example, this is now supported, <literal>array_agg(a ORDER BY
-              b)</>.  This is useful for aggregates where the order of values is
-              significant.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add the <link
-              linkend="functions-aggregate-table"><function>string_agg()</></link>
-              aggregate function which aggregates values into a single
-              string (Pavel Stehule)
-            </para>
-
-            <para>
-              An optional second argument allows specification of a delimiter.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Aggregate functions that are called with <literal>DISTINCT</> are
-              now passed NULL values if the aggregate transition function is
-              not marked as <literal>STRICT</> (Andrew Gierth)
-            </para>
-
-            <para>
-              For example, <literal>agg(DISTINCT x)</> might pass NULL <literal>x</>
-              values to <function>agg()</>.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Bit Strings</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="functions-binarystring-other"><function>get_bit()</></link>
-              and <function>set_bit()</> functions for <type>bit</>
-              strings, mirroring those for <type>bytea</> (Leonardo
-              F)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Implement <link
-              linkend="functions-string-sql"><function>OVERLAY()</></link>
-              (replace) for <type>bit</> strings and <type>bytea</>
-              (Leonardo F)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Object Information Functions</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="functions-admin-dbsize"><function>pg_table_size()</></link>
-              and <function>pg_indexes_size()</> to provide a more
-              user-friendly interface to the <function>pg_relation_size()</>
-              function (Bernd Helmle)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="functions-info-access-table"><function>has_sequence_privilege()</></link>
-              for sequence permission checking (Abhijit Menon-Sen)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Have <link linkend="information-schema">information
-              schema</link> properly display date type octet lengths
-              (Peter Eisentraut)
-            </para>
-
-            <para>
-              The reported length is now the maximum octet length;  previously,
-              a huge value was reported.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Speed up information schema privilege views (Joachim Wieland)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Function and Trigger Creation</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Implement anonymous functions using the <link
-              linkend="SQL-DO"><command>DO</></link> statement (Petr
-              Jelinek, Joshua Tolley, Hannu Valtonen)
-            </para>
-
-            <para>
-              This allows execution of server-side code without the need to create
-              a new function and execute it.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow SQL-compliant <link
-              linkend="SQL-CREATETRIGGER">per-column triggers</link>
-              (Itagaki Takahiro)
-            </para>
-
-            <para>
-              Such triggers are fired only if the specified columns are affected
-              by the query, e.g. in <command>UPDATE</>'s <literal>SET</> list.
-              information_schema now also shows this information.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <literal>WHERE</> clause to <link
-              linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</></link>
-              to allow control over whether a trigger is fired (Takahiro
-              Itagaki)
-            </para>
-
-            <para>
-              While a check can be performed inside the trigger, doing it in an
-              external <literal>WHERE</> clause has performance benefits.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Server-Side Languages</title>
+     <listitem>
+      <para>
+       Add the <link linkend="ecpg-descriptors"><command>DESCRIBE</>
+       [<literal>OUTPUT</>]</link> statement to <application>ecpg</>
+       (Boszormenyi Zoltan)
+      </para>
+     </listitem>
 
-      <itemizedlist>
+     <listitem>
+      <para>
+       Add an <application>ecpg</> <link
+       linkend="ecpg-library">function</link> to return the
+       current transaction status (Bernd Helmle)
+      </para>
+     </listitem>
 
-        <listitem>
-          <para>
-            Add the <literal>OR REPLACE</> clause to <link
-            linkend="SQL-CREATELANGUAGE"><command>CREATE LANGUAGE</></link>
-            (Tom Lane)
-          </para>
-
-          <para>
-            This is helpful to optionally install a language if it does not
-            already exist, and is particularly helpful now that PL/pgSQL is
-            installed by default.
-          </para>
-        </listitem>
-
-        </itemizedlist>
-
-        <sect4>
-        <title><link linkend="plpgsql">PL/PgSQL</link> Server-Side
-        Language</title>
-
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Install server-side language PL/pgSQL by default (Bruce Momjian)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <literal>IN</> parameters to be assigned values within
-              PL/pgSQL functions (Steve Prentice)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve error location reporting in PL/pgSQL (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Have PL/pgSQL use the main lexer, rather than a custom version (Tom Lane)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="plpgsql-cursors">PL/pgSQL Cursors</link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add count and <literal>ALL</> options to <command>MOVE
-              FORWARD</>/<literal>BACKWARD</> in PL/pgSQL (Pavel Stehule)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow PL/pgSQL's <literal>WHERE CURRENT OF</> to use a cursor
-              variable (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add PL/pgSQL's <command>OPEN cursor FOR EXECUTE</> to use parameters
-              (Pavel Stehule, Itagaki Takahiro)
-            </para>
-
-            <para>
-              This is accomplished with a new <literal>USING</> clause.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add new PL/Perl functions:  <link
-              linkend="plperl-utility-functions"><function>quote_literal()</></link>,
-              <function>quote_nullable()</>, <function>quote_ident()</>,
-              <function>encode_bytea()</>, <function>decode_bytea()</>,
-              <function>looks_like_number()</>,
-              <function>encode_array_literal()</>,
-              <function>encode_array_constructor()</> (Tim Bunce)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add server variable <link
-              linkend="guc-plperl-on-init">plperl.on_init</link> to
-              specify a PL/Perl Perl initialization function (Tim
-              Bunce)
-            </para>
-
-            <para>
-              <link
-              linkend="guc-plperl-on-plperl-init">plperl.on_plperl_init</link>
-              and <varname>plperl.on_plperlu_init</> are also available
-              for trusted/untrusted-specific initialization.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve error context support in PL/Perl (Alexey Klyukin)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Support <command>END</> blocks in PL/Perl (Tim Bunce)
-            </para>
-
-            <para>
-              <command>END</> blocks do not currently allow database access.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <command>use strict</> in PL/Perl (Tim Bunce)
-            </para>
-
-            <para>
-              This can be enabled with the server variable <link
-              linkend="guc-plperl-use-strict">plperl.use_strict</link>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <command>require</> in PL/Perl (Tim Bunce)
-            </para>
-
-            <para>
-              This basically tests to see if the module is loaded, and if not,
-              generates an error.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <command>use feature</> in PL/Perl if Perl version 5.10 or
-              later is used (Tim Bunce)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Verify that PL/Perl return values are valid in the server encoding
-              (Andrew Dunstan)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve PL/Perl code structure (Tim Bunce)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              PL/Perl subroutines are now given names (Tim Bunce)
-            </para>
-
-            <para>
-              This is for the use of profiling and code coverage tools.  DIDN'T
-              THEY HAVE NAMES BEFORE?
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              PL/Perl no longer allows <application>Safe</> version 2.20 because
-              it is unsafe (Tim Bunce)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add Unicode support in PL/Python (Peter Eisentraut)
-            </para>
-
-            <para>
-              Strings are automatically converted from/to the server encoding as
-              necessary.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve <type>bytea</> support in PL/Python (Caleb Welton)
-            </para>
-
-            <para>
-              <type>Bytea</> values passed into PL/Python now are represented as
-              binary, rather than the Postgres <type>bytea</> text format.  Null
-              bytes are now also output properly from PL/Python.  <type>Boolean</>
-              and <type>numeric</> value passing in PL/Python was also improved.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <link linkend="plpython-arrays">array parameter/return
-              support</link> to PL/Python (Peter Eisentraut)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <application>Python</> 3 support to PL/Python (Peter Eisentraut)
-            </para>
-
-            <para>
-              The new server-side language is called <link
-              linkend="plpython-python23"><literal>plpython3u</></link>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve error location and exception reporting in PL/Python (Peter Eisentraut)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Client Applications</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Add the <literal>string</> data type in <application>ecpg</>
+       Informix-compatibility mode (Zoltan Boszormenyi)
+      </para>
+     </listitem>
 
-        <listitem>
-        <para>
-          Add <link linkend="APP-VACUUMDB"><command>vacuumdb</></link>
-          <option>--analyze-only</> option to only analyze (Bruce Momjian)
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title><link linkend="APP-PSQL"><application>psql</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Properly escape <application>psql</> <link
-              linkend="APP-PSQL-variables">variables</link> and
-              identifiers (Pavel Stehule, Robert Haas)
-            </para>
-
-            <para>
-              For example, <literal>:'var'</> will be escaped as a literal string, and
-              <literal>:"var"</> will be escaped as an SQL identifier.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Ignore leading UTF-8-encoded Unicode byte-order marker in
-              <application>psql</> (Itagaki Takahiro)
-            </para>
-
-            <para>
-              This is enabled when the client encoding is <acronym>UTF-8</>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Fix <command>psql --file -</> to properly honor <link
-              linkend="R1-APP-PSQL-3"><option>--single-transaction</></link>
-              (Bruce Momjian)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Prevent overwriting of <application>psql</>'s command-line history
-              if two <application>psql</> sessions are run simultaneously (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Improve <application>psql</>'s tab completion support (Itagaki
-              Takahiro)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-        <sect5>
-        <title><application>psql</> Display</title>
-          <itemizedlist>
-
-            <listitem>
-              <para>
-                Allow <application>psql</> to use fancy Unicode line-drawing
-                characters via <command>\pset linestyle unicode</> (Roger Leigh)
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                Improve display of wrapped columns in <application>psql</> (Roger
-                Leigh)
-              </para>
-
-              <para>
-                The previous format is available by using <command>\pset linestyle
-                old-ascii</>.
-              </para>
-            </listitem>
-
-          </itemizedlist>
-
-        </sect5>
-
-        <sect5>
-          <title><application>psql</> <link
-          linkend="APP-PSQL-meta-commands"><command>\d</></link>
-          Commands</title>
-          <itemizedlist>
-
-            <listitem>
-              <para>
-                Have <command>\d</> show child tables that inherit from the specified
-                parent (Damien Clochard)
-              </para>
-
-              <para>
-                <command>\d</> shows only the number of child tables, while
-                <command>\d+</> shows the names of all child tables.
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                Show definition of indexes in <command>\d index_name</> (Khee Chin)
-              </para>
-
-              <para>
-                The definition is useful for expression indexes.
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                In <application>psql</>, show the view definition only with <command>\d+</>,
-                not with <command>\d</> (Peter Eisentraut)
-              </para>
-            </listitem>
-
-          </itemizedlist>
-
-        </sect5>
-      </sect4>
-
-      <sect4>
-        <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Have <application>pg_dump</>/<application>pg_restore</>
-              <link linkend="pg-dump-options"><option>--clean</></link>
-              also remove large objects (Itagaki Takahiro)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Fix <application>pg_dump</> to properly dump large objects if
-              standard_conforming_strings is enabled (Tom Lane)
-            </para>
-
-            <para>
-              Large objects dumps now use hex format for output.  (SWITCH DEFAULT
-              FOR BETA? TOM)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <application>pg_dump</> to dump comments attached to columns
-              of composite types (Taro Minowa (Higepon))
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Have <application>pg_dump</> <link
-              linkend="pg-dump-options"><option>--verbose</></link>
-              output the <application>pg_dump</> and server versions
-              in text output mode (Jim Cox, Tom Lane)
-            </para>
-
-            <para>
-              These were already present in custom output mode.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link
-        linkend="app-pg-ctl"><application>pg_ctl</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow <application>pg_ctl</> to be safely used to start the
-              <application>postmaster</> at boot-time (Tom Lane)
-            </para>
-
-            <para>
-              Previously the <application>pg_ctl</> process could have been mistakenly
-              identified as a running <application>postmaster</> based on a stale
-              <application>postmaster</> lock file.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Give <application>pg_ctl</> the ability to initialize the database
-              (like <application>initdb</>) (Zdenek Kotala)
-            </para>
-          </listitem>
-
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title><application>Development Tools</></title>
-
-      <sect4>
-        <title><link linkend="libpq"><application>libpq</></link></title>
-
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add new <application>libpq</> functions
-              <link
-              linkend="libpq-connect"><function>PQconnectdbParams()</></link>
-              and <function>PQconnectStartParams()</> (Guillaume
-              Lelarge)
-            </para>
-
-            <para>
-              These functions are similar to <function>PQconnectdb()</> and
-              <function>PQconnectStart()</> except they allow a null-terminated
-              array of connection options, rather than requiring all options to
-              be sent in a single string.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <application>libpq</> functions <link
-              linkend="libpq-exec-escape-string"><function>PQescapeLiteral()</></link>
-              and <function>PQescapeIdentifier()</> (Robert Haas)
-            </para>
-
-            <para>
-              These functions return appropriately quoted and escaped literal
-              strings and identifiers.  The caller is not required to pre-allocate
-              the string result, as is required by <function>PQescapeStringConn()</>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add checking for a per-user service file (<link
-              linkend="libpq-pgservice"><filename>.pg_service.conf</></link>),
-              which is checked before the site-wide service file
-              (Peter Eisentraut)
-            </para>
-
-            <para>
-              The file <filename>.pg_service.conf</> is assumed to be in the
-              user's home directory.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Properly report an error if the specified <application>libpq</> service
-              cannot be found (Peter Eisentraut)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Issue a warning if the <link
-              linkend="libpq-pgpass"><filename>.pgpass</></link>-retrieved
-              password fails (Bruce Momjian)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title><link linkend="ecpg"><application>ecpg</></link></title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add <link linkend="ecpg-descriptors"><acronym>SQLDA</></link>
-              (SQL Descriptor Area) support to <application>ecpg</>
-              (Boszormenyi Zoltan)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add the <link linkend="ecpg-descriptors"><command>DESCRIBE</>
-              [<literal>OUTPUT</>]</link> statement to <application>ecpg</>
-              (Boszormenyi Zoltan)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add an <application>ecpg</> <link
-              linkend="ecpg-library">function</link> to return the
-              current transaction status (Bernd Helmle)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add the <literal>string</> data type in <application>ecpg</>
-              Informix-compatibility mode (Zoltan Boszormenyi)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <application>ecpg</> to use <literal>new</> and <literal>old</>
-              variable names without restriction (Michael Meskes)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow <application>ecpg</> to use variable names in
-              <function>free()</>(Michael Meskes)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Have <application>ecpg</> return zero for non-SQL3 data types
-             (Michael Meskes))
-            </para>
-
-            <para>
-              Previously it returned the negative of the data type <type>oid</>.
-            </para>
-          </listitem>
-
-          </itemizedlist>
-
-          <sect5>
-            <title><application>ecpg</> Cursors</title>
-            <itemizedlist>
-
-            <listitem>
-              <para>
-                Add <application>ecpg</> out-of-scope cursor support in native mode
-                (Boszormenyi Zoltan)
-              </para>
-
-              <para>
-                This allows <command>DECLARE</> to use variables that are not in
-                scope when <command>OPEN</> is called.  This facility already existed
-                in <application>ecpg</> Informix-compatibility mode.
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                Allow dynamic <application>ecpg</> cursor names (Boszormenyi Zoltan)
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                Allow <application>ecpg</> to use noise words <literal>FROM</> and
-                <literal>IN</> in <command>FETCH</> and <command>MOVE</> (Zoltan
-                Boszormenyi)
-              </para>
-            </listitem>
-
-          </itemizedlist>
-
-        </sect5>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Build Options</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Allow <application>ecpg</> to use <literal>new</> and <literal>old</>
+       variable names without restriction (Michael Meskes)
+      </para>
+     </listitem>
 
-        <listitem>
-          <para>
-            Enable client thread safety by default (Bruce Momjian)
-          </para>
-
-          <para>
-            Thread-safe builds can be disabled with <link
-            linkend="configure"><application>configure</></link>
-            <option>--disable-thread-safety</>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add a compile-time option to allow the Linux out-of-memory killer
-            to kill backends (Alex Hunsaker, Tom Lane)
-          </para>
-
-          <para>
-            Now that <filename>/proc/self/oom_adj</> allows disabling
-            of the <productname>Linux</> out-of-memory (<acronym>OOM</>)
-            killer for the postmaster and its children, the new
-            compile-time option <link
-            linkend="linux-memory-overcommit"><literal>-DLINUX_OOM_ADJ=0</></link>
-            allows the killer to be enabled for <application>postmaster</>
-            children.  <application>pg_config</> shows if this flag
-            was used during compilation.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Use <productname>DocBook</> <acronym>XSL</> stylesheets for man page
-            building (Peter Eisentraut)
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title>Makefiles</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              New <filename>Makefile</> targets <link
-              linkend="build"><literal>world</></link>,
-              <literal>install-world</>, and <literal>installcheck-world</>
-              (Andrew Dunstan)
-            </para>
-
-            <para>
-              These are similar to the existing <literal>all</>, <literal>install</>,
-              and <literal>installcheck</> targets, but they build <acronym>HTML</>
-              documentation, build and test <filename>/contrib</>, and test
-              server-side languages and <application>ecpg</>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add data and documentation location control to <link
-              linkend="xfunc-c-pgxs"><acronym>PGXS</></link> Makefiles
-              (Mark Cave-Ayland)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Restructure the <acronym>HTML</> documentation build
-              <filename>Makefile</> rules (Peter Eisentraut)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>New Requirements</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Require <application>Autoconf</> 2.63 for building from source (Peter Eisentraut)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Require <application>Flex</> 2.5.31 or later to build from source
-              (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Require <application>Perl</> version 5.8 or greater to build the server
-              from a <acronym>CVS</> copy (John Naylor, Andrew)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Windows</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add support for compiling on <link
-              linkend="install-win32-full">64-bit
-              <productname>Windows</></link> and running in 64-bit
-              mode (Tsutomu Yamada, Magnus)
-            </para>
-
-            <para>
-              This allows for large shared memory sizes on <productname>Windows</>.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow server builds using <link
-              linkend="install-win32-full"><productname>Visual Studio
-              2008</></link> (Magnus Hagander)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow multi-processor compilation using <productname>Microsoft Visual
-              C</> (Magnus Hagander)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Source Code</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Allow <application>ecpg</> to use variable names in
+       <function>free()</>(Michael Meskes)
+      </para>
+     </listitem>
 
-        <listitem>
-          <para>
-            Distribute documentation in a proper directory tree, rather than
-            as tar archive files inside the main distribution tarball (Peter Eisentraut)
-          </para>
-
-          <para>
-            For example, the <acronym>HTML</> documentation is now in
-            <filename>doc/src/sgml/html</>;  the manual pages are packaged
-            similarly.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Enable the server lexer to be reentrant (Tom Lane)
-          </para>
-
-          <para>
-            This was needed for use of the lexer by PL/pgSQL.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Improve speed of memory allocation (Tom Lane, Greg Stark)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add system columns to better document the use of indexes for constraint
-            enforcement (Tom Lane)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Allow multiple actions to be communicated using the same operating
-            system signal (Fujii Masao)
-          </para>
-
-          <para>
-            This allows improved backend communication as new features are
-            added.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Improve source code test coverage, including /contrib, PL/Python,
-            and PL/Perl (Peter Eisentraut, Andrew Dustan)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Remove the use of flat files for system table bootstrapping
-           (Tom Lane, Alvaro Herrera)
-          </para>
-
-          <para>
-            This also improves performance when using millions of users and
-            databases.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Improve the ability to translate <application>psql</> strings
-            (Peter Eisentraut)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Reduce the length of some file names so file paths are less than
-            100 characters (Tom Lane)
-          </para>
-
-          <para>
-            Some decompression programs have problems with long file names.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Tighten input requirements for <type>int2</> vector input (Caleb
-            Welton)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add a new <link
-            linkend="errcodes-table"><literal>ERRCODE_INVALID_PASSWORD</></link>
-            <literal>SQLSTATE</> error code (Bruce Momjian)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Properly remove the few remaining personal source code copyright
-            entries (Bruce Momjian)
-          </para>
-
-          <para>
-            The personal copyright notices were insignificant but the community
-            occasionally had to answer questions about them.
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-      <sect4>
-        <title>Feature Support</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Use a more modern <acronym>API</> for <application>Bonjour</> (Tom Lane)
-            </para>
-
-            <para>
-              Bonjour now requires <productname>OS X</> 10.3 or later.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add processor test-and-test lock support for the <productname>SuperH</>
-              architecture (Nobuhiro Iwamatsu)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow non-<application>GCC</> compilers to use inline functions if
-              they support them (Kurt Harriman)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Remove support for platforms that don't have a working 64-bit
-              integer data types (Tom Lane)
-            </para>
-
-            <para>
-              It is believed all supported platforms have working 64-bit integer
-              data types.
-            </para>
-          </listitem>
-
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Server Programming</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Allow use of <productname>C++</> functions in backend code  (Kurt
-              Harriman, Peter Eisentraut)
-            </para>
-
-            <para>
-              This removes keyword conflicts that previously made <productname>C++</>
-              usage difficult in backend code.  <literal>extern "C" { }</> might still
-              be necessary.
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add <link
-              linkend="xaggr"><function>AggCheckCallContext()</></link>
-              for use in detecting if a <productname>C</> function is
-              being called as an aggregate (Hitoshi Harada)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Require <function>fastgetattr()</> and <function>heap_getattr()</>
-              backend macros to use a non-NULL fourth argument (Robert Haas)
-              KEEP?
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Server Hooks</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add parser hooks to access column and parameter references in
-              queries (Tom Lane)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add a hook so loadable modules can control utility commands (Itagaki
-              Takahiro)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Allow the calling of parser hooks from <acronym>SPI</> and cached
-              plans (Tom Lane)
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-      <sect4>
-        <title>Binary Upgrade Support</title>
-        <itemizedlist>
-
-          <listitem>
-            <para>
-              Add support for preservation of all <link
-              linkend="catalog-pg-class"><structname>relfilenodes</></link>,
-              for use during binary upgrades (Bruce Momjian)
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Add support for binary upgrades to preserve <structname>pg_type</>
-              and <structname>pg_enum</> <type>oids</> (Bruce Momjian)
-            </para>
-
-            <para>
-              This is needed to allow binary upgrades of user-defined composite
-              types, arrays, and enums (enumerated types).
-            </para>
-          </listitem>
-
-          <listitem>
-            <para>
-              Move tablespace data directories into their own
-              <productname>PostgreSQL</> version-specific subdirectory (Bruce Momjian)
-            </para>
-
-            <para>
-              This simplifies binary upgrades.
-            </para>
-          </listitem>
-
-        </itemizedlist>
-
-      </sect4>
-
-    </sect3>
-
-    <sect3>
-      <title>Contrib</title>
-      <itemizedlist>
+     <listitem>
+      <para>
+       Have <application>ecpg</> return zero for non-SQL3 data types
+       (Michael Meskes))
+      </para>
 
-        <listitem>
-          <para>
-            Add multi-threaded option (<option>-j</>) to <link
-            linkend="pgbench"><filename>/contrib/pgbench</></link>
-            (Itagaki Takahiro)
-          </para>
-
-          <para>
-            This allows multiple <acronym>CPU</>s to be used for pgbench tests.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add <command>\shell</> and <command>\setshell</> meta
-            commands to <link
-            linkend="pgbench"><filename>/contrib/pgbench</></link>
-            (Michael Paquier)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            New features for <link
-            linkend="dict-xsyn"><filename>/contrib/dict_xsyn</></link>
-            (Sergey Karpov)
-          </para>
-
-          <para>
-            The new options are <literal>matchorig</>, <literal>matchsynonyms</>,
-            and <literal>keepsynonyms</>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add full text dictionary <link
-            linkend="unaccent"><filename>/contrib/unaccent</></link>
-            (Teodor Sigaev)
-          </para>
-
-          <para>
-            This filter dictionary removes accents from tokens.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add <link
-            linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</></link>
-            to <filename>/contrib/dblink</> (Marcus Kempe)
-          </para>
-
-          <para>
-            This allows async notifications in <productname>dblink</>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Greatly increase <link
-            linkend="hstore"><filename>/contrib/hstore</></link>'s
-            length limit and add btree and hash abilities so <literal>GROUP
-            BY</> and <literal>DISTINCT</> operations are possible
-            (Andrew Gierth)
-          </para>
-
-          <para>
-            New functions and operators were also added.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add <link
-            linkend="passwordcheck"><filename>/contrib/passwordcheck</></link>
-            which can check the strength of assigned passwords (Laurenz
-            Albe)
-          </para>
-
-          <para>
-            The source code of this module should be modified to implement
-            site-specific password policies.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add query text to <link
-            linkend="auto-explain"><filename>/contrib/auto_explain</></link>
-            output (Andrew Dunstan)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Add buffer access counters to <link
-            linkend="pgstatstatements"><filename>/contrib/pg_stat_statements</></link>
-            (Itagaki Takahiro)
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Update <link
-            linkend="server-start"><filename>/contrib/start-scripts/linux</></link>
-            to use <filename>/proc/self/oom_adj</> to disable the
-            <link linkend="linux-memory-overcommit"><productname>Linux</>
-            out-of-memory</link> (<acronym>OOM</>) killer (Alex
-            Hunsaker, Tom Lane)
-          </para>
-        </listitem>
-
-      </itemizedlist>
-
-    </sect3>
-  </sect2>
-</sect1>
+      <para>
+       Previously it returned the negative of the data type <type>oid</>.
+      </para>
+     </listitem>
 
+     </itemizedlist>
 
-<sect1 id="release-9-0-alpha">
-  <title>Release 9.0alpha4</title>
-  <sect2>
-    <title>Overview</title>
-    <para>
-      PostgreSQL alpha releases are snapshots of development code. They
-      are intended to preview and test upcoming features and to provide
-      the possibility for early feedback. They should not be used in
-      production installations or active development projects. While the
-      PostgreSQL code is continuously subject to a number of automated
-      and manual tests, alpha releases might have serious bugs. Also
-      features may be changed incompatibly or removed at any time during
-      the development cycle.
-    </para>
-    <para>
-      The development cycle of a PostgreSQL major release alternates
-      between periods of development and periods of integration work,
-      called commit fests, normally one month each. Alpha releases are
-      planned to be produced at the end of every commit fest, thus every
-      two months. Since the first commit fest starts within a month from
-      the beginning of development altogether, early alpha releases are
-      not indicative of the likely feature set of the final release.
-    </para>
-    <para>
-      The release notes below highlight user visible changes and new
-      features. There are normally numerous bug fixes and performance
-      improvements in every new snapshot of PostgreSQL, and it would be
-      too bulky to attempt to list them all. Note that many bug fixes are
-      also backported to stable releases of PostgreSQL, and you should be
-      using those if you are looking for bug-fix-only upgrades for your
-      current installations.
-    </para>
-    <para>
-      The release notes are cumulative over all alpha releases.  Items
-      that are new in the latest alpha release
-      are <emphasis>emphasized</emphasis>.
-    </para>
-  </sect2>
-  <sect2>
-    <title>Migration</title>
-    <para>
-      To upgrade from any release to an alpha release or from an alpha
-      release to any other release will most likely require a
-      dump/restore upgrade procedure. It may happen that this is not
-      necessary in particular cases, but that is not verified beforehand.
-      (The server will warn you in any case when a dump/restore is
-      necessary if you attempt to use it with an old data directory.)
-      Note, however, that the dump/restore upgrade procedure is expected
-      to work for alpha releases, and problems in this area should be
-      reported.
-    </para>
-  </sect2>
-  <sect2>
-    <title>Testing</title>
-    <para>
-      The primary reason we release alphas is to get users to test new
-      features as early as possible.  If you are interested in helping
-      with organized testing, please see
-      <ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
-      testing information page</ulink>.
-      </para>
-  </sect2>
-  <sect2>
-    <title>Changes</title>
-    <sect3>
-      <title>SQL Features</title>
+     <sect5>
+      <title><application>ecpg</> Cursors</title>
       <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Disallow comments on columns of relation types
-         other than tables, views, and composite types, that is,
-         sequences and TOAST tables.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Adjust naming of indexes and their columns. Index
-         expression columns are now named after the FigureColname
-         result for their expressions, rather than always being
-         "pg_expression_N".  Digits are appended to this name if
-         needed to make the column name unique within the index.
-         Default names for indexes and associated constraints now
-         include the column names of all their columns, not only the
-         first one as in previous practice.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Allow the index name to be omitted in CREATE INDEX,
-         causing the system to choose an index name the same as it
-         would do for an unnamed index constraint.  A necessary
-         side-effect is to promote the word CONCURRENTLY to a more
-         reserved status; it can't be a table/column/index name
-         anymore unless quoted.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Improve the handling of SET CONSTRAINTS commands by
-         having them search pg_constraint before searching pg_trigger.
-         This allows saner handling of corner cases.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Typed table feature; this adds the CREATE TABLE
-         name OF type command.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Tighten integrity checks on ALTER TABLE ... RENAME
-         COLUMN in inheritance hierarchies.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Replace the pg_listener-based LISTEN/NOTIFY
-         mechanism with an in-memory queue.  In addition, add support
-         for a "payload" string to be passed along with each notify
-         event.</emphasis>
-        </para>
-        <para>
-         <emphasis>This implementation should be significantly more
-         efficient than the old one, and is also more compatible with
-         Hot Standby usage.  There is not yet any facility for HS
-         slaves to receive notifications generated on the master,
-         although such a thing is possible in future.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Have SELECT and CREATE TABLE AS queries return a
-         row count.  While this is invisible in psql, other
-         interfaces, like libpq, make this value visible.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Extend the set of frame options supported for
-         window functions.  This allows the frame to start from
-         CURRENT ROW (in either RANGE or ROWS mode), and it also adds
-         support for ROWS n PRECEDING and ROWS n FOLLOWING start and
-         end points.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add DO statement to support execution of procedural language
-         code without having to create a function for it.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Support use of function argument names to identify which
-         actual arguments match which function parameters. The syntax
-         uses AS, for example funcname(value AS arg1, anothervalue AS
-         arg2).
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Remove previously deprecated configuration
-         parameter add_missing_from. The system now always behaves as
-         though add_missing_from were off.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Performance and behavioral improvements in UPDATE,
-         DELETE, and SELECT FOR UPDATE/SHARE queries with joins.
-         Fix various corner cases that could have resulted in duplicated output
-         rows. Set-returning functions are now prohibited in the
-         target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
-         propagate into a WITH query anymore.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix SELECT FOR UPDATE/SHARE in conjunction with LIMIT.
-          Previously, it could return fewer rows than the limit specified.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
-          to be checked to determine whether the trigger should be fired.
-        </para>
-        <para>
-         For BEFORE triggers this is mostly a matter of spec compliance; but
-          for AFTER triggers it can provide a noticeable performance
-          improvement, since queuing of a deferred trigger event and
-          re-fetching of the row(s) at end of statement can be
-          short-circuited if the trigger does not need to be fired.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add exclusion constraints, which generalize the concept of
-          uniqueness to support any indexable commutative operator, not just
-          equality. Two rows violate the exclusion constraint if
-          &quot;row1.col OP row2.col&quot; is TRUE for each of the columns in
-          the constraint.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Support ORDER BY within aggregate function calls, at long last
-          providing a non-kluge method for controlling the order in which
-          values are fed to an aggregate function. At the same time eliminate
-          the old implementation restriction that DISTINCT was only supported
-          for single-argument aggregates.
-        </para>
-        <para>
-         Behavioral change: formerly, agg(DISTINCT x) dropped null values of
-          x unconditionally. Now, it does so only if the aggregate's transition
-          function is strict; otherwise nulls are treated as DISTINCT
-          normally would, i.e., you get one copy.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add SQL-compliant triggers on columns, which fire only if
-         certain columns are named in the UPDATE's SET list.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING
-         ALL shortcut to allow users to make an exact copy of a table including
-         all options and features.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Define a new, more extensible syntax for COPY options
-         in order to support additional COPY options in the future.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Modify the definition of window-function PARTITION
-         BY and ORDER BY clauses so that their elements are always
-         taken as simple expressions over the query's input
-         columns. This fixes a bug.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix bug with nested WITH RECURSIVE statements.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add surrogate pair support for U&amp; string and identifier
-         syntax.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add Unicode escapes in E'...' strings.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            DROP COLUMN and DROP CONSTRAINT now support an IF EXISTS clause so
-            that users can avoid fatal errors when running repeatable scripts.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            UNIQUE constraints can now be DEFERRABLE. This is primarily useful
-            for incremental updates of numerical keys, e.g. &quot;ID = ID +
-            1&quot;
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Allow parentheses around the query expression that follows a WITH
-            clause.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            INFORMATION_SCHEMA, a catalog of standard views of database
-            objects, has been updated to the SQL:2008 standard.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Change character_octet_length to more sensible values in
-            INFORMATION_SCHEMA.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Allow * as parameter for FORCE QUOTE for COPY CSV, so that all
-            columns will be quoted.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Performance</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Support "x IS NOT NULL" clauses as index-scan
-         conditions.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>When estimating the selectivity of an inequality
-         "column &gt; constant" or "column &lt; constant", and the
-         comparison value is in the first or last histogram bin or
-         outside the histogram entirely, try to fetch the actual
-         column min or max value using an index scan (if there is an
-         index on the column).  If successful, replace the lower or
-         upper histogram bound with that value before carrying on with
-         the estimate.  This limits the estimation error caused by
-         moving min/max values when the comparison value is close to
-         the min or max.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Generic implementation of red-black binary tree.
-         For now, only GIN uses it during index creation.  Using
-         self-balanced tree greatly speeds up index creation in corner
-         cases with preordered data.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Allow rewriting forms of ALTER TABLE to skip WAL
-          logging.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Speed up INFORMATION_SCHEMA's privilege views.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Make TRUNCATE do truncate-in-place when processing
-         a relation that was created or previously truncated in the
-         current (sub)transaction.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Implement &quot;join removal&quot; for cases where the inner side
-          of a left join is unique and is not referenced above the join.  This should
-          speed up many ORM-generated and reporting tool queries.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Remove the use of the flat files pg_auth and
-         pg_database in order to improve performance. (Warning: pgbouncer
-         and possibly other tools currently suggest referring to the pg_auth
-         file for its user database. Such schemes will no longer work.)
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            EXPLAIN allows output of plans in XML, JSON, or YAML format for automated
-            processing of explain plans by analysis or visualization tools.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            EXPLAIN now supports the use of generic options in EXPLAIN ( option
-            value, ... ) format, which permits the creation of additional
-            EXPLAIN options.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DISTINCT allows
-            users to manually tweak the number of distinct values estimated for
-            a column, to fix cases where ANALYZE estimates are incorrect.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Make GEQO's planning deterministic by having it start from a
-            predictable random number seed each time.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Rewrite GEQO's gimme_tree function so that it always finds a legal
-            join sequence. Previously, it could have failed to produce a plan
-            in some cases.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Tweak TOAST code so that columns marked with MAIN storage strategy
-            are not forced out-of-line unless that is necessary to make the row
-            fit on a page. Previously, they were forced out-of-line if needed
-            to get the row down to the default target size (1/4th page).
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Simplify the forms foo &lt;&gt; true and foo &lt;&gt; false to foo
-            = false and foo = true during query optimization.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Avoid per-send() system calls to manage SIGPIPE in libpq, if the
-            platform provides either sockopt(SO_NOSIGPIPE) or the MSG_NOSIGNAL
-            flag to send().
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Administration and Monitoring</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add the ability to store inheritance-tree
-         statistics in pg_statistic, and teach ANALYZE to compute such
-         stats for tables that have subclasses.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Revise pgstat's tracking of tuple changes to
-         improve the reliability of decisions about when to
-         auto-analyze.  The previous code depended on n_live_tuples +
-         n_dead_tuples - last_anl_tuples, where all three of these
-         numbers could be bad estimates from ANALYZE itself.  Even
-         worse, in the presence of a steady flow of HOT updates and
-         matching HOT-tuple reclamations, auto-analyze might never
-         trigger at all, even if all three numbers are exactly right,
-         because n_dead_tuples could hold steady.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Support ALTER TABLESPACE name SET/RESET (
-         tablespace_options ), currently supporting seq_page_cost and
-         random_page_cost as parameters.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>New faster implementation of VACUUM FULL.  The old
-         idiom of using CLUSTER instead of VACUUM FULL for speed is
-         now obsolete.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add buffer access counters to
-         pg_stat_statements.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add some simple support and documentation for using
-         process-specific oom_adj settings to prevent the postmaster
-         from being OOM-killed on Linux systems.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Place tablespace directories in their own
-         subdirectory so pg_migrator can upgrade clusters without
-         renaming the tablespace directories.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Introduce Streaming Replication.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add pg_table_size() and pg_indexes_size() to
-         provide more user-friendly wrappers around the
-         pg_relation_size() function.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add pg_stat_reset_shared('bgwriter') to reset the
-         cluster-wide shared statistics of the bgwriter.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Replace ALTER TABLE ... SET STATISTICS DISTINCT
-         with a more general mechanism.  Attributes can now have
-         options, just as relations and tablespaces do, and the
-         reloptions code is used to parse, validate, and store
-         them.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Fix longstanding gripe that we check for
-         0000000001.history at start of archive recovery, even when we
-         know it is never present.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Make standby server continuously retry restoring
-         the next WAL segment with restore_command, if the connection
-         to the primary server is lost.  This ensures that the standby
-         can recover automatically, if the connection is lost for a
-         long time and standby falls behind so much that the required
-         WAL segments have been archived and deleted in the
-         master.</emphasis>
-        </para>
-        <para>
-         <emphasis>This also makes standby_mode useful without
-         streaming replication; the server will keep retrying
-         restore_command every few seconds until the trigger file is
-         found.  That's the same basic functionality pg_standby
-         offers, but without the bells and whistles.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add functions to reset the statistics counter for a
-         single table/index or a single function.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Augment EXPLAIN output with more details on Hash
-         nodes.</emphasis>
-         </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Reindexing shared system catalogs is now fully
-         transactional and crash-safe.</emphasis>
-         </para>
-       </listitem>
-       <listitem>
-        <para>
-         Allow read-only connections during recovery, also
-         known as Hot Standby.  This provides a built-in master-slave
-         replication solution.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Provide a parenthesized-options syntax for VACUUM, analogous to
-          that recently adopted for EXPLAIN. This will allow additional
-          options to be implemented in future without having to make them
-          fully-reserved keywords. The old syntax remains available for
-          existing options, however.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add support for an application_name parameter, which is displayed
-          in pg_stat_activity and recorded in log entries.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix longstanding problems in VACUUM caused by untimely
-          interruptions.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add YAML to list of EXPLAIN formats.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add a hook to let loadable modules get control at ProcessUtility
-          execution, and use it to extend contrib/pg_stat_statements to track
-          utility commands.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add a Boolean server configuration parameter
-         &quot;bonjour&quot; to control whether a Bonjour-enabled
-         build actually attempts to advertise itself via Bonjour.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         When reloading postgresql.conf, log what parameters actually
-         changed.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Make it possibly to specify server configuration parameters
-         per user-database combination. Add a \drds command to psql to
-         display the settings.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Allow the collection of statistics on sequences.
-        </para>
-       </listitem>
+
       <listitem>
        <para>
-        Increase the maximum value of extra_float_digits to
-        3, and have pg_dump use that value when the backend is new
-        enough to allow it, because it is possible to need 3 extra
-        digits for float4 values (but not for float8 values).
+        Add <application>ecpg</> out-of-scope cursor support in native mode
+        (Boszormenyi Zoltan)
+       </para>
+
+       <para>
+        This allows <command>DECLARE</> to use variables that are not in
+        scope when <command>OPEN</> is called. This facility already existed
+        in <application>ecpg</> Informix-compatibility mode.
        </para>
       </listitem>
-        <listitem>
-          <para>
-            Add the ability to include the SQLSTATE error code of any error
-            messages in the PostgreSQL activity log with the new
-            log_line_prefix placeholder %e.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Show the exact value being complained of in
-            unique-constraint-violation error messages, including unique-index
-            build failures.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Security</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add support for RADIUS authentication.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         When querying a table with child tables, do not check permissions
-          on the child tables, only on the parent table. The old behavior was
-          found to be useless and confusing in virtually all cases, and also
-          contrary to the SQL standard.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add a hook to CREATE/ALTER ROLE to allow an external module to
-          check the strength of database passwords, and create a sample
-          implementation of such a hook as a new contrib module
-          &quot;passwordcheck&quot;.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add large object access control.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Allow LDAP authentication to operate in search+bind
-         mode, meaning it does a search for the user in the directory
-         first, and then binds with the DN found for this user.  This
-         allows for LDAP logins in scenarios where the DN of the user
-         cannot be determined simply by prefix and suffix, such as the
-         case where different users are located in different
-         containers.  The old way of authentication can be
-         significantly faster, so it's kept as an option.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add ALTER DEFAULT PRIVILEGES command, which allows
-         users to adjust the privileges that will be applied to
-         subsequently-created objects.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA.
-         This makes it easier to manage permissions on database objects.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Support &quot;samehost&quot; and &quot;samenet&quot; specifications
-         in pg_hba.conf.  This allows users with dynamic server addresses to run
-         PostgreSQL without frequently modifying pg_hba.conf.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            New has_sequence_privilege() functions allow you to check sequence
-            privileges for a given ROLE.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Built-In Functions</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Fix 3-parameter form of bit substring() to throw
-         error for negative length, as required by SQL
-         standard.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add get_bit/set_bit functions for bit strings,
-         paralleling those for bytea, and implement OVERLAY() for bit
-         strings and bytea.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add string_agg aggregate functions.  The
-         one-argument version concatenates the input values into a
-         string.  The two-argument version also does the same thing,
-         but inserts delimiters between elements.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Honor to_char() "FM" specification in YYY, YY, and
-         Y; it was already honored by YYYY.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Remove configuration parameter regex_flavor. It is now always
-          &quot;advanced&quot;.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Teach the regular expression functions to do case-insensitive
-          matching and locale-dependent character classification properly
-          when the database encoding is UTF8. This previously only worked
-          correctly for single-byte encodings.  It is still broken for other
-          multibyte encodings.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Support POSIX-compatible interpretation of ? as well as {m,n}
-         and related constructs in SIMILAR TO, per SQL:2008.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            The to_char() formatting functions now supports EEEE (scientific
-            notation).
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Use floor() not rint() when reducing precision of fractional
-            seconds in timestamp_trunc, timestamptz_trunc, and interval_trunc()
-            for the float-datetime case. This improves accuracy of time
-            calculations.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Fix ancient bug in handling of to_char() modifier 'TH', when used
-            with HH.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Data Types</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Allow enums to be created with zero labels, for use
-         during binary upgrade.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         When doing &quot;ARRAY[...]::domain&quot;, where domain is a domain
-          over an array type, we need to check domain constraints. Regression
-          introduced in 8.4.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix integer-to-bit-string conversions to handle the first
-          fractional byte correctly when the output bit width is wider than
-          the given integer by something other than a multiple of 8 bits.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix encoding handling in binary input function of xml type.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Tighten binary receive functions so that they reject values
-         that the text input functions don't accept either.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            New hex-string input and output format options for type bytea. Hex
-            output format is enabled by default, which is an incompatible
-            change. See the new bytea_output parameter if you need to restore
-            compatibility.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Adds prefix support for text search synonym dictionary, allowing
-            creation of synonyms on partial matches.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Server Tools</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         initdb now selects the encoding SQL_ASCII when the locale specifies
-          US-ASCII. This case previously failed.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add init[db] option to pg_ctl.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         It is now reasonably safe to use pg_ctl to start
-         the postmaster from a boot-time script.
-        </para>
-       </listitem>
-       <listitem>
-          <para>
-            pg_dump/pg_restore --clean now drops large objects.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Modify parallel pg_restore ordering logic to avoid a potential
-            O(N^2) slowdown for some complex databases.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>libpq</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add user-specific .pg_service.conf file.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add new escaping functions PQescapeLiteral and
-         PQescapeIdentifier.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Introduce two new libpq connection functions,
-         PQconnectdbParams and PQconnectStartParams, which are
-         analogous to PQconnectdb and PQconnectStart respectively, but
-         accept two NULL-terminated arrays, keywords and values,
-         rather than conninfo strings. This avoids the need to build
-         the conninfo string in cases where it might be inconvenient
-         to do so.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Throw error when a specified connection service name is not
-          found in pg_service.conf, instead of ignoring it.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Make libpq reject non-numeric and out-of-range port numbers with a
-         suitable error message.
-        </para>
-       </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>psql</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Allow psql variables to be interpolated with
-         literal or identifier escaping.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         In psql, show view definition only with \d+, not with \d.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         In psql, ignore UTF-8-encoded Unicode byte-order mark at the
-          beginning of a file if the client encoding is UTF-8.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Improve psql's tabular display of wrapped-around data by inserting
-          markers in the formerly-always-blank columns just to left and right
-          of the data. &quot;pset linestyle old-ascii&quot; is added to make
-          the previous behavior available if anyone really wants it.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Simplify psql's new linestyle behavior to default to
-          linestyle=ascii all the time, rather than hoping we can tell
-          whether the terminal supports UTF-8 characters.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Implement significantly saner behavior when two or
-         more psql sessions overlap in their use of the history file.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add &quot;pset linestyle ascii/unicode&quot; option to psql,
-         allowing our traditional ASCII-art style of table output to
-         be upgraded to use Unicode box drawing characters if
-         desired.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            Have \d show child tables that inherit from the specified parent
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            psql now shows the index methods in \di
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-
-    <sect3>
-      <title>Procedural Languages</title>
-      <sect4>
-       <title>PL/pgSQL</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add "USING expressions" option to PL/pgSQL's OPEN
-         cursor FOR EXECUTE.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         PL/pgSQL is installed by default.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Remove PL/pgSQL's RENAME declaration, which has
-          bizarre and mostly nonfunctional behavior, and is so little
-          used that no one has been interested in fixing it. To ensure
-          that possible uses are covered, remove the ALIAS declaration's
-          arbitrary restriction that only $n identifiers can be
-          aliased.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         The PL/pgSQL parser and scanner were reworked to behave much more
-          sanely:
-        </para>
-        <para>
-         A variable reference will only be recognized where it can validly
-          go, ie, a place where a column value or parameter would be legal,
-          instead of the former behavior that would replace any textual match
-          including table names and column aliases (leading to syntax errors
-          later on).
-        </para>
-        <para>
-         When a name could refer either to a PL/pgSQL variable or a
-          table column, PL/pgSQL formerly always assumed the variable was
-          meant, sometimes resulting in surprising behavior.  Now, PL/pgSQL
-          can assume the variable is meant, or assume the table column is
-          meant, or throw an error in ambiguous cases.  For safety the default
-          is to throw error.  To configure this see <link
-          linkend="plpgsql-var-subst">the PL/pgSQL documentation</link>.
-        </para>
-        <para>
-         Error reporting is much nicer: it no longer shows edited
-          versions of statements that look significantly different from what
-          you wrote.
-        </para>
-        <para>
-         Note that this change affects the set of keywords that are
-          reserved in PL/pgSQL (i.e., cannot be the name of a PL/pgSQL
-          variable).  Now, all keywords shown as reserved in <link
-          linkend="sql-keywords-appendix">Appendix C</link> are reserved for
-          PL/pgSQL purposes as well.  However, many PL/pgSQL-only keywords
-          that were formerly treated as reserved no longer are.  As in regular
-          SQL, you can double-quote a variable's name if you want to use a
-          name that conflicts with a reserved keyword.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         PL/pgSQL IN parameters now accept value assignments.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
-         MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            PL/pgSQL functions can now better cope with row types
-            containing dropped columns.
-          </para>
-        </listitem>
-      </itemizedlist>
-      </sect4>
-
-      <sect4>
-       <title>PL/Perl</title>
-       <itemizedlist>
-        <listitem>
-         <para>
-          <emphasis>Add utility functions to PL/Perl: quote_literal,
-          quote_nullable, quote_ident, encode_bytea, decode_bytea,
-          looks_like_number, encode_array_literal,
-          encode_array_constructor.</emphasis>
-         </para>
-        </listitem>
-        <listitem>
-         <para>
-          <emphasis>Add plperl.on_plperl_init, plperl.on_plperlu_init,
-          and plperl.on_init settings for startup code.</emphasis>
-         </para>
-        </listitem>
-        <listitem>
-         <para>
-          <emphasis>Allow (ineffective) use of "require".  If the
-          required module is not already loaded then it dies.  So "use
-          strict;" now works in PL/Perl.</emphasis>
-         </para>
-        </listitem>
-        <listitem>
-         <para>
-          <emphasis>Pre-load the feature module if Perl &gt;= 5.10.
-          So "use feature :5.10;" now works in PL/Perl.</emphasis>
-         </para>
-        </listitem>
-        <listitem>
-         <para>
-          <emphasis>Stored procedure subs are now given names.  The
-          names are not visible in ordinary use, but they make tools
-          like Devel::NYTProf and Devel::Cover much more
-          useful.</emphasis>
-         </para>
-        </listitem>
-        <listitem>
-         <para>
-          <emphasis>Handle END blocks in PL/Perl.</emphasis>
-         </para>
-        </listitem>
-       <listitem>
-        <para>
-         <emphasis>Clean up package namespace use and use of Safe.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Change log level of Perl warnings from NOTICE to
-         WARNING.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add support for anonymous code blocks (DO blocks) to PL/Perl.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Improve error context reporting in PL/Perl, for
-         easier debugging.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Convert a Perl array to a PostgreSQL array when returned by
-         set-returning functions as well as non-SRFs.
-        </para>
-       </listitem>
-       </itemizedlist>
-      </sect4>
-
-      <sect4>
-       <title>PL/Python</title>
-       <itemizedlist>
-        <listitem>
-         <para>
-          <emphasis>Improved printing of Python exceptions in
-          PL/Python.</emphasis>
-         </para>
-        </listitem>
-        <listitem>
-         <para>
-          <emphasis>Add PL/Python DO handler.</emphasis>
-         </para>
-        </listitem>
-       <listitem>
-        <para>
-         Support arrays as parameters and return values of PL/Python
-          functions.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add Python 3 support to PL/Python.  It behaves more or less
-          unchanged compared to Python 2, but the new language variant is
-          called plpython3u.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix/improve bytea and boolean support in PL/Python. Data type
-         conversion into and out of PL/Python previously went through
-         an intermediate string representation, which caused various
-         discrepancies especially with bytea and boolean data. This is
-         now fixed by converting the values directly.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         PL/Python now accepts Unicode objects where it previously
-         only accepted string objects (for example, as return
-         value). Unicode objects are converted to the PostgreSQL
-         server encoding as necessary.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            Improve error context reporting in PL/Python, for easier
-            debugging.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Greatly expand the regression testing for PL/Python.
-          </para>
-        </listitem>
-      </itemizedlist>
-      </sect4>
-    </sect3>
-
-    <sect3>
-      <title>Additional Supplied Modules</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add query text to auto_explain output.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add \shell and \setshell meta commands to pgbench.
-        </para>
-        <para>
-         \shell runs an external shell command. \setshell
-          does the same and assigns the result to a variable.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Multiple improvements in contrib/hstore, including
-         raising limits on keys and values, conversions to and from
-         records and arrays, and support for GROUP BY and DISTINCT.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            pgbench is now multi-threaded, allowing it to use multiple CPU's
-            for its client connections, and to do more realistic workload
-            testing.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Added the ability to retrieve asynchronous notifications using
-            dblink, via the addition of the function dblink_get_notify().
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Added matchorig, matchsynonyms, and keepsynonyms options to
-            contrib/dict_xsyn.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Added contrib/unaccent.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>ECPG</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add sqlda support in both native and compatibility
-         mode.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Fix SQL3 type return value: For non-SQL3 types ECPG
-         used to return -OID. This will break if there are enough OIDs
-         to fill the namespace.  Therefore we play it safe and return
-         0 if there is no OID->SQL3 type mapping available.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Make char the default sqlda type.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add DESCRIBE [OUTPUT] statement.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add out-of-scope cursor support to native mode.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Refactor ECPG grammar so that it uses the core grammar's
-          unreserved_keyword list, minus a few specific words that have to be
-          treated specially. This de-reserves a number of words in ECPG.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Added dynamic cursor names to ECPG.
-        </para>
-       </listitem>
+
       <listitem>
        <para>
-        Add ECPG function that returns the current transaction status.
+        Allow dynamic <application>ecpg</> cursor names (Boszormenyi Zoltan)
        </para>
       </listitem>
+
       <listitem>
        <para>
-        Make ECPG more robust against applications freeing strings.
+        Allow <application>ecpg</> to use noise words <literal>FROM</> and
+        <literal>IN</> in <command>FETCH</> and <command>MOVE</> (Zoltan
+        Boszormenyi)
        </para>
       </listitem>
-        <listitem>
-          <para>
-            ECPG now includes a STRING datatype for Informix compatibility
-            mode.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Ports</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Add basic build support for Visual Studio 2008,
-         without resorting to generating the build files for 2005 and
-         then converting them.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Added support for 64-bit Windows platforms.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Disable triggering failover with a signal in pg_standby on Windows.
-          It never really worked before anyway.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Change the WIN32 API version to be 5.01 (Windows XP), to
-         bring in the proper IPv6 headers in newer SDKs.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Write to the Windows eventlog in UTF-16, converting the
-         message encoding as necessary.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Replace use of the long-deprecated Bonjour API
-         DNSServiceRegistrationCreate with the not-so-deprecated
-         DNSServiceRegister. The new code will fail on Mac OS X
-         releases before 10.3.
-        </para>
-       </listitem>
-       <listitem>
-          <para>
-            Reserve the shared memory region during backend startup on Windows,
-            so that memory allocated by starting third party DLLs doesn't end
-            up conflicting with it. Hopefully this solves the long-time issue
-            with &quot;could not reattach to shared memory&quot; errors on
-            Win32.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Add s_lock support for SuperH architecture (not well tested).
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Source Code, Build Options</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Improve PGXS makefile system to allow the module's
-         makefile to specify where to install DATA and DOCS files.
-         This is mainly intended to allow versioned installation, eg,
-         install into contrib/fooM.N/ rather than directly into
-         contrib/.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Get rid of the need for manual maintenance of the
-         initial contents of pg_attribute, by having genbki.pl derive
-         the information from the various catalog header files.  This
-         greatly simplifies modification of the "bootstrapped"
-         catalogs.  This patch finally kills genbki.sh and
-         Gen_fmgrtab.sh; we now rely entirely on Perl scripts for
-         those build steps.  To avoid creating a Perl build dependency
-         where there was not one before, they will be built and
-         shipped in tarballs.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Move the default configuration for the MSVC build
-         system to config_default.pl, and allow using config.pl to
-         override the defaults.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Make configure check the version of Perl we're
-         building with, and reject versions &lt; 5.8.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Remove all support for working around on systems
-         that don't provide a working 64-bit integer type.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <emphasis>Add new make targets "world", "install-world" and
-         "installcheck-world" to build, install and check just about
-         everything.  In addition to everything built installed and
-         tested by all, install and installcheck targets, these build
-         HTML documentation, build and test contrib, and test
-         procedural languages and ECPG.</emphasis>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         configure --enable-thread-safety is now the default (but can still
-          be turned off).
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Fix inclusions of readline/editline header files so that we
-         only attempt to #include the version of history.h that is in
-         the same directory as the readline.h we are using. This
-         avoids problems in some scenarios where both readline and
-         editline are installed.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Derived files that are shipped in the distribution used to be
-         built in the source directory even for out-of-tree
-         builds. They are now built in the build tree. This
-         should be more convenient for certain developers' workflows.
-        </para>
-       </listitem>
-        <listitem>
-          <para>
-            Functions which conflict with C++ reserved words have been renamed,
-            making backend header files now safe to use with C++ libraries.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Add man pages for SPI functions.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Upgrade to Autoconf 2.63 (not relevant to users of distribution
-            tarballs).
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Minimum version of Flex is now 2.5.31, to support reentrant
-            scanners (not relevant to users of distribution tarballs).
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Documentation build rules have been improved. The generated
-            documentation files are now shipped &quot;loose&quot;, not in
-            sub-tarballs.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            New toolchain to generate man pages. From now on, the man pages
-            will be current in every release.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Code-coverage testing support now extends to the entire source
-            tree, not only src/backend/.
-          </para>
-        </listitem>
-        <listitem>
-          <para>
-            Make the core scanner re-entrant, along with additional fixes that
-            will let it be used directly by PL/pgSQL.
-          </para>
-        </listitem>
-      </itemizedlist>
-    </sect3>
-  </sect2>
+
+     </itemizedlist>
+
+    </sect5>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Build Options</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Enable client thread safety by default (Bruce Momjian)
+     </para>
+
+     <para>
+      Thread-safe builds can be disabled with <link
+      linkend="configure"><application>configure</></link>
+      <option>--disable-thread-safety</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add a compile-time option to allow the Linux out-of-memory killer
+      to kill backends (Alex Hunsaker, Tom Lane)
+     </para>
+
+     <para>
+      Now that <filename>/proc/self/oom_adj</> allows disabling
+      of the <productname>Linux</> out-of-memory (<acronym>OOM</>)
+      killer for the postmaster and its children, the new
+      compile-time option <link
+      linkend="linux-memory-overcommit"><literal>-DLINUX_OOM_ADJ=0</></link>
+      allows the killer to be enabled for <application>postmaster</>
+      children. <application>pg_config</> shows if this flag
+      was used during compilation.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Use <productname>DocBook</> <acronym>XSL</> stylesheets for man page
+      building (Peter Eisentraut)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Makefiles</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       New <filename>Makefile</> targets <link
+       linkend="build"><literal>world</></link>,
+       <literal>install-world</>, and <literal>installcheck-world</>
+       (Andrew Dunstan)
+      </para>
+
+      <para>
+       These are similar to the existing <literal>all</>, <literal>install</>,
+       and <literal>installcheck</> targets, but they build <acronym>HTML</>
+       documentation, build and test <filename>/contrib</>, and test
+       server-side languages and <application>ecpg</>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add data and documentation location control to <link
+       linkend="xfunc-c-pgxs"><acronym>PGXS</></link> Makefiles
+       (Mark Cave-Ayland)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Restructure the <acronym>HTML</> documentation build
+       <filename>Makefile</> rules (Peter Eisentraut)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>New Requirements</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Require <application>Autoconf</> 2.63 for building from source (Peter Eisentraut)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require <application>Flex</> 2.5.31 or later to build from source
+       (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require <application>Perl</> version 5.8 or greater to build the server
+       from a <acronym>CVS</> copy (John Naylor, Andrew)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Windows</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for compiling on <link
+       linkend="install-win32-full">64-bit
+       <productname>Windows</></link> and running in 64-bit
+       mode (Tsutomu Yamada, Magnus)
+      </para>
+
+      <para>
+       This allows for large shared memory sizes on <productname>Windows</>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow server builds using <link
+       linkend="install-win32-full"><productname>Visual Studio
+       2008</></link> (Magnus Hagander)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow multi-processor compilation using <productname>Microsoft Visual
+       C</> (Magnus Hagander)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Source Code</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Distribute documentation in a proper directory tree, rather than
+      as tar archive files inside the main distribution tarball (Peter Eisentraut)
+     </para>
+
+     <para>
+      For example, the <acronym>HTML</> documentation is now in
+      <filename>doc/src/sgml/html</>; the manual pages are packaged
+      similarly.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Enable the server lexer to be reentrant (Tom Lane)
+     </para>
+
+     <para>
+      This was needed for use of the lexer by PL/pgSQL.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve speed of memory allocation (Tom Lane, Greg Stark)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add system columns to better document the use of indexes for constraint
+      enforcement (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow multiple actions to be communicated using the same operating
+      system signal (Fujii Masao)
+     </para>
+
+     <para>
+      This allows improved backend communication as new features are
+      added.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve source code test coverage, including /contrib, PL/Python,
+      and PL/Perl (Peter Eisentraut, Andrew Dustan)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove the use of flat files for system table bootstrapping
+      (Tom Lane, Alvaro Herrera)
+     </para>
+
+     <para>
+      This also improves performance when using millions of users and
+      databases.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve the ability to translate <application>psql</> strings
+      (Peter Eisentraut)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Reduce the length of some file names so file paths are less than
+      100 characters (Tom Lane)
+     </para>
+
+     <para>
+      Some decompression programs have problems with long file names.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Tighten input requirements for <type>int2</> vector input (Caleb
+      Welton)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add a new <link
+      linkend="errcodes-table"><literal>ERRCODE_INVALID_PASSWORD</></link>
+      <literal>SQLSTATE</> error code (Bruce Momjian)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Properly remove the few remaining personal source code copyright
+      entries (Bruce Momjian)
+     </para>
+
+     <para>
+      The personal copyright notices were insignificant but the community
+      occasionally had to answer questions about them.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+   <sect4>
+    <title>Feature Support</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Use a more modern <acronym>API</> for <application>Bonjour</> (Tom Lane)
+      </para>
+
+      <para>
+       Bonjour now requires <productname>OS X</> 10.3 or later.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add processor test-and-test lock support for the <productname>SuperH</>
+       architecture (Nobuhiro Iwamatsu)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow non-<application>GCC</> compilers to use inline functions if
+       they support them (Kurt Harriman)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Remove support for platforms that don't have a working 64-bit
+       integer data types (Tom Lane)
+      </para>
+
+      <para>
+       It is believed all supported platforms have working 64-bit integer
+       data types.
+      </para>
+     </listitem>
+
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Server Programming</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Allow use of <productname>C++</> functions in backend code (Kurt
+       Harriman, Peter Eisentraut)
+      </para>
+
+      <para>
+       This removes keyword conflicts that previously made <productname>C++</>
+       usage difficult in backend code. <literal>extern "C" { }</> might still
+       be necessary.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add <link
+       linkend="xaggr"><function>AggCheckCallContext()</></link>
+       for use in detecting if a <productname>C</> function is
+       being called as an aggregate (Hitoshi Harada)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Require <function>fastgetattr()</> and <function>heap_getattr()</>
+       backend macros to use a non-NULL fourth argument (Robert Haas)
+       KEEP?
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Server Hooks</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add parser hooks to access column and parameter references in
+       queries (Tom Lane)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add a hook so loadable modules can control utility commands (Itagaki
+       Takahiro)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Allow the calling of parser hooks from <acronym>SPI</> and cached
+       plans (Tom Lane)
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+   <sect4>
+    <title>Binary Upgrade Support</title>
+    <itemizedlist>
+
+     <listitem>
+      <para>
+       Add support for preservation of all <link
+       linkend="catalog-pg-class"><structname>relfilenodes</></link>,
+       for use during binary upgrades (Bruce Momjian)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Add support for binary upgrades to preserve <structname>pg_type</>
+       and <structname>pg_enum</> <type>oids</> (Bruce Momjian)
+      </para>
+
+      <para>
+       This is needed to allow binary upgrades of user-defined composite
+       types, arrays, and enums (enumerated types).
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Move tablespace data directories into their own
+       <productname>PostgreSQL</> version-specific subdirectory (Bruce Momjian)
+      </para>
+
+      <para>
+       This simplifies binary upgrades.
+      </para>
+     </listitem>
+
+    </itemizedlist>
+
+   </sect4>
+
+  </sect3>
+
+  <sect3>
+   <title>Contrib</title>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Add multi-threaded option (<option>-j</>) to <link
+      linkend="pgbench"><filename>/contrib/pgbench</></link>
+      (Itagaki Takahiro)
+     </para>
+
+     <para>
+      This allows multiple <acronym>CPU</>s to be used for pgbench tests.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <command>\shell</> and <command>\setshell</> meta
+      commands to <link
+      linkend="pgbench"><filename>/contrib/pgbench</></link>
+      (Michael Paquier)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      New features for <link
+      linkend="dict-xsyn"><filename>/contrib/dict_xsyn</></link>
+      (Sergey Karpov)
+     </para>
+
+     <para>
+      The new options are <literal>matchorig</>, <literal>matchsynonyms</>,
+      and <literal>keepsynonyms</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add full text dictionary <link
+      linkend="unaccent"><filename>/contrib/unaccent</></link>
+      (Teodor Sigaev)
+     </para>
+
+     <para>
+      This filter dictionary removes accents from tokens.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link
+      linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</></link>
+      to <filename>/contrib/dblink</> (Marcus Kempe)
+     </para>
+
+     <para>
+      This allows async notifications in <productname>dblink</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Greatly increase <link
+      linkend="hstore"><filename>/contrib/hstore</></link>'s
+      length limit and add btree and hash abilities so <literal>GROUP
+      BY</> and <literal>DISTINCT</> operations are possible
+      (Andrew Gierth)
+     </para>
+
+     <para>
+      New functions and operators were also added.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <link
+      linkend="passwordcheck"><filename>/contrib/passwordcheck</></link>
+      which can check the strength of assigned passwords (Laurenz
+      Albe)
+     </para>
+
+     <para>
+      The source code of this module should be modified to implement
+      site-specific password policies.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add query text to <link
+      linkend="auto-explain"><filename>/contrib/auto_explain</></link>
+      output (Andrew Dunstan)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add buffer access counters to <link
+      linkend="pgstatstatements"><filename>/contrib/pg_stat_statements</></link>
+      (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update <link
+      linkend="server-start"><filename>/contrib/start-scripts/linux</></link>
+      to use <filename>/proc/self/oom_adj</> to disable the
+      <link linkend="linux-memory-overcommit"><productname>Linux</>
+      out-of-memory</link> (<acronym>OOM</>) killer (Alex
+      Hunsaker, Tom Lane)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect3>
+ </sect2>
 </sect1>
diff --git a/doc/src/sgml/release-alpha.sgml b/doc/src/sgml/release-alpha.sgml
new file mode 100644 (file)
index 0000000..3eb9f6b
--- /dev/null
@@ -0,0 +1,1486 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-alpha.sgml,v 2.1 2010/04/29 20:54:28 momjian Exp $ -->
+
+<sect1 id="release-9-0-alpha">
+  <title>Release 9.0alpha4</title>
+  <sect2>
+    <title>Overview</title>
+    <para>
+      PostgreSQL alpha releases are snapshots of development code. They
+      are intended to preview and test upcoming features and to provide
+      the possibility for early feedback. They should not be used in
+      production installations or active development projects. While the
+      PostgreSQL code is continuously subject to a number of automated
+      and manual tests, alpha releases might have serious bugs. Also
+      features may be changed incompatibly or removed at any time during
+      the development cycle.
+    </para>
+    <para>
+      The development cycle of a PostgreSQL major release alternates
+      between periods of development and periods of integration work,
+      called commit fests, normally one month each. Alpha releases are
+      planned to be produced at the end of every commit fest, thus every
+      two months. Since the first commit fest starts within a month from
+      the beginning of development altogether, early alpha releases are
+      not indicative of the likely feature set of the final release.
+    </para>
+    <para>
+      The release notes below highlight user visible changes and new
+      features. There are normally numerous bug fixes and performance
+      improvements in every new snapshot of PostgreSQL, and it would be
+      too bulky to attempt to list them all. Note that many bug fixes are
+      also backported to stable releases of PostgreSQL, and you should be
+      using those if you are looking for bug-fix-only upgrades for your
+      current installations.
+    </para>
+    <para>
+      The release notes are cumulative over all alpha releases.  Items
+      that are new in the latest alpha release
+      are <emphasis>emphasized</emphasis>.
+    </para>
+  </sect2>
+  <sect2>
+    <title>Migration</title>
+    <para>
+      To upgrade from any release to an alpha release or from an alpha
+      release to any other release will most likely require a
+      dump/restore upgrade procedure. It may happen that this is not
+      necessary in particular cases, but that is not verified beforehand.
+      (The server will warn you in any case when a dump/restore is
+      necessary if you attempt to use it with an old data directory.)
+      Note, however, that the dump/restore upgrade procedure is expected
+      to work for alpha releases, and problems in this area should be
+      reported.
+    </para>
+  </sect2>
+  <sect2>
+    <title>Testing</title>
+    <para>
+      The primary reason we release alphas is to get users to test new
+      features as early as possible.  If you are interested in helping
+      with organized testing, please see
+      <ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
+      testing information page</ulink>.
+      </para>
+  </sect2>
+  <sect2>
+    <title>Changes</title>
+    <sect3>
+      <title>SQL Features</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Disallow comments on columns of relation types
+         other than tables, views, and composite types, that is,
+         sequences and TOAST tables.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Adjust naming of indexes and their columns. Index
+         expression columns are now named after the FigureColname
+         result for their expressions, rather than always being
+         "pg_expression_N".  Digits are appended to this name if
+         needed to make the column name unique within the index.
+         Default names for indexes and associated constraints now
+         include the column names of all their columns, not only the
+         first one as in previous practice.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Allow the index name to be omitted in CREATE INDEX,
+         causing the system to choose an index name the same as it
+         would do for an unnamed index constraint.  A necessary
+         side-effect is to promote the word CONCURRENTLY to a more
+         reserved status; it can't be a table/column/index name
+         anymore unless quoted.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Improve the handling of SET CONSTRAINTS commands by
+         having them search pg_constraint before searching pg_trigger.
+         This allows saner handling of corner cases.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Typed table feature; this adds the CREATE TABLE
+         name OF type command.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Tighten integrity checks on ALTER TABLE ... RENAME
+         COLUMN in inheritance hierarchies.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Replace the pg_listener-based LISTEN/NOTIFY
+         mechanism with an in-memory queue.  In addition, add support
+         for a "payload" string to be passed along with each notify
+         event.</emphasis>
+        </para>
+        <para>
+         <emphasis>This implementation should be significantly more
+         efficient than the old one, and is also more compatible with
+         Hot Standby usage.  There is not yet any facility for HS
+         slaves to receive notifications generated on the master,
+         although such a thing is possible in future.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Have SELECT and CREATE TABLE AS queries return a
+         row count.  While this is invisible in psql, other
+         interfaces, like libpq, make this value visible.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Extend the set of frame options supported for
+         window functions.  This allows the frame to start from
+         CURRENT ROW (in either RANGE or ROWS mode), and it also adds
+         support for ROWS n PRECEDING and ROWS n FOLLOWING start and
+         end points.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add DO statement to support execution of procedural language
+         code without having to create a function for it.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support use of function argument names to identify which
+         actual arguments match which function parameters. The syntax
+         uses AS, for example funcname(value AS arg1, anothervalue AS
+         arg2).
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove previously deprecated configuration
+         parameter add_missing_from. The system now always behaves as
+         though add_missing_from were off.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Performance and behavioral improvements in UPDATE,
+         DELETE, and SELECT FOR UPDATE/SHARE queries with joins.
+         Fix various corner cases that could have resulted in duplicated output
+         rows. Set-returning functions are now prohibited in the
+         target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
+         propagate into a WITH query anymore.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix SELECT FOR UPDATE/SHARE in conjunction with LIMIT.
+          Previously, it could return fewer rows than the limit specified.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
+          to be checked to determine whether the trigger should be fired.
+        </para>
+        <para>
+         For BEFORE triggers this is mostly a matter of spec compliance; but
+          for AFTER triggers it can provide a noticeable performance
+          improvement, since queuing of a deferred trigger event and
+          re-fetching of the row(s) at end of statement can be
+          short-circuited if the trigger does not need to be fired.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add exclusion constraints, which generalize the concept of
+          uniqueness to support any indexable commutative operator, not just
+          equality. Two rows violate the exclusion constraint if
+          &quot;row1.col OP row2.col&quot; is TRUE for each of the columns in
+          the constraint.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support ORDER BY within aggregate function calls, at long last
+          providing a non-kluge method for controlling the order in which
+          values are fed to an aggregate function. At the same time eliminate
+          the old implementation restriction that DISTINCT was only supported
+          for single-argument aggregates.
+        </para>
+        <para>
+         Behavioral change: formerly, agg(DISTINCT x) dropped null values of
+          x unconditionally. Now, it does so only if the aggregate's transition
+          function is strict; otherwise nulls are treated as DISTINCT
+          normally would, i.e., you get one copy.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add SQL-compliant triggers on columns, which fire only if
+         certain columns are named in the UPDATE's SET list.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING
+         ALL shortcut to allow users to make an exact copy of a table including
+         all options and features.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Define a new, more extensible syntax for COPY options
+         in order to support additional COPY options in the future.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Modify the definition of window-function PARTITION
+         BY and ORDER BY clauses so that their elements are always
+         taken as simple expressions over the query's input
+         columns. This fixes a bug.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix bug with nested WITH RECURSIVE statements.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add surrogate pair support for U&amp; string and identifier
+         syntax.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add Unicode escapes in E'...' strings.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            DROP COLUMN and DROP CONSTRAINT now support an IF EXISTS clause so
+            that users can avoid fatal errors when running repeatable scripts.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            UNIQUE constraints can now be DEFERRABLE. This is primarily useful
+            for incremental updates of numerical keys, e.g. &quot;ID = ID +
+            1&quot;
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Allow parentheses around the query expression that follows a WITH
+            clause.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            INFORMATION_SCHEMA, a catalog of standard views of database
+            objects, has been updated to the SQL:2008 standard.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Change character_octet_length to more sensible values in
+            INFORMATION_SCHEMA.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Allow * as parameter for FORCE QUOTE for COPY CSV, so that all
+            columns will be quoted.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Performance</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Support "x IS NOT NULL" clauses as index-scan
+         conditions.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>When estimating the selectivity of an inequality
+         "column &gt; constant" or "column &lt; constant", and the
+         comparison value is in the first or last histogram bin or
+         outside the histogram entirely, try to fetch the actual
+         column min or max value using an index scan (if there is an
+         index on the column).  If successful, replace the lower or
+         upper histogram bound with that value before carrying on with
+         the estimate.  This limits the estimation error caused by
+         moving min/max values when the comparison value is close to
+         the min or max.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Generic implementation of red-black binary tree.
+         For now, only GIN uses it during index creation.  Using
+         self-balanced tree greatly speeds up index creation in corner
+         cases with preordered data.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow rewriting forms of ALTER TABLE to skip WAL
+          logging.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Speed up INFORMATION_SCHEMA's privilege views.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Make TRUNCATE do truncate-in-place when processing
+         a relation that was created or previously truncated in the
+         current (sub)transaction.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Implement &quot;join removal&quot; for cases where the inner side
+          of a left join is unique and is not referenced above the join.  This should
+          speed up many ORM-generated and reporting tool queries.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove the use of the flat files pg_auth and
+         pg_database in order to improve performance. (Warning: pgbouncer
+         and possibly other tools currently suggest referring to the pg_auth
+         file for its user database. Such schemes will no longer work.)
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            EXPLAIN allows output of plans in XML, JSON, or YAML format for automated
+            processing of explain plans by analysis or visualization tools.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            EXPLAIN now supports the use of generic options in EXPLAIN ( option
+            value, ... ) format, which permits the creation of additional
+            EXPLAIN options.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DISTINCT allows
+            users to manually tweak the number of distinct values estimated for
+            a column, to fix cases where ANALYZE estimates are incorrect.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Make GEQO's planning deterministic by having it start from a
+            predictable random number seed each time.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Rewrite GEQO's gimme_tree function so that it always finds a legal
+            join sequence. Previously, it could have failed to produce a plan
+            in some cases.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Tweak TOAST code so that columns marked with MAIN storage strategy
+            are not forced out-of-line unless that is necessary to make the row
+            fit on a page. Previously, they were forced out-of-line if needed
+            to get the row down to the default target size (1/4th page).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Simplify the forms foo &lt;&gt; true and foo &lt;&gt; false to foo
+            = false and foo = true during query optimization.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Avoid per-send() system calls to manage SIGPIPE in libpq, if the
+            platform provides either sockopt(SO_NOSIGPIPE) or the MSG_NOSIGNAL
+            flag to send().
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Administration and Monitoring</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add the ability to store inheritance-tree
+         statistics in pg_statistic, and teach ANALYZE to compute such
+         stats for tables that have subclasses.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Revise pgstat's tracking of tuple changes to
+         improve the reliability of decisions about when to
+         auto-analyze.  The previous code depended on n_live_tuples +
+         n_dead_tuples - last_anl_tuples, where all three of these
+         numbers could be bad estimates from ANALYZE itself.  Even
+         worse, in the presence of a steady flow of HOT updates and
+         matching HOT-tuple reclamations, auto-analyze might never
+         trigger at all, even if all three numbers are exactly right,
+         because n_dead_tuples could hold steady.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Support ALTER TABLESPACE name SET/RESET (
+         tablespace_options ), currently supporting seq_page_cost and
+         random_page_cost as parameters.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>New faster implementation of VACUUM FULL.  The old
+         idiom of using CLUSTER instead of VACUUM FULL for speed is
+         now obsolete.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add buffer access counters to
+         pg_stat_statements.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add some simple support and documentation for using
+         process-specific oom_adj settings to prevent the postmaster
+         from being OOM-killed on Linux systems.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Place tablespace directories in their own
+         subdirectory so pg_migrator can upgrade clusters without
+         renaming the tablespace directories.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Introduce Streaming Replication.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add pg_table_size() and pg_indexes_size() to
+         provide more user-friendly wrappers around the
+         pg_relation_size() function.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add pg_stat_reset_shared('bgwriter') to reset the
+         cluster-wide shared statistics of the bgwriter.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Replace ALTER TABLE ... SET STATISTICS DISTINCT
+         with a more general mechanism.  Attributes can now have
+         options, just as relations and tablespaces do, and the
+         reloptions code is used to parse, validate, and store
+         them.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Fix longstanding gripe that we check for
+         0000000001.history at start of archive recovery, even when we
+         know it is never present.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Make standby server continuously retry restoring
+         the next WAL segment with restore_command, if the connection
+         to the primary server is lost.  This ensures that the standby
+         can recover automatically, if the connection is lost for a
+         long time and standby falls behind so much that the required
+         WAL segments have been archived and deleted in the
+         master.</emphasis>
+        </para>
+        <para>
+         <emphasis>This also makes standby_mode useful without
+         streaming replication; the server will keep retrying
+         restore_command every few seconds until the trigger file is
+         found.  That's the same basic functionality pg_standby
+         offers, but without the bells and whistles.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add functions to reset the statistics counter for a
+         single table/index or a single function.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Augment EXPLAIN output with more details on Hash
+         nodes.</emphasis>
+         </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Reindexing shared system catalogs is now fully
+         transactional and crash-safe.</emphasis>
+         </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow read-only connections during recovery, also
+         known as Hot Standby.  This provides a built-in master-slave
+         replication solution.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Provide a parenthesized-options syntax for VACUUM, analogous to
+          that recently adopted for EXPLAIN. This will allow additional
+          options to be implemented in future without having to make them
+          fully-reserved keywords. The old syntax remains available for
+          existing options, however.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add support for an application_name parameter, which is displayed
+          in pg_stat_activity and recorded in log entries.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix longstanding problems in VACUUM caused by untimely
+          interruptions.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add YAML to list of EXPLAIN formats.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a hook to let loadable modules get control at ProcessUtility
+          execution, and use it to extend contrib/pg_stat_statements to track
+          utility commands.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a Boolean server configuration parameter
+         &quot;bonjour&quot; to control whether a Bonjour-enabled
+         build actually attempts to advertise itself via Bonjour.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         When reloading postgresql.conf, log what parameters actually
+         changed.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Make it possibly to specify server configuration parameters
+         per user-database combination. Add a \drds command to psql to
+         display the settings.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow the collection of statistics on sequences.
+        </para>
+       </listitem>
+      <listitem>
+       <para>
+        Increase the maximum value of extra_float_digits to
+        3, and have pg_dump use that value when the backend is new
+        enough to allow it, because it is possible to need 3 extra
+        digits for float4 values (but not for float8 values).
+       </para>
+      </listitem>
+        <listitem>
+          <para>
+            Add the ability to include the SQLSTATE error code of any error
+            messages in the PostgreSQL activity log with the new
+            log_line_prefix placeholder %e.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Show the exact value being complained of in
+            unique-constraint-violation error messages, including unique-index
+            build failures.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Security</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add support for RADIUS authentication.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         When querying a table with child tables, do not check permissions
+          on the child tables, only on the parent table. The old behavior was
+          found to be useless and confusing in virtually all cases, and also
+          contrary to the SQL standard.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add a hook to CREATE/ALTER ROLE to allow an external module to
+          check the strength of database passwords, and create a sample
+          implementation of such a hook as a new contrib module
+          &quot;passwordcheck&quot;.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add large object access control.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow LDAP authentication to operate in search+bind
+         mode, meaning it does a search for the user in the directory
+         first, and then binds with the DN found for this user.  This
+         allows for LDAP logins in scenarios where the DN of the user
+         cannot be determined simply by prefix and suffix, such as the
+         case where different users are located in different
+         containers.  The old way of authentication can be
+         significantly faster, so it's kept as an option.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add ALTER DEFAULT PRIVILEGES command, which allows
+         users to adjust the privileges that will be applied to
+         subsequently-created objects.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA.
+         This makes it easier to manage permissions on database objects.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support &quot;samehost&quot; and &quot;samenet&quot; specifications
+         in pg_hba.conf.  This allows users with dynamic server addresses to run
+         PostgreSQL without frequently modifying pg_hba.conf.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            New has_sequence_privilege() functions allow you to check sequence
+            privileges for a given ROLE.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Built-In Functions</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Fix 3-parameter form of bit substring() to throw
+         error for negative length, as required by SQL
+         standard.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add get_bit/set_bit functions for bit strings,
+         paralleling those for bytea, and implement OVERLAY() for bit
+         strings and bytea.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add string_agg aggregate functions.  The
+         one-argument version concatenates the input values into a
+         string.  The two-argument version also does the same thing,
+         but inserts delimiters between elements.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Honor to_char() "FM" specification in YYY, YY, and
+         Y; it was already honored by YYYY.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove configuration parameter regex_flavor. It is now always
+          &quot;advanced&quot;.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Teach the regular expression functions to do case-insensitive
+          matching and locale-dependent character classification properly
+          when the database encoding is UTF8. This previously only worked
+          correctly for single-byte encodings.  It is still broken for other
+          multibyte encodings.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Support POSIX-compatible interpretation of ? as well as {m,n}
+         and related constructs in SIMILAR TO, per SQL:2008.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            The to_char() formatting functions now supports EEEE (scientific
+            notation).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Use floor() not rint() when reducing precision of fractional
+            seconds in timestamp_trunc, timestamptz_trunc, and interval_trunc()
+            for the float-datetime case. This improves accuracy of time
+            calculations.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Fix ancient bug in handling of to_char() modifier 'TH', when used
+            with HH.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Data Types</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Allow enums to be created with zero labels, for use
+         during binary upgrade.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         When doing &quot;ARRAY[...]::domain&quot;, where domain is a domain
+          over an array type, we need to check domain constraints. Regression
+          introduced in 8.4.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix integer-to-bit-string conversions to handle the first
+          fractional byte correctly when the output bit width is wider than
+          the given integer by something other than a multiple of 8 bits.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix encoding handling in binary input function of xml type.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Tighten binary receive functions so that they reject values
+         that the text input functions don't accept either.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            New hex-string input and output format options for type bytea. Hex
+            output format is enabled by default, which is an incompatible
+            change. See the new bytea_output parameter if you need to restore
+            compatibility.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Adds prefix support for text search synonym dictionary, allowing
+            creation of synonyms on partial matches.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Server Tools</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         initdb now selects the encoding SQL_ASCII when the locale specifies
+          US-ASCII. This case previously failed.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add init[db] option to pg_ctl.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         It is now reasonably safe to use pg_ctl to start
+         the postmaster from a boot-time script.
+        </para>
+       </listitem>
+       <listitem>
+          <para>
+            pg_dump/pg_restore --clean now drops large objects.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Modify parallel pg_restore ordering logic to avoid a potential
+            O(N^2) slowdown for some complex databases.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>libpq</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add user-specific .pg_service.conf file.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add new escaping functions PQescapeLiteral and
+         PQescapeIdentifier.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Introduce two new libpq connection functions,
+         PQconnectdbParams and PQconnectStartParams, which are
+         analogous to PQconnectdb and PQconnectStart respectively, but
+         accept two NULL-terminated arrays, keywords and values,
+         rather than conninfo strings. This avoids the need to build
+         the conninfo string in cases where it might be inconvenient
+         to do so.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Throw error when a specified connection service name is not
+          found in pg_service.conf, instead of ignoring it.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Make libpq reject non-numeric and out-of-range port numbers with a
+         suitable error message.
+        </para>
+       </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>psql</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Allow psql variables to be interpolated with
+         literal or identifier escaping.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         In psql, show view definition only with \d+, not with \d.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         In psql, ignore UTF-8-encoded Unicode byte-order mark at the
+          beginning of a file if the client encoding is UTF-8.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Improve psql's tabular display of wrapped-around data by inserting
+          markers in the formerly-always-blank columns just to left and right
+          of the data. &quot;pset linestyle old-ascii&quot; is added to make
+          the previous behavior available if anyone really wants it.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Simplify psql's new linestyle behavior to default to
+          linestyle=ascii all the time, rather than hoping we can tell
+          whether the terminal supports UTF-8 characters.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Implement significantly saner behavior when two or
+         more psql sessions overlap in their use of the history file.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add &quot;pset linestyle ascii/unicode&quot; option to psql,
+         allowing our traditional ASCII-art style of table output to
+         be upgraded to use Unicode box drawing characters if
+         desired.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            Have \d show child tables that inherit from the specified parent
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            psql now shows the index methods in \di
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>Procedural Languages</title>
+      <sect4>
+       <title>PL/pgSQL</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add "USING expressions" option to PL/pgSQL's OPEN
+         cursor FOR EXECUTE.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         PL/pgSQL is installed by default.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Remove PL/pgSQL's RENAME declaration, which has
+          bizarre and mostly nonfunctional behavior, and is so little
+          used that no one has been interested in fixing it. To ensure
+          that possible uses are covered, remove the ALIAS declaration's
+          arbitrary restriction that only $n identifiers can be
+          aliased.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         The PL/pgSQL parser and scanner were reworked to behave much more
+          sanely:
+        </para>
+        <para>
+         A variable reference will only be recognized where it can validly
+          go, ie, a place where a column value or parameter would be legal,
+          instead of the former behavior that would replace any textual match
+          including table names and column aliases (leading to syntax errors
+          later on).
+        </para>
+        <para>
+         When a name could refer either to a PL/pgSQL variable or a
+          table column, PL/pgSQL formerly always assumed the variable was
+          meant, sometimes resulting in surprising behavior.  Now, PL/pgSQL
+          can assume the variable is meant, or assume the table column is
+          meant, or throw an error in ambiguous cases.  For safety the default
+          is to throw error.  To configure this see <link
+          linkend="plpgsql-var-subst">the PL/pgSQL documentation</link>.
+        </para>
+        <para>
+         Error reporting is much nicer: it no longer shows edited
+          versions of statements that look significantly different from what
+          you wrote.
+        </para>
+        <para>
+         Note that this change affects the set of keywords that are
+          reserved in PL/pgSQL (i.e., cannot be the name of a PL/pgSQL
+          variable).  Now, all keywords shown as reserved in <link
+          linkend="sql-keywords-appendix">Appendix C</link> are reserved for
+          PL/pgSQL purposes as well.  However, many PL/pgSQL-only keywords
+          that were formerly treated as reserved no longer are.  As in regular
+          SQL, you can double-quote a variable's name if you want to use a
+          name that conflicts with a reserved keyword.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         PL/pgSQL IN parameters now accept value assignments.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
+         MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            PL/pgSQL functions can now better cope with row types
+            containing dropped columns.
+          </para>
+        </listitem>
+      </itemizedlist>
+      </sect4>
+
+      <sect4>
+       <title>PL/Perl</title>
+       <itemizedlist>
+        <listitem>
+         <para>
+          <emphasis>Add utility functions to PL/Perl: quote_literal,
+          quote_nullable, quote_ident, encode_bytea, decode_bytea,
+          looks_like_number, encode_array_literal,
+          encode_array_constructor.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Add plperl.on_plperl_init, plperl.on_plperlu_init,
+          and plperl.on_init settings for startup code.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Allow (ineffective) use of "require".  If the
+          required module is not already loaded then it dies.  So "use
+          strict;" now works in PL/Perl.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Pre-load the feature module if Perl &gt;= 5.10.
+          So "use feature :5.10;" now works in PL/Perl.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Stored procedure subs are now given names.  The
+          names are not visible in ordinary use, but they make tools
+          like Devel::NYTProf and Devel::Cover much more
+          useful.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Handle END blocks in PL/Perl.</emphasis>
+         </para>
+        </listitem>
+       <listitem>
+        <para>
+         <emphasis>Clean up package namespace use and use of Safe.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Change log level of Perl warnings from NOTICE to
+         WARNING.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add support for anonymous code blocks (DO blocks) to PL/Perl.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Improve error context reporting in PL/Perl, for
+         easier debugging.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Convert a Perl array to a PostgreSQL array when returned by
+         set-returning functions as well as non-SRFs.
+        </para>
+       </listitem>
+       </itemizedlist>
+      </sect4>
+
+      <sect4>
+       <title>PL/Python</title>
+       <itemizedlist>
+        <listitem>
+         <para>
+          <emphasis>Improved printing of Python exceptions in
+          PL/Python.</emphasis>
+         </para>
+        </listitem>
+        <listitem>
+         <para>
+          <emphasis>Add PL/Python DO handler.</emphasis>
+         </para>
+        </listitem>
+       <listitem>
+        <para>
+         Support arrays as parameters and return values of PL/Python
+          functions.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add Python 3 support to PL/Python.  It behaves more or less
+          unchanged compared to Python 2, but the new language variant is
+          called plpython3u.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix/improve bytea and boolean support in PL/Python. Data type
+         conversion into and out of PL/Python previously went through
+         an intermediate string representation, which caused various
+         discrepancies especially with bytea and boolean data. This is
+         now fixed by converting the values directly.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         PL/Python now accepts Unicode objects where it previously
+         only accepted string objects (for example, as return
+         value). Unicode objects are converted to the PostgreSQL
+         server encoding as necessary.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            Improve error context reporting in PL/Python, for easier
+            debugging.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Greatly expand the regression testing for PL/Python.
+          </para>
+        </listitem>
+      </itemizedlist>
+      </sect4>
+    </sect3>
+
+    <sect3>
+      <title>Additional Supplied Modules</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add query text to auto_explain output.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Add \shell and \setshell meta commands to pgbench.
+        </para>
+        <para>
+         \shell runs an external shell command. \setshell
+          does the same and assigns the result to a variable.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Multiple improvements in contrib/hstore, including
+         raising limits on keys and values, conversions to and from
+         records and arrays, and support for GROUP BY and DISTINCT.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            pgbench is now multi-threaded, allowing it to use multiple CPU's
+            for its client connections, and to do more realistic workload
+            testing.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added the ability to retrieve asynchronous notifications using
+            dblink, via the addition of the function dblink_get_notify().
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added matchorig, matchsynonyms, and keepsynonyms options to
+            contrib/dict_xsyn.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Added contrib/unaccent.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>ECPG</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add sqlda support in both native and compatibility
+         mode.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Fix SQL3 type return value: For non-SQL3 types ECPG
+         used to return -OID. This will break if there are enough OIDs
+         to fill the namespace.  Therefore we play it safe and return
+         0 if there is no OID->SQL3 type mapping available.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Make char the default sqlda type.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add DESCRIBE [OUTPUT] statement.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add out-of-scope cursor support to native mode.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Refactor ECPG grammar so that it uses the core grammar's
+          unreserved_keyword list, minus a few specific words that have to be
+          treated specially. This de-reserves a number of words in ECPG.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Added dynamic cursor names to ECPG.
+        </para>
+       </listitem>
+      <listitem>
+       <para>
+        Add ECPG function that returns the current transaction status.
+       </para>
+      </listitem>
+      <listitem>
+       <para>
+        Make ECPG more robust against applications freeing strings.
+       </para>
+      </listitem>
+        <listitem>
+          <para>
+            ECPG now includes a STRING datatype for Informix compatibility
+            mode.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Ports</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Add basic build support for Visual Studio 2008,
+         without resorting to generating the build files for 2005 and
+         then converting them.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Added support for 64-bit Windows platforms.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Disable triggering failover with a signal in pg_standby on Windows.
+          It never really worked before anyway.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Change the WIN32 API version to be 5.01 (Windows XP), to
+         bring in the proper IPv6 headers in newer SDKs.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Write to the Windows eventlog in UTF-16, converting the
+         message encoding as necessary.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Replace use of the long-deprecated Bonjour API
+         DNSServiceRegistrationCreate with the not-so-deprecated
+         DNSServiceRegister. The new code will fail on Mac OS X
+         releases before 10.3.
+        </para>
+       </listitem>
+       <listitem>
+          <para>
+            Reserve the shared memory region during backend startup on Windows,
+            so that memory allocated by starting third party DLLs doesn't end
+            up conflicting with it. Hopefully this solves the long-time issue
+            with &quot;could not reattach to shared memory&quot; errors on
+            Win32.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Add s_lock support for SuperH architecture (not well tested).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+    <sect3>
+      <title>Source Code, Build Options</title>
+      <itemizedlist>
+       <listitem>
+        <para>
+         <emphasis>Improve PGXS makefile system to allow the module's
+         makefile to specify where to install DATA and DOCS files.
+         This is mainly intended to allow versioned installation, eg,
+         install into contrib/fooM.N/ rather than directly into
+         contrib/.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Get rid of the need for manual maintenance of the
+         initial contents of pg_attribute, by having genbki.pl derive
+         the information from the various catalog header files.  This
+         greatly simplifies modification of the "bootstrapped"
+         catalogs.  This patch finally kills genbki.sh and
+         Gen_fmgrtab.sh; we now rely entirely on Perl scripts for
+         those build steps.  To avoid creating a Perl build dependency
+         where there was not one before, they will be built and
+         shipped in tarballs.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Move the default configuration for the MSVC build
+         system to config_default.pl, and allow using config.pl to
+         override the defaults.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Make configure check the version of Perl we're
+         building with, and reject versions &lt; 5.8.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Remove all support for working around on systems
+         that don't provide a working 64-bit integer type.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         <emphasis>Add new make targets "world", "install-world" and
+         "installcheck-world" to build, install and check just about
+         everything.  In addition to everything built installed and
+         tested by all, install and installcheck targets, these build
+         HTML documentation, build and test contrib, and test
+         procedural languages and ECPG.</emphasis>
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         configure --enable-thread-safety is now the default (but can still
+          be turned off).
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Fix inclusions of readline/editline header files so that we
+         only attempt to #include the version of history.h that is in
+         the same directory as the readline.h we are using. This
+         avoids problems in some scenarios where both readline and
+         editline are installed.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Derived files that are shipped in the distribution used to be
+         built in the source directory even for out-of-tree
+         builds. They are now built in the build tree. This
+         should be more convenient for certain developers' workflows.
+        </para>
+       </listitem>
+        <listitem>
+          <para>
+            Functions which conflict with C++ reserved words have been renamed,
+            making backend header files now safe to use with C++ libraries.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Add man pages for SPI functions.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Upgrade to Autoconf 2.63 (not relevant to users of distribution
+            tarballs).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Minimum version of Flex is now 2.5.31, to support reentrant
+            scanners (not relevant to users of distribution tarballs).
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Documentation build rules have been improved. The generated
+            documentation files are now shipped &quot;loose&quot;, not in
+            sub-tarballs.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            New toolchain to generate man pages. From now on, the man pages
+            will be current in every release.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Code-coverage testing support now extends to the entire source
+            tree, not only src/backend/.
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            Make the core scanner re-entrant, along with additional fixes that
+            will let it be used directly by PL/pgSQL.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+  </sect2>
+</sect1>