Split the release notes into a separate file for each (active) major branch, REL8_2_STABLE
authorTom Lane <[email protected]>
Sat, 2 May 2009 20:17:45 +0000 (20:17 +0000)
committerTom Lane <[email protected]>
Sat, 2 May 2009 20:17:45 +0000 (20:17 +0000)
as per my recent proposal.  release.sgml itself is now just a stub that should
change rarely; ideally, only once per major release to add a new include line.
Most editing work will occur in the release-N.N.sgml files.  To update a back
branch for a minor release, just copy the appropriate release-N.N.sgml
file(s) into the back branch.

This commit doesn't change the end-product documentation at all, only the
source layout.  However, it makes it easy to start omitting ancient information
from newer branches' documentation, should we ever decide to do that.

doc/src/sgml/Makefile
doc/src/sgml/filelist.sgml
doc/src/sgml/release.sgml

index 30323f6f21cbce181d26db382ec1c349b89e5b3e..db932cec6ea0ccad4e86f02f8749b0d3dd38d087 100644 (file)
@@ -193,12 +193,8 @@ INSTALL HISTORY regress_README: % : %.html
 INSTALL.html: standalone-install.sgml installation.sgml version.sgml
        $(JADE.text) -V nochunks standalone-install.sgml installation.sgml >$@
 
-# remove links to main documentation
-HISTORY.html: release.sgml
-       ( echo '<!doctype appendix PUBLIC "-//OASIS//DTD DocBook V4.2//EN">'; \
-         cat $< ) | \
-       $(PERL) -p -0 -e 's/<link\s+linkend[^>]*>//g' | \
-       $(PERL) -p -e 's/<\/link>//g' >tempfile_HISTORY.sgml
+HISTORY.html: generate_history.pl $(wildcard $(srcdir)/release*.sgml)
+       $(PERL) $< "$(srcdir)" release.sgml >tempfile_HISTORY.sgml
        $(JADE.text) -V nochunks tempfile_HISTORY.sgml >$@
        rm tempfile_HISTORY.sgml
 
index 908875528d90da052e986bfc7f9d64b231e4fc7a..45d89c44824e97eda31be6992a0a0eb76f316c54 100644 (file)
 <!entity errcodes   SYSTEM "errcodes.sgml">
 <!entity features   SYSTEM "features.sgml">
 <!entity keywords   SYSTEM "keywords.sgml">
+
 <!entity release    SYSTEM "release.sgml">
+<!entity release-8.2    SYSTEM "release-8.2.sgml">
+<!entity release-8.1    SYSTEM "release-8.1.sgml">
+<!entity release-8.0    SYSTEM "release-8.0.sgml">
+<!entity release-7.4    SYSTEM "release-7.4.sgml">
+<!entity release-old    SYSTEM "release-old.sgml">
 
 <!entity features-supported   SYSTEM "features-supported.sgml">
 <!entity features-unsupported SYSTEM "features-unsupported.sgml">
index 1e425ee0711a867d8705e3d4771dff30774b81c1..5dc7bbdb8e4de5d90e8d39f6e283e4874428f4ff 100644 (file)
@@ -4,12 +4,13 @@
 Typical markup:
 
 &<>                             use & escapes
+PostgreSQL                      <productname>
+postgresql.conf, pg_hba.conf    <filename>
 [A-Z][A-Z ]+[A-Z]               <command>
 [A-Za-z_][A-Za-z0-9_]+()        <function>
 [A-Za-z_]/[A-Za-z_]+            <filename>
-PostgreSQL                      <productname>
 pg_[A-Za-z0-9_]                 <application>
-[A-Z][A-Z]                      <type>, <envar>, <literal>
+[A-Z][A-Z][A-Z_ ]*              <type>, <envar>, <literal>
 
 non-ASCII characters            convert to HTML4 entity (&) escapes
 
@@ -26,9 +27,8 @@ non-ASCII characters            convert to HTML4 entity (&) escapes
 wrap long lines
 
 For new features, add links to the documentation sections.  Use </link>
-so that Perl can remove it so HISTORY.html can be created with no
-links to the main documentation.  This was added only in 8.2, so don't
-do it for earlier branch release files.
+not just </> so that generate_history.pl can remove it, so HISTORY.html
+can be created without links to the main documentation.
 
 -->
 
@@ -63,24302 +63,17 @@ do it for earlier branch release files.
    review, so each item is truly a community effort.
   </para>
 
- <sect1 id="release-8-2-13">
-  <title>Release 8.2.13</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-03-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.12.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.13</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, if you are upgrading from a version earlier than 8.2.11,
-    see the release notes for 8.2.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Prevent error recursion crashes when encoding conversion fails (Tom)
-     </para>
-
-     <para>
-      This change extends fixes made in the last two minor releases for
-      related failure scenarios.  The previous fixes were narrowly tailored
-      for the original problem reports, but we have now recognized that
-      <emphasis>any</> error thrown by an encoding conversion function could
-      potentially lead to infinite recursion while trying to report the
-      error.  The solution therefore is to disable translation and encoding
-      conversion and report the plain-ASCII form of any error message,
-      if we find we have gotten into a recursive error reporting situation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Disallow <command>CREATE CONVERSION</> with the wrong encodings
-      for the specified conversion function (Heikki)
-     </para>
-
-     <para>
-      This prevents one possible scenario for encoding conversion failure.
-      The previous change is a backstop to guard against other kinds of
-      failures in the same area.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix core dump when <function>to_char()</> is given format codes that
-      are inappropriate for the type of the data argument (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible failure in <filename>contrib/tsearch2</> when C locale is
-      used with a multi-byte encoding (Teodor)
-     </para>
-
-     <para>
-      Crashes were possible on platforms where <type>wchar_t</> is narrower
-      than <type>int</>; Windows in particular.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix extreme inefficiency in <filename>contrib/tsearch2</> parser's
-      handling of an email-like string containing multiple <literal>@</>
-      characters (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
-      (Tom)
-     </para>
-
-     <para>
-      This mistake could lead to Assert failures in an Assert-enabled build,
-      or an <quote>unexpected CASE WHEN clause</> error message in other
-      cases, when trying to examine or dump a view.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
-     </para>
-
-     <para>
-      If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
-      were executed by someone other than the table owner, the
-      <structname>pg_type</> entry for the table's TOAST table would end up
-      marked as owned by that someone.  This caused no immediate problems,
-      since the permissions on the TOAST rowtype aren't examined by any
-      ordinary database operation.  However, it could lead to unexpected
-      failures if one later tried to drop the role that issued the command
-      (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
-      warnings from <application>pg_dump</> after having done so (in 8.3).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
-      an INTO-variables clause anywhere in the string, not only at the start;
-      in particular, don't fail for <command>INSERT INTO</> within
-      <command>CREATE RULE</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Clean up PL/pgSQL error status variables fully at block exit
-      (Ashesh Vashi and Dave Page)
-     </para>
-
-     <para>
-      This is not a problem for PL/pgSQL itself, but the omission could cause
-      the PL/pgSQL Debugger to crash while examining the state of a function.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Retry failed calls to <function>CallNamedPipe()</> on Windows
-      (Steve Marshall, Magnus)
-     </para>
-
-     <para>
-      It appears that this function can sometimes fail transiently;
-      we previously treated any failure as a hard error, which could
-      confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
-      operations.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
-      of known timezone abbreviations (Xavier Bugaud)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-12">
-  <title>Release 8.2.12</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-02-02</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.11.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.12</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, if you are upgrading from a version earlier than 8.2.11,
-    see the release notes for 8.2.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Improve handling of URLs in <function>headline()</> function (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve handling of overlength headlines in <function>headline()</>
-      function (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent possible Assert failure or misconversion if an encoding
-      conversion is created with the wrong conversion function for the
-      specified pair of encodings (Tom, Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible Assert failure if a statement executed in PL/pgSQL is
-      rewritten into another kind of statement, for example if an
-      <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure that a snapshot is available to datatype input functions (Tom)
-     </para>
-
-     <para>
-      This primarily affects domains that are declared with <literal>CHECK</>
-      constraints involving user-defined stable or immutable functions.  Such
-      functions typically fail if no snapshot has been set.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make it safer for SPI-using functions to be used within datatype I/O;
-      in particular, to be used in domain check constraints (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Avoid unnecessary locking of small tables in <command>VACUUM</>
-      (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix a problem that made <literal>UPDATE RETURNING tableoid</>
-      return zero instead of the correct OID (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner misestimation of selectivity when transitive equality
-      is applied to an outer-join clause (Tom)
-     </para>
-
-     <para>
-      This could result in bad plans for queries like
-      <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve optimizer's handling of long <literal>IN</> lists (Tom)
-     </para>
-
-     <para>
-      This change avoids wasting large amounts of time on such lists
-      when constraint exclusion is enabled.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure that the contents of a holdable cursor don't depend on the
-      contents of TOAST tables (Tom)
-     </para>
-
-     <para>
-      Previously, large field values in a cursor result might be represented
-      as TOAST pointers, which would fail if the referenced table got dropped
-      before the cursor is read, or if the large value is deleted and then
-      vacuumed away.  This cannot happen with an ordinary cursor,
-      but it could with a cursor that is held past its creating transaction.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix memory leak when a set-returning function is terminated without
-      reading its whole result (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <filename>contrib/dblink</>'s
-      <function>dblink_get_result(text,bool)</> function (Joe)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible garbage output from <filename>contrib/sslinfo</> functions
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>configure</> script to properly report failure when
-      unable to obtain linkage information for PL/Perl (Andrew)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make all documentation reference <literal>pgsql-bugs</> and/or
-      <literal>pgsql-hackers</> as appropriate, instead of the
-      now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
-      mailing lists (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2009a (for
-      Kathmandu and historical DST corrections in Switzerland, Cuba)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-11">
-  <title>Release 8.2.11</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-11-03</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.10.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.11</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, if you are upgrading from a version earlier than 8.2.7,
-    see the release notes for 8.2.7.  Also, if you were running a previous
-    8.2.X release, it is recommended to <command>REINDEX</> all GiST
-    indexes after the upgrade.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix GiST index corruption due to marking the wrong index entry
-      <quote>dead</> after a deletion (Teodor)
-     </para>
-
-     <para>
-      This would result in index searches failing to find rows they
-      should have found.  Corrupted indexes can be fixed with
-      <command>REINDEX</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix backend crash when the client encoding cannot represent a localized
-      error message (Tom)
-     </para>
-
-     <para>
-      We have addressed similar issues before, but it would still fail if
-      the <quote>character has no equivalent</> message itself couldn't
-      be converted.  The fix is to disable localization and send the plain
-      ASCII error message when we detect such a situation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible crash when deeply nested functions are invoked from
-      a trigger (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve optimization of <replaceable>expression</> <literal>IN</>
-      (<replaceable>expression-list</>) queries (Tom, per an idea from Robert
-      Haas)
-     </para>
-
-     <para>
-      Cases in which there are query variables on the right-hand side had been
-      handled less efficiently in 8.2.x and 8.3.x than in prior versions.
-      The fix restores 8.1 behavior for such cases.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
-      in a function call in <literal>FROM</>,  a multi-row <literal>VALUES</>
-      list, or a <literal>RETURNING</> list (Tom)
-     </para>
-
-     <para>
-      The usual symptom of this problem is an <quote>unrecognized node type</>
-      error.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix memory leak during rescan of a hashed aggregation plan (Neil)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure an error is reported when a newly-defined PL/pgSQL trigger
-      function is invoked as a normal function (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent possible collision of <structfield>relfilenode</> numbers
-      when moving a table to another tablespace with <command>ALTER SET
-      TABLESPACE</> (Heikki)
-     </para>
-
-     <para>
-      The command tried to re-use the existing filename, instead of
-      picking one that is known unused in the destination directory.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect tsearch2 headline generation when single query
-      item matches first word of text (Sushant Sinha)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix improper display of fractional seconds in interval values when
-      using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
-      build (Ron Mayer)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
-      behave correctly when the passed tuple and tuple descriptor have
-      different numbers of columns (Tom)
-     </para>
-
-     <para>
-      This situation is normal when a table has had columns added or removed,
-      but these two functions didn't handle it properly.
-      The only likely consequence is an incorrect error indication.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix recent breakage of <literal>pg_ctl restart</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure <filename>pg_control</> is opened in binary mode
-      (Itagaki Takahiro)
-     </para>
-
-     <para>
-      <application>pg_controldata</> and <application>pg_resetxlog</>
-      did this incorrectly, and so could fail on Windows.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008i (for
-      DST law changes in Argentina, Brazil, Mauritius, Syria)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-10">
-  <title>Release 8.2.10</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-09-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.9.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.10</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, if you are upgrading from a version earlier than 8.2.7,
-    see the release notes for 8.2.7.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix bug in btree WAL recovery code (Heikki)
-     </para>
-
-     <para>
-      Recovery failed if the WAL ended partway through a page split operation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
-     </para>
-
-     <para>
-      This error may explain some recent reports of failure to remove old
-      <structname>pg_clog</> data.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Widen local lock counters from 32 to 64 bits (Tom)
-     </para>
-
-     <para>
-      This responds to reports that the counters could overflow in
-      sufficiently long transactions, leading to unexpected <quote>lock is
-      already held</> errors.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible duplicate output of tuples during a GiST index scan (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix missed permissions checks when a view contains a simple
-      <literal>UNION ALL</> construct (Heikki)
-     </para>
-
-     <para>
-      Permissions for the referenced tables were checked properly, but not
-      permissions for the view itself.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add checks in executor startup to ensure that the tuples produced by an
-      <command>INSERT</> or <command>UPDATE</> will match the target table's
-      current rowtype (Tom)
-     </para>
-
-     <para>
-      <command>ALTER COLUMN TYPE</>, followed by re-use of a previously
-      cached plan, could produce this type of situation.  The check protects
-      against data corruption and/or crashes that could ensue.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible repeated drops during <command>DROP OWNED</> (Tom)
-     </para>
-
-     <para>
-      This would typically result in strange errors such as <quote>cache
-      lookup failed for relation NNN</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
-      argument as a timezone abbreviation, and only try it as a full timezone
-      name if that fails, rather than the other way around as formerly (Tom)
-     </para>
-
-     <para>
-      The timestamp input functions have always resolved ambiguous zone names
-      in this order.  Making <literal>AT TIME ZONE</> do so as well improves
-      consistency, and fixes a compatibility bug introduced in 8.1:
-      in ambiguous cases we now behave the same as 8.0 and before did,
-      since in the older versions <literal>AT TIME ZONE</> accepted
-      <emphasis>only</> abbreviations.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix datetime input functions to correctly detect integer overflow when
-      running on a 64-bit platform (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent integer overflows during units conversion when displaying a
-      configuration parameter that has units (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve performance of writing very long log messages to syslog (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow spaces in the suffix part of an LDAP URL in
-      <filename>pg_hba.conf</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
-      ON</> query (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner bug with nested sub-select expressions (Tom)
-     </para>
-
-     <para>
-      If the outer sub-select has no direct dependency on the parent query,
-      but the inner one does, the outer value might not get recalculated
-      for new parent query rows.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner to estimate that <literal>GROUP BY</> expressions yielding
-      boolean results always result in two groups, regardless of the
-      expressions' contents (Tom)
-     </para>
-
-     <para>
-      This is very substantially more accurate than the regular <literal>GROUP
-      BY</> estimate for certain boolean tests like <replaceable>col</>
-      <literal>IS NULL</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/PgSQL to not fail when a <literal>FOR</> loop's target variable
-      is a record containing composite-type fields (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
-      about the encoding of data sent to or from Tcl (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      On Windows, work around a Microsoft bug by preventing
-      <application>libpq</> from trying to send more than 64kB per system call
-      (Magnus)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve <application>pg_dump</> and <application>pg_restore</>'s
-      error reporting after failure to send a SQL command (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_ctl</> to properly preserve postmaster
-      command-line arguments across a <literal>restart</> (Bruce)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008f (for
-      DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
-      Pakistan, Palestine, and Paraguay)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-9">
-  <title>Release 8.2.9</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-06-12</simpara>
-  </note>
-
-  <para>
-   This release contains one serious and one minor bug fix over 8.2.8.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.9</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, if you are upgrading from a version earlier than 8.2.7,
-    see the release notes for 8.2.7.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
-     </para>
-
-     <para>
-      Before this fix, a negative constant in a view or rule might be dumped
-      as, say, <literal>-42::integer</>, which is subtly incorrect: it should
-      be <literal>(-42)::integer</> due to operator precedence rules.
-      Usually this would make little difference, but it could interact with
-      another recent patch to cause
-      <productname>PostgreSQL</> to reject what had been a valid
-      <command>SELECT DISTINCT</> view query.  Since this could result in
-      <application>pg_dump</> output failing to reload, it is being treated
-      as a high-priority fix.  The only released versions in which dump
-      output is actually incorrect are 8.3.1 and 8.2.7.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>ALTER AGGREGATE ... OWNER TO</> update
-      <structname>pg_shdepend</> (Tom)
-     </para>
-
-     <para>
-      This oversight could lead to problems if the aggregate was later
-      involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
-      operation.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-8">
-  <title>Release 8.2.8</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>never released</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.7.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.8</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, if you are upgrading from a version earlier than 8.2.7,
-    see the release notes for 8.2.7.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
-      occurred on Windows when using UTF-8 database encoding and a different
-      client encoding (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
-      column is correctly checked to see if it's been initialized to all
-      non-nulls (Brendan Jurd)
-     </para>
-
-     <para>
-      Previous versions neglected to check this requirement at all.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible <command>CREATE TABLE</> failure when inheriting the
-      <quote>same</> constraint from multiple parent relations that
-      inherited that constraint from a common ancestor (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
-      to the target table of an <command>UPDATE</> or <command>DELETE</>
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix GIN bug that could result in a <literal>too many LWLocks
-      taken</literal> failure (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Avoid possible crash when decompressing corrupted data
-      (Zdenek Kotala)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Repair two places where SIGTERM exit of a backend could leave corrupted
-      state in shared memory (Tom)
-     </para>
-
-     <para>
-      Neither case is very important if SIGTERM is used to shut down the
-      whole database cluster together, but there was a problem if someone
-      tried to SIGTERM individual backends.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix conversions between ISO-8859-5 and other encodings to handle
-      Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
-      two dots) (Sergey Burladyan)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix several datatype input functions, notably <function>array_in()</>,
-      that were allowing unused bytes in their results to contain
-      uninitialized, unpredictable values (Tom)
-     </para>
-
-     <para>
-      This could lead to failures in which two apparently identical literal
-      values were not seen as equal, resulting in the parser complaining
-      about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
-      expressions.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix a corner case in regular-expression substring matching
-      (<literal>substring(<replaceable>string</> from
-      <replaceable>pattern</>)</literal>) (Tom)
-     </para>
-
-     <para>
-      The problem occurs when there is a match to the pattern overall but
-      the user has specified a parenthesized subexpression and that
-      subexpression hasn't got a match.  An example is
-      <literal>substring('foo' from 'foo(bar)?')</>.
-      This should return NULL, since <literal>(bar)</> isn't matched, but
-      it was mistakenly returning the whole-pattern match instead (ie,
-      <literal>foo</>).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008c (for
-      DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
-      Argentina/San_Luis)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect result from <application>ecpg</>'s
-      <function>PGTYPEStimestamp_sub()</> function (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix broken GiST comparison function for <filename>contrib/tsearch2</>'s
-      <type>tsquery</> type (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible crashes in <filename>contrib/cube</> functions (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix core dump in <filename>contrib/xml2</>'s
-      <function>xpath_table()</> function when the input query returns a
-      NULL value (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <filename>contrib/xml2</>'s makefile to not override
-      <literal>CFLAGS</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
-      4.3 (Tom)
-     </para>
-
-     <para>
-      This problem affects <quote>old style</> (V0) C functions that
-      return boolean.  The fix is already in 8.3, but the need to
-      back-patch it was not realized at the time.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-7">
-  <title>Release 8.2.7</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-03-17</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.6.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.7</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-    However, you might need to <command>REINDEX</> indexes on textual
-    columns after updating, if you are affected by the Windows locale
-    issue described below.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix character string comparison for Windows locales that consider
-      different character combinations as equal (Tom)
-     </para>
-
-     <para>
-      This fix applies only on Windows and only when using UTF-8
-      database encoding.  The same fix was made for all other cases
-      over two years ago, but Windows with UTF-8 uses a separate code
-      path that was not updated.  If you are using a locale that
-      considers some non-identical strings as equal, you may need to
-      <command>REINDEX</> to fix existing indexes on textual columns.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Repair potential deadlock between concurrent <command>VACUUM FULL</>
-      operations on different system catalogs (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
-      race condition (Tom)
-     </para>
-
-     <para>
-      In rare cases a session that had just executed a
-      <command>LISTEN</> might not get a notification, even though
-      one would be expected because the concurrent transaction executing
-      <command>NOTIFY</> was observed to commit later.
-     </para>
-
-     <para>
-      A side effect of the fix is that a transaction that has executed
-      a not-yet-committed <command>LISTEN</> command will not see any
-      row in <structname>pg_listener</> for the <command>LISTEN</>,
-      should it choose to look; formerly it would have.  This behavior
-      was never documented one way or the other, but it is possible that
-      some applications depend on the old behavior.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
-      prepared transaction (Tom)
-     </para>
-
-     <para>
-      This was formerly allowed but trying to do it had various unpleasant
-      consequences, notably that the originating backend could not exit
-      as long as an <command>UNLISTEN</> remained uncommitted.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Disallow dropping a temporary table within a
-      prepared transaction (Heikki)
-     </para>
-
-     <para>
-      This was correctly disallowed by 8.1, but the check was inadvertently
-      broken in 8.2.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix rare crash when an error occurs during a query using a hash index
-      (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix memory leaks in certain usages of set-returning functions (Neil)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix input of datetime values for February 29 in years BC (Tom)
-     </para>
-
-     <para>
-      The former coding was mistaken about which years were leap years.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <quote>unrecognized node type</> error in some variants of
-      <command>ALTER OWNER</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
-      is cleared when a lock wait is aborted (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix handling of process permissions on Windows Vista (Dave, Magnus)
-     </para>
-
-     <para>
-      In particular, this fix allows starting the server as the Administrator
-      user.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008a
-      (in particular, recent Chile changes); adjust timezone abbreviation
-      <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_ctl</> to correctly extract the postmaster's port
-      number from command-line options (Itagaki Takahiro, Tom)
-     </para>
-
-     <para>
-      Previously, <literal>pg_ctl start -w</> could try to contact the
-      postmaster on the wrong port, leading to bogus reports of startup
-      failure.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Use <option>-fwrapv</> to defend against possible misoptimization
-      in recent <application>gcc</> versions (Tom)
-     </para>
-
-     <para>
-      This is known to be necessary when building <productname>PostgreSQL</>
-      with <application>gcc</> 4.3 or later.
-     </para>
-    </listitem>
-
-
-    <listitem>
-     <para>
-      Correctly enforce <varname>statement_timeout</> values longer
-      than <literal>INT_MAX</> microseconds (about 35 minutes) (Tom)
-     </para>
-
-     <para>
-      This bug affects only builds with <option>--enable-integer-datetimes</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <quote>unexpected PARAM_SUBLINK ID</> planner error when
-      constant-folding simplifies a sub-select (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix logical errors in constraint-exclusion handling of <literal>IS
-      NULL</> and <literal>NOT</> expressions (Tom)
-     </para>
-
-     <para>
-      The planner would sometimes exclude partitions that should not
-      have been excluded because of the possibility of NULL results.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix another cause of <quote>failed to build any N-way joins</>
-      planner errors (Tom)
-     </para>
-
-     <para>
-      This could happen in cases where a clauseless join needed to be
-      forced before a join clause could be exploited.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect constant propagation in outer-join planning (Tom)
-     </para>
-
-     <para>
-      The planner could sometimes incorrectly conclude that a variable
-      could be constrained to be equal to a constant, leading
-      to wrong query results.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix display of constant expressions in <literal>ORDER BY</>
-      and <literal>GROUP BY</> (Tom)
-     </para>
-
-     <para>
-      An explictly casted constant would be shown incorrectly.  This could
-      for example lead to corruption of a view definition during
-      dump and reload.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>libpq</> to handle NOTICE messages correctly
-      during COPY OUT (Tom)
-     </para>
-
-     <para>
-      This failure has only been observed to occur when a user-defined
-      datatype's output routine issues a NOTICE, but there is no
-      guarantee it couldn't happen due to other causes.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-6">
-  <title>Release 8.2.6</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-01-07</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.5,
-   including fixes for significant security issues.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.6</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Prevent functions in indexes from executing with the privileges of
-      the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
-     </para>
-
-     <para>
-      Functions used in index expressions and partial-index
-      predicates are evaluated whenever a new table entry is made.  It has
-      long been understood that this poses a risk of trojan-horse code
-      execution if one modifies a table owned by an untrustworthy user.
-      (Note that triggers, defaults, check constraints, etc. pose the
-      same type of risk.)  But functions in indexes pose extra danger
-      because they will be executed by routine maintenance operations
-      such as <command>VACUUM FULL</>, which are commonly performed
-      automatically under a superuser account.  For example, a nefarious user
-      can execute code with superuser privileges by setting up a
-      trojan-horse index definition and waiting for the next routine vacuum.
-      The fix arranges for standard maintenance operations
-      (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
-      and <command>CLUSTER</>) to execute as the table owner rather than
-      the calling user, using the same privilege-switching mechanism already
-      used for <literal>SECURITY DEFINER</> functions.  To prevent bypassing
-      this security measure, execution of <command>SET SESSION
-      AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
-      <literal>SECURITY DEFINER</> context.  (CVE-2007-6600)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
-     </para>
-
-     <para>
-      Suitably crafted regular-expression patterns could cause crashes,
-      infinite or near-infinite looping, and/or massive memory consumption,
-      all of which pose denial-of-service hazards for applications that
-      accept regex search patterns from untrustworthy sources.
-      (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require non-superusers who use <filename>/contrib/dblink</> to use only
-      password authentication, as a security measure (Joe)
-     </para>
-
-     <para>
-      The fix that appeared for this in 8.2.5 was incomplete, as it plugged
-      the hole for only some <filename>dblink</> functions.  (CVE-2007-6601,
-      CVE-2007-3278)
-     </para>
-    </listitem>
+<!--
+  To add a new major-release series, add an entry here and in filelist.sgml.
+  Follow the naming convention, or you'll confuse generate_history.pl.
 
-    <listitem>
-     <para>
-      Fix bugs in WAL replay for GIN indexes (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix GIN index build to work properly when
-      <varname>maintenance_work_mem</> is 4GB or more (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2007k
-      (in particular, recent Argentina changes) (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve planner's handling of LIKE/regex estimation in non-C locales
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planning-speed problem for deep outer-join nests, as well as
-      possible poor choice of join order (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner failure in some cases of <literal>WHERE false AND var IN
-      (SELECT ...)</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>CREATE TABLE ... SERIAL</> and
-      <command>ALTER SEQUENCE ... OWNED BY</> not change the
-      <function>currval()</> state of the sequence (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Preserve the tablespace and storage parameters of indexes that are
-      rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make archive recovery always start a new WAL timeline, rather than only
-      when a recovery stop time was used (Simon)
-     </para>
-
-     <para>
-      This avoids a corner-case risk of trying to overwrite an existing
-      archived copy of the last WAL segment, and seems simpler and cleaner
-      than the original definition.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</>
-      when the table is too small for it to be useful (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential crash in <function>translate()</> when using a multibyte
-      database encoding (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <function>corr()</> return the correct result for negative
-      correlation values (Neil)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix overflow in <literal>extract(epoch from interval)</> for intervals
-      exceeding 68 years (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Perl to not fail when a UTF-8 regular expression is used
-      in a trusted function (Andrew)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
-      as <literal>int</> rather than <literal>char</> (Tom)
-     </para>
-
-     <para>
-      While this could theoretically happen anywhere, no standard build of
-      Perl did things this way ... until <productname>Mac OS X</> 10.5.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Python to work correctly with Python 2.5 on 64-bit machines
-      (Marko Kreen)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Python to not crash on long exception messages (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_dump</> to correctly handle inheritance child tables
-      that have default expressions different from their parent's (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers
-      to a file that is not a plain file (Martin Pitt)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <application>ecpg</> parser fixes (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <filename>contrib/pgcrypto</> defend against
-      <application>OpenSSL</> libraries that fail on keys longer than 128
-      bits; which is the case at least on some Solaris versions (Marko Kreen)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
-      NULL rowid as a category in its own right, rather than crashing (Joe)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <type>tsvector</> and <type>tsquery</> output routines to
-      escape backslashes correctly (Teodor, Bruce)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require a specific version of <productname>Autoconf</> to be used
-      when re-generating the <command>configure</> script (Peter)
-     </para>
-
-     <para>
-      This affects developers and packagers only.  The change was made
-      to prevent accidental use of untested combinations of
-      <productname>Autoconf</> and <productname>PostgreSQL</> versions.
-      You can remove the version check if you really want to use a
-      different <productname>Autoconf</> version, but it's
-      your responsibility whether the result works or not.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update <function>gettimeofday</> configuration check so that
-      <productname>PostgreSQL</> can be built on newer versions of
-      <productname>MinGW</> (Magnus)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-5">
-  <title>Release 8.2.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-09-17</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.4.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.5</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Prevent index corruption when a transaction inserts rows and
-      then aborts close to the end of a concurrent <command>VACUUM</>
-      on the same table (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <literal>ALTER DOMAIN ADD CONSTRAINT</> for cases involving
-      domains over domains (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix some planner problems with outer joins, notably poor
-      size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</>
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow the <type>interval</> data type to accept input consisting only of
-      milliseconds or microseconds (Neil)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow timezone name to appear before the year in <type>timestamp</> input (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fixes for <acronym>GIN</> indexes used by <filename>/contrib/tsearch2</> (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Speed up rtree index insertion (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix excessive logging of <acronym>SSL</> error messages (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix logging so that log messages are never interleaved when using
-      the syslogger process (Andrew)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix crash when <varname>log_min_error_statement</> logging runs out
-      of memory (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect handling of some foreign-key corner cases (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <function>stddev_pop(numeric)</> and <function>var_pop(numeric)</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
-      due to attempting to process temporary tables of other sessions (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Windows socket and semaphore improvements (Magnus)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>pg_ctl -w</> work properly in Windows service mode (Dave Page)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix memory allocation bug when using <application>MIT Kerberos</> on Windows (Magnus)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
-      because of possible encoding mismatches (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require non-superusers who use <filename>/contrib/dblink</> to use only
-      password authentication, as a security measure (Joe)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Restrict <filename>/contrib/pgstattuple</> functions to superusers, for security reasons (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Do not let <filename>/contrib/intarray</> try to make its GIN opclass
-      the default (this caused problems at dump/restore) (Tom)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-4">
-  <title>Release 8.2.4</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-04-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.3,
-   including a security fix.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.4</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Support explicit placement of the temporary-table schema within
-      <varname>search_path</>, and disable searching it for functions
-      and operators (Tom)
-     </para>
-
-     <para>
-      This is needed to allow a security-definer function to set a
-      truly secure value of <varname>search_path</>.  Without it,
-      an unprivileged SQL user can use temporary objects to execute code
-      with the privileges of the security-definer function (CVE-2007-2138).
-      See <command>CREATE FUNCTION</> for more information.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <varname>shared_preload_libraries</> for Windows
-      by forcing reload in each backend (Korry Douglas)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <function>to_char()</> so it properly upper/lower cases localized day or month
-      names (Pavel Stehule)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <filename>/contrib/tsearch2</> crash fixes (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require <command>COMMIT PREPARED</> to be executed in the same
-      database as the transaction was prepared in (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow <command>pg_dump</> to do binary backups larger than two gigabytes
-      on Windows (Magnus)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      New traditional (Taiwan) Chinese <acronym>FAQ</> (Zhou Daojing)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent the statistics collector from writing to disk too frequently (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
-      <command>UPDATE</> chains (Tom, Pavan Deolasee)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix bug in domains that use array types (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <command>pg_dump</> so it can dump a serial column's sequence
-      using <option>-t</> when not also dumping the owning table
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Planner fixes, including improving outer join and bitmap scan
-      selection logic (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible wrong answers or crash when a PL/pgSQL function tries
-      to <literal>RETURN</> from within an <literal>EXCEPTION</> block
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PANIC during enlargement of a hash index (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-3">
-  <title>Release 8.2.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-07</simpara>
-  </note>
-
-  <para>
-   This release contains two fixes from 8.2.2.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.3</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Remove overly-restrictive check for type length in constraints and
-      functional indexes(Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix optimization so MIN/MAX in subqueries can again use indexes (Tom)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-2">
-  <title>Release 8.2.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-05</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.1, including
-   a security fix.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.2</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.X.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Remove security vulnerabilities that allowed connected users
-      to read backend memory (Tom)
-     </para>
-
-     <para>
-      The vulnerabilities involve suppressing the normal check that a SQL
-      function returns the data type it's declared to, and changing the
-      data type of a table column (CVE-2007-0555, CVE-2007-0556).  These
-      errors can easily be exploited to cause a backend crash, and in
-      principle might be used to read database content that the user
-      should not be able to access.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix not-so-rare-anymore bug wherein btree index page splits could fail
-      due to choosing an infeasible split point (Heikki Linnakangas)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix Borland C compile scripts (L Bayuk)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Properly handle <function>to_char('CC')</> for years ending in
-      <literal>00</> (Tom)
-     </para>
-
-     <para>
-      Year 2000 is in the twentieth century, not the twenty-first.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect permission check in
-      <literal>information_schema.key_column_usage</> view (Tom)
-     </para>
-
-     <para>
-      The symptom is <quote>relation with OID nnnnn does not exist</> errors.
-      To get this fix without using <command>initdb</>, use <command>CREATE OR
-      REPLACE VIEW</> to install the corrected definition found in
-      <filename>share/information_schema.sql</>.  Note you will need to do
-      this in each database.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve <command>VACUUM</> performance for databases with many tables (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potentially incorrect results from index searches using
-      <literal>ROW</> inequality conditions (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Tighten security of multi-byte character processing for UTF8 sequences
-      over three bytes long (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix bogus <quote>permission denied</> failures occurring on Windows
-      due to attempts to fsync already-deleted files (Magnus, Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix bug that could cause the statistics collector
-      to hang on Windows (Magnus)
-     </para>
-
-     <para>
-      This would in turn lead to autovacuum not working.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible crashes when an already-in-use PL/pgSQL function is
-      updated (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible errors in processing PL/pgSQL exception blocks (Tom)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2-1">
-  <title>Release 8.2.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-01-08</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.2.
-   For information about new features in the 8.2 major release, see
-   <xref linkend="release-8-2">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.2.1</title>
-
-   <para>
-    A dump/restore is not required for those running 8.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix crash with <literal>SELECT</> ... <literal>LIMIT ALL</> (also
-      <literal>LIMIT NULL</>) (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <filename>Several /contrib/tsearch2</> fixes (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      On Windows, make log messages coming from the operating system use
-      <acronym>ASCII</> encoding (Hiroshi Saito)
-     </para>
-
-     <para>
-      This fixes a conversion problem when there is a mismatch between
-      the encoding of the operating system and database server.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix Windows linking of <application>pg_dump</> using
-      <filename>win32.mak</>
-      (Hiroshi Saito)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner mistakes for outer join queries (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix several problems in queries involving sub-SELECTs (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential crash in SPI during subtransaction abort (Tom)
-     </para>
-
-     <para>
-      This affects all PL functions since they all use SPI.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve build speed of <acronym>PDF</> documentation (Peter)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Re-add <acronym>JST</> (Japan) timezone abbreviation (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve optimization decisions related to index scans (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Have <application>psql</> print multi-byte combining characters as
-      before, rather than output as <literal>\u</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve index usage of regular expressions that use parentheses (Tom)
-     </para>
-
-     <para>
-      This improves <application>psql</> <literal>\d</> performance also.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <application>pg_dumpall</> assume that databases have public
-      <literal>CONNECT</> privilege, when dumping from a pre-8.2 server (Tom)
-     </para>
-
-     <para>
-      This preserves the previous behavior that anyone can connect to a
-      database if allowed by <filename>pg_hba.conf</>.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-2">
-  <title>Release 8.2</title>
-
-  <note>
-   <title>Release date</title>
-   <simpara>2006-12-05</simpara>
-  </note>
-
-  <sect2>
-   <title>Overview</title>
-
-   <para>
-    This release adds many functionality and performance improvements that
-    were requested by users, including:
-
-   <itemizedlist>
-
-     <listitem>
-      <para>
-       Query language enhancements including <command>INSERT/UPDATE/DELETE
-       RETURNING</command>, multirow <literal>VALUES</literal> lists, and
-       optional target-table alias in
-       <command>UPDATE</>/<command>DELETE</command>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Index creation without blocking concurrent
-       <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
-       operations
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Many query optimization improvements, including support for
-       reordering outer joins
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improved sorting performance with lower memory usage
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       More efficient locking with better concurrency
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       More efficient vacuuming
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Easier administration of warm standby servers
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <literal>FILLFACTOR</literal> support for tables and indexes
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Monitoring, logging, and performance tuning additions
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       More control over creating and dropping objects
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Table inheritance relationships can be defined
-       for and removed from pre-existing tables
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <command>COPY TO</command> can copy the output of an arbitrary
-       <command>SELECT</command> statement
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Array improvements, including nulls in arrays
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Aggregate-function improvements, including multiple-input
-       aggregates and SQL:2003 statistical functions
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Many <filename>contrib/</filename> improvements
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Migration to Version 8.2</title>
-
-   <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>
-
-   <itemizedlist>
-
-     <listitem>
-      <para>
-       Set <link
-       linkend="guc-escape-string-warning"><varname>escape_string_warning</></link>
-       to <literal>on</> by default (Bruce)
-      </para>
-
-      <para>
-       This issues a warning if backslash escapes are used in
-       <link linkend="sql-syntax-strings">non-escape (non-<literal>E''</>)
-       strings</link>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change the <link linkend="sql-syntax-row-constructors">row
-       constructor syntax</link> (<literal>ROW(...)</>) so that
-       list elements <literal>foo.*</> will be expanded to a list
-       of their member fields, rather than creating a nested
-       row type field as formerly (Tom)
-      </para>
-
-      <para>
-       The new behavior is substantially more useful since it
-       allows, for example, triggers to check for data changes
-       with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>.
-       The old behavior is still available by omitting <literal>.*</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <link linkend="row-wise-comparison">row comparisons</link>
-       follow <acronym>SQL</> standard semantics and allow them
-       to be used in index scans (Tom)
-      </para>
-
-      <para>
-       Previously, row = and &lt;&gt; comparisons followed the
-       standard but &lt; &lt;= &gt; &gt;= did not.  A row comparison
-       can now be used as an index constraint for a multicolumn
-       index matching the row value.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</> NULL</literal></link>
-       tests follow <acronym>SQL</> standard semantics (Tom)
-      </para>
-
-      <para>
-       The former behavior conformed to the standard for simple cases
-       with <literal>IS NULL</>, but <literal>IS NOT NULL</> would return
-       true if any row field was non-null, whereas the standard says it
-       should return true only when all fields are non-null.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <link linkend="SQL-SET-CONSTRAINTS"><command>SET
-       CONSTRAINT</></link> affect only one constraint (Kris Jurka)
-      </para>
-
-      <para>
-       In previous releases, <command>SET CONSTRAINT</> modified
-       all constraints with a matching name.  In this release,
-       the schema search path is used to modify only the first
-       matching constraint.  A schema specification is also
-       supported.  This more nearly conforms to the SQL standard.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <literal>RULE</> permission for tables, for security reasons
-       (Tom)
-      </para>
-
-      <para>
-       As of this release, only a table's owner can create or modify
-       rules for the table.  For backwards compatibility,
-       <command>GRANT</>/<command>REVOKE RULE</> is still accepted,
-       but it does nothing.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Array comparison improvements (Tom)
-      </para>
-
-      <para>
-       Now array dimensions are also compared.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <link linkend="functions-array">array concatenation</link>
-       to match documented behavior (Tom)
-      </para>
-
-      <para>
-       This changes the previous behavior where concatenation
-       would modify the array lower bound.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make command-line options of <application>postmaster</>
-       and <link linkend="app-postgres"><application>postgres</></link>
-       identical (Peter)
-      </para>
-
-      <para>
-       This allows the postmaster to pass arguments to each backend
-       without using <literal>-o</>.  Note that some options are now
-       only available as long-form options, because there were conflicting
-       single-letter options.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Deprecate use of <application>postmaster</> symbolic link (Peter)
-      </para>
-
-      <para>
-       <application>postmaster</> and <application>postgres</>
-       commands now act identically, with the behavior determined
-       by command-line options.  The <application>postmaster</> symbolic link is
-       kept for compatibility, but is not really needed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <link
-       linkend="guc-log-duration"><varname>log_duration</></link>
-       to output even if the query is not output (Tom)
-      </para>
-
-      <para>
-       In prior releases, <varname>log_duration</> only printed if
-       the query appeared earlier in the log.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <link
-       linkend="functions-formatting"><function>to_char(time)</></link>
-       and <link
-       linkend="functions-formatting"><function>to_char(interval)</></link>
-       treat <literal>HH</> and <literal>HH12</> as 12-hour
-       intervals
-      </para>
-
-      <para>
-       Most applications should use <literal>HH24</> unless they
-       want a 12-hour display.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Zero unmasked bits in conversion from <link
-       linkend="datatype-inet"><type>INET</></link> to <link
-       linkend="datatype-inet"><type>CIDR</></link> (Tom)
-      </para>
-
-      <para>
-       This ensures that the converted value is actually valid for
-       <type>CIDR</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <varname>australian_timezones</> configuration variable
-       (Joachim Wieland)
-      </para>
-
-      <para>
-       This variable has been superseded by a more general facility
-       for configuring timezone abbreviations.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve cost estimation for nested-loop index scans (Tom)
-      </para>
-
-      <para>
-       This might eliminate the need to set unrealistically small
-       values of <link
-       linkend="guc-random-page-cost"><varname>random_page_cost</></link>.
-       If you have been using a very small <varname>random_page_cost</>,
-       please recheck your test cases.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change behavior of <command>pg_dump</> <literal>-n</> and
-       <literal>-t</> options.  (Greg Sabino Mullane)
-      </para>
-      <para>
-       See the <command>pg_dump</> manual page for details.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <link linkend="libpq"><application>libpq</></link>
-       <function>PQdsplen()</> to return a useful value (Martijn
-       van Oosterhout)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Declare <link linkend="libpq"><application>libpq</></link>
-       <function>PQgetssl()</> as returning <literal>void *</>,
-       rather than <literal>SSL *</> (Martijn van Oosterhout)
-      </para>
-
-      <para>
-       This allows applications to use the function without including
-       the OpenSSL headers.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       C-language loadable modules must now include a
-       <link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
-       macro call for version compatibility checking
-       (Martijn van Oosterhout)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       For security's sake, modules used by a PL/PerlU function are no
-       longer available to PL/Perl functions (Andrew)
-      </para>
-      <note>
-       <para>
-        This also implies that data can no longer be shared between a PL/Perl
-        function and a PL/PerlU function.
-        Some Perl installations have not been compiled with the correct flags
-        to allow multiple interpreters to exist within a single process.
-        In this situation PL/Perl and PL/PerlU cannot both be used in a
-        single backend. The solution is to get a Perl installation which
-        supports multiple interpreters.
-       </para>
-      </note>
-     </listitem>
-
-     <listitem>
-      <para>
-       In <filename>contrib/xml2/</>, rename <function>xml_valid()</> to
-       <function>xml_is_well_formed()</> (Tom)
-      </para>
-
-      <para>
-       <function>xml_valid()</> will remain for backward compatibility,
-       but its behavior will change to do schema checking in a future
-       release.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <filename>contrib/ora2pg/</>, now at <ulink
-       url="http://www.samse.fr/GPL/ora2pg"></ulink>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove contrib modules that have been migrated to PgFoundry:
-       <filename>adddepend</>, <filename>dbase</>, <filename>dbmirror</>,
-       <filename>fulltextindex</>, <filename>mac</>, <filename>userlock</>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove abandoned contrib modules:
-       <filename>mSQL-interface</>, <filename>tips</>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce)
-      </para>
-
-      <para>
-       These ports no longer had active maintainers.
-      </para>
-     </listitem>
-
-   </itemizedlist>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    Below you will find a detailed account of the
-    changes between <productname>PostgreSQL</productname> 8.2 and
-    the previous major release.
-   </para>
-
-   <sect3>
-    <title>Performance Improvements</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow the planner to reorder <link linkend="queries-join">outer
-       joins</link> in some circumstances (Tom)
-      </para>
-
-      <para>
-       In previous releases, outer joins would always be evaluated in
-       the order written in the query. This change allows the
-       query optimizer to consider reordering outer joins, in cases where
-       it can determine that the join order can be changed without
-       altering the meaning of the query.  This can make a
-       considerable performance difference for queries involving
-       multiple outer joins or mixed inner and outer joins.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve efficiency of <link
-       linkend="functions-comparisons"><literal>IN</>
-       (list-of-expressions)</link> clauses (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve sorting speed and reduce memory usage (Simon, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve subtransaction performance (Alvaro, Itagaki Takahiro,
-       Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>FILLFACTOR</> to <link
-       linkend="SQL-CREATETABLE">table</link> and <link
-       linkend="SQL-CREATEINDEX">index</link> creation (ITAGAKI
-       Takahiro)
-      </para>
-
-      <para>
-       This leaves extra free space in each table or index page,
-       allowing improved performance as the database grows.  This
-       is particularly valuable to maintain clustering.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Increase default values for <link
-       linkend="guc-shared-buffers"><varname>shared_buffers</></link>
-       and <varname>max_fsm_pages</>
-       (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve locking performance by breaking the lock manager tables into
-       sections
-       (Tom)
-      </para>
-
-      <para>
-       This allows locking to be more fine-grained, reducing
-       contention.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Reduce locking requirements of sequential scans (Qingqing
-       Zhou)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Reduce locking required for database creation and destruction
-       (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve the optimizer's selectivity estimates for <link
-       linkend="functions-like"><literal>LIKE</></link>, <link
-       linkend="functions-like"><literal>ILIKE</></link>, and
-       <link linkend="functions-posix-regexp">regular expression</link>
-       operations (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve planning of joins to <link linkend="ddl-inherit">inherited
-       tables</link> and <link linkend="queries-union"><literal>UNION
-       ALL</></link> views (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="guc-constraint-exclusion">constraint
-       exclusion</link> to be applied to <link
-       linkend="ddl-inherit">inherited</link> <command>UPDATE</> and
-       <command>DELETE</> queries (Tom)
-      </para>
-
-      <para>
-       <command>SELECT</> already honored constraint exclusion.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve planning of constant <literal>WHERE</> clauses, such as
-       a condition that depends only on variables inherited from an
-       outer query level (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Protocol-level unnamed prepared statements are re-planned
-       for each set of <literal>BIND</> values (Tom)
-      </para>
-
-      <para>
-       This improves performance because the exact parameter values
-       can be used in the plan.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
-       Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Avoid extra scan of tables without indexes during <link
-       linkend="SQL-VACUUM"><command>VACUUM</></link> (Greg Stark)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve multicolumn <link linkend="GiST"><acronym>GiST</></link>
-       indexing (Oleg, Teodor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove dead index entries before B-Tree page split (Junji
-       Teramoto)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Server Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow a forced switch to a new transaction log file (Simon, Tom)
-      </para>
-
-      <para>
-       This is valuable for keeping warm standby slave servers
-       in sync with the master.  Transaction log file switching now also happens
-       automatically during <link
-       linkend="functions-admin"><function>pg_stop_backup()</></link>.
-       This ensures that all
-       transaction log files needed for recovery can be archived immediately.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <acronym>WAL</> informational functions (Simon)
-      </para>
-
-      <para>
-       Add functions for interrogating the current transaction log insertion
-       point and determining <acronym>WAL</> filenames from the
-       hex <acronym>WAL</> locations displayed by <link
-       linkend="functions-admin"><function>pg_stop_backup()</></link>
-       and related functions.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve recovery from a crash during <acronym>WAL</> replay (Simon)
-      </para>
-
-      <para>
-       The server now does periodic checkpoints during <acronym>WAL</>
-       recovery, so if there is a crash, future <acronym>WAL</>
-       recovery is shortened.  This also eliminates the need for
-       warm standby servers to replay the entire log since the
-       base backup if they crash.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve reliability of long-term <acronym>WAL</> replay
-       (Heikki, Simon, Tom)
-      </para>
-
-      <para>
-       Formerly, trying to roll forward through more than 2 billion
-       transactions would not work due to XID wraparound.  This meant
-       warm standby servers had to be reloaded
-       from fresh base backups periodically.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="guc-archive-timeout"><varname>archive_timeout</></link>
-       to force transaction log file switches at a given interval (Simon)
-      </para>
-
-      <para>
-       This enforces a maximum replication delay for warm standby servers.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add native <link linkend="auth-ldap"><acronym>LDAP</></link>
-       authentication (Magnus Hagander)
-      </para>
-
-      <para>
-       This is particularly useful for platforms that do not
-       support <acronym>PAM</>, such as Windows.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="sql-grant-description-objects"><literal>GRANT
-       CONNECT ON DATABASE</></link> (Gevik Babakhani)
-      </para>
-
-      <para>
-       This gives SQL-level control over database access.  It works as
-       an additional filter on top of the existing
-       <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
-       controls.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <link linkend="ssl-tcp"><acronym>SSL</>
-       Certificate Revocation List</link> (<acronym>CRL</>) files
-       (Libor Hoho&scaron;)
-      </para>
-
-      <para>
-       The server and <application>libpq</> both recognize <acronym>CRL</>
-       files now.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <link linkend="GiST"><acronym>GiST</></link> indexes are
-       now clusterable (Teodor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove routine autovacuum server log entries (Bruce)
-      </para>
-
-      <para>
-       <link
-       linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
-       now shows autovacuum activity.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Track maximum XID age within individual tables, instead of whole databases (Alvaro)
-      </para>
-
-      <para>
-       This reduces the overhead involved in preventing transaction
-       ID wraparound, by avoiding unnecessary VACUUMs.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add last vacuum and analyze timestamp columns to the stats
-       collector (Larry Rosenman)
-      </para>
-
-      <para>
-       These values now appear in the <link
-       linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</></link>
-       system views.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve performance of statistics monitoring, especially
-       <varname>stats_command_string</>
-       (Tom, Bruce)
-      </para>
-
-      <para>
-       This release enables <varname>stats_command_string</> by
-       default, now that its overhead is minimal.  This means
-       <link
-       linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
-       will now show all active queries by default.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a <literal>waiting</> column to <link
-       linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
-       (Tom)
-      </para>
-
-      <para>
-       This allows <structname>pg_stat_activity</> to show all the
-       information included in the <application>ps</> display.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add configuration parameter <link
-       linkend="guc-update-process-title"><varname>update_process_title</></link>
-       to control whether the <application>ps</> display is updated
-       for every command (Bruce)
-      </para>
-
-      <para>
-       On platforms where it is expensive to update the <application>ps</>
-       display, it might be worthwhile to turn this off and rely solely on
-       <structname>pg_stat_activity</> for status information.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow units to be specified in configuration settings
-       (Peter)
-      </para>
-
-      <para>
-       For example, you can now set <link
-       linkend="guc-shared-buffers"><varname>shared_buffers</></link>
-       to <literal>32MB</> rather than mentally converting sizes.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <link linkend="config-setting">include
-       directives</link> in <filename>postgresql.conf</> (Joachim
-       Wieland)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve logging of protocol-level prepare/bind/execute
-       messages (Bruce, Tom)
-      </para>
-
-      <para>
-       Such logging now shows statement names, bind parameter
-       values, and the text of the query being executed.  Also,
-       the query text is properly included in logged error messages
-       when enabled by <varname>log_min_error_statement</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Prevent <link
-       linkend="guc-max-stack-depth"><varname>max_stack_depth</></link>
-       from being set to unsafe values
-      </para>
-
-      <para>
-       On platforms where we can determine the actual kernel stack depth
-       limit (which is most), make sure that the initial default value of
-       <varname>max_stack_depth</> is safe, and reject attempts to set it
-       to unsafely large values.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Enable highlighting of error location in query in more
-       cases (Tom)
-      </para>
-
-      <para>
-       The server is now able to report a specific error location for
-       some semantic errors (such as unrecognized column name), rather
-       than just for basic syntax errors as before.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <quote>failed to re-find parent key</> errors in
-       <command>VACUUM</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Clean out <filename>pg_internal.init</> cache files during server
-       restart (Simon)
-      </para>
-
-      <para>
-       This avoids a hazard that the cache files might contain stale
-       data after PITR recovery.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix race condition for truncation of a large relation across a
-       gigabyte boundary by <command>VACUUM</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix bug causing needless deadlock errors on row-level locks (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix bugs affecting multi-gigabyte hash indexes (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Each backend process is now its own process group leader (Tom)
-      </para>
-
-      <para>
-       This allows query cancel to abort subprocesses invoked from a
-       backend or archive/recovery process.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Query Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-INSERT"><command>INSERT</></link>/<link
-       linkend="SQL-UPDATE"><command>UPDATE</></link>/<link
-       linkend="SQL-DELETE"><command>DELETE</></link>
-       <literal>RETURNING</> (Jonah Harris, Tom)
-      </para>
-
-      <para>
-       This allows these commands to return values, such as the
-       computed serial key for a new row.  In the <command>UPDATE</>
-       case, values from the updated version of the row are returned.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for multiple-row <link
-       linkend="queries-values"><literal>VALUES</></link> clauses,
-       per SQL standard (Joe, Tom)
-      </para>
-
-      <para>
-       This allows <command>INSERT</> to insert multiple rows of
-       constants, or queries to generate result sets using constants.
-       For example, <literal>INSERT ...  VALUES (...), (...),
-       ....</>, and <literal>SELECT * FROM (VALUES (...), (...),
-       ....) AS alias(f1, ...)</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
-       and <link linkend="SQL-DELETE"><command>DELETE</></link>
-       to use an alias for the target table (Atsushi Ogawa)
-      </para>
-
-      <para>
-       The SQL standard does not permit an alias in these commands, but
-       many database systems allow one anyway for notational convenience.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
-       to set multiple columns with a list of values (Susanne
-       Ebrecht)
-      </para>
-
-      <para>
-       This is basically a short-hand for assigning the columns
-       and values in pairs.  The syntax is <literal>UPDATE tab
-       SET (<replaceable>column</>, ...) = (<replaceable>val</>, ...)</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make row comparisons work per standard (Tom)
-      </para>
-
-      <para>
-       The forms &lt;, &lt;=, &gt;, &gt;= now compare rows lexicographically,
-       that is, compare the first elements, if equal compare the second
-       elements, and so on.  Formerly they expanded to an AND condition
-       across all the elements, which was neither standard nor very useful.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-TRUNCATE"><literal>CASCADE</></link>
-       option to <command>TRUNCATE</> (Joachim Wieland)
-      </para>
-
-      <para>
-       This causes <command>TRUNCATE</> to automatically include all tables
-       that reference the specified table(s) via foreign keys.  While
-       convenient, this is a dangerous tool &mdash; use with caution!
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Support <literal>FOR UPDATE</> and <literal>FOR SHARE</>
-       in the same <link linkend="SQL-INSERT"><literal>SELECT</></link>
-       command (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="functions-comparisons"><literal>IS NOT
-       DISTINCT FROM</></link> (Pavel Stehule)
-      </para>
-
-      <para>
-       This operator is similar to equality (<literal>=</>), but
-       evaluates to true when both left and right operands are
-       <literal>NULL</>, and to false when just one is, rather than
-       yielding <literal>NULL</> in these cases.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve the length output used by <link
-       linkend="queries-union"><literal>UNION</></link>/<literal>INTERSECT</>/<literal>EXCEPT</>
-       (Tom)
-      </para>
-
-      <para>
-       When all corresponding columns are of the same defined length, that
-       length is used for the result, rather than a generic length.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="functions-like"><literal>ILIKE</></link>
-       to work for multi-byte encodings (Tom)
-      </para>
-
-      <para>
-       Internally, <literal>ILIKE</> now calls <function>lower()</>
-       and then uses <literal>LIKE</>.  Locale-specific regular
-       expression patterns still do not work in these encodings.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Enable <link
-       linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</></link>
-       to be turned <literal>on</> (Kevin Grittner)
-      </para>
-
-      <para>
-       This allows backslash escaping in strings to be disabled,
-       making <productname>PostgreSQL</> more
-       standards-compliant.  The default is <literal>off</> for backwards
-       compatibility, but future releases will default this to <literal>on</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Do not flatten subqueries that contain <literal>volatile</>
-       functions in their target lists (Jaime Casanova)
-      </para>
-
-      <para>
-       This prevents surprising behavior due to multiple evaluation
-       of a <literal>volatile</> function (such as <function>random()</>
-       or <function>nextval()</>).  It might cause performance
-       degradation in the presence of functions that are unnecessarily
-       marked as <literal>volatile</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add system views <link
-       linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</></link>
-       and <link
-       linkend="view-pg-cursors"><literal>pg_cursors</></link>
-       to show prepared statements and open cursors (Joachim Wieland, Neil)
-      </para>
-
-      <para>
-       These are very useful in pooled connection setups.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Support portal parameters in <link
-       linkend="SQL-EXPLAIN"><command>EXPLAIN</></link> and <link
-       linkend="SQL-EXECUTE"><command>EXECUTE</></link> (Tom)
-      </para>
-
-      <para>
-       This allows, for example, <acronym>JDBC</> <literal>?</> parameters to
-       work in these commands.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       If <acronym>SQL</>-level <link
-       linkend="SQL-PREPARE"><command>PREPARE</></link> parameters
-       are unspecified, infer their types from the content of the
-       query (Neil)
-      </para>
-
-      <para>
-       Protocol-level <command>PREPARE</> already did this.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <literal>LIMIT</> and <literal>OFFSET</> to exceed
-       two billion (Dhanaraj M)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Object Manipulation Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <literal>TABLESPACE</> clause to <link
-       linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
-       (Neil)
-      </para>
-
-      <para>
-       This allows a tablespace to be specified for the new table.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>ON COMMIT</> clause to <link
-       linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
-       (Neil)
-      </para>
-
-      <para>
-       This allows temporary tables to be truncated or dropped on
-       transaction commit.  The default behavior is for the table
-       to remain until the session ends.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>INCLUDING CONSTRAINTS</> to <link
-       linkend="SQL-CREATETABLE"><command>CREATE TABLE LIKE</></link>
-       (Greg Stark)
-      </para>
-
-      <para>
-       This allows easy copying of <literal>CHECK</> constraints to a new
-       table.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow the creation of placeholder (shell) <link
-       linkend="SQL-CREATETYPE">types</link> (Martijn van Oosterhout)
-      </para>
-
-      <para>
-       A shell type declaration creates a type name, without specifying
-       any of the details of the type.  Making a shell type is useful
-       because it allows cleaner declaration of the type's input/output
-       functions, which must exist before the type can be defined <quote>for
-       real</>.  The syntax is <command>CREATE TYPE <replaceable
-       class="parameter">typename</replaceable></>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <link linkend="SQL-CREATEAGGREGATE">Aggregate functions</link>
-       now support multiple input parameters (Sergey Koposov, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new aggregate creation <link
-       linkend="SQL-CREATEAGGREGATE">syntax</link> (Tom)
-      </para>
-
-      <para>
-       The new syntax is <command>CREATE AGGREGATE
-       <replaceable>aggname</> (<replaceable>input_type</>)
-       (<replaceable>parameter_list</>)</command>.  This more
-       naturally supports the new multi-parameter aggregate
-       functionality.  The previous syntax is still supported.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="SQL-ALTERROLE"><command>ALTER ROLE PASSWORD NULL</></link>
-       to remove a previously set role password (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>DROP</> object <literal>IF EXISTS</> for many
-       object types (Andrew)
-      </para>
-
-      <para>
-       This allows <command>DROP</> operations on non-existent
-       objects without generating an error.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-DROP-OWNED"><literal>DROP OWNED</></link>
-       to drop all objects owned by a role (Alvaro)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-REASSIGN-OWNED"><literal>REASSIGN
-       OWNED</></link> to reassign ownership of all objects owned
-       by a role (Alvaro)
-      </para>
-
-      <para>
-       This, and <literal>DROP OWNED</> above, facilitate dropping
-       roles.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-GRANT"><command>GRANT ON SEQUENCE</></link>
-       syntax (Bruce)
-      </para>
-
-      <para>
-       This was added for setting sequence-specific permissions.
-       <literal>GRANT ON TABLE</> for sequences is still supported
-       for backward compatibility.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-GRANT"><literal>USAGE</></link>
-       permission for sequences that allows only <function>currval()</>
-       and <function>nextval()</>, not <function>setval()</>
-       (Bruce)
-      </para>
-
-      <para>
-       <literal>USAGE</> permission allows more fine-grained
-       control over sequence access.  Granting <literal>USAGE</>
-       allows users to increment
-       a sequence, but prevents them from setting the sequence to
-       an arbitrary value using <function>setval()</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-ALTERTABLE"><literal>ALTER TABLE
-       [ NO ] INHERIT</></link> (Greg Stark)
-      </para>
-
-      <para>
-       This allows inheritance to be adjusted dynamically, rather than
-       just at table creation and destruction.  This is very valuable
-       when using inheritance to implement table partitioning.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-COMMENT">comments</link> on global
-       objects to be stored globally (Kris Jurka)
-      </para>
-
-      <para>
-       Previously, comments attached to databases were stored in individual
-       databases, making them ineffective, and there was no provision
-       at all for comments on roles or tablespaces.  This change adds a new
-       shared catalog <link
-       linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>
-       and stores comments on databases, roles, and tablespaces therein.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Utility Command Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add option to allow indexes to be created without blocking
-       concurrent writes to the table (Greg Stark, Tom)
-      </para>
-
-      <para>
-       The new syntax is <link linkend="SQL-CREATEINDEX"><command>CREATE
-       INDEX CONCURRENTLY</></link>.  The default behavior is
-       still to block table modification while a index is being
-       created.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Provide <link linkend="functions-advisory-locks">advisory
-       locking</link> functionality (Abhijit Menon-Sen, Tom)
-      </para>
-
-      <para>
-       This is a new locking API designed to replace what used to be
-       in /contrib/userlock.  The userlock code is now on pgfoundry.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-COPY"><command>COPY</></link> to
-       dump a <command>SELECT</> query (Zoltan Boszormenyi, Karel
-       Zak)
-      </para>
-
-      <para>
-       This allows <command>COPY</> to dump arbitrary <acronym>SQL</>
-       queries. The syntax is <literal>COPY (SELECT ...) TO</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make the <link linkend="SQL-COPY"><command>COPY</></link>
-       command return a command tag that includes the number of
-       rows copied (Volkan YAZICI)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link>
-       to expire rows without being affected by other concurrent
-       <command>VACUUM</> operations (Hannu Krossing, Alvaro, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <link linkend="APP-INITDB"><application>initdb</></link>
-       detect the operating system locale and set the default
-       <varname>DateStyle</> accordingly (Peter)
-      </para>
-
-      <para>
-       This makes it more likely that the installed
-       <filename>postgresql.conf</> <varname>DateStyle</> value will
-       be as desired.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Reduce number of progress messages displayed by <application>initdb</> (Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Date/Time Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow full timezone names in <link
-       linkend="datatype-datetime"><type>timestamp</></link> input values
-       (Joachim Wieland)
-      </para>
-
-      <para>
-       For example, <literal>'2006-05-24 21:11
-       America/New_York'::timestamptz</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Support configurable timezone abbreviations (Joachim Wieland)
-      </para>
-
-      <para>
-       A desired set of timezone abbreviations can be chosen via the
-       configuration parameter <link
-       linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</></link>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</></link>
-       and <link
-       linkend="view-pg-timezone-names"><varname>pg_timezone_names</></link>
-       views to show supported timezones (Magnus Hagander)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="functions-datetime-table"><function>clock_timestamp()</></link>,
-       <link
-       linkend="functions-datetime-table"><function>statement_timestamp()</></link>,
-       and <link
-       linkend="functions-datetime-table"><function>transaction_timestamp()</></link>
-       (Bruce)
-      </para>
-
-      <para>
-       <function>clock_timestamp()</> is the current wall-clock time,
-       <function>statement_timestamp()</> is the time the current
-       statement arrived at the server, and
-       <function>transaction_timestamp()</> is an alias for
-       <function>now()</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link
-       linkend="functions-formatting"><function>to_char()</></link>
-       to print localized month and day names (Euler Taveira de
-       Oliveira)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link
-       linkend="functions-formatting"><function>to_char(time)</></link>
-       and <link
-       linkend="functions-formatting"><function>to_char(interval)</></link>
-       to output <acronym>AM</>/<acronym>PM</> specifications
-       (Bruce)
-      </para>
-
-      <para>
-       Intervals and times are treated as 24-hour periods, e.g.
-       <literal>25 hours</> is considered <acronym>AM</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new function <link
-       linkend="functions-datetime-table"><function>justify_interval()</></link>
-       to adjust interval units (Mark Dilger)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow timezone offsets up to 14:59 away from GMT
-      </para>
-
-      <para>
-       Kiribati uses GMT+14, so we'd better accept that.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Interval computation improvements (Michael Glaesemann, Bruce)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Other Data Type and Function Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow arrays to contain <literal>NULL</> elements (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow assignment to array elements not contiguous with the existing
-       entries (Tom)
-      </para>
-
-      <para>
-       The intervening array positions will be filled with nulls.
-       This is per SQL standard.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New built-in <link linkend="functions-array">operators</link>
-       for array-subset comparisons (<literal>@&gt;</>,
-       <literal>&lt;@</>, <literal>&amp;&amp;</>) (Teodor, Tom)
-      </para>
-
-      <para>
-       These operators can be indexed for many data types using
-       <acronym>GiST</> or <acronym>GIN</> indexes.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add convenient arithmetic <link
-       linkend="cidr-inet-operators-table">operations</link> on
-       <type>INET</>/<type>CIDR</> values (Stephen R. van den
-       Berg)
-      </para>
-
-      <para>
-       The new operators are <literal>&amp;</> (and), <literal>|</>
-       (or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>,
-       <type>inet</> <literal>-</> <type>int8</>, and
-       <type>inet</> <literal>-</> <type>inet</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new <link
-       linkend="functions-aggregate-statistics-table">aggregate functions</link>
-       from SQL:2003 (Neil)
-      </para>
-
-      <para>
-       The new functions are <function>var_pop()</>,
-       <function>var_samp()</>, <function>stddev_pop()</>, and
-       <function>stddev_samp()</>.  <function>var_samp()</> and
-       <function>stddev_samp()</> are merely renamings of the
-       existing aggregates <function>variance()</> and
-       <function>stddev()</>.  The latter names remain available
-       for backward compatibility.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add SQL:2003 statistical <link
-       linkend="functions-aggregate-statistics-table">aggregates</link>
-       (Sergey Koposov)
-      </para>
-
-      <para>
-       New functions:  <function>regr_intercept()</>,
-       <function>regr_slope()</>, <function>regr_r2()</>,
-       <function>corr()</>, <function>covar_samp()</>,
-       <function>covar_pop()</>, <function>regr_avgx()</>,
-       <function>regr_avgy()</>, <function>regr_sxy()</>,
-       <function>regr_sxx()</>, <function>regr_syy()</>,
-       <function>regr_count()</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
-       based on other domains (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Properly enforce domain <link
-       linkend="ddl-constraints"><literal>CHECK</></link> constraints
-       everywhere (Neil, Tom)
-      </para>
-
-      <para>
-       For example, the result of a user-defined function that is
-       declared to return a domain type is now checked against the
-       domain's constraints. This closes a significant hole in the domain
-       implementation.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix problems with dumping renamed <link
-       linkend="datatype-serial"><type>SERIAL</></link> columns
-       (Tom)
-      </para>
-
-      <para>
-       The fix is to dump a <type>SERIAL</> column by explicitly
-       specifying its <literal>DEFAULT</> and sequence elements,
-       and reconstructing the <type>SERIAL</> column on reload
-       using a new <link linkend="SQL-ALTERSEQUENCE"><command>ALTER
-       SEQUENCE OWNED BY</></link> command.  This also allows
-       dropping a <type>SERIAL</> column specification.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a server-side sleep function <link
-       linkend="functions-datetime-delay"><function>pg_sleep()</></link>
-       (Joachim Wieland)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add all comparison operators for the <link
-       linkend="datatype-oid"><type>tid</></link> (tuple id) data
-       type (Mark Kirkwood, Greg Stark, Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>PL/PgSQL Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <literal>TG_table_name</> and <literal>TG_table_schema</> to
-       trigger parameters (Andrew)
-      </para>
-
-      <para>
-       <literal>TG_relname</> is now deprecated.  Comparable
-       changes have been made in the trigger parameters for the other
-       PLs as well.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <literal>FOR</> statements to return values to scalars
-       as well as records and row types (Pavel Stehule)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a <literal>BY</> clause to the <literal>FOR</> loop,
-       to control the iteration increment (Jaime Casanova)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>STRICT</> to <link
-       linkend="plpgsql-statements-sql-onerow"><command>SELECT
-       INTO</></link> (Matt Miller)
-      </para>
-
-      <para>
-       <literal>STRICT</> mode throws an exception if more or less
-       than one row is returned by the <command>SELECT</>, for
-       <productname>Oracle PL/SQL</> compatibility.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>PL/Perl Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <literal>table_name</> and <literal>table_schema</> to
-       trigger parameters (Adam Sj&oslash;gren)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add prepared queries (Dmitry Karasik)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <literal>$_TD</> trigger data a global variable (Andrew)
-      </para>
-
-      <para>
-       Previously, it was lexical, which caused unexpected sharing
-       violations.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Run PL/Perl and PL/PerlU in separate interpreters, for security
-       reasons (Andrew)
-      </para>
-      <para>
-       In consequence, they can no longer share data nor loaded modules.
-       Also, if Perl has not been compiled with the requisite flags to
-       allow multiple interpreters, only one of these languages can be used
-       in any given backend process.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>PL/Python Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Named parameters are passed as ordinary variables, as well as in the
-       <literal>args[]</> array (Sven Suursoho)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>table_name</> and <literal>table_schema</> to
-       trigger parameters (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow returning of composite types and result sets (Sven Suursoho)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Return result-set as <literal>list</>, <literal>iterator</>,
-       or <literal>generator </>(Sven Suursoho)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow functions to return <literal>void</> (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Python 2.5 is now supported (Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add new command <literal>\password</> for changing role
-       password with client-side password encryption (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <literal>\c</> to connect to a new host and port
-       number (David, Volkan YAZICI)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add tablespace display to <literal>\l+</> (Philip Yarra)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve <literal>\df</> slash command to include the argument
-       names and modes (<literal>OUT</> or <literal>INOUT</>) of
-       the function (David Fetter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Support binary <command>COPY</> (Andreas Pflug)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add option to run the entire session in a single transaction
-       (Simon)
-      </para>
-
-      <para>
-       Use option <literal>-1</> or <literal>--single-transaction</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Support for automatically retrieving <command>SELECT</>
-       results in batches using a cursor (Chris Mair)
-      </para>
-
-      <para>
-       This is enabled using <command>\set FETCH_COUNT
-       <replaceable>n</></command>. This
-       feature allows large result sets to be retrieved in
-       <application>psql</> without attempting to buffer the entire
-       result set in memory.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make multi-line values align in the proper column
-       (Martijn van Oosterhout)
-      </para>
-
-      <para>
-       Field values containing newlines are now displayed in a more
-       readable fashion.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Save multi-line statements as a single entry, rather than
-       one line at a time (Sergey E. Koposov)
-      </para>
-
-      <para>
-       This makes up-arrow recall of queries easier.  (This is
-       not available on Windows, because that platform uses the native
-       command-line editing present in the operating system.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make the line counter 64-bit so it can handle files with more
-       than two billion lines (David Fetter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Report both the returned data and the command status tag
-       for <command>INSERT</>/<command>UPDATE</>/<command>DELETE
-       RETURNING</> (Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow complex selection of objects to be included or excluded
-       by <application>pg_dump</> (Greg Sabino Mullane)
-      </para>
-
-      <para>
-       <application>pg_dump</> now supports multiple <literal>-n</>
-       (schema) and <literal>-t</> (table) options, and adds
-       <literal>-N</> and <literal>-T</> options to exclude objects.
-       Also, the arguments of these switches can now be wild-card expressions
-       rather than single object names, for example
-       <literal>-t 'foo*'</>, and a schema can be part of
-       a <literal>-t</> or <literal>-T</> switch, for example
-       <literal>-t schema1.table1</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
-       <literal>--no-data-for-failed-tables</> option to suppress
-       loading data if table creation failed (i.e., the table already
-       exists) (Martin Pitt)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
-       option to run the entire session in a single transaction
-       (Simon)
-      </para>
-
-      <para>
-       Use option <literal>-1</> or <literal>--single-transaction</>.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title><link linkend="libpq"><application>libpq</></link> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="libpq-misc"><function>PQencryptPassword()</></link>
-       to encrypt passwords (Tom)
-      </para>
-
-      <para>
-       This allows passwords to be sent pre-encrypted for commands
-       like <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ...
-       PASSWORD</></link>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add function <link
-       linkend="libpq-threading"><function>PQisthreadsafe()</></link>
-       (Bruce)
-      </para>
-
-      <para>
-       This allows applications to query the thread-safety status
-       of the library.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="libpq-exec-main"><function>PQdescribePrepared()</></link>,
-       <link
-       linkend="libpq-exec-main"><function>PQdescribePortal()</></link>,
-       and related functions to return information about previously
-       prepared statements and open cursors (Volkan YAZICI)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <link linkend="libpq-ldap"><acronym>LDAP</></link> lookups
-       from <link
-       linkend="libpq-pgservice"><filename>pg_service.conf</></link>
-       (Laurenz Albe)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow a hostname in <link
-       linkend="libpq-pgpass"><filename>~/.pgpass</></link>
-       to match the default socket directory (Bruce)
-      </para>
-
-      <para>
-       A blank hostname continues to match any Unix-socket connection,
-       but this addition allows entries that are specific to one of
-       several postmasters on the machine.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow <link linkend="SQL-SHOW"><command>SHOW</></link> to
-       put its result into a variable (Joachim Wieland)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link linkend="SQL-COPY"><command>COPY TO STDOUT</></link>
-       (Joachim Wieland)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add regression tests (Joachim Wieland, Michael)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Major source code cleanups (Joachim Wieland, Michael)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title><application>Windows</> Port</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</>
-       server (Magnus, Hiroshi Saito)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <acronym>MSVC</> support for utility commands and <link
-       linkend="APP-PGDUMP"><application>pg_dump</></link> (Hiroshi
-       Saito)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for Windows code pages <literal>1253</>,
-       <literal>1254</>, <literal>1255</>, and <literal>1257</>
-       (Kris Jurka)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Drop privileges on startup, so that the server can be started from
-       an administrative account (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Stability fixes (Qingqing Zhou, Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add native semaphore implementation (Qingqing Zhou)
-      </para>
-
-      <para>
-       The previous code mimicked SysV semaphores.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Source Code Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <link linkend="GIN"><acronym>GIN</></link> (Generalized
-       Inverted iNdex) index access method (Teodor, Oleg)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove R-tree indexing (Tom)
-      </para>
-
-      <para>
-       Rtree has been re-implemented using <link
-       linkend="GiST"><acronym>GiST</></link>. Among other
-       differences, this means that rtree indexes now have support
-       for crash recovery via write-ahead logging (WAL).
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Reduce libraries needlessly linked into the backend (Martijn
-       van Oosterhout, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a configure flag to allow libedit to be preferred over
-       <acronym>GNU</> readline (Bruce)
-      </para>
-
-      <para>
-       Use configure <link
-       linkend="configure"><literal>--with-libedit-preferred</></link>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow installation into directories containing spaces
-       (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve ability to relocate installation directories (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <productname>Solaris x86_64</> using the
-       <productname>Solaris</> compiler (Pierre Girard, Theo
-       Schlossnagle, Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <application>DTrace</> support (Robert Lor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>PG_VERSION_NUM</> for use by third-party
-       applications wanting to test the backend version in C using &gt;
-       and &lt; comparisons (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</>
-       (Mark Wong)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <literal>LWLOCK_STATS</> define to report locking
-       activity (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Emit warnings for unknown <application>configure</> options
-       (Martijn van Oosterhout)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add server support for <quote>plugin</> libraries
-       that can be used for add-on tasks such as debugging and performance
-       measurement (Korry Douglas)
-      </para>
-
-      <para>
-       This consists of two features: a table of <quote>rendezvous
-       variables</> that allows separately-loaded shared libraries to
-       communicate, and a new configuration parameter <link
-       linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
-       that allows libraries to be loaded into specific sessions without
-       explicit cooperation from the client application.  This allows
-       external add-ons to implement features such as a PL/PgSQL debugger.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Rename existing configuration parameter
-       <varname>preload_libraries</> to <link
-       linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</></link>
-       (Tom)
-      </para>
-
-      <para>
-       This was done for clarity in comparison to
-       <varname>local_preload_libraries</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new configuration parameter <link
-       linkend="guc-server-version-num"><varname>server_version_num</></link>
-       (Greg Sabino Mullane)
-      </para>
-
-      <para>
-       This is like <varname>server_version</varname>, but is an
-       integer, e.g.  <literal>80200</>. This allows applications to
-       make version checks more easily.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a configuration parameter <link
-       linkend="guc-seq-page-cost"><varname>seq_page_cost</></link>
-       (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Re-implement the <link linkend="regress">regression test</link> script as a C program
-       (Magnus, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow loadable modules to allocate shared memory and
-       lightweight locks (Marc Munro)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add automatic initialization and finalization of dynamically
-       loaded libraries (Ralf Engelschall, Tom)
-      </para>
-
-      <para>
-       New <link linkend="xfunc-c-dynload">functions</link>
-       <function>_PG_init()</> and <function>_PG_fini()</> are
-       called if the library defines such symbols.  Hence we no
-       longer need to specify an initialization function in
-       <varname>shared_preload_libraries</>; we can assume that
-       the library used the <function>_PG_init()</> convention
-       instead.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <link
-       linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
-       header block to all shared object files (Martijn van
-       Oosterhout)
-      </para>
-
-      <para>
-       The magic block prevents version mismatches between loadable object
-       files and servers.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-        Add shared library support for AIX (Laurenz Albe)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <link linkend="datatype-xml"><acronym>XML</></link>
-       documentation section (Bruce)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-   <sect3>
-    <title>Contrib Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Major tsearch2 improvements (Oleg, Teodor)
-      </para>
-
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         multibyte encoding support, including <acronym>UTF8</>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         query rewriting support
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         improved ranking functions
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         thesaurus dictionary support
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Ispell dictionaries now recognize <application>MySpell</>
-         format, used by <application>OpenOffice</>
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         <acronym>GIN</> support
-        </para>
-       </listitem>
-
-      </itemizedlist>
-
-     </listitem>
-
-     <listitem>
-      <para>
-       Add adminpack module containing <application>Pgadmin</> administration
-       functions (Dave)
-      </para>
-
-      <para>
-       These functions provide additional file system access
-       routines not present in the default <productname>PostgreSQL</>
-       server.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add sslinfo module (Victor Wagner)
-      </para>
-
-      <para>
-       Reports information about the current connection's <acronym>SSL</>
-       certificate.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add pgrowlocks module (Tatsuo)
-      </para>
-
-      <para>
-       This shows row locking information for a specified table.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add hstore module (Oleg, Teodor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add isn module, replacing isbn_issn (Jeremy Kronuz)
-      </para>
-
-      <para>
-       This new implementation supports <acronym>EAN13</>, <acronym>UPC</>,
-       <acronym>ISBN</> (books), <acronym>ISMN</> (music), and
-       <acronym>ISSN</> (serials).
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add index information functions to pgstattuple (ITAGAKI Takahiro,
-       Satoshi Nagayasu)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add pg_freespacemap module to display free space map information
-       (Mark Kirkwood)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       pgcrypto now has all planned functionality (Marko Kreen)
-      </para>
-      <itemizedlist>
-       <listitem>
-        <para>
-         Include iMath library in pgcrypto to have the public-key encryption
-         functions always available.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add SHA224 algorithm that was missing in OpenBSD code.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Activate builtin code for SHA224/256/384/512 hashes on older
-         OpenSSL to have those algorithms always available.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         New function gen_random_bytes() that returns cryptographically strong
-         randomness.  Useful for generating encryption keys.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Remove digest_exists(), hmac_exists() and cipher_exists() functions.
-        </para>
-       </listitem>
-      </itemizedlist>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improvements to cube module (Joshua Reich)
-      </para>
-
-      <para>
-       New functions are <function>cube(float[])</>,
-       <function>cube(float[], float[])</>, and
-       <function>cube_subset(cube, int4[])</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add async query capability to dblink (Kai Londenberg,
-       Joe Conway)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New operators for array-subset comparisons (<literal>@&gt;</>,
-       <literal>&lt;@</>, <literal>&amp;&amp;</>) (Tom)
-      </para>
-
-      <para>
-       Various contrib packages already had these operators for their
-       datatypes, but the naming wasn't consistent.  We have now added
-       consistently named array-subset comparison operators to the core code
-       and all the contrib packages that have such functionality.
-       (The old names remain available, but are deprecated.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add uninstall scripts for all contrib packages that have install
-       scripts (David, Josh Drake)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-
-   </sect3>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-17">
-  <title>Release 8.1.17</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-03-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.16.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.17</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.15,
-    see the release notes for 8.1.15.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Prevent error recursion crashes when encoding conversion fails (Tom)
-     </para>
-
-     <para>
-      This change extends fixes made in the last two minor releases for
-      related failure scenarios.  The previous fixes were narrowly tailored
-      for the original problem reports, but we have now recognized that
-      <emphasis>any</> error thrown by an encoding conversion function could
-      potentially lead to infinite recursion while trying to report the
-      error.  The solution therefore is to disable translation and encoding
-      conversion and report the plain-ASCII form of any error message,
-      if we find we have gotten into a recursive error reporting situation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Disallow <command>CREATE CONVERSION</> with the wrong encodings
-      for the specified conversion function (Heikki)
-     </para>
-
-     <para>
-      This prevents one possible scenario for encoding conversion failure.
-      The previous change is a backstop to guard against other kinds of
-      failures in the same area.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix core dump when <function>to_char()</> is given format codes that
-      are inappropriate for the type of the data argument (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
-      (Tom)
-     </para>
-
-     <para>
-      This mistake could lead to Assert failures in an Assert-enabled build,
-      or an <quote>unexpected CASE WHEN clause</> error message in other
-      cases, when trying to examine or dump a view.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
-     </para>
-
-     <para>
-      If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
-      were executed by someone other than the table owner, the
-      <structname>pg_type</> entry for the table's TOAST table would end up
-      marked as owned by that someone.  This caused no immediate problems,
-      since the permissions on the TOAST rowtype aren't examined by any
-      ordinary database operation.  However, it could lead to unexpected
-      failures if one later tried to drop the role that issued the command
-      (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
-      warnings from <application>pg_dump</> after having done so (in 8.3).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Clean up PL/pgSQL error status variables fully at block exit
-      (Ashesh Vashi and Dave Page)
-     </para>
-
-     <para>
-      This is not a problem for PL/pgSQL itself, but the omission could cause
-      the PL/pgSQL Debugger to crash while examining the state of a function.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
-      of known timezone abbreviations (Xavier Bugaud)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-16">
-  <title>Release 8.1.16</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-02-02</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.15.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.16</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.15,
-    see the release notes for 8.1.15.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix crash in autovacuum (Alvaro)
-     </para>
-
-     <para>
-      The crash occurs only after vacuuming a whole database for
-      anti-transaction-wraparound purposes, which means that it occurs
-      infrequently and is hard to track down.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve handling of URLs in <function>headline()</> function (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve handling of overlength headlines in <function>headline()</>
-      function (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent possible Assert failure or misconversion if an encoding
-      conversion is created with the wrong conversion function for the
-      specified pair of encodings (Tom, Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Avoid unnecessary locking of small tables in <command>VACUUM</>
-      (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure that the contents of a holdable cursor don't depend on the
-      contents of TOAST tables (Tom)
-     </para>
-
-     <para>
-      Previously, large field values in a cursor result might be represented
-      as TOAST pointers, which would fail if the referenced table got dropped
-      before the cursor is read, or if the large value is deleted and then
-      vacuumed away.  This cannot happen with an ordinary cursor,
-      but it could with a cursor that is held past its creating transaction.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix uninitialized variables in <filename>contrib/tsearch2</>'s
-      <function>get_covers()</> function (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>configure</> script to properly report failure when
-      unable to obtain linkage information for PL/Perl (Andrew)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make all documentation reference <literal>pgsql-bugs</> and/or
-      <literal>pgsql-hackers</> as appropriate, instead of the
-      now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
-      mailing lists (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2009a (for
-      Kathmandu and historical DST corrections in Switzerland, Cuba)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-15">
-  <title>Release 8.1.15</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-11-03</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.14.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.15</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.  Also, if you were running a previous
-    8.1.X release, it is recommended to <command>REINDEX</> all GiST
-    indexes after the upgrade.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix GiST index corruption due to marking the wrong index entry
-      <quote>dead</> after a deletion (Teodor)
-     </para>
-
-     <para>
-      This would result in index searches failing to find rows they
-      should have found.  Corrupted indexes can be fixed with
-      <command>REINDEX</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix backend crash when the client encoding cannot represent a localized
-      error message (Tom)
-     </para>
-
-     <para>
-      We have addressed similar issues before, but it would still fail if
-      the <quote>character has no equivalent</> message itself couldn't
-      be converted.  The fix is to disable localization and send the plain
-      ASCII error message when we detect such a situation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible crash when deeply nested functions are invoked from
-      a trigger (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
-      in a function call in <literal>FROM</>,  a multi-row <literal>VALUES</>
-      list, or a <literal>RETURNING</> list (Tom)
-     </para>
-
-     <para>
-      The usual symptom of this problem is an <quote>unrecognized node type</>
-      error.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure an error is reported when a newly-defined PL/pgSQL trigger
-      function is invoked as a normal function (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent possible collision of <structfield>relfilenode</> numbers
-      when moving a table to another tablespace with <command>ALTER SET
-      TABLESPACE</> (Heikki)
-     </para>
-
-     <para>
-      The command tried to re-use the existing filename, instead of
-      picking one that is known unused in the destination directory.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect tsearch2 headline generation when single query
-      item matches first word of text (Sushant Sinha)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix improper display of fractional seconds in interval values when
-      using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
-      build (Ron Mayer)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
-      behave correctly when the passed tuple and tuple descriptor have
-      different numbers of columns (Tom)
-     </para>
-
-     <para>
-      This situation is normal when a table has had columns added or removed,
-      but these two functions didn't handle it properly.
-      The only likely consequence is an incorrect error indication.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix recent breakage of <literal>pg_ctl restart</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008i (for
-      DST law changes in Argentina, Brazil, Mauritius, Syria)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-14">
-  <title>Release 8.1.14</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-09-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.13.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.14</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Widen local lock counters from 32 to 64 bits (Tom)
-     </para>
-
-     <para>
-      This responds to reports that the counters could overflow in
-      sufficiently long transactions, leading to unexpected <quote>lock is
-      already held</> errors.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible duplicate output of tuples during a GiST index scan (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add checks in executor startup to ensure that the tuples produced by an
-      <command>INSERT</> or <command>UPDATE</> will match the target table's
-      current rowtype (Tom)
-     </para>
-
-     <para>
-      <command>ALTER COLUMN TYPE</>, followed by re-use of a previously
-      cached plan, could produce this type of situation.  The check protects
-      against data corruption and/or crashes that could ensue.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
-      argument as a timezone abbreviation, and only try it as a full timezone
-      name if that fails, rather than the other way around as formerly (Tom)
-     </para>
-
-     <para>
-      The timestamp input functions have always resolved ambiguous zone names
-      in this order.  Making <literal>AT TIME ZONE</> do so as well improves
-      consistency, and fixes a compatibility bug introduced in 8.1:
-      in ambiguous cases we now behave the same as 8.0 and before did,
-      since in the older versions <literal>AT TIME ZONE</> accepted
-      <emphasis>only</> abbreviations.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix datetime input functions to correctly detect integer overflow when
-      running on a 64-bit platform (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve performance of writing very long log messages to syslog (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
-      ON</> query (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner bug with nested sub-select expressions (Tom)
-     </para>
-
-     <para>
-      If the outer sub-select has no direct dependency on the parent query,
-      but the inner one does, the outer value might not get recalculated
-      for new parent query rows.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner to estimate that <literal>GROUP BY</> expressions yielding
-      boolean results always result in two groups, regardless of the
-      expressions' contents (Tom)
-     </para>
-
-     <para>
-      This is very substantially more accurate than the regular <literal>GROUP
-      BY</> estimate for certain boolean tests like <replaceable>col</>
-      <literal>IS NULL</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/PgSQL to not fail when a <literal>FOR</> loop's target variable
-      is a record containing composite-type fields (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
-      about the encoding of data sent to or from Tcl (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Python to work with Python 2.5
-     </para>
-
-     <para>
-      This is a back-port of fixes made during the 8.2 development cycle.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve <application>pg_dump</> and <application>pg_restore</>'s
-      error reporting after failure to send a SQL command (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_ctl</> to properly preserve postmaster
-      command-line arguments across a <literal>restart</> (Bruce)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008f (for
-      DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
-      Pakistan, Palestine, and Paraguay)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-13">
-  <title>Release 8.1.13</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-06-12</simpara>
-  </note>
-
-  <para>
-   This release contains one serious and one minor bug fix over 8.1.12.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.13</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
-     </para>
-
-     <para>
-      Before this fix, a negative constant in a view or rule might be dumped
-      as, say, <literal>-42::integer</>, which is subtly incorrect: it should
-      be <literal>(-42)::integer</> due to operator precedence rules.
-      Usually this would make little difference, but it could interact with
-      another recent patch to cause
-      <productname>PostgreSQL</> to reject what had been a valid
-      <command>SELECT DISTINCT</> view query.  Since this could result in
-      <application>pg_dump</> output failing to reload, it is being treated
-      as a high-priority fix.  The only released versions in which dump
-      output is actually incorrect are 8.3.1 and 8.2.7.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>ALTER AGGREGATE ... OWNER TO</> update
-      <structname>pg_shdepend</> (Tom)
-     </para>
-
-     <para>
-      This oversight could lead to problems if the aggregate was later
-      involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
-      operation.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-12">
-  <title>Release 8.1.12</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>never released</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.11.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.12</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
-      column is correctly checked to see if it's been initialized to all
-      non-nulls (Brendan Jurd)
-     </para>
-
-     <para>
-      Previous versions neglected to check this requirement at all.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix possible <command>CREATE TABLE</> failure when inheriting the
-      <quote>same</> constraint from multiple parent relations that
-      inherited that constraint from a common ancestor (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix conversions between ISO-8859-5 and other encodings to handle
-      Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
-      two dots) (Sergey Burladyan)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix a few datatype input functions
-      that were allowing unused bytes in their results to contain
-      uninitialized, unpredictable values (Tom)
-     </para>
-
-     <para>
-      This could lead to failures in which two apparently identical literal
-      values were not seen as equal, resulting in the parser complaining
-      about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
-      expressions.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix a corner case in regular-expression substring matching
-      (<literal>substring(<replaceable>string</> from
-      <replaceable>pattern</>)</literal>) (Tom)
-     </para>
-
-     <para>
-      The problem occurs when there is a match to the pattern overall but
-      the user has specified a parenthesized subexpression and that
-      subexpression hasn't got a match.  An example is
-      <literal>substring('foo' from 'foo(bar)?')</>.
-      This should return NULL, since <literal>(bar)</> isn't matched, but
-      it was mistakenly returning the whole-pattern match instead (ie,
-      <literal>foo</>).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2008c (for
-      DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
-      Argentina/San_Luis, and Chile)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect result from <application>ecpg</>'s
-      <function>PGTYPEStimestamp_sub()</> function (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix core dump in <filename>contrib/xml2</>'s
-      <function>xpath_table()</> function when the input query returns a
-      NULL value (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <filename>contrib/xml2</>'s makefile to not override
-      <literal>CFLAGS</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
-      4.3 (Tom)
-     </para>
-
-     <para>
-      This problem affects <quote>old style</> (V0) C functions that
-      return boolean.  The fix is already in 8.3, but the need to
-      back-patch it was not realized at the time.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
-      race condition (Tom)
-     </para>
-
-     <para>
-      In rare cases a session that had just executed a
-      <command>LISTEN</> might not get a notification, even though
-      one would be expected because the concurrent transaction executing
-      <command>NOTIFY</> was observed to commit later.
-     </para>
-
-     <para>
-      A side effect of the fix is that a transaction that has executed
-      a not-yet-committed <command>LISTEN</> command will not see any
-      row in <structname>pg_listener</> for the <command>LISTEN</>,
-      should it choose to look; formerly it would have.  This behavior
-      was never documented one way or the other, but it is possible that
-      some applications depend on the old behavior.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
-      prepared transaction (Tom)
-     </para>
-
-     <para>
-      This was formerly allowed but trying to do it had various unpleasant
-      consequences, notably that the originating backend could not exit
-      as long as an <command>UNLISTEN</> remained uncommitted.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix rare crash when an error occurs during a query using a hash index
-      (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix input of datetime values for February 29 in years BC (Tom)
-     </para>
-
-     <para>
-      The former coding was mistaken about which years were leap years.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <quote>unrecognized node type</> error in some variants of
-      <command>ALTER OWNER</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_ctl</> to correctly extract the postmaster's port
-      number from command-line options (Itagaki Takahiro, Tom)
-     </para>
-
-     <para>
-      Previously, <literal>pg_ctl start -w</> could try to contact the
-      postmaster on the wrong port, leading to bogus reports of startup
-      failure.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Use <option>-fwrapv</> to defend against possible misoptimization
-      in recent <application>gcc</> versions (Tom)
-     </para>
-
-     <para>
-      This is known to be necessary when building <productname>PostgreSQL</>
-      with <application>gcc</> 4.3 or later.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix display of constant expressions in <literal>ORDER BY</>
-      and <literal>GROUP BY</> (Tom)
-     </para>
-
-     <para>
-      An explictly casted constant would be shown incorrectly.  This could
-      for example lead to corruption of a view definition during
-      dump and reload.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>libpq</> to handle NOTICE messages correctly
-      during COPY OUT (Tom)
-     </para>
-
-     <para>
-      This failure has only been observed to occur when a user-defined
-      datatype's output routine issues a NOTICE, but there is no
-      guarantee it couldn't happen due to other causes.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-11">
-  <title>Release 8.1.11</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-01-07</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.10,
-   including fixes for significant security issues.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <para>
-   This is the last 8.1.X release for which the <productname>PostgreSQL</>
-   community will produce binary packages for <productname>Windows</>.
-   Windows users are encouraged to move to 8.2.X or later,
-   since there are Windows-specific fixes in 8.2.X that
-   are impractical to back-port.  8.1.X will continue to
-   be supported on other platforms.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.11</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Prevent functions in indexes from executing with the privileges of
-      the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
-     </para>
-
-     <para>
-      Functions used in index expressions and partial-index
-      predicates are evaluated whenever a new table entry is made.  It has
-      long been understood that this poses a risk of trojan-horse code
-      execution if one modifies a table owned by an untrustworthy user.
-      (Note that triggers, defaults, check constraints, etc. pose the
-      same type of risk.)  But functions in indexes pose extra danger
-      because they will be executed by routine maintenance operations
-      such as <command>VACUUM FULL</>, which are commonly performed
-      automatically under a superuser account.  For example, a nefarious user
-      can execute code with superuser privileges by setting up a
-      trojan-horse index definition and waiting for the next routine vacuum.
-      The fix arranges for standard maintenance operations
-      (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
-      and <command>CLUSTER</>) to execute as the table owner rather than
-      the calling user, using the same privilege-switching mechanism already
-      used for <literal>SECURITY DEFINER</> functions.  To prevent bypassing
-      this security measure, execution of <command>SET SESSION
-      AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
-      <literal>SECURITY DEFINER</> context.  (CVE-2007-6600)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
-     </para>
-
-     <para>
-      Suitably crafted regular-expression patterns could cause crashes,
-      infinite or near-infinite looping, and/or massive memory consumption,
-      all of which pose denial-of-service hazards for applications that
-      accept regex search patterns from untrustworthy sources.
-      (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require non-superusers who use <filename>/contrib/dblink</> to use only
-      password authentication, as a security measure (Joe)
-     </para>
-
-     <para>
-      The fix that appeared for this in 8.1.10 was incomplete, as it plugged
-      the hole for only some <filename>dblink</> functions.  (CVE-2007-6601,
-      CVE-2007-3278)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update time zone data files to <application>tzdata</> release 2007k
-      (in particular, recent Argentina changes) (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve planner's handling of LIKE/regex estimation in non-C locales
-      (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner failure in some cases of <literal>WHERE false AND var IN
-      (SELECT ...)</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Preserve the tablespace of indexes that are
-      rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make archive recovery always start a new WAL timeline, rather than only
-      when a recovery stop time was used (Simon)
-     </para>
-
-     <para>
-      This avoids a corner-case risk of trying to overwrite an existing
-      archived copy of the last WAL segment, and seems simpler and cleaner
-      than the original definition.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</>
-      when the table is too small for it to be useful (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential crash in <function>translate()</> when using a multibyte
-      database encoding (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix overflow in <literal>extract(epoch from interval)</> for intervals
-      exceeding 68 years (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Perl to not fail when a UTF-8 regular expression is used
-      in a trusted function (Andrew)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
-      as <literal>int</> rather than <literal>char</> (Tom)
-     </para>
-
-     <para>
-      While this could theoretically happen anywhere, no standard build of
-      Perl did things this way ... until <productname>Mac OS X</> 10.5.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Python to not crash on long exception messages (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_dump</> to correctly handle inheritance child tables
-      that have default expressions different from their parent's (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers
-      to a file that is not a plain file (Martin Pitt)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <application>ecpg</> parser fixes (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <filename>contrib/pgcrypto</> defend against
-      <application>OpenSSL</> libraries that fail on keys longer than 128
-      bits; which is the case at least on some Solaris versions (Marko Kreen)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
-      NULL rowid as a category in its own right, rather than crashing (Joe)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <type>tsvector</> and <type>tsquery</> output routines to
-      escape backslashes correctly (Teodor, Bruce)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require a specific version of <productname>Autoconf</> to be used
-      when re-generating the <command>configure</> script (Peter)
-     </para>
-
-     <para>
-      This affects developers and packagers only.  The change was made
-      to prevent accidental use of untested combinations of
-      <productname>Autoconf</> and <productname>PostgreSQL</> versions.
-      You can remove the version check if you really want to use a
-      different <productname>Autoconf</> version, but it's
-      your responsibility whether the result works or not.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-10">
-  <title>Release 8.1.10</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-09-17</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.9.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.10</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Prevent index corruption when a transaction inserts rows and
-      then aborts close to the end of a concurrent <command>VACUUM</>
-      on the same table (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow the <type>interval</> data type to accept input consisting only of
-      milliseconds or microseconds (Neil)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Speed up rtree index insertion (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix excessive logging of <acronym>SSL</> error messages (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix logging so that log messages are never interleaved when using
-      the syslogger process (Andrew)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix crash when <varname>log_min_error_statement</> logging runs out
-      of memory (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix incorrect handling of some foreign-key corner cases (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
-      due to attempting to process temporary tables of other sessions (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Windows socket improvements (Magnus)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
-      because of possible encoding mismatches (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Require non-superusers who use <filename>/contrib/dblink</> to use only
-      password authentication, as a security measure (Joe)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-9">
-  <title>Release 8.1.9</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-04-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.8,
-   including a security fix.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.9</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-    <para>
-     Support explicit placement of the temporary-table schema within
-     <varname>search_path</>, and disable searching it for functions
-     and operators (Tom)
-    </para>
-    <para>
-     This is needed to allow a security-definer function to set a
-     truly secure value of <varname>search_path</>.  Without it,
-     an unprivileged SQL user can use temporary objects to execute code
-     with the privileges of the security-definer function (CVE-2007-2138).
-     See <command>CREATE FUNCTION</> for more information.
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     <filename>/contrib/tsearch2</> crash fixes (Teodor)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Require <command>COMMIT PREPARED</> to be executed in the same
-     database as the transaction was prepared in (Heikki)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
-     <command>UPDATE</> chains (Tom, Pavan Deolasee)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Planner fixes, including improving outer join and bitmap scan
-     selection logic (Tom)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6)
-     (Tom)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
-    </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-8">
-  <title>Release 8.1.8</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-07</simpara>
-  </note>
-
-  <para>
-   This release contains one fix from 8.1.7.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.8</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-    <para>
-     Remove overly-restrictive check for type length in constraints and
-     functional indexes(Tom)
-    </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-7">
-  <title>Release 8.1.7</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-05</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.6, including
-   a security fix.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.7</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-    <para>
-     Remove security vulnerabilities that allowed connected users
-     to read backend memory (Tom)
-    </para>
-    <para>
-     The vulnerabilities involve suppressing the normal check that a SQL
-     function returns the data type it's declared to, and changing the
-     data type of a table column (CVE-2007-0555, CVE-2007-0556).  These
-     errors can easily be exploited to cause a backend crash, and in
-     principle might be used to read database content that the user
-     should not be able to access.
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix rare bug wherein btree index page splits could fail
-     due to choosing an infeasible split point (Heikki Linnakangas)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Improve <command>VACUUM</> performance for databases with many tables (Tom)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix autovacuum to avoid leaving non-permanent transaction IDs in
-     non-connectable databases (Alvaro)
-    </para>
-
-    <para>
-     This bug affects the 8.1 branch only.
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Tighten security of multi-byte character processing for UTF8 sequences
-     over three bytes long (Tom)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix bogus <quote>permission denied</> failures occurring on Windows
-     due to attempts to fsync already-deleted files (Magnus, Tom)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix possible crashes when an already-in-use PL/pgSQL function is
-     updated (Tom)
-    </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-6">
-  <title>Release 8.1.6</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-01-08</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.5.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.6</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      Improve handling of <function>getaddrinfo()</> on AIX (Tom)
-     </para>
-
-     <para>
-      This fixes a problem with starting the statistics collector,
-      among other things.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix <application>pg_restore</> to handle a tar-format backup
-      that contains large objects (blobs) with comments (Tom)
-     </para>
-    </listitem>
-
-     <listitem>
-      <para>
-       Fix <quote>failed to re-find parent key</> errors in
-       <command>VACUUM</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Clean out <filename>pg_internal.init</> cache files during server
-       restart (Simon)
-      </para>
-
-      <para>
-       This avoids a hazard that the cache files might contain stale
-       data after PITR recovery.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix race condition for truncation of a large relation across a
-       gigabyte boundary by <command>VACUUM</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix bug causing needless deadlock errors on row-level locks (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix bugs affecting multi-gigabyte hash indexes (Tom)
-      </para>
-     </listitem>
-
-    <listitem>
-     <para>
-      Fix possible deadlock in Windows signal handling (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix error when constructing an <literal>ARRAY[]</> made up of multiple
-      empty elements (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix ecpg memory leak during connection (Michael)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix for Darwin (OS X) compilation (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <function>to_number()</> and <function>to_char(numeric)</>
-      are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
-      new <application>initdb</> installs (Tom)
-     </para>
-
-     <para>
-      This is because <varname>lc_numeric</> can potentially
-      change the output of these functions.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Improve index usage of regular expressions that use parentheses (Tom)
-     </para>
-
-     <para>
-      This improves <application>psql</> <literal>\d</> performance also.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Update timezone database
-     </para>
-
-     <para>
-      This affects Australian and Canadian daylight-savings rules in
-      particular.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-5">
-  <title>Release 8.1.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-10-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.4.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.5</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow aggregate functions in <command>UPDATE</>
-commands, except within sub-SELECTs (Tom)</para>
-<para>The behavior of such an aggregate was unpredictable, and in 8.1.X
-could cause a crash, so it has been disabled.  The SQL standard does not allow
-this either.</para></listitem>
-<listitem><para>Fix core dump when an untyped literal is taken as
-ANYARRAY</para></listitem>
-<listitem><para>Fix core dump in duration logging for extended query protocol
-when a <command>COMMIT</> or <command>ROLLBACK</> is
-executed</para></listitem>
-<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
-function returning multiple rows (Tom)</para></listitem>
-<listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck
-<literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem>
-<listitem><para>Fix <function>string_to_array()</> to handle overlapping
- matches for the separator string</para>
-<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
-</para></listitem>
-<listitem><para>Fix <function>to_timestamp()</> for
-<literal>AM</>/<literal>PM</> formats (Bruce)</para></listitem>
-<listitem><para>Fix autovacuum's calculation that decides whether
- <command>ANALYZE</> is needed (Alvaro)</para></listitem>
-<listitem><para>Fix corner cases in pattern matching for
- <application>psql</>'s <literal>\d</> commands</para></listitem>
-<listitem><para>Fix index-corrupting bugs in /contrib/ltree
- (Teodor)</para></listitem>
-<listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim
-Wieland)</para></listitem>
-<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
-<listitem><para>Minor fixes in /contrib/dblink and /contrib/tsearch2</para>
-</listitem>
-<listitem><para>Efficiency improvements in hash tables and bitmap index scans
-(Tom)</para></listitem>
-<listitem><para>Fix instability of statistics collection on Windows (Tom, Andrew)</para></listitem>
-<listitem><para>Fix <varname>statement_timeout</> to use the proper
-units on Win32 (Bruce)</para>
-<para>In previous Win32 8.1.X versions, the delay was off by a factor of
-100.</para></listitem>
-<listitem><para>Fixes for <acronym>MSVC</> and <productname>Borland C++</>
-compilers (Hiroshi Saito)</para></listitem>
-<listitem><para>Fixes for <systemitem class="osname">AIX</> and
-<productname>Intel</> compilers (Tom)</para></listitem>
-<listitem><para>Fix rare bug in continuous archiving (Tom)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-4">
-  <title>Release 8.1.4</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-05-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.3,
-   including patches for extremely serious security issues.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.4</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-
-   <para>
-    Full security against the SQL-injection attacks described in
-    CVE-2006-2313 and CVE-2006-2314 might require changes in application
-    code.  If you have applications that embed untrustworthy strings
-    into SQL commands, you should examine them as soon as possible to
-    ensure that they are using recommended escaping techniques.  In
-    most cases, applications should be using subroutines provided by
-    libraries or drivers (such as <application>libpq</>'s
-    <function>PQescapeStringConn()</>) to perform string escaping,
-    rather than relying on <foreignphrase>ad hoc</> code to do it.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change the server to reject invalidly-encoded multibyte
-characters in all cases (Tatsuo, Tom)</para>
-<para>While <productname>PostgreSQL</> has been moving in this direction for
-some time, the checks are now applied uniformly to all encodings and all
-textual input, and are now always errors not merely warnings.  This change
-defends against SQL-injection attacks of the type described in CVE-2006-2313.
-</para></listitem>
-
-<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
-<para>As a server-side defense against SQL-injection attacks of the type
-described in CVE-2006-2314, the server now only accepts <literal>''</> and not
-<literal>\'</> as a representation of ASCII single quote in SQL string
-literals.  By default, <literal>\'</> is rejected only when
-<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
-GB18030, or UHC), which is the scenario in which SQL injection is possible.
-A new configuration parameter <varname>backslash_quote</> is available to
-adjust this behavior when needed.  Note that full security against
-CVE-2006-2314 might require client-side changes; the purpose of
-<varname>backslash_quote</> is in part to make it obvious that insecure
-clients are insecure.
-</para></listitem>
-
-<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
-aware of encoding considerations and
-<varname>standard_conforming_strings</></para>
-<para>This fixes <application>libpq</>-using applications for the security
-issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
-them against the planned changeover to SQL-standard string literal syntax.
-Applications that use multiple <productname>PostgreSQL</> connections
-concurrently should migrate to <function>PQescapeStringConn()</> and
-<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
-for the settings in use in each database connection.  Applications that
-do string escaping <quote>by hand</> should be modified to rely on library
-routines instead.
-</para></listitem>
-
-<listitem><para>Fix weak key selection in pgcrypto (Marko Kreen)</para>
-<para>Errors in fortuna PRNG reseeding logic could cause a predictable
-session key to be selected by <function>pgp_sym_encrypt()</> in some cases.
-This only affects non-OpenSSL-using builds.
-</para></listitem>
-
-<listitem><para>Fix some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</>, <function>win866_to_iso</>,
-<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
-<function>mic_to_euc_tw</> were all broken to varying
-extents.
-</para></listitem>
-
-<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
-(Bruce, Jan)</para></listitem>
-
-<listitem><para>Make autovacuum visible in <structname>pg_stat_activity</>
-(Alvaro)</para></listitem>
-
-<listitem><para>Disable <literal>full_page_writes</> (Tom)</para>
-<para>In certain cases, having <literal>full_page_writes</> off would cause
-crash recovery to fail.  A proper fix will appear in 8.2; for now it's just
-disabled.
-</para></listitem>
-
-<listitem><para>Various planner fixes, particularly for bitmap index scans and
-MIN/MAX optimization (Tom)</para></listitem>
-
-<listitem><para>Fix incorrect optimization in merge join (Tom)</para>
-<para>Outer joins could sometimes emit multiple copies of unmatched rows.
-</para></listitem>
-
-<listitem><para>Fix crash from using and modifying a plpgsql function in the
-same transaction</para></listitem>
-
-<listitem><para>Fix WAL replay for case where a B-Tree index has been
-truncated</para></listitem>
-
-<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
-<literal>|</> (Tom)</para></listitem>
-
-<listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to
-create tables in the default tablespace, not the base directory (Kris
-Jurka)</para></listitem>
-
-<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Improve qsort performance (Dann Corbit)</para>
-<para>Currently this code is only used on Solaris.
-</para></listitem>
-
-<listitem><para>Fix for OS/X Bonjour on x86 systems (Ashley Clark)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-
-<listitem><para>Fix problem with password prompting on some Win32 systems
-(Robert Kinberg)</para></listitem>
-
-<listitem><para>Improve <application>pg_dump</>'s handling of default values
-for domains</para></listitem>
-
-<listitem><para>Fix <application>pg_dumpall</> to handle identically-named
-users and groups reasonably (only possible when dumping from a pre-8.1 server)
-(Tom)</para>
-<para>The user and group will be merged into a single role with
-<literal>LOGIN</> permission.  Formerly the merged role wouldn't have
-<literal>LOGIN</> permission, making it unusable as a user.
-</para></listitem>
-
-<listitem><para>Fix <application>pg_restore</> <literal>-n</> to work as
-documented (Tom)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-3">
-  <title>Release 8.1.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-02-14</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.2,
-   including one very serious security issue.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.3</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, if you are upgrading from a version earlier than 8.1.2,
-    see the release notes for 8.1.2.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix bug that allowed any logged-in user to <command>SET
-ROLE</> to any other database user id (CVE-2006-0553)</para>
-<para>Due to inadequate validity checking, a user could exploit the special
-case that <command>SET ROLE</> normally uses to restore the previous role
-setting after an error.  This allowed ordinary users to acquire superuser
-status, for example.
-The escalation-of-privilege risk exists only in 8.1.0-8.1.2.
-However, in all releases back to 7.3 there is a related bug in <command>SET
-SESSION AUTHORIZATION</> that allows unprivileged users to crash the server,
-if it has been compiled with Asserts enabled (which is not the default).
-Thanks to Akio Ishida for reporting this problem.
-</para></listitem>
-
-<listitem><para>Fix bug with row visibility logic in self-inserted
-rows (Tom)</para>
-<para>Under rare circumstances a row inserted by the current command
-could be seen as already valid, when it should not be.  Repairs bug
-created in 8.0.4, 7.4.9, and 7.3.11 releases.
-</para></listitem>
-
-<listitem><para>Fix race condition that could lead to <quote>file already
-exists</> errors during pg_clog and pg_subtrans file creation
-(Tom)</para></listitem>
-
-<listitem><para>Fix cases that could lead to crashes if a cache-invalidation
-message arrives at just the wrong time (Tom)</para></listitem>
-
-<listitem><para>Properly check <literal>DOMAIN</> constraints for
-<literal>UNKNOWN</> parameters in prepared statements
-(Neil)</para></listitem>
-
-<listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process
-<literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</>
-constraints in the proper order (Nakano Yoshihisa)</para></listitem>
-
-<listitem><para>Fixes to allow restoring dumps that have cross-schema
-references to custom operators or operator classes (Tom)</para></listitem>
-
-<listitem><para>Allow <application>pg_restore</> to continue properly after a
-<command>COPY</> failure; formerly it tried to treat the remaining
-<command>COPY</> data as SQL commands (Stephen Frost)</para></listitem>
-
-<listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash
-when the  data directory is not specified (Magnus)</para></listitem>
-
-<listitem><para>Fix <application>libpq</> <function>PQprint</> HTML tags
-(Christoph Zwerschke)</para></listitem>
-
-<listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC
-(Neil)</para></listitem>
-
-<listitem><para>Allow <literal>SETOF</> and <literal>%TYPE</> to be used
-together in function result type declarations</para></listitem>
-
-<listitem><para>Recover properly if error occurs during argument passing
-in <application>PL/python</> (Neil)</para></listitem>
-
-<listitem><para>Fix memory leak in <function>plperl_return_next</>
-(Neil)</para></listitem>
-
-<listitem><para>Fix <application>PL/perl</>'s handling of locales on
-Win32 to match the backend (Andrew)</para></listitem>
-
-<listitem><para>Various optimizer fixes (Tom)</para></listitem>
-
-<listitem><para>Fix crash when <literal>log_min_messages</> is set to
-<literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32
-(Bruce)</para></listitem>
-
-<listitem><para>Fix <application>pgxs</> <literal>-L</> library path
-specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem>
-
-<listitem><para>Check that SID is enabled while checking for Win32 admin
-privileges (Magnus)</para></listitem>
-
-<listitem><para>Properly reject out-of-range date inputs (Kris
-Jurka)</para></listitem>
-
-<listitem><para>Portability fix for testing presence of <function>finite</>
-and <function>isinf</> during configure (Tom)</para></listitem>
-
-<listitem><para>Improve speed of <command>COPY IN</> via libpq, by
-avoiding a kernel call per data line (Alon Goldshuv)</para></listitem>
-
-<listitem><para>Improve speed of <filename>/contrib/tsearch2</> index
-creation (Tom)</para></listitem>
-
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-2">
-  <title>Release 8.1.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-01-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.1.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.2</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-    However, you might need to <command>REINDEX</> indexes on textual
-    columns after updating, if you are affected by the locale or
-    <application>plperl</> issues described below.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix Windows code so that postmaster will continue rather
-than exit if there is no more room in ShmemBackendArray (Magnus)</para>
-<para>The previous behavior could lead to a denial-of-service situation if too
-many connection requests arrive close together.  This applies
-<emphasis>only</> to the Windows port.</para></listitem>
-
-<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
-to return an already-used page as new, potentially causing loss of
-recently-committed data (Tom)</para></listitem>
-
-<listitem><para>Fix for protocol-level Describe messages issued
-outside a transaction or in a failed transaction (Tom)</para></listitem>
-
-<listitem><para>Fix character string comparison for locales that consider
-different character combinations as equal, such as Hungarian (Tom)</para>
-<para>This might require <command>REINDEX</> to fix existing indexes on
-textual columns.</para></listitem>
-
-<listitem><para>Set locale environment variables during postmaster startup
-to ensure that <application>plperl</> won't change the locale later</para>
-<para>This fixes a problem that occurred if the <application>postmaster</> was
-started with environment variables specifying a different locale than what
-<application>initdb</> had been told.  Under these conditions, any use of
-<application>plperl</> was likely to lead to corrupt indexes.  You might need
-<command>REINDEX</> to fix existing indexes on
-textual columns if this has happened to you.</para></listitem>
-
-<listitem><para>Allow more flexible relocation of installation
-directories (Tom)</para>
-<para>Previous releases supported relocation only if all installation
-directory paths were the same except for the last component.</para></listitem>
-
-<listitem><para>Prevent crashes caused by the use of
-<literal>ISO-8859-5</> and <literal>ISO-8859-9</> encodings
-(Tatsuo)</para></listitem>
-
-<listitem><para>Fix longstanding bug in strpos() and regular expression
-handling in certain rarely used Asian multi-byte character sets (Tatsuo)
-</para></listitem>
-
-<listitem><para>Fix bug where COPY CSV mode considered any
-<literal>\.</> to terminate the copy data</para> <para>The new code
-requires <literal>\.</> to appear alone on a line, as per
-documentation.</para></listitem>
-
-<listitem><para>Make COPY CSV mode quote a literal data value of
-<literal>\.</> to ensure it cannot be interpreted as the
-end-of-data marker (Bruce)</para></listitem>
-
-<listitem><para>Various fixes for functions returning <literal>RECORD</>s
-(Tom) </para></listitem>
-
-<listitem><para>Fix processing of <filename>postgresql.conf</> so a
-final line with no newline is processed properly (Tom)
-</para></listitem>
-
-<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
-which caused it not to use all available salt space for MD5 and
-XDES algorithms (Marko Kreen, Solar Designer)</para>
-<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
-
-<listitem><para>Fix autovacuum crash when processing expression indexes
-</para></listitem>
-
-<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
-rather than crashing, when the number of columns specified is different from
-what's actually returned by the query (Joe)</para></listitem>
-
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1-1">
-  <title>Release 8.1.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-12-12</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.1.0.
-   For information about new features in the 8.1 major release, see
-   <xref linkend="release-8-1">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.1.1</title>
-
-   <para>
-    A dump/restore is not required for those running 8.1.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix incorrect optimizations of outer-join conditions
-(Tom)</para></listitem>
-
-<listitem><para>Fix problems with wrong reported column names in cases
-involving sub-selects flattened by the optimizer (Tom)</para></listitem>
-
-<listitem><para>Fix update failures in scenarios involving CHECK constraints,
-toasted columns, <emphasis>and</> indexes (Tom)</para></listitem>
-
-<listitem><para>Fix bgwriter problems after recovering from errors
-(Tom)</para>
-<para>
-The background writer was found to leak buffer pins after write errors.
-While not fatal in itself, this might lead to mysterious blockages of
-later VACUUM commands.
-</para>
-</listitem>
-
-<listitem><para>Prevent failure if client sends Bind protocol message
-when current transaction is already aborted</para></listitem>
-
-<listitem><para><filename>/contrib/tsearch2</> and <filename>/contrib/ltree</>
-fixes (Teodor)</para></listitem>
-
-<listitem><para>Fix problems with translated error messages in
-languages that require word reordering, such as Turkish; also problems with
-unexpected truncation of output strings and wrong display of the smallest
-possible bigint value (Andrew, Tom)</para>
-<para>
-These problems only appeared on platforms that were using our
-<filename>port/snprintf.c</> code, which includes BSD variants if
-<literal>--enable-nls</> was given, and perhaps others.  In addition,
-a different form of the translated-error-message problem could appear
-on Windows depending on which version of <filename>libintl</> was used.
-</para></listitem>
-
-<listitem><para>Re-allow <literal>AM</>/<literal>PM</>, <literal>HH</>,
-<literal>HH12</>, and <literal>D</> format specifiers for
-<function>to_char(time)</> and <function>to_char(interval)</>.
-(<function>to_char(interval)</> should probably use
-<literal>HH24</>.) (Bruce)</para></listitem>
-
-<listitem><para>AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi
-Saito)</para></listitem>
-
-<listitem><para>Optimizer improvements (Tom)</para></listitem>
-
-<listitem><para>Retry file reads and writes after Windows
-NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
-
-<listitem><para>Prevent <application>autovacuum</> from crashing during
-ANALYZE of expression index (Alvaro)</para></listitem>
-
-<listitem><para>Fix problems with ON COMMIT DELETE ROWS temp
-tables</para></listitem>
-
-<listitem><para>Fix problems when a trigger alters the output of a SELECT
-DISTINCT query</para></listitem>
-
-<listitem><para>Add 8.1.0 release note item on how to migrate invalid
-<literal>UTF-8</> byte sequences (Paul Lindner)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-1">
-  <title>Release 8.1</title>
-
-  <note>
-   <title>Release date</title>
-   <simpara>2005-11-08</simpara>
-  </note>
-
-  <sect2>
-   <title>Overview</title>
-
-   <para>
-    Major changes in this release:
-   </para>
-
-   <variablelist>
-
-    <varlistentry>
-     <term>
-      Improve concurrent access to the shared buffer cache (Tom)
-     </term>
-
-     <listitem>
-      <para>
-       Access to the shared buffer cache was identified as a
-       significant scalability problem, particularly on multi-CPU
-       systems. In this release, the way that locking is done in the
-       buffer manager has been overhauled to reduce lock contention
-       and improve scalability. The buffer manager has also been
-       changed to use a <quote>clock sweep</quote> replacement
-       policy.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Allow index scans to use an intermediate in-memory bitmap (Tom)
-     </term>
-
-     <listitem>
-      <para>
-       In previous releases, only a single index could be used to do
-       lookups on a table. With this feature, if a query has
-       <command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is
-       no multicolumn index on <literal>col1</> and <literal>col2</>,
-       but there is an index on <literal>col1</> and another on
-       <literal>col2</>, it is possible to search both indexes and
-       combine the results in memory, then do heap fetches for only
-       the rows matching both the <literal>col1</> and
-       <literal>col2</> restrictions. This is very useful in
-       environments that have a lot of unstructured queries where it
-       is impossible to create indexes that match all possible access
-       conditions.  Bitmap scans are useful even with a single index,
-       as they reduce the amount of random access needed; a bitmap
-       index scan is efficient for retrieving fairly large fractions
-       of the complete table, whereas plain index scans are not.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
-     </term>
-
-     <listitem>
-      <para>
-       Two-phase commit allows transactions to be "prepared" on several
-       computers, and once all computers have successfully prepared
-       their transactions (none failed), all transactions can be
-       committed. Even if a machine crashes after a prepare, the
-       prepared transaction can be committed after the machine is
-       restarted. New syntax includes <command>PREPARE TRANSACTION</> and
-       <command>COMMIT/ROLLBACK PREPARED</>. A new system view
-       <literal>pg_prepared_xacts</> has also been added.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Create a new role system that replaces users and groups
-      (Stephen Frost)
-     </term>
-
-     <listitem>
-      <para>
-       Roles are a combination of users and groups. Like users, they
-       can have login capability, and like groups, a role can have
-       other roles as members. Roles basically remove the distinction
-       between users and groups. For example, a role can:
-      </para>
-
-      <itemizedlist>
-
-       <listitem>
-        <para>
-          Have login capability (optionally)
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Own objects
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Hold access permissions for database objects
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Inherit permissions from other roles it is a member of
-        </para>
-       </listitem>
-
-      </itemizedlist>
-      <para>
-       Once a user logs into a role, she obtains capabilities of
-       the login role plus any inherited roles, and can use
-       <command>SET ROLE</> to switch to other roles she is a member of.
-       This feature is a generalization of the SQL standard's concept of
-       roles.
-       This change also replaces <structname>pg_shadow</> and
-       <structname>pg_group</> by new role-capable catalogs
-       <structname>pg_authid</> and <structname>pg_auth_members</>. The old
-       tables are redefined as read-only views on the new role tables.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Automatically use indexes for <function>MIN()</> and
-      <function>MAX()</> (Tom)
-     </term>
-
-     <listitem>
-      <para>
-       In previous releases, the only way to use an index for
-       <function>MIN()</> or <function>MAX()</> was to rewrite the
-       query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
-       Index usage now happens automatically.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Move <filename>/contrib/pg_autovacuum</> into the main server
-      (Alvaro)
-     </term>
-
-     <listitem>
-      <para>
-       Integrating autovacuum into the server allows it to be
-       automatically started and stopped in sync with the database
-       server, and allows autovacuum to be configured from
-       <filename>postgresql.conf</>.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Add shared row level locks using <command>SELECT ... FOR SHARE</>
-      (Alvaro)
-     </term>
-
-     <listitem>
-      <para>
-       While <productname>PostgreSQL</productname>'s MVCC locking
-       allows <command>SELECT</> to never be blocked by writers and
-       therefore does not need shared row locks for typical operations,
-       shared locks are useful for applications that require shared row
-       locking.  In particular this reduces the locking requirements
-       imposed by referential integrity checks.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Add dependencies on shared objects, specifically roles
-      (Alvaro)
-     </term>
-
-     <listitem>
-      <para>
-       This extension of the dependency mechanism prevents roles from
-       being dropped while there are still database objects they own.
-       Formerly it was possible to accidentally <quote>orphan</> objects by
-       deleting their owner.  While this could be recovered from, it
-       was messy and unpleasant.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Improve performance for partitioned tables (Simon)
-     </term>
-
-     <listitem>
-      <para>
-       The new <varname>constraint_exclusion</varname> configuration
-       parameter avoids lookups on child tables where constraints indicate
-       that no matching rows exist in the child table.
-      </para>
-      <para>
-       This allows for a basic type of table partitioning. If child tables
-       store separate key ranges and this is enforced using appropriate
-       <command>CHECK</> constraints, the optimizer will skip child
-       table accesses when the constraint guarantees no matching rows
-       exist in the child table.
-      </para>
-     </listitem>
-    </varlistentry>
-
-   </variablelist>
-  </sect2>
-
-  <sect2>
-   <title>Migration to Version 8.1</title>
-
-   <para>
-    A dump/restore using <application>pg_dump</application> is required
-    for those wishing to migrate data from any previous release.
-   </para>
-
-   <para>
-    The 8.0 release announced that the <function>to_char()</> function
-    for intervals would be removed in 8.1. However, since no better API
-    has been suggested, <function>to_char(interval)</> has been enhanced in
-    8.1 and will remain in the server.
-   </para>
-
-   <para>
-    Observe the following incompatibilities:
-   </para>
-
-   <itemizedlist>
-
-    <listitem>
-     <para>
-      <varname>add_missing_from</> is now false by default (Neil)
-     </para>
-     <para>
-      By default, we now generate an error if a table is used in a query
-      without a <literal>FROM</> reference.  The old behavior is still
-      available, but the parameter must be set to 'true' to obtain it.
-     </para>
-
-     <para>
-      It might be necessary to set <varname>add_missing_from</> to true
-      in order to load an existing dump file, if the dump contains any
-      views or rules created using the implicit-<literal>FROM</> syntax.
-      This should be a one-time annoyance, because
-      <productname>PostgreSQL</productname> 8.1 will convert
-      such views and rules to standard explicit-<literal>FROM</> syntax.
-      Subsequent dumps will therefore not have the problem.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Cause input of a zero-length string (<literal>''</literal>) for
-      <type>float4</type>/<type>float8</type>/<type>oid</type>
-      to throw an error, rather than treating it as a zero (Neil)
-     </para>
-     <para>
-      This change is consistent with the current handling of
-      zero-length strings for integers. The schedule for this change
-      was announced in 8.0.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <varname>default_with_oids</> is now false by default (Neil)
-     </para>
-     <para>
-      With this option set to false, user-created tables no longer
-      have an OID column unless <command>WITH OIDS</> is specified in
-      <command>CREATE TABLE</>. Though OIDs have existed in all
-      releases of <productname>PostgreSQL</>, their use is limited
-      because they are only four bytes long and the counter is shared
-      across all installed databases. The preferred way of uniquely
-      identifying rows is via sequences and the <type>SERIAL</> type,
-      which have been supported since <productname>PostgreSQL</> 6.4.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add <literal>E''</> syntax so eventually ordinary strings can
-      treat backslashes literally (Bruce)
-     </para>
-     <para>
-      Currently <productname>PostgreSQL</productname> processes a
-      backslash in a string literal as introducing a special escape sequence,
-      e.g. <literal>\n</> or <literal>\010</>.
-      While this allows easy entry of special values, it is
-      nonstandard and makes porting of applications from other
-      databases more difficult. For this reason, the
-      <productname>PostgreSQL</productname> project is planning to
-      remove the special meaning of backslashes in strings. For
-      backward compatibility and for users who want special backslash
-      processing, a new string syntax has been created. This new string
-      syntax is formed by writing an <literal>E</> immediately preceding the
-      single quote that starts the string, e.g. <literal>E'hi\n'</>. While
-      this release does not change the handling of backslashes in strings, it
-      does add new configuration parameters to help users migrate applications
-      for future releases:
-     </para>
-     <itemizedlist>
-
-      <listitem>
-       <para>
-        <varname>standard_conforming_strings</> &mdash; does this release
-        treat backslashes literally in ordinary strings?
-       </para>
-      </listitem>
-
-      <listitem>
-      <para>
-       <varname>escape_string_warning</> &mdash; warn about backslashes in
-       ordinary (non-E) strings
-      </para>
-     </listitem>
-
-     </itemizedlist>
-
-     <para>
-      The <varname>standard_conforming_strings</> value is read-only.
-      Applications can retrieve the value to know how backslashes are
-      processed.  (Presence of the parameter can also be taken as an
-      indication that <literal>E''</> string syntax is supported.)
-      In a future release, <varname>standard_conforming_strings</>
-      will be true, meaning backslashes will be treated literally in
-      non-E strings. To prepare for this change, use <literal>E''</>
-      strings in places that need special backslash processing, and
-      turn on <varname>escape_string_warning</> to find additional
-      strings that need to be converted to use <literal>E''</>.
-      Also, use two single-quotes (<literal>''</>) to embed a literal
-      single-quote in a string, rather than the
-      <productname>PostgreSQL</productname>-supported syntax of
-      backslash single-quote (<literal>\'</>).  The former is
-      standards-conforming and does not require the use of the
-      <literal>E''</> string syntax.  You can also use the
-      <literal>$$</> string syntax, which does not treat backslashes
-      specially.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <command>REINDEX DATABASE</> reindex all indexes in the
-      database (Tom)
-     </para>
-     <para>
-      Formerly, <command>REINDEX DATABASE</> reindexed only
-      system tables. This new behavior seems more intuitive. A new
-      command <command>REINDEX SYSTEM</> provides the old functionality
-      of reindexing just the system tables.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Read-only large object descriptors now obey MVCC snapshot semantics
-     </para>
-     <para>
-      When a large object is opened with <literal>INV_READ</> (and not
-      <literal>INV_WRITE</>), the data read from the descriptor will now
-      reflect a <quote>snapshot</> of the large object's state at the
-      time of the transaction snapshot in use by the query that called
-      <function>lo_open()</>.  To obtain the old behavior of always
-      returning the latest committed data, include <literal>INV_WRITE</>
-      in the mode flags for <function>lo_open()</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add proper dependencies for arguments of sequence functions (Tom)
-     </para>
-     <para>
-      In previous releases, sequence names passed to <function>nextval()</>,
-      <function>currval()</>, and <function>setval()</> were stored as
-      simple text strings, meaning that renaming or dropping a
-      sequence used in a <literal>DEFAULT</> clause made the clause
-      invalid. This release stores all newly-created sequence function
-      arguments as internal OIDs, allowing them to track sequence
-      renaming, and adding dependency information that prevents
-      improper sequence removal. It also makes such <literal>DEFAULT</>
-      clauses immune to schema renaming and search path changes.
-     </para>
-     <para>
-      Some applications might rely on the old behavior of
-      run-time lookup for sequence names. This can still be done by
-      explicitly casting the argument to <type>text</>, for example
-      <literal>nextval('myseq'::text)</>.
-     </para>
-     <para>
-      Pre-8.1 database dumps loaded into 8.1 will use the old text-based
-      representation and therefore will not have the features of
-      OID-stored arguments. However, it is possible to update a
-      database containing text-based <literal>DEFAULT</> clauses.
-      First, save this query into a file, such as <filename>fixseq.sql</>:
-<programlisting>
-SELECT  'ALTER TABLE ' ||
-   pg_catalog.quote_ident(n.nspname) || '.' ||
-   pg_catalog.quote_ident(c.relname) ||
-   ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) ||
-   ' SET DEFAULT ' ||
-   regexp_replace(d.adsrc,
-                  $$val\(\(('[^']*')::text\)::regclass$$,
-                  $$val(\1$$,
-                  'g') ||
-   ';'
-FROM    pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d
-WHERE   n.oid = c.relnamespace AND
-   c.oid = a.attrelid AND
-   a.attrelid = d.adrelid AND
-   a.attnum = d.adnum AND
-   d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$;
-</programlisting>
-      Next, run the query against a database to find what
-      adjustments are required, like this for database <literal>db1</>:
-<programlisting>
-psql -t -f fixseq.sql db1
-</programlisting>
-      This will show the <command>ALTER TABLE</> commands needed to
-      convert the database to the newer OID-based representation.
-      If the commands look reasonable, run this to update the database:
-<programlisting>
-psql -t -f fixseq.sql db1 | psql -e db1
-</programlisting>
-      This process must be repeated in each database to be updated.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      In <application>psql</application>, treat unquoted
-      <literal>\{digit}+</> sequences as octal (Bruce)
-     </para>
-     <para>
-      In previous releases, <literal>\{digit}+</> sequences were
-      treated as decimal, and only <literal>\0{digit}+</> were treated
-      as octal. This change was made for consistency.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Remove grammar productions for prefix and postfix <literal>%</>
-      and <literal>^</> operators
-      (Tom)
-     </para>
-     <para>
-      These have never been documented and complicated the use of the
-      modulus operator (<literal>%</>) with negative numbers.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <literal>&amp;&lt;</> and <literal>&amp;&gt;</> for polygons
-      consistent with the box "over" operators (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <command>CREATE LANGUAGE</> can ignore the provided arguments
-      in favor of information from <structname>pg_pltemplate</>
-      (Tom)
-     </para>
-     <para>
-      A new system catalog <structname>pg_pltemplate</> has been defined
-      to carry information about the preferred definitions of procedural
-      languages (such as whether they have validator functions).  When
-      an entry exists in this catalog for the language being created,
-      <command>CREATE LANGUAGE</> will ignore all its parameters except the
-      language name and instead use the catalog information.  This measure
-      was taken because of increasing problems with obsolete language
-      definitions being loaded by old dump files.  As of 8.1,
-      <application>pg_dump</> will dump procedural language definitions as
-      just <command>CREATE LANGUAGE <replaceable>name</></command>, relying
-      on a template entry to exist at load time.  We expect this will be a
-      more future-proof representation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Make <function>pg_cancel_backend(int)</function> return a
-      <type>boolean</type> rather than an <type>integer</type> (Neil)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Some users are having problems loading UTF-8 data into 8.1.X.
-      This is because previous versions allowed invalid UTF-8 byte
-      sequences to be entered into the database, and this release
-      properly accepts only valid UTF-8 sequences. One way to correct a
-      dumpfile is to run the command <command>iconv -c -f UTF-8 -t
-      UTF-8 -o cleanfile.sql dumpfile.sql</>. The <literal>-c</> option
-      removes invalid character sequences. A diff of the two files will
-      show the sequences that are invalid. <command>iconv</> reads the
-      entire input file into memory so it might be necessary to use
-      <application>split</> to break up the dump into multiple smaller
-      files for processing.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-  </sect2>
-
-  <sect2>
-   <title>Additional Changes</title>
-
-   <para>
-    Below you will find a detailed account of the additional changes
-    between <productname>PostgreSQL</productname> 8.1 and the
-    previous major release.
-   </para>
-
-   <sect3>
-    <title>Performance Improvements</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Improve GiST and R-tree index performance (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve the optimizer, including auto-resizing of hash joins
-       (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Overhaul internal API in several areas
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change WAL record CRCs from 64-bit to 32-bit (Tom)
-      </para>
-      <para>
-       We determined that the extra cost of computing 64-bit CRCs was
-       significant, and the gain in reliability too marginal to justify it.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Prevent writing large empty gaps in WAL pages (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve spinlock behavior on SMP machines, particularly Opterons (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow nonconsecutive index columns to be used in a multicolumn
-       index (Tom)
-      </para>
-      <para>
-       For example, this allows an index on columns a,b,c to be used in
-       a query with <command>WHERE a = 4 and c = 10</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Skip WAL logging for <command>CREATE TABLE AS</> /
-       <command>SELECT INTO</> (Simon)
-      </para>
-      <para>
-       Since a crash during <command>CREATE TABLE AS</> would cause the
-       table to be dropped during recovery, there is no reason to WAL
-       log as the table is loaded.  (Logging still happens if WAL
-       archiving is enabled, however.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow concurrent GiST index access (Teodor, Oleg)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add configuration parameter <varname>full_page_writes</> to
-       control writing full pages to WAL (Bruce)
-      </para>
-      <para>
-       To prevent partial disk writes from corrupting the database,
-       <productname>PostgreSQL</productname> writes a complete copy of
-       each database disk page to WAL the first time it is modified
-       after a checkpoint. This option turns off that functionality for more
-       speed.  This is safe to use with battery-backed disk caches where
-       partial page writes cannot happen.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Use <literal>O_DIRECT</> if available when using
-       <literal>O_SYNC</> for <varname>wal_sync_method</varname>
-       (Itagaki Takahiro)
-      </para>
-      <para>
-       <literal>O_DIRECT</> causes disk writes to bypass the kernel
-       cache, and for WAL writes, this improves performance.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve <command>COPY FROM</> performance (Alon Goldshuv)
-      </para>
-      <para>
-       This was accomplished by reading <command>COPY</> input in
-       larger chunks, rather than character by character.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve the performance of <function>COUNT()</function>,
-       <function>SUM</function>, <function>AVG()</function>,
-       <function>STDDEV()</function>, and
-       <function>VARIANCE()</function> (Neil, Tom)
-      </para>
-     </listitem>
-    </itemizedlist>
-   </sect3>
-
-   <sect3>
-    <title>Server Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Prevent problems due to transaction ID (XID) wraparound (Tom)
-      </para>
-      <para>
-       The server will now warn when the transaction counter approaches
-       the wraparound point.  If the counter becomes too close to wraparound,
-       the server will stop accepting queries.  This ensures that data is
-       not lost before needed vacuuming is performed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix problems with object IDs (OIDs) conflicting with existing system
-       objects after the OID counter has wrapped around (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add warning about the need to increase
-       <varname>max_fsm_relations</> and <varname>max_fsm_pages</>
-       during <command>VACUUM</> (Ron Mayer)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <varname>temp_buffers</> configuration parameter to allow
-       users to determine the size of the local buffer area for
-       temporary table access (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add session start time and client IP address to
-       <literal>pg_stat_activity</> (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Adjust <literal>pg_stat</> views for bitmap scans (Tom)
-      </para>
-      <para>
-       The meanings of some of the fields have changed slightly.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Enhance <literal>pg_locks</> view (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Log queries for client-side <command>PREPARE</> and
-       <command>EXECUTE</> (Simon)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow Kerberos name and user name case sensitivity to be
-       specified in <filename>postgresql.conf</> (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add configuration parameter <varname>krb_server_hostname</> so
-       that the server host name can be specified as part of service
-       principal (Todd Kover)
-      </para>
-      <para>
-       If not set, any service principal matching an entry in the
-       keytab can be used. This is new Kerberos matching behavior in
-       this release.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <varname>log_line_prefix</> options for millisecond
-       timestamps (<literal>%m</>) and remote host (<literal>%h</>) (Ed
-       L.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add WAL logging for GiST indexes (Teodor, Oleg)
-      </para>
-      <para>
-       GiST indexes are now safe for crash and point-in-time recovery.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove old <filename>*.backup</> files when we do
-       <function>pg_stop_backup()</> (Bruce)
-      </para>
-      <para>
-       This prevents a large number of <filename>*.backup</> files from
-       existing in <filename>pg_xlog/</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add configuration parameters to control TCP/IP keep-alive
-       times for idle, interval, and count (Oliver Jowett)
-      </para>
-
-      <para>
-       These values can be changed to allow more rapid detection of
-       lost client connections.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add per-user and per-database connection limits (Petr Jelinek)
-      </para>
-      <para>
-       Using <command>ALTER USER</> and <command>ALTER DATABASE</>,
-       limits can now be enforced on the maximum number of sessions that
-       can concurrently connect as a specific user or to a specific database.
-       Setting the limit to zero disables user or database connections.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow more than two gigabytes of shared memory and per-backend
-       work memory on 64-bit machines (Koichi Suzuki)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New system catalog <structname>pg_pltemplate</> allows overriding
-       obsolete procedural-language definitions in dump files (Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Query Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add temporary views (Koju Iijima, Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <command>HAVING</> without any aggregate functions or
-       <command>GROUP BY</> so that the query returns a single group (Tom)
-      </para>
-      <para>
-       Previously, such a case would treat the <command>HAVING</>
-       clause the same as a <command>WHERE</> clause.  This was not per spec.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>USING</> clause to allow additional tables to be
-       specified to <command>DELETE</> (Euler Taveira de Oliveira, Neil)
-      </para>
-      <para>
-       In prior releases, there was no clear method for specifying
-       additional tables to be used for joins in a <command>DELETE</>
-       statement. <command>UPDATE</> already has a <literal>FROM</>
-       clause for this purpose.
-      </para>
-     </listitem>
-
-     <listitem>
-