Split the release notes into a separate file for each (active) major branch, REL8_1_STABLE
authorTom Lane <[email protected]>
Sat, 2 May 2009 20:17:57 +0000 (20:17 +0000)
committerTom Lane <[email protected]>
Sat, 2 May 2009 20:17:57 +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 1b40de8d4625b5646e56e68d522ce93a516fcb2c..c5e5e4eb36dcc5d192bda23738c6356a7c869c8b 100644 (file)
@@ -188,9 +188,8 @@ INSTALL HISTORY regress_README: % : %.html
 INSTALL.html: standalone-install.sgml installation.sgml version.sgml
        $(JADE.text) -V nochunks standalone-install.sgml installation.sgml >$@
 
-HISTORY.html: release.sgml
-       ( echo '<!doctype appendix PUBLIC "-//OASIS//DTD DocBook V4.2//EN">'; \
-         cat $< ) >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 b0980faf2c0189464ace234add60bae666bb6913..646d1e0c91626159bf1c1908488240e330e12b5d 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.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 2613fc9b40759cd4574bd6a0e78403b43eb326a9..5dc063a3bca361355e8249a81e8f69a00400813f 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.
 
 -->
 
@@ -47,7 +47,7 @@ do it for earlier branch release files.
 
   <para>
    A complete list of changes for each release can be obtained by
-   viewing the CVS logs for each release.
+   viewing the <link linkend="cvs">CVS</link> logs for each release.
    The <ulink
    url="http://archives.postgresql.org/pgsql-committers/">pgsql-committers
    email list</ulink> records all source code changes as well.  There is also
@@ -63,19503 +63,16 @@ do it for earlier branch release files.
    review, so each item is truly a community effort.
   </para>
 
- <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>
+<!--
+  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.
 
-   </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>
-      <para>
-       Add support for <literal>\x</> hex escapes in backend and ecpg
-       strings (Bruce)
-      </para>
-      <para>
-       This is just like the standard C <literal>\x</> escape syntax.
-       Octal escapes were already supported.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>BETWEEN SYMMETRIC</> query syntax (Pavel Stehule)
-      </para>
-      <para>
-       This feature allows <command>BETWEEN</> comparisons without
-       requiring the first value to be less than the second. For
-       example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</> returns
-       false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</> returns
-       true. <command>BETWEEN ASYMMETRIC</> was already supported.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>NOWAIT</> option to <command>SELECT ... FOR
-       UPDATE/SHARE</> (Hans-Juergen Schoenig)
-      </para>
-      <para>
-       While the <varname>statement_timeout</> configuration
-       parameter allows a query taking more than a certain amount of
-       time to be cancelled, the <command>NOWAIT</> option allows a
-       query to be canceled as soon as a <command>SELECT ... FOR
-       UPDATE/SHARE</> command cannot immediately acquire a row lock.
-      </para>
-     </listitem>
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Object Manipulation Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Track dependencies of shared objects (Alvaro)
-      </para>
-      <para>
-       <productname>PostgreSQL</productname> allows global tables
-       (users, databases, tablespaces) to reference information in
-       multiple databases. This addition adds dependency information
-       for global tables, so, for example, user ownership can be
-       tracked across databases, so a user who owns something in any
-       database can no longer be removed. Dependency tracking already
-       existed for database-local objects.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow limited <command>ALTER OWNER</> commands to be performed
-       by the object owner (Stephen Frost)
-      </para>
-      <para>
-       Prior releases allowed only superusers to change object owners.
-       Now, ownership can be transferred if the user executing the command
-       owns the object and would be able to create it as the new owner
-       (that is, the user is a member of the new owning role and that role
-       has the CREATE permission that would be needed to create the object
-       afresh).
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>ALTER</> object <command>SET SCHEMA</> capability
-       for some object types (tables, functions, types) (Bernd Helmle)
-      </para>
-      <para>
-       This allows objects to be moved to different schemas.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to
-       disable triggers (Satoshi Nagayasu)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Utility Command Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow <command>TRUNCATE</> to truncate multiple tables in a
-       single command (Alvaro)
-      </para>
-      <para>
-       Because of referential integrity checks, it is not allowed to
-       truncate a table that is part of a referential integrity
-       constraint. Using this new functionality, <command>TRUNCATE</>
-       can be used to truncate such tables, if both tables involved in
-       a referential integrity constraint are truncated in a single
-       <command>TRUNCATE</> command.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Properly process carriage returns and line feeds in
-       <command>COPY CSV</> mode (Andrew)
-      </para>
-      <para>
-       In release 8.0, carriage returns and line feeds in <command>CSV
-       COPY TO</> were processed in an inconsistent manner. (This was
-       documented on the TODO list.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>COPY WITH CSV HEADER</> to allow a header line as
-       the first line in <command>COPY</> (Andrew)
-      </para>
-      <para>
-       This allows handling of the common <command>CSV</> usage of
-       placing the column names on the first line of the data file. For
-       <command>COPY TO</>, the first line contains the column names,
-       and for <command>COPY FROM</>, the first line is ignored.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       On Windows, display better sub-second precision in
-       <command>EXPLAIN ANALYZE</> (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add trigger duration display to <command>EXPLAIN ANALYZE</>
-       (Tom)
-      </para>
-      <para>
-       Prior releases included trigger execution time as part of the
-       total execution time, but did not show it separately.  It is now
-       possible to see how much time is spent in each trigger.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <literal>\x</> hex escapes in <command>COPY</>
-       (Sergey Ten)
-      </para>
-      <para>
-       Previous releases only supported octal escapes.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <command>SHOW ALL</> include variable descriptions
-       (Matthias Schmidt)
-      </para>
-      <para>
-       <command>SHOW</> varname still only displays the variable's
-       value and does not include the description.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <application>initdb</application> create a new standard
-       database called <literal>postgres</>, and convert utilities to
-       use <literal>postgres</> rather than <literal>template1</> for
-       standard lookups (Dave)
-      </para>
-      <para>
-       In prior releases, <literal>template1</> was used both as a
-       default connection for utilities like
-       <application>createuser</application>, and as a template for
-       new databases. This caused <command>CREATE DATABASE</> to
-       sometimes fail, because a new database cannot be created if
-       anyone else is in the template database. With this change, the
-       default connection database is now <literal>postgres</>,
-       meaning it is much less likely someone will be using
-       <literal>template1</> during <command>CREATE DATABASE</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Create new <application>reindexdb</application> command-line
-       utility by moving <filename>/contrib/reindexdb</> into the
-       server (Euler Taveira de Oliveira)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Data Type and Function Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <function>MAX()</> and <function>MIN()</> aggregates for
-       array types (Koju Iijima)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <function>to_date()</> and <function>to_timestamp()</> to
-       behave reasonably when <literal>CC</> and <literal>YY</> fields
-       are both used (Karel Zak)
-      </para>
-      <para>
-       If the format specification contains <literal>CC</> and a year
-       specification is <literal>YYY</> or longer, ignore the
-       <literal>CC</>. If the year specification is <literal>YY</> or
-       shorter, interpret <literal>CC</> as the previous century.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>md5(bytea)</> (Abhijit Menon-Sen)
-      </para>
-      <para>
-       <function>md5(text)</> already existed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <command>numeric ^ numeric</> based on
-       <function>power(numeric, numeric)</>
-      </para>
-      <para>
-       The function already existed, but there was no operator assigned
-       to it.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <type>NUMERIC</> modulus by properly truncating the quotient
-       during computation (Bruce)
-      </para>
-      <para>
-       In previous releases, modulus for large values sometimes
-       returned negative results due to rounding of the quotient.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a function <function>lastval()</> (Dennis Bj&ouml;rklund)
-      </para>
-      <para>
-       <function>lastval()</> is a simplified version of
-       <function>currval()</>. It automatically determines the proper
-       sequence name based on the most recent <function>nextval()</> or
-       <function>setval()</> call performed by the current session.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>to_timestamp(DOUBLE PRECISION) (Michael Glaesemann)</>
-      </para>
-      <para>
-       Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH
-       TIMEZONE</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>pg_postmaster_start_time()</> function (Euler
-       Taveira de Oliveira, Matthias Schmidt)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow the full use of time zone names in <command>AT TIME
-       ZONE</>, not just the short list previously available (Magnus)
-      </para>
-      <para>
-       Previously, only a predefined list of time zone names were
-       supported by <command>AT TIME ZONE</>. Now any supported time
-       zone name can be used, e.g.:
-       <programlisting>
-        SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
-       </programlisting>
-       In the above query, the time zone used is adjusted based on the
-       daylight saving time rules that were in effect on the supplied
-       date.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>GREATEST()</> and <function>LEAST()</> variadic
-       functions (Pavel Stehule)
-      </para>
-      <para>
-       These functions take a variable number of arguments and return
-       the greatest or least value among the arguments.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>pg_column_size()</> (Mark Kirkwood)
-      </para>
-      <para>
-       This returns storage size of a column, which might be compressed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>regexp_replace()</> (Atsushi Ogawa)
-      </para>
-      <para>
-       This allows regular expression replacement, like sed. An optional
-       flag argument allows selection of global (replace all) and
-       case-insensitive modes.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix interval division and multiplication (Bruce)
-      </para>
-      <para>
-       Previous versions sometimes returned unjustified results, like
-       <command>'4 months'::interval / 5</> returning <command>'1 mon
-       -6 days'</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix roundoff behavior in timestamp, time, and interval output (Tom)
-      </para>
-      <para>
-       This fixes some cases in which the seconds field would be shown as
-       <literal>60</> instead of incrementing the higher-order fields.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a separate day field to type <type>interval</> so a one day
-       interval can be distinguished from a 24 hour interval (Michael
-       Glaesemann)
-      </para>
-      <para>
-       Days that contain a daylight saving time adjustment are not 24
-       hours long, but typically 23 or 25 hours.  This change creates a
-       conceptual distinction between intervals of <quote>so many days</>
-       and intervals of <quote>so many hours</>.  Adding
-       <literal>1 day</> to a timestamp now gives the same local time on
-       the next day even if a daylight saving time adjustment occurs
-       between, whereas adding <literal>24 hours</> will give a different
-       local time when this happens.  For example, under US DST rules:
-       <programlisting>
-        '2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04'
-        '2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04'
-       </programlisting>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>justify_days()</> and <function>justify_hours()</>
-       (Michael Glaesemann)
-      </para>
-      <para>
-       These functions, respectively, adjust days to an appropriate
-       number of full months and days, and adjust hours to an
-       appropriate number of full days and hours.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Move <filename>/contrib/dbsize</> into the backend, and rename
-       some of the functions (Dave Page, Andreas Pflug)
-      </para>
-      <para>
-       <itemizedlist>
-
-        <listitem>
-         <para>
-           <function>pg_tablespace_size()</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <function>pg_database_size()</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <function>pg_relation_size()</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <function>pg_total_relation_size()</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <function>pg_size_pretty()</>
-         </para>
-        </listitem>
-
-       </itemizedlist>
-      </para>
-      <para>
-       <function>pg_total_relation_size()</> includes indexes and TOAST
-       tables.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add functions for read-only file access to the cluster directory
-       (Dave Page, Andreas Pflug)
-      </para>
-      <para>
-       <itemizedlist>
-
-        <listitem>
-         <para>
-          <function>pg_stat_file()</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <function>pg_read_file()</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <function>pg_ls_dir()</>
-         </para>
-        </listitem>
-
-       </itemizedlist>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>pg_reload_conf()</> to force reloading of the
-       configuration files (Dave Page, Andreas Pflug)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>pg_rotate_logfile()</> to force rotation of the
-       server log file (Dave Page, Andreas Pflug)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <literal>pg_stat_*</> views to include TOAST tables (Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Encoding and Locale Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Rename some encodings to be more consistent and to follow
-       international standards (Bruce)
-      </para>
-      <para>
-       <itemizedlist>
-
-        <listitem>
-         <para>
-          <literal>UNICODE</> is now <literal>UTF8</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <literal>ALT</> is now <literal>WIN866</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <literal>WIN</> is now <literal>WIN1251</>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-         <literal>TCVN</> is now <literal>WIN1258</>
-         </para>
-        </listitem>
-
-       </itemizedlist>
-      </para>
-
-      <para>
-       The original names still work.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <literal>WIN1252</> encoding (Roland Volkmann)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for four-byte <literal>UTF8</> characters (John
-       Hansen)
-      </para>
-      <para>
-       Previously only one, two, and three-byte <literal>UTF8</> characters
-       were supported. This is particularly important for support for
-       some Chinese character sets.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow direct conversion between <literal>EUC_JP</> and
-       <literal>SJIS</> to improve performance (Atsushi Ogawa)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow the UTF8 encoding to work on Windows (Magnus)
-      </para>
-      <para>
-       This is done by mapping UTF8 to the Windows-native UTF16
-       implementation.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>General Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Fix <command>ALTER LANGUAGE RENAME</> (Sergey Yatskevich)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow function characteristics, like strictness and volatility,
-       to be modified via <command>ALTER FUNCTION</> (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Increase the maximum number of function arguments to 100 (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow SQL and PL/PgSQL functions to use <command>OUT</> and
-       <command>INOUT</> parameters (Tom)
-      </para>
-      <para>
-       <command>OUT</> is an alternate way for a function to return
-       values. Instead of using <command>RETURN</>, values can be
-       returned by assigning to parameters declared as <command>OUT</> or
-       <command>INOUT</>.  This is notationally simpler in some cases,
-       particularly so when multiple values need to be returned.
-       While returning multiple values from a function
-       was possible in previous releases, this greatly simplifies the
-       process.  (The feature will be extended to other server-side
-       languages in future releases.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Move language handler functions into the <literal>pg_catalog</> schema
-      </para>
-      <para>
-       This makes it easier to drop the public schema if desired.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>SPI_getnspname()</function> to SPI (Neil)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-   <sect3>
-    <title>PL/PgSQL Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Overhaul the memory management of PL/PgSQL functions (Neil)
-      </para>
-      <para>
-       The parsetree of each function is now stored in a separate
-       memory context. This allows this memory to be easily reclaimed
-       when it is no longer needed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Check function syntax at <command>CREATE FUNCTION</> time,
-       rather than at runtime (Neil)
-      </para>
-      <para>
-       Previously, most syntax errors were reported only when the
-       function was executed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>OPEN</> to open non-<command>SELECT</> queries
-       like <command>EXPLAIN</> and <command>SHOW</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       No longer require functions to issue a <command>RETURN</>
-       statement (Tom)
-      </para>
-      <para>
-       This is a byproduct of the newly added <command>OUT</> and
-       <command>INOUT</> functionality.  <command>RETURN</> can
-       be omitted when it is not needed to provide the function's
-       return value.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for an optional <command>INTO</> clause to
-       PL/PgSQL's <command>EXECUTE</> statement (Pavel Stehule, Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <command>CREATE TABLE AS</> set <command>ROW_COUNT</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Define <literal>SQLSTATE</> and <literal>SQLERRM</> to return
-       the <literal>SQLSTATE</> and error message of the current
-       exception (Pavel Stehule, Neil)
-      </para>
-      <para>
-       These variables are only defined inside exception blocks.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow the parameters to the <command>RAISE</> statement to be
-       expressions (Pavel Stehule, Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a loop <command>CONTINUE</> statement (Pavel Stehule, Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow block and loop labels (Pavel Stehule)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>PL/Perl Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow large result sets to be returned efficiently (Abhijit
-       Menon-Sen)
-      </para>
-      <para>
-       This allows functions to use <function>return_next()</> to avoid
-       building the entire result set in memory.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen)
-      </para>
-      <para>
-       This allows functions to use <function>spi_query()</> and
-       <function>spi_fetchrow()</> to avoid accumulating the entire
-       result set in memory.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Force PL/Perl to handle strings as <literal>UTF8</> if the
-       server encoding is <literal>UTF8</> (David Kamholz)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a validator function for PL/Perl (Andrew)
-      </para>
-      <para>
-       This allows syntax errors to be reported at definition time,
-       rather than execution time.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow PL/Perl to return a Perl array when the function returns
-       an array type (Andrew)
-      </para>
-      <para>
-       This basically maps <productname>PostgreSQL</productname> arrays
-       to Perl arrays.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow Perl nonfatal warnings to generate <command>NOTICE</>
-       messages (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow Perl's <literal>strict</> mode to be enabled (Andrew)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title><application>psql</> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <command>\set ON_ERROR_ROLLBACK</> to allow statements in
-       a transaction to error without affecting the rest of the
-       transaction (Greg Sabino Mullane)
-      </para>
-      <para>
-       This is basically implemented by wrapping every statement in a
-       sub-transaction.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <literal>\x</> hex strings in
-       <application>psql</> variables (Bruce)
-      </para>
-      <para>
-       Octal escapes were already supported.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <command>troff -ms</> output format (Roger
-       Leigh)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow the history file location to be controlled by
-       <envar>HISTFILE</> (Andreas Seltenreich)
-      </para>
-      <para>
-       This allows configuration of per-database history storage.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Prevent <command>\x</> (expanded mode) from affecting
-       the output of <command>\d tablename</> (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>-L</> option to <application>psql</application> to
-       log sessions (Lorne Sunley)
-      </para>
-      <para>
-       This option was added because some operating systems do not have
-       simple command-line activity logging functionality.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <command>\d</> show the tablespaces of indexes (Qingqing
-       Zhou)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>psql</application> help (<command>\h</>) to
-       make a best guess on the proper help information (Greg Sabino
-       Mullane)
-      </para>
-      <para>
-       This allows the user to just add <command>\h</> to the front of
-       the syntax error query and get help on the supported syntax.
-       Previously any additional query text beyond the command name
-       had to be removed to use <command>\h</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>\pset numericlocale</> to allow numbers to be
-       output in a locale-aware format (Eugen Nedelcu)
-      </para>
-      <para>
-       For example, using <literal>C</> locale <literal>100000</> would
-       be output as <literal>100,000.0</> while a European locale might
-       output this value as <literal>100.000,0</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make startup banner show both server version number and
-       <application>psql</>'s version number, when they are different (Bruce)
-      </para>
-      <para>
-       Also, a warning will be shown if the server and <application>psql</>
-       are from different major releases.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title><application>pg_dump</> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <option>-n</> / <option>--schema</> switch to
-       <application>pg_restore</> (Richard van den Berg)
-      </para>
-      <para>
-       This allows just the objects in a specified schema to be restored.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>pg_dump</> to dump large objects even in
-       text mode (Tom)
-      </para>
-      <para>
-       With this change, large objects are now always dumped; the former
-       <option>-b</> switch is a no-op.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>pg_dump</> to dump a consistent snapshot of
-       large objects (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Dump comments for large objects (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>--encoding</> to <application>pg_dump</>
-       (Magnus Hagander)
-      </para>
-      <para>
-       This allows a database to be dumped in an encoding that is
-       different from the server's encoding. This is valuable when
-       transferring the dump to a machine with a different encoding.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Rely on <structname>pg_pltemplate</> for procedural languages (Tom)
-      </para>
-      <para>
-       If the call handler for a procedural language is in the
-       <literal>pg_catalog</> schema, <application>pg_dump</> does not
-       dump the handler.  Instead, it dumps the language using just
-       <command>CREATE LANGUAGE <replaceable>name</></command>,
-       relying on the <structname>pg_pltemplate</> catalog to provide
-       the language's creation parameters at load time.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title><application>libpq</application> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add a <envar>PGPASSFILE</> environment variable to specify the
-       password file's filename (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>lo_create()</>, that is similar to
-       <function>lo_creat()</> but allows the OID of the large object
-       to be specified (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <application>libpq</application> consistently return an error
-       to the client application on <function>malloc()</function>
-       failure (Neil)
-      </para>
-     </listitem>
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Source Code Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Fix <application>pgxs</> to support building against a relocated
-       installation
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add spinlock support for the Itanium processor using Intel
-       compiler (Vikram Kalsi)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add Kerberos 5 support for Windows (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add Chinese FAQ ([email protected])
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Rename Rendezvous to Bonjour to match OS/X feature renaming
-       (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add support for <literal>fsync_writethrough</literal> on
-       Darwin (Chris Campbell)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Streamline the passing of information within the server, the
-       optimizer, and the lock system (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>pg_config</> to be compiled using MSVC (Andrew)
-      </para>
-      <para>
-       This is required to build DBD::Pg using <application>MSVC</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove support for Kerberos V4 (Magnus)
-      </para>
-      <para>
-       Kerberos 4 had security vulnerabilities and is no longer
-       maintained.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Code cleanups (Coverity static analysis performed by
-       EnterpriseDB)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Modify <filename>postgresql.conf</> to use documentation defaults
-       <literal>on</>/<literal>off</> rather than
-       <literal>true</>/<literal>false</> (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Enhance <application>pg_config</> to be able to report more
-       build-time values (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>libpq</application> to be built thread-safe
-       on Windows (Dave Page)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow IPv6 connections to be used on Windows (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add Server Administration documentation about I/O subsystem
-       reliability (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Move private declarations from <filename>gist.h</filename> to
-       <filename>gist_private.h</filename> (Neil)
-      </para>
-
-      <para>
-       In previous releases, <filename>gist.h</> contained both the
-       public GiST API (intended for use by authors of GiST index
-       implementations) as well as some private declarations used by
-       the implementation of GiST itself. The latter have been moved
-       to a separate file, <filename>gist_private.h</>. Most GiST
-       index implementations should be unaffected.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Overhaul GiST memory management (Neil)
-      </para>
-
-      <para>
-       GiST methods are now always invoked in a short-lived memory
-       context. Therefore, memory allocated via <function>palloc()</>
-       will be reclaimed automatically, so GiST index implementations
-       do not need to manually release allocated memory via
-       <function>pfree()</>.
-      </para>
-     </listitem>
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Contrib Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <filename>/contrib/pg_buffercache</> contrib module (Mark
-       Kirkwood)
-      </para>
-      <para>
-       This displays the contents of the buffer cache, for debugging and
-       performance tuning purposes.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <filename>/contrib/array</> because it is obsolete (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Clean up the <filename>/contrib/lo</> module (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Move <filename>/contrib/findoidjoins</> to
-       <filename>/src/tools</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove the <literal>&lt;&lt;</>, <literal>&gt;&gt;</>,
-       <literal>&amp;&lt;</>, and <literal>&amp;&gt;</> operators from
-       <filename>/contrib/cube</>
-      </para>
-      <para>
-       These operators were not useful.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve <filename>/contrib/btree_gist</> (Janko Richter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve <filename>/contrib/pgbench</> (Tomoaki Sato, Tatsuo)
-      </para>
-      <para>
-       There is now a facility for testing with SQL command scripts given
-       by the user, instead of only a hard-wired command sequence.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve <filename>/contrib/pgcrypto</> (Marko Kreen)
-      </para>
-
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Implementation of OpenPGP symmetric-key and public-key encryption
-        </para>
-        <para>
-         Both RSA and Elgamal public-key algorithms are supported.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         OpenSSL build: support 3DES, use internal AES with OpenSSL &lt; 0.9.7
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Take build parameters (OpenSSL, zlib) from <filename>configure</> result
-        </para>
-        <para>
-         There is no need to edit the <filename>Makefile</> anymore.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Remove support for <filename>libmhash</> and <filename>libmcrypt</>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-21">
-  <title>Release 8.0.21</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-03-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.20.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.21</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.
-    However, if you are upgrading from a version earlier than 8.0.6,
-    see the release notes for 8.0.6.
-   </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>
-      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-0-20">
-  <title>Release 8.0.20</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-02-02</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.19.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.20</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.
-    However, if you are upgrading from a version earlier than 8.0.6,
-    see the release notes for 8.0.6.
-   </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>
-      Avoid unnecessary locking of small tables in <command>VACUUM</>
-      (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix uninitialized variables in <filename>contrib/tsearch2</>'s
-      <function>get_covers()</> function (Teodor)
-     </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-0-19">
-  <title>Release 8.0.19</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-11-03</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.18.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.19</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.
-    However, if you are upgrading from a version earlier than 8.0.6,
-    see the release notes for 8.0.6.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <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>
-      Ensure an error is reported when a newly-defined PL/pgSQL trigger
-      function is invoked as a normal function (Tom)
-     </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 USER</> (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-0-18">
-  <title>Release 8.0.18</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-09-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.17.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.18</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.
-    However, if you are upgrading from a version earlier than 8.0.6,
-    see the release notes for 8.0.6.
-   </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>
-      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 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 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/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-0-17">
-  <title>Release 8.0.17</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-06-12</simpara>
-  </note>
-
-  <para>
-   This release contains one serious bug fix over 8.0.16.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.17</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.
-    However, if you are upgrading from a version earlier than 8.0.6,
-    see the release notes for 8.0.6.
-   </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>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-16">
-  <title>Release 8.0.16</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>never released</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.15.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.16</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.
-    However, if you are upgrading from a version earlier than 8.0.6,
-    see the release notes for 8.0.6.
-   </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>
-      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-0-15">
-  <title>Release 8.0.15</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-01-07</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.14,
-   including fixes for significant security issues.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <para>
-   This is the last 8.0.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.0.X will continue to
-   be supported on other platforms.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.15</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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.0.14 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>
-      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 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>
-      <application>ecpg</> parser fixes (Michael)
-     </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-0-14">
-  <title>Release 8.0.14</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-09-17</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.13.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.14</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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>
-      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>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-0-13">
-  <title>Release 8.0.13</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-04-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.12,
-   including a security fix.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.13</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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>
-     Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
-     <command>UPDATE</> chains (Tom, Pavan Deolasee)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10)
-     (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-0-12">
-  <title>Release 8.0.12</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-07</simpara>
-  </note>
-
-  <para>
-   This release contains one fix from 8.0.11.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.12</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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-0-11">
-  <title>Release 8.0.11</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-05</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.10, including
-   a security fix.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.11</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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>
-     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>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-10">
-  <title>Release 8.0.10</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-01-08</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.9.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.10</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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 <quote>failed to re-find parent key</> errors in
-       <command>VACUUM</> (Tom)
-      </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 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>
-      <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-0-9">
-  <title>Release 8.0.9</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-10-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.8.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.9</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix crash when referencing <literal>NEW</> row
-values in rule WHERE expressions (Tom)</para></listitem>
-<listitem><para>Fix core dump when an untyped literal is taken as
-ANYARRAY</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 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>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem>
-<listitem><para>Fixes for <systemitem class="osname">AIX</> and
-<productname>Intel</> compilers (Tom)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-8">
-  <title>Release 8.0.8</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-05-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.7,
-   including patches for extremely serious security issues.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.8</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </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 some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</>, <function>alt_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>Fix bug that sometimes caused OR'd index scans to
-miss rows they should have returned</para></listitem>
-
-<listitem><para>Fix WAL replay for case where a btree 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>Fix for Bonjour on Intel Macs (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>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-7">
-  <title>Release 8.0.7</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-02-14</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.6.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.7</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.6, see the release
-    notes for 8.0.6.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix potential crash in <command>SET
-SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
-<para>An unprivileged user could crash the server process, resulting in
-momentary denial of service to other users, if the server 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>ecpg</> crash on AMD64 and PPC
-(Neil)</para></listitem>
-
-<listitem><para>Recover properly if error occurs during argument passing
-in <application>PL/python</> (Neil)</para></listitem>
-
-<listitem><para>Fix <application>PL/perl</>'s handling of locales on
-Win32 to match the backend (Andrew)</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>
-
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-6">
-  <title>Release 8.0.6</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-01-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.5.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.6</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.3, see the release
-    notes for 8.0.3.
-    Also, 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>Fix longstanding bug in strpos() and regular expression
-handling in certain rarely used Asian multi-byte character sets (Tatsuo)
-</para></listitem>
-
-<listitem><para>Various fixes for functions returning <literal>RECORD</>s
-(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 <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-0-5">
-  <title>Release 8.0.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-12-12</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.4.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.5</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.3, see the release
-    notes for 8.0.3.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix race condition in transaction log management</para>
-<para>There was a narrow window in which an I/O operation could be initiated
-for the wrong page, leading to an Assert failure or data
-corruption.</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/ltree</> fixes (Teodor)</para></listitem>
-
-<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
-
-<listitem><para>Retry file reads and writes after Windows
-NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
-
-<listitem><para>Fix intermittent failure when <varname>log_line_prefix</>
-includes <literal>%i</></para></listitem>
-
-<listitem><para>Fix <application>psql</> performance issue with long scripts
-on Windows (Merlin Moncure)</para></listitem>
-
-<listitem><para>Fix missing updates of <filename>pg_group</> flat
-file</para></listitem>
-
-<listitem><para>Fix longstanding planning error for outer joins</para>
-<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
-only supported with merge-joinable join conditions</>.</para></listitem>
-
-<listitem><para>Postpone timezone initialization until after
-<filename>postmaster.pid</> is created</para>
-<para>This avoids confusing startup scripts that expect the pid file to appear
-quickly.</para></listitem>
-
-<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
-table has been dropped</para></listitem>
-
-<listitem><para>Fix problems with whole-row references (<literal>foo.*</>)
-to subquery results</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-4">
-  <title>Release 8.0.4</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-10-04</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.3.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.4</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    if you are upgrading from a version earlier than 8.0.3, see the release
-    notes for 8.0.3.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix error that allowed <command>VACUUM</> to remove
-<literal>ctid</> chains too soon, and add more checking in code that follows
-<literal>ctid</> links</para>
-<para>This fixes a long-standing problem that could cause crashes in very rare
-circumstances.</para></listitem>
-<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
-length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
-<para>In prior releases, the padding of <type>CHAR()</> was incorrect
-because it only padded to the specified number of bytes without
-considering how many characters were stored.</para></listitem>
-<listitem><para>Force a checkpoint before committing <command>CREATE
-DATABASE</></para>
-<para>This should fix recent reports of <quote>index is not a btree</>
-failures when a crash occurs shortly after <command>CREATE
-DATABASE</>.</para></listitem>
-<listitem><para>Fix the sense of the test for read-only transaction
-in <command>COPY</></para>
-<para>The code formerly prohibited <command>COPY TO</>, where it should
-prohibit <command>COPY FROM</>.
-</para></listitem>
-<listitem><para>Handle consecutive embedded newlines in <command>COPY</>
-CSV-mode input</para></listitem>
-<listitem><para>Fix <function>date_trunc(week)</> for dates near year
-end</para></listitem>
-<listitem><para>Fix planning problem with outer-join ON clauses that reference
-only the inner-side relation</para></listitem>
-<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
-cases</para></listitem>
-<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT
-DISTINCT ...)</> and related cases</para></listitem>
-<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</>
-values due to poorly thought out <quote>fuzzy</> cost
-comparison</para></listitem>
-<listitem><para>Make <function>array_in</> and <function>array_recv</> more
-paranoid about validating their OID parameter</para></listitem>
-<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
-a...</> with GiST index on column <literal>a</></para></listitem>
-<listitem><para>Improve robustness of datetime parsing</para></listitem>
-<listitem><para>Improve checking for partially-written WAL
-pages</para></listitem>
-<listitem><para>Improve robustness of signal handling when SSL is
-enabled</para></listitem>
-<listitem><para>Improve MIPS and M68K spinlock code</para></listitem>
-<listitem><para>Don't try to open more than <literal>max_files_per_process</>
-files during postmaster startup</para></listitem>
-<listitem><para>Various memory leakage fixes</para></listitem>
-<listitem><para>Various portability improvements</para></listitem>
-<listitem><para>Update timezone data files</para></listitem>
-<listitem><para>Improve handling of DLL load failures on Windows</para></listitem>
-<listitem><para>Improve random-number generation on Windows</para></listitem>
-<listitem><para>Make <literal>psql -f filename</> return a nonzero exit code
-when opening the file fails</para></listitem>
-<listitem><para>Change <application>pg_dump</> to handle inherited check
-constraints more reliably</para></listitem>
-<listitem><para>Fix password prompting in <application>pg_restore</> on
-Windows</para></listitem>
-<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
-the variable is of pass-by-reference type</para></listitem>
-<listitem><para>Fix PL/Perl <literal>%_SHARED</> so it's actually
-shared</para></listitem>
-<listitem><para>Fix <filename>contrib/pg_autovacuum</> to allow sleep
-intervals over 2000 sec</para></listitem>
-<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
-code</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-3">
-  <title>Release 8.0.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-05-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.2, including several
-   security-related issues.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.3</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.X.  However,
-    it is one possible way of handling two significant security problems
-    that have been found in the initial contents of 8.0.X system
-    catalogs.  A dump/initdb/reload sequence using 8.0.3's initdb will
-    automatically correct these problems.
-   </para>
-
-   <para>
-    The larger security problem is that the built-in character set encoding
-    conversion functions can be invoked from SQL commands by unprivileged
-    users, but the functions were not designed for such use and are not
-    secure against malicious choices of arguments.  The fix involves changing
-    the declared parameter list of these functions so that they can no longer
-    be invoked from SQL commands.  (This does not affect their normal use
-    by the encoding conversion machinery.)
-   </para>
-
-   <para>
-    The lesser problem is that the <filename>contrib/tsearch2</> module
-    creates several functions that are improperly declared to return
-    <type>internal</> when they do not accept <type>internal</> arguments.
-    This breaks type safety for all functions using <type>internal</>
-    arguments.
-   </para>
-
-   <para>
-    It is strongly recommended that all installations repair these errors,
-    either by initdb or by following the manual repair procedure given
-    below.  The errors at least allow unprivileged database users to crash
-    their server process, and might allow unprivileged users to gain the
-    privileges of a database superuser.
-   </para>
-
-   <para>
-    If you wish not to do an initdb, perform the same manual repair
-    procedures shown in the <link linkend="release-7-4-8">7.4.8 release
-    notes</link>.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change encoding function signature to prevent
-misuse</para></listitem>
-<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
-<type>INTERNAL</> function results</para></listitem>
-<listitem><para>Guard against incorrect second parameter to
-<function>record_out</></para></listitem>
-<listitem><para>Repair ancient race condition that allowed a transaction to be
-seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
-than for other purposes</para>
-<para>This is an extremely serious bug since it could lead to apparent
-data inconsistencies being briefly visible to applications.</para></listitem>
-<listitem><para>Repair race condition between relation extension and
-VACUUM</para>
-<para>This could theoretically have caused loss of a page's worth of
-freshly-inserted data, although the scenario seems of very low probability.
-There are no known cases of it having caused more than an Assert failure.
-</para></listitem>
-<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
-<para>
-The comparison code was wrong in the case where the
-<literal>--enable-integer-datetimes</> configuration switch had been used.
-NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
-it will need to be <command>REINDEX</>ed after installing this update, because
-the fix corrects the sort order of column values.
-</para></listitem>
-<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
-<type>TIME WITH TIME ZONE</> values</para></listitem>
-<listitem><para>Fix mis-display of negative fractional seconds in
-<type>INTERVAL</> values</para>
-<para>
-This error only occurred when the
-<literal>--enable-integer-datetimes</> configuration switch had been used.
-</para></listitem>
-<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
-correctly (Neil)</para></listitem>
-<listitem><para>Still more 64-bit fixes for
-<filename>contrib/intagg</></para></listitem>
-<listitem><para>Prevent incorrect optimization of functions returning
-<type>RECORD</></para></listitem>
-<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
-<listitem><para>Fix Borland makefile for libpq</para></listitem>
-<listitem><para>Fix <filename>contrib/btree_gist</> for <type>timetz</> type
-(Teodor)</para></listitem>
-<listitem><para>Make <command>pg_ctl</> check the PID found in
-<filename>postmaster.pid</> to see if it is still a live
-process</para></listitem>
-<listitem><para>Fix <command>pg_dump</>/<command>pg_restore</> problems caused
-by addition of dump timestamps</para></listitem>
-<listitem><para>Fix interaction between materializing holdable cursors and
-firing deferred triggers during transaction commit</para></listitem>
-<listitem><para>Fix memory leak in SQL functions returning pass-by-reference
-data types</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-2">
-  <title>Release 8.0.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-04-07</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.1.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.2</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.*.
-    This release updates the major version number of the
-    <productname>PostgreSQL</productname> libraries, so it might be
-    necessary to re-link some user applications if they cannot
-    find the properly-numbered shared library.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Increment the major version number of all interface
-libraries (Bruce)</para>
-<para>
-This should have been done in 8.0.0.  It is required so 7.4.X versions
-of PostgreSQL client applications, like <application>psql</>,
-can be used on the same machine as 8.0.X applications.  This might require
-re-linking user applications that use these libraries.
-</para></listitem>
-<listitem><para>Add Windows-only <varname>wal_sync_method</> setting of
-<option>fsync_writethrough</> (Magnus, Bruce)</para>
-<para>
-This setting causes <productname>PostgreSQL</productname> to write through
-any disk-drive write cache when writing to WAL.
-This behavior was formerly called <option>fsync</>, but was
-renamed because it acts quite differently from <option>fsync</> on other
-platforms.
-</para>
-</listitem>
-<listitem><para>Enable the <varname>wal_sync_method</> setting of
-<option>open_datasync</> on Windows, and make it the default for that
- platform (Magnus, Bruce)</para>
-<para>
-Because the default is no longer <option>fsync_writethrough</>,
-data loss is possible during a power failure if the disk drive has
-write caching enabled. To turn off the write cache on Windows,
-from the <application>Device Manager</>, choose the drive properties,
-then <literal>Policies</>.
-</para>
-</listitem>
-<listitem><para>New cache management algorithm <acronym>2Q</> replaces
-<acronym>ARC</> (Tom)</para>
-<para>
-This was done to avoid a pending US patent on <acronym>ARC</>.  The
-<acronym>2Q</> code might be a few percentage points slower than
-<acronym>ARC</> for some work loads.  A better cache management algorithm
-will appear in 8.1.
-</para></listitem>
-<listitem><para>Planner adjustments to improve behavior on freshly-created
-tables (Tom)</para></listitem>
-<listitem><para>Allow plpgsql to assign to an element of an array that is
-initially <literal>NULL</> (Tom)</para>
-<para>
-Formerly the array would remain <literal>NULL</>, but now it becomes a
-single-element array.  The main SQL engine was changed to handle
-<command>UPDATE</> of a null array value this way in 8.0, but the similar
-case in plpgsql was overlooked.
-</para>
-</listitem>
-<listitem><para>Convert <literal>\r\n</> and <literal>\r</> to <literal>\n</>
-in plpython function bodies (Michael Fuhr)</para>
-<para>
- This prevents syntax errors when plpython code is written on a Windows or
- Mac client.
-</para>
-</listitem>
-<listitem><para>Allow SPI cursors to handle utility commands that return rows,
-such as <command>EXPLAIN</> (Tom)</para></listitem>
-<listitem><para>Fix <command>CLUSTER</> failure after <command>ALTER TABLE
-SET WITHOUT OIDS</> (Tom)</para></listitem>
-<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</>
-(Neil)</para></listitem>
-<listitem><para>Fix <command>ALTER LANGUAGE RENAME</> (Tom)</para></listitem>
-<listitem><para>Document the Windows-only <literal>register</> and
-<literal>unregister</> options of <application>pg_ctl</> (Magnus)</para></listitem>
-<listitem><para>Ensure operations done during backend shutdown are counted by
-statistics collector</para>
-<para>
-This is expected to resolve reports of <application>pg_autovacuum</>
-not vacuuming the system catalogs often enough &mdash; it was not being
-told about catalog deletions caused by temporary table removal during
-backend exit.
-</para></listitem>
-<listitem><para>Change the Windows default for configuration parameter
-<varname>log_destination</> to <option>eventlog</> (Magnus)</para>
-<para>
-By default, a server running on Windows will now send log output to the
-Windows event logger rather than standard error.
-</para></listitem>
-<listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem>
-<listitem><para>Allow <command>ALTER DATABASE RENAME</> by superusers
-who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
-<listitem><para>Modify WAL log entries for <command>CREATE</> and
-<command>DROP DATABASE</> to not specify absolute paths (Tom)</para>
-<para>This allows point-in-time recovery on a different machine with possibly
-different database location.  Note that <command>CREATE TABLESPACE</> still
-poses a hazard in such situations.
-</para></listitem>
-<listitem><para>Fix crash from a backend exiting with an open transaction
-that created a table and opened a cursor on it (Tom)</para></listitem>
-<listitem><para>Fix <function>array_map()</> so it can call PL functions
-(Tom)</para></listitem>
-<listitem><para>Several <filename>contrib/tsearch2</> and
-<filename>contrib/btree_gist</> fixes (Teodor)
-</para></listitem>
-<listitem><para>Fix crash of some <filename>contrib/pgcrypto</>
-functions on some platforms (Marko Kreen)</para></listitem>
-<listitem><para>Fix <filename>contrib/intagg</> for 64-bit platforms
-(Tom)</para></listitem>
-<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</> statement
-(Michael)</para></listitem>
-<listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
-ecpg (Christof Petig)</para></listitem>
-<listitem><para>Do not use locale-aware versions of <function>upper()</>,
-<function>lower()</>, and <function>initcap()</> when the locale is
-<literal>C</> (Bruce)</para>
-<para>
- This allows these functions to work on platforms that generate errors
- for non-7-bit data when the locale is <literal>C</>.
-</para></listitem>
-<listitem><para>Fix <function>quote_ident()</> to quote names that match keywords (Tom)</para></listitem>
-<listitem><para>Fix <function>to_date()</> to behave reasonably when
-<literal>CC</> and <literal>YY</> fields are both used (Karel)</para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</> from failing
-when given a zero-month interval (Tom)</para></listitem>
-<listitem><para>Fix wrong week returned by <function>date_trunc('week')</>
-(Bruce)</para>
-<para>
-<function>date_trunc('week')</>
-returned the wrong year for the first few days of January in some years.
-</para></listitem>
-<listitem><para>Use the correct default mask length for class <literal>D</>
-addresses in <type>INET</> data types (Tom)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0-1">
-  <title>Release 8.0.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-01-31</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 8.0.0, including several
-   security-related issues.
-   For information about new features in the 8.0 major release, see
-   <xref linkend="release-8-0">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 8.0.1</title>
-
-   <para>
-    A dump/restore is not required for those running 8.0.0.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
-<para>
-On platforms that will automatically execute initialization functions of a
-shared library (this includes at least Windows and ELF-based Unixen),
-<command>LOAD</> can be used to make the server execute arbitrary code.
-Thanks to NGS Software for reporting this.</para></listitem>
-<listitem><para>Check that creator of an aggregate function has the right to
-execute the specified transition functions</para>
-<para>
-This oversight made it possible to bypass denial of EXECUTE
-permission on a function.</para></listitem>
-<listitem><para>Fix security and 64-bit issues in
-contrib/intagg</para></listitem>
-<listitem><para>Add needed STRICT marking to some contrib functions (Kris
-Jurka)</para></listitem>
-<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
-many parameters (Neil)</para></listitem>
-<listitem><para>Make <command>ALTER TABLE ADD COLUMN</> enforce domain
-constraints in all cases</para></listitem>
-<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
-<para>
-The result of the join was mistakenly supposed to be sorted the same as the
-left input.  This could not only deliver mis-sorted output to the user, but
-in case of nested merge joins could give outright wrong answers.
-</para></listitem>
-<listitem><para>Improve planning of grouped aggregate queries</para></listitem>
-<listitem><para><command>ROLLBACK TO <replaceable>savepoint</></command>
-closes cursors created since the savepoint</para></listitem>
-<listitem><para>Fix inadequate backend stack size on Windows</para></listitem>
-<listitem><para>Avoid SHGetSpecialFolderPath() on Windows
-(Magnus)</para></listitem>
-<listitem><para>Fix some problems in running pg_autovacuum as a Windows
-service (Dave Page)</para></listitem>
-<listitem><para>Multiple minor bug fixes in
-pg_dump/pg_restore</para></listitem>
-<listitem><para>Fix ecpg segfault with named structs used in
-typedefs (Michael)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-8-0">
-  <title>Release 8.0</title>
-
-  <note>
-   <title>Release date</title>
-   <simpara>2005-01-19</simpara>
-  </note>
-
-  <sect2>
-   <title>Overview</title>
-
-   <para>
-    Major changes in this release:
-   </para>
-
-   <variablelist>
-    <varlistentry>
-     <term>
-      Microsoft Windows Native Server
-     </term>
-
-     <listitem>
-      <para>
-       This is the first <productname>PostgreSQL</productname> release
-       to run natively on <trademark class="registered">Microsoft Windows</> as
-       a server. It can run as a <productname>Windows</> service. This
-       release supports NT-based Windows releases like
-       <productname>Windows 2000 SP4</>, <productname>Windows XP</>, and
-       <productname>Windows 2003</>. Older releases like
-       <productname>Windows 95</>, <productname>Windows 98</>, and
-       <productname>Windows ME</> are not supported because these operating
-       systems do not have the infrastructure to support
-       <productname>PostgreSQL</productname>. A separate installer
-       project has been created to ease installation on
-       <productname>Windows</> &mdash; see <ulink
-       url="http://www.postgresql.org/ftp/win32/"></ulink>.
-      </para>
-
-      <para>
-       Although tested throughout our release cycle, the Windows port
-       does not have the benefit of years of use in production
-       environments that <productname>PostgreSQL</productname> has on
-       Unix platforms.  Therefore it should be treated with the same
-       level of caution as you would a new product.
-      </para>
-
-      <para>
-       Previous releases required the Unix emulation toolkit
-       <productname>Cygwin</> in order to run the server on Windows
-       operating systems.  <productname>PostgreSQL</productname> has
-       supported native clients on Windows for many years.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Savepoints
-     </term>
-
-     <listitem>
-      <para>
-       Savepoints allow specific parts of a transaction to be aborted
-       without affecting the remainder of the transaction. Prior
-       releases had no such capability; there was no way to recover
-       from a statement failure within a transaction except by
-       aborting the whole transaction. This feature is valuable for
-       application writers who require error recovery within a
-       complex transaction.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Point-In-Time Recovery
-     </term>
-
-     <listitem>
-      <para>
-       In previous releases there was no way to recover from disk
-       drive failure except to restore from a previous backup or use
-       a standby replication server.  Point-in-time recovery allows
-       continuous backup of the server.  You can recover either to
-       the point of failure or to some transaction in the past.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Tablespaces
-     </term>
-
-     <listitem>
-      <para>
-       Tablespaces allow administrators to select different file systems
-       for storage of individual tables, indexes, and databases.
-       This improves performance and control over disk space
-       usage. Prior releases used <application>initlocation</> and
-       manual symlink management for such tasks.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Improved Buffer Management, <command>CHECKPOINT</command>,
-      <command>VACUUM</command>
-     </term>
-
-     <listitem>
-      <para>
-       This release has a more intelligent buffer replacement strategy,
-       which will make better use of available shared buffers and
-       improve performance. The performance impact of vacuum and
-       checkpoints is also lessened.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Change Column Types
-     </term>
-
-     <listitem>
-      <para>
-       A column's data type can now be changed with <command>ALTER
-       TABLE</command>.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      New Perl Server-Side Language
-     </term>
-
-     <listitem>
-      <para>
-       A new version of the <application>plperl</> server-side language now
-       supports a persistent shared storage area, triggers, returning records
-       and arrays of records, and SPI calls to access the database.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-       Comma-separated-value (CSV) support in <command>COPY</command>
-     </term>
-
-     <listitem>
-      <para>
-       <command>COPY</command> can now read and write
-       comma-separated-value files. It has the flexibility to
-       interpret nonstandard quoting and separation characters too.
-      </para>
-     </listitem>
-    </varlistentry>
-
-   </variablelist>
-  </sect2>
-
-  <sect2>
-   <title>Migration to Version 8.0</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>
-      In <option>READ COMMITTED</> serialization mode, volatile functions
-      now see the results of concurrent transactions committed up to the
-      beginning of each statement within the function, rather than up to the
-      beginning of the interactive command that called the function.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Functions declared <option>STABLE</> or <option>IMMUTABLE</> always
-      use the snapshot of the calling query, and therefore do not see the
-      effects of actions taken after the calling query starts, whether in
-      their own transaction or other transactions.  Such a function must be
-      read-only, too, meaning that it cannot use any SQL commands other than
-      <command>SELECT</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Nondeferred <option>AFTER</> triggers are now fired immediately
-      after completion of the triggering query, rather than upon
-      finishing the current interactive command. This makes a
-      difference when the triggering query occurred within a function:
-      the trigger is invoked before the function proceeds to its next
-      operation.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Server configuration parameters <varname>virtual_host</> and
-      <varname>tcpip_socket</> have been replaced with a more general
-      parameter <varname>listen_addresses</>. Also, the server now listens on
-      <literal>localhost</> by default, which eliminates the need for the
-      <literal>-i</> postmaster switch in many scenarios.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Server configuration parameters <varname>SortMem</> and
-      <varname>VacuumMem</> have been renamed to <varname>work_mem</>
-      and <varname>maintenance_work_mem</> to better reflect their
-      use. The original names are still supported in
-      <command>SET</command> and <command>SHOW</command>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Server configuration parameters <varname>log_pid</>,
-      <varname>log_timestamp</>, and <varname>log_source_port</> have been
-      replaced with a more general parameter <varname>log_line_prefix</>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Server configuration parameter <varname>syslog</> has been
-      replaced with a more logical <varname>log_destination</> variable to
-      control the log output destination.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Server configuration parameter <varname>log_statement</> has been
-      changed so it can selectively log just database modification or
-      data definition statements.  Server configuration parameter
-      <varname>log_duration</> now prints only when <varname>log_statement</>
-      prints the query.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Server configuration parameter <varname>max_expr_depth</> parameter has
-      been replaced with <varname>max_stack_depth</> which measures the
-      physical stack size rather than the expression nesting depth. This
-      helps prevent session termination due to stack overflow caused by
-      recursive functions.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The <function>length()</> function no longer counts trailing spaces in
-      <type>CHAR(n)</> values.
-     </para>
-    </listitem>
-
-   <listitem>
-    <para>
-     Casting an integer to <type>BIT(N)</> selects the rightmost N bits of the
-     integer, not the leftmost N bits as before.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Updating an element or slice of a NULL array value now produces
-     a nonnull array result, namely an array containing
-     just the assigned-to positions.
-    </para>
-   </listitem>
-
-    <listitem>
-     <para>
-      Syntax checking of array input values has been tightened up
-      considerably. Junk that was previously allowed in odd places with
-      odd results now causes an error. Empty-string element values
-      must now be written as <literal>""</>, rather than writing nothing.
-      Also changed behavior with respect to whitespace surrounding
-      array elements: trailing whitespace is now ignored, for symmetry
-      with leading whitespace (which has always been ignored).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Overflow in integer arithmetic operations is now detected and
-      reported as an error.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The arithmetic operators associated with the single-byte
-      <type>"char"</> data type have been removed.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The <function>extract()</> function (also called
-      <function>date_part</>) now returns the proper year for BC dates.
-      It previously returned one less than the correct year. The
-      function now also returns the proper values for millennium and
-      century.
-     </para>
-    </listitem>
-
-   <listitem>
-    <para>
-     <type>CIDR</> values now must have their nonmasked bits be zero.
-     For example, we no longer allow
-     <literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
-     values should never have been accepted by
-     <productname>PostgreSQL</productname> and will now be rejected.
-    </para>
-   </listitem>
-
-    <listitem>
-     <para>
-      <command>EXECUTE</command> now returns a completion tag that
-      matches the executed statement.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <application>psql</>'s <command>\copy</> command now reads or
-      writes to the query's <literal>stdin/stdout</>, rather than
-      <application>psql</>'s <literal>stdin/stdout</>. The previous
-      behavior can be accessed via new
-      <option>pstdin</>/<option>pstdout</> parameters.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-     The JDBC client interface has been removed from the core
-     distribution, and is now hosted at <ulink url=
-     "http://jdbc.postgresql.org"></ulink>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-     The Tcl client interface has also been removed. There are several
-     Tcl interfaces now hosted at <ulink url=
-     "http://gborg.postgresql.org"></ulink>.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The server now uses its own time zone database, rather than the
-      one supplied by the operating system. This will provide consistent
-      behavior across all platforms.  In most cases, there should be
-      little noticeable difference in time zone behavior, except that
-      the time zone names used by <command>SET</>/<command>SHOW</>
-      <varname>TimeZone</> might be different from what your platform provides.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <application>Configure</>'s threading option no longer requires
-      users to run tests or edit configuration files; threading options
-      are now detected automatically.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Now that tablespaces have been implemented,
-      <application>initlocation</> has been removed.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The API for user-defined GiST indexes has been changed. The
-      Union and PickSplit methods are now passed a pointer to a
-      special <structname>GistEntryVector</structname> structure,
-      rather than a <type>bytea</type>.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-  </sect2>
-
- <sect2>
-  <title>Deprecated Features</title>
-
-  <para>
-    Some aspects of <productname>PostgreSQL</productname>'s behavior
-    have been determined to be suboptimal. For the sake of backward
-    compatibility these have not been removed in 8.0, but they are
-    considered deprecated and will be removed in the next major
-    release.
-    </para>
-
-   <itemizedlist>
-    <listitem>
-     <para>
-      The 8.1 release will remove the <function>to_char()</> function
-      for intervals.
-     </para>
-    </listitem>
-
-     <listitem>
-      <para>
-       The server now warns of empty strings passed to
-       <type>oid</type>/<type>float4</type>/<type>float8</type> data
-       types, but continues to interpret them as zeroes as before.
-       In the next major release, empty strings will be considered
-       invalid input for these data types.
-      </para>
-     </listitem>
-
-    <listitem>
-     <para>
-      By default, tables in <productname>PostgreSQL</productname> 8.0
-      and earlier are created with <type>OID</>s. In the next release,
-      this will <emphasis>not</emphasis> be the case: to create a table
-      that contains <type>OID</>s, the <option>WITH OIDS</> clause must
-      be specified or the <varname>default_with_oids</varname>
-      configuration parameter must be set. Users are encouraged to
-      explicitly specify <option>WITH OIDS</> if their tables
-      require OIDs for compatibility with future releases of
-      <productname>PostgreSQL</productname>.
-     </para>
-    </listitem>
-
-   </itemizedlist>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    Below you will find a detailed account of the changes between
-    release 8.0 and the previous major release.
-   </para>
-
-   <sect3>
-    <title>Performance Improvements</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Support cross-data-type index usage (Tom)
-      </para>
-      <para>
-       Before this change, many queries would not use an index if the data
-       types did not match exactly. This improvement makes index usage more
-       intuitive and consistent.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New buffer replacement strategy that improves caching (Jan)
-      </para>
-      <para>
-       Prior releases used a least-recently-used (LRU) cache to keep
-       recently referenced pages in memory. The LRU algorithm
-       did not consider the number of times a specific cache entry was
-       accessed, so large table scans could force out useful cache pages.
-       The new cache algorithm uses four separate lists to track most
-       recently used and most frequently used cache pages and dynamically
-       optimize their replacement based on the work load. This should
-       lead to much more efficient use of the shared buffer cache.
-       Administrators who have tested shared buffer sizes in the past
-       should retest with this new cache replacement policy.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add subprocess to write dirty buffers periodically to reduce
-       checkpoint writes (Jan)
-      </para>
-      <para>
-       In previous releases, the checkpoint process, which runs every few
-       minutes, would write all dirty buffers to the operating system's
-       buffer cache then flush all dirty operating system buffers to
-       disk. This resulted in a periodic spike in disk usage that often
-       hurt performance. The new code uses a background writer to trickle
-       disk writes at a steady pace so checkpoints have far fewer dirty
-       pages to write to disk. Also, the new code does not issue a global
-       <function>sync()</> call, but instead <function>fsync()</>s just
-       the files written since the last checkpoint. This should improve
-       performance and minimize degradation during checkpoints.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add ability to prolong vacuum to reduce performance impact (Jan)
-      </para>
-      <para>
-       On busy systems, <command>VACUUM</command> performs many I/O
-       requests which can hurt performance for other users. This
-       release allows you to slow down <command>VACUUM</command> to
-       reduce its impact on other users, though this increases the
-       total duration of <command>VACUUM</command>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
-      </para>
-      <para>
-       This improves the way indexes are scanned when many duplicate
-       values exist in the index.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Use dynamically-generated table size estimates while planning (Tom)
-      </para>
-      <para>
-       Formerly the planner estimated table sizes using the values seen
-       by the last <command>VACUUM</command> or <command>ANALYZE</command>,
-       both as to physical table size (number of pages) and number of rows.
-       Now, the current physical table size is obtained from the kernel,
-       and the number of rows is estimated by multiplying the table size
-       by the row density (rows per page) seen by the last
-       <command>VACUUM</command> or <command>ANALYZE</command>.  This should
-       produce more reliable estimates in cases where the table size has
-       changed significantly since the last housekeeping command.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improved index usage with <literal>OR</> clauses (Tom)
-      </para>
-      <para>
-       This allows the optimizer to use indexes in statements with many OR
-       clauses that would not have been indexed in the past.  It can also use
-       multi-column indexes where the first column is specified and the second
-       column is part of an <literal>OR</> clause.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve matching of partial index clauses (Tom)
-      </para>
-      <para>
-       The server is now smarter about using partial indexes in queries
-       involving complex <option>WHERE</> clauses.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve performance of the GEQO optimizer (Tom)
-      </para>
-      <para>
-       The GEQO optimizer is used to plan queries involving many tables (by
-       default, twelve or more). This release speeds up the way queries are
-       analyzed to decrease time spent in optimization.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Miscellaneous optimizer improvements
-      </para>
-      <para>
-       There is not room here to list all the minor improvements made, but
-       numerous special cases work better than in prior releases.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve lookup speed for C functions (Tom)
-      </para>
-      <para>
-       This release uses a hash table to lookup information for dynamically
-       loaded C functions. This improves their speed so they perform nearly as
-       quickly as functions that are built into the server executable.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add type-specific <command>ANALYZE</command> statistics
-       capability (Mark Cave-Ayland)
-      </para>
-      <para>
-       This feature allows more flexibility in generating statistics
-       for nonstandard data types.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <command>ANALYZE</command> now collects statistics for
-       expression indexes (Tom)
-      </para>
-      <para>
-       Expression indexes (also called functional indexes) allow users to
-       index not just columns but the results of expressions and function
-       calls. With this release, the optimizer can gather and use statistics
-       about the contents of expression indexes.  This will greatly improve
-       the quality of planning for queries in which an expression index is
-       relevant.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New two-stage sampling method for <command>ANALYZE</command>
-       (Manfred Koizar)
-      </para>
-      <para>
-       This gives better statistics when the density of valid rows is very
-       different in different regions of a table.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Speed up <command>TRUNCATE</command> (Tom)
-      </para>
-      <para>
-       This buys back some of the performance loss observed in 7.4, while still
-       keeping <command>TRUNCATE</command> transaction-safe.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Server Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add WAL file archiving and point-in-time recovery (Simon Riggs)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add tablespaces so admins can control disk layout (Gavin)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add a built-in log rotation program (Andreas Pflug)
-      </para>
-      <para>
-       It is now possible to log server messages conveniently without
-       relying on either <application>syslog</> or an external log
-       rotation program.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new read-only server configuration parameters to show server
-       compile-time settings: <varname>block_size</>,
-       <varname>integer_datetimes</>, <varname>max_function_args</>,
-       <varname>max_identifier_length</>, <varname>max_index_keys</>  (Joe)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make quoting of <literal>sameuser</>, <literal>samegroup</>, and
-       <literal>all</> remove special meaning of these terms in
-       <filename>pg_hba.conf</> (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Use clearer IPv6 name <literal>::1/128</> for
-       <literal>localhost</> in default <filename>pg_hba.conf</> (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Use CIDR format in <filename>pg_hba.conf</> examples (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Rename server configuration parameters <varname>SortMem</> and
-       <varname>VacuumMem</> to <varname>work_mem</> and
-       <varname>maintenance_work_mem</> (Old names still supported) (Tom)
-      </para>
-      <para>
-       This change was made to clarify that bulk operations such as index and
-       foreign key creation use <varname>maintenance_work_mem</>, while
-       <varname>work_mem</> is for workspaces used during query execution.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow logging of session disconnections using server configuration
-       <varname>log_disconnections</> (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new server configuration parameter <varname>log_line_prefix</> to
-       allow control of information emitted in each log line (Andrew)
-      </para>
-      <para>
-       Available information includes user name, database name, remote IP
-       address, and session start time.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove server configuration parameters <varname>log_pid</>,
-       <varname>log_timestamp</>, <varname>log_source_port</>; functionality
-       superseded by <varname>log_line_prefix</> (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Replace the <varname>virtual_host</> and <varname>tcpip_socket</>
-       parameters with a unified <varname>listen_addresses</> parameter
-       (Andrew, Tom)
-      </para>
-      <para>
-       <varname>virtual_host</> could only specify a single IP address to
-       listen on.  <varname>listen_addresses</> allows multiple addresses
-       to be specified.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Listen on localhost by default, which eliminates the need for the
-       <option>-i</> postmaster switch in many scenarios (Andrew)
-      </para>
-      <para>
-       Listening on localhost (<literal>127.0.0.1</>) opens no new
-       security holes but allows configurations like Windows and JDBC,
-       which do not support local sockets, to work without special
-       adjustments.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <varname>syslog</> server configuration parameter, and add more
-       logical <varname>log_destination</> variable to control log output
-       location (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change server configuration parameter <varname>log_statement</> to take
-       values <varname>all</>, <varname>mod</>, <varname>ddl</>, or
-       <varname>none</> to select which queries are logged (Bruce)
-      </para>
-      <para>
-       This allows administrators to log only data definition changes or
-       only data modification statements.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Some logging-related configuration parameters could formerly be adjusted
-       by ordinary users, but only in the <quote>more verbose</> direction.
-       They are now treated more strictly: only superusers can set them.
-       However, a superuser can use <command>ALTER USER</> to provide per-user
-       settings of these values for non-superusers.  Also, it is now possible
-       for superusers to set values of superuser-only configuration parameters
-       via <literal>PGOPTIONS</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow configuration files to be placed outside the data directory (mlw)
-      </para>
-      <para>
-       By default, configuration files are kept in the cluster's top directory.
-       With this addition, configuration files can be placed outside the
-       data directory, easing administration.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Plan prepared queries only when first executed so constants can be
-       used for statistics (Oliver Jowett)
-      </para>
-      <para>
-       Prepared statements plan queries once and execute them many
-       times. While prepared queries avoid the overhead of re-planning
-       on each use, the quality of the plan suffers from not knowing the exact
-       parameters to be used in the query.  In this release, planning of
-       unnamed prepared statements is delayed until the first execution,
-       and the actual parameter values of that execution are used as
-       optimization hints.  This allows use of out-of-line parameter passing
-       without incurring a performance penalty.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>DECLARE CURSOR</command> to take parameters
-       (Oliver Jowett)
-      </para>
-      <para>
-       It is now useful to issue <command>DECLARE CURSOR</command> in a
-       <function>Parse</> message with parameters. The parameter values
-       sent at <function>Bind</> time will be substituted into the
-       execution of the cursor's query.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix hash joins and aggregates of <type>inet</type> and
-       <type>cidr</type> data types (Tom)
-      </para>
-      <para>
-       Release 7.4 handled hashing of mixed <type>inet</type> and
-       <type>cidr</type> values incorrectly.  (This bug did not exist
-       in prior releases because they wouldn't try to hash either
-       data type.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <varname>log_duration</> print only when <varname>log_statement</>
-       prints the query (Ed L.)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Query Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add savepoints (nested transactions) (Alvaro)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Unsupported isolation levels are now accepted and promoted to the
-       nearest supported level (Peter)
-      </para>
-      <para>
-       The SQL specification states that if a database doesn't support a
-       specific isolation level, it should use the next more restrictive level.
-       This change complies with that recommendation.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>BEGIN WORK</command> to specify transaction
-       isolation levels like <command>START TRANSACTION</command> does
-       (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix table permission checking for cases in which rules generate
-       a query type different from the originally submitted query (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
-       David Fetter)
-      </para>
-      <para>
-       In previous releases, because single quotes had to be used to
-       quote a function's body, the use of single quotes inside the
-       function text required use of two single quotes or other error-prone
-       notations. With this release we add the ability to use "dollar
-       quoting" to quote a block of text.  The ability to use different
-       quoting delimiters at different nesting levels greatly simplifies
-       the task of quoting correctly, especially in complex functions.
-       Dollar quoting can be used anywhere quoted text is needed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <literal>CASE val WHEN compval1 THEN ...</> evaluate <literal>val</> only once (Tom)
-      </para>
-      <para>
-       <option>CASE</> no longer evaluates the tested expression multiple
-       times. This has benefits when the expression is complex or is
-       volatile.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Test <option>HAVING</> before computing target list of an
-       aggregate query (Tom)
-      </para>
-      <para>
-       Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose)
-       ... GROUP BY ... HAVING SUM(lose) &gt; 0</>.  This should work but formerly
-       could fail with divide-by-zero.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Replace <varname>max_expr_depth</> parameter with
-       <varname>max_stack_depth</> parameter, measured in kilobytes of stack
-       size (Tom)
-      </para>
-      <para>
-      This gives us a fairly bulletproof defense against crashing due to
-      runaway recursive functions. Instead of measuring the depth of expression
-      nesting, we now directly measure the size of the execution stack.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow arbitrary row expressions (Tom)
-      </para>
-      <para>
-       This release allows SQL expressions to contain arbitrary composite
-       types, that is, row values. It also allows functions to more easily
-       take rows as arguments and return row values.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <option>LIKE</>/<option>ILIKE</> to be used as the operator
-       in row and subselect comparisons (Fabien Coelho)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Avoid locale-specific case conversion of basic ASCII letters in
-       identifiers and keywords (Tom)
-      </para>
-      <para>
-       This solves the <quote>Turkish problem</> with mangling of words
-       containing <literal>I</> and  <literal>i</>.  Folding of characters
-       outside the 7-bit-ASCII set is still locale-aware.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve syntax error reporting (Fabien, Tom)
-      </para>
-      <para>
-       Syntax error reports are more useful than before.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <command>EXECUTE</command> to return a completion tag
-       matching the executed statement (Kris Jurka)
-      </para>
-      <para>
-       Previous releases return an <command>EXECUTE</command> tag for
-       any <command>EXECUTE</command> call. In this release, the tag
-       returned will reflect the command executed.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Avoid emitting <option>NATURAL CROSS JOIN</> in rule listings (Tom)
-      </para>
-      <para>
-       Such a clause makes no logical sense, but in some cases the rule
-       decompiler formerly produced this syntax.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Object Manipulation Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Add <command>COMMENT ON</> for casts, conversions, languages,
-       operator classes, and large objects (Christopher)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add new server configuration parameter <varname>default_with_oids</> to
-       control whether tables are created with <type>OID</>s by default (Neil)
-      </para>
-      <para>
-       This allows administrators to control whether <command>CREATE
-       TABLE</command> commands create tables with or without <type>OID</>
-       columns by default.  (Note: the current factory default setting for
-       <varname>default_with_oids</> is <literal>TRUE</>, but the default
-       will become <literal>FALSE</> in future releases.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>WITH</> / <option>WITHOUT OIDS</> clause to
-       <command>CREATE TABLE AS</command> (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>ALTER TABLE DROP COLUMN</> to drop an <type>OID</>
-       column (<command>ALTER TABLE SET WITHOUT OIDS</> still works)
-       (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow composite types as table columns (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>ALTER ... ADD COLUMN</> with defaults and
-       <option>NOT NULL</> constraints; works per SQL spec (Rod)
-      </para>
-      <para>
-       It is now possible for <option>ADD COLUMN</> to create a column
-       that is not initially filled with NULLs, but with a specified
-       default value.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>ALTER COLUMN TYPE</> to change column's type (Rod)
-      </para>
-      <para>
-       It is now possible to alter a column's data type without dropping
-       and re-adding the column.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow multiple <command>ALTER</> actions in a single <command>ALTER
-       TABLE</command> command (Rod)
-      </para>
-      <para>
-       This is particularly useful for <command>ALTER</> commands that
-       rewrite the table (which include <option>ALTER COLUMN TYPE</> and
-       <option>ADD COLUMN</> with a default). By grouping
-       <command>ALTER</> commands together, the table need be rewritten
-       only once.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>ALTER TABLE</command> to add <type>SERIAL</type>
-       columns (Tom)
-      </para>
-      <para>
-       This falls out from the new capability of specifying defaults for new
-       columns.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow changing the owners of aggregates, conversions, databases,
-       functions, operators, operator classes, schemas, types, and tablespaces
-       (Christopher, Euler Taveira de Oliveira)
-      </para>
-      <para>
-       Previously this required modifying the system tables directly.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow temporary object creation to be limited to <option>SECURITY
-       DEFINER</> functions (Sean Chittenden)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</> (Christopher)
-      </para>
-      <para>
-       Prior to this release, there was no way to clear an auto-cluster
-       specification except to modify the system tables.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Constraint/Index/<type>SERIAL</> names are now
-       <replaceable>table_column_type</>
-       with numbers appended to guarantee uniqueness within the schema
-       (Tom)
-      </para>
-      <para>
-       The SQL specification states that such names should be unique
-       within a schema.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>pg_get_serial_sequence()</> to return a
-       <type>SERIAL</> column's sequence name (Christopher)
-      </para>
-      <para>
-       This allows automated scripts to reliably find the <type>SERIAL</>
-       sequence name.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Warn when primary/foreign key data type mismatch requires costly lookup
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <command>ALTER INDEX</> command to allow moving of indexes
-       between tablespaces (Gavin)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <command>ALTER TABLE OWNER</> change dependent sequence
-       ownership too (Alvaro)
-      </para>
-     </listitem>
-
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Utility Command Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow <command>CREATE SCHEMA</command> to create triggers,
-       indexes, and sequences (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>ALSO</> keyword to <command>CREATE RULE</command> (Fabien
-       Coelho)
-      </para>
-      <para>
-       This allows <option>ALSO</> to be added to rule creation to contrast it with
-       <option>INSTEAD</> rules.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>NOWAIT</> option to <command>LOCK</command> (Tatsuo)
-      </para>
-      <para>
-       This allows the <command>LOCK</command> command to fail if it
-       would have to wait for the requested lock.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <command>COPY</command> to read and write
-       comma-separated-value (CSV) files (Andrew, Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Generate error if the <command>COPY</command> delimiter and NULL
-       string conflict (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <command>GRANT</command>/<command>REVOKE</command> behavior
-       follows the SQL spec more closely
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Avoid locking conflict between <command>CREATE INDEX</command>
-       and <command>CHECKPOINT</command> (Tom)
-      </para>
-      <para>
-       In 7.3 and 7.4, a long-running B-tree index build could block concurrent
-       <command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the
-       WAL log could not be recycled.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Database-wide <command>ANALYZE</command> does not hold locks
-       across tables (Tom)
-      </para>
-      <para>
-       This reduces the potential for deadlocks against other backends
-       that want exclusive locks on tables.  To get the benefit of this
-       change, do not execute database-wide <command>ANALYZE</command>
-       inside a transaction block (<command>BEGIN</command> block); it
-       must be able to commit and start a new transaction for each
-       table.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <command>REINDEX</command> does not exclusively lock the index's
-       parent table anymore
-      </para>
-      <para>
-       The index itself is still exclusively locked, but readers of the
-       table can continue if they are not using the particular index
-       being rebuilt.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Erase MD5 user passwords when a user is renamed (Bruce)
-      </para>
-      <para>
-       <productname>PostgreSQL</productname> uses the user name as salt
-       when encrypting passwords via MD5. When a user's name is changed,
-       the salt will no longer match the stored MD5 password, so the
-       stored password becomes useless.  In this release a notice is
-       generated and the password is cleared.  A new password must then
-       be assigned if the user is to be able to log in with a password.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <application>pg_ctl</> <option>kill</> option for Windows (Andrew)
-      </para>
-      <para>
-       Windows does not have a <literal>kill</> command to send signals to
-       backends so this capability was added to <application>pg_ctl</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Information schema improvements
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>--pwfile</> option to
-       <application>initdb</application> so the initial password can be
-       set by GUI tools (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Detect locale/encoding mismatch in
-       <application>initdb</application> (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>register</> command to <application>pg_ctl</> to
-       register Windows operating system service (Dave Page)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Data Type and Function Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       More complete support for composite types (row types)  (Tom)
-      </para>
-      <para>
-       Composite values can be used in many places where only scalar values
-       worked before.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Reject nonrectangular array values as erroneous (Joe)
-      </para>
-      <para>
-       Formerly, <function>array_in</> would silently build a
-       surprising result.
-      </para>
-     </listitem>
-
-      <listitem>
-       <para>
-        Overflow in integer arithmetic operations is now detected (Tom)
-       </para>
-      </listitem>
-
-      <listitem>
-       <para>
-        The arithmetic operators associated with the single-byte
-        <type>"char"</> data type have been removed.
-       </para>
-       <para>
-        Formerly, the parser would select these operators in many situations
-        where an <quote>unable to select an operator</> error would be more
-        appropriate, such as <literal>null * null</>.  If you actually want
-        to do arithmetic on a <type>"char"</> column, you can cast it to
-        integer explicitly.
-       </para>
-      </listitem>
-
-     <listitem>
-       <para>
-        Syntax checking of array input values considerably tightened up (Joe)
-       </para>
-      <para>
-        Junk that was previously allowed in odd places with odd results
-        now causes an <literal>ERROR</>, for example, non-whitespace
-        after the closing right brace.
-       </para>
-     </listitem>
-
-     <listitem>
-       <para>
-        Empty-string array element values must now be written as
-        <literal>""</>, rather than writing nothing (Joe)
-       </para>
-      <para>
-        Formerly, both ways of writing an empty-string element value were
-        allowed, but now a quoted empty string is required.  The case where
-        nothing at all appears will probably be considered to be a NULL
-        element value in some future release.
-       </para>
-     </listitem>
-
-     <listitem>
-       <para>
-        Array element trailing whitespace is now ignored (Joe)
-       </para>
-      <para>
-        Formerly leading whitespace was ignored, but trailing whitespace
-        between an element value and the delimiter or right brace was
-        significant.  Now trailing whitespace is also ignored.
-       </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Emit array values with explicit array bounds when lower bound is not one
-       (Joe)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Accept <literal>YYYY-monthname-DD</> as a date string (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <function>netmask</> and <function>hostmask</> functions
-       return maximum-length mask length (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change factorial function to return <type>numeric</type> (Gavin)
-      </para>
-      <para>
-       Returning <type>numeric</type> allows the factorial function to
-       work for a wider range of input values.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <function>to_char</>/<function>to_date()</> date conversion
-       improvements (Kurt Roeckx, Fabien Coelho)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <function>length()</> disregard trailing spaces in
-       <type>CHAR(n)</> (Gavin)
-      </para>
-      <para>
-       This change was made to improve consistency: trailing spaces are
-       semantically insignificant in <type>CHAR(n)</> data, so they
-       should not be counted by <function>length()</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Warn about empty string being passed to
-       <type>OID</>/<type>float4</>/<type>float8</> data types (Neil)
-      </para>
-      <para>
-       8.1 will throw an error instead.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow leading or trailing whitespace in
-       <type>int2</>/<type>int4</>/<type>int8</>/<type>float4</>/<type>float8</>
-       input routines
-       (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Better support for IEEE <literal>Infinity</> and <literal>NaN</>
-       values in <type>float4</type>/<type>float8</type> (Neil)
-      </para>
-      <para>
-       These should now work on all platforms that support IEEE-compliant
-       floating point arithmetic.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>week</> option to <function>date_trunc()</> (Robert Creager)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <function>to_char</function> for <literal>1 BC</>
-       (previously it returned <literal>1 AD</>) (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <function>date_part(year)</> for BC dates (previously it
-       returned one less than the correct year) (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <function>date_part()</> to return the proper millennium and
-       century (Fabien Coelho)
-      </para>
-      <para>
-       In previous versions, the century and millennium results had a wrong
-       number and started in the wrong year, as compared to standard
-       reckoning of such things.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>ceiling()</> as an alias for <function>ceil()</>,
-       and <function>power()</> as an alias for <function>pow()</> for
-       standards compliance (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <function>ln()</>, <function>log()</>,
-       <function>power()</>, and <function>sqrt()</> to emit the correct
-       <literal>SQLSTATE</> error codes for certain error conditions, as
-       specified by SQL:2003 (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>width_bucket()</> function as defined by SQL:2003 (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>generate_series()</> functions to simplify working
-       with numeric sets (Joe)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix <function>upper/lower/initcap()</> functions to work with
-       multibyte encodings (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add boolean and bitwise integer <option>AND</>/<option>OR</>
-       aggregates (Fabien Coelho)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New session information functions to return network addresses for client
-       and server (Sean Chittenden)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add function to determine the area of a closed path (Sean Chittenden)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add function to send cancel request to other backends (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <type>interval</> plus <type>datetime</> operators (Tom)
-      </para>
-      <para>
-       The reverse ordering, <type>datetime</> plus <type>interval</>,
-       was already supported, but both are required by the SQL standard.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Casting an integer to <type>BIT(N)</> selects the rightmost N bits
-       of the integer
-       (Tom)
-      </para>
-      <para>
-       In prior releases, the leftmost N bits were selected, but this was
-       deemed unhelpful, not to mention inconsistent with casting from bit
-       to int.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Require <type>CIDR</> values to have all nonmasked bits be zero
-       (Kevin Brintnall)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Server-Side Language Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       In <literal>READ COMMITTED</> serialization mode, volatile functions
-       now see the results of concurrent transactions committed up to the
-       beginning of each statement within the function, rather than up to the
-       beginning of the interactive command that called the function.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Functions declared <literal>STABLE</> or <literal>IMMUTABLE</> always
-       use the snapshot of the calling query, and therefore do not see the
-       effects of actions taken after the calling query starts, whether in
-       their own transaction or other transactions.  Such a function must be
-       read-only, too, meaning that it cannot use any SQL commands other than
-       <command>SELECT</>.  There is a considerable performance gain from
-       declaring a function <literal>STABLE</> or <literal>IMMUTABLE</>
-       rather than <literal>VOLATILE</>.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Nondeferred <option>AFTER</> triggers are now fired immediately
-       after completion of the triggering query, rather than upon
-       finishing the current interactive command. This makes a difference
-       when the triggering query occurred within a function: the trigger
-       is invoked before the function proceeds to its next operation. For
-       example, if a function inserts a new row into a table, any
-       nondeferred foreign key checks occur before proceeding with the
-       function.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow function parameters to be declared with names (Dennis Bj&ouml;rklund)
-      </para>
-      <para>
-       This allows better documentation of functions.  Whether the names
-       actually do anything depends on the specific function language
-       being used.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bj&ouml;rklund)
-      </para>
-      <para>
-       This basically creates an automatic alias for each named parameter.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
-      </para>
-      <para>
-       This allows us to catch simple syntax errors sooner.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       More support for composite types (row and record variables) in PL/pgSQL
-      </para>
-      <para>
-       For example, it now works to pass a rowtype variable to another function
-       as a single variable.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Default values for PL/pgSQL variables can now reference previously
-       declared variables
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve parsing of PL/pgSQL FOR loops (Tom)
-      </para>
-      <para>
-       Parsing is now driven by presence of <literal>".."</> rather than
-       data type of <option>FOR</> variable. This makes no difference for
-       correct functions, but should result in more understandable error
-       messages when a mistake is made.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       In PL/Tcl, SPI commands are now run in subtransactions.  If an error
-       occurs, the subtransaction is cleaned up and the error is reported
-       as an ordinary Tcl error, which can be trapped with <literal>catch</>.
-       Formerly, it was not possible to catch such errors.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Accept <command>ELSEIF</> in PL/pgSQL (Neil)
-      </para>
-      <para>
-       Previously PL/pgSQL only allowed <command>ELSIF</>, but many people
-       are accustomed to spelling this keyword <command>ELSEIF</>.
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title><application>psql</> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Improve <application>psql</> information display about database
-       objects (Christopher)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>psql</> to display group membership in
-       <command>\du</> and <command>\dg</> (Markus Bertheau)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Prevent <application>psql</> <command>\dn</command> from showing
-       temporary schemas (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>psql</> to handle tilde user expansion for file
-       names (Zach Irmen)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>psql</> to display fancy prompts, including
-       color, via <application>readline</> (Reece Hart, Chet Ramey)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make <application>psql</> <command>\copy</> match <command>COPY</command> command syntax
-       fully (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Show the location of syntax errors (Fabien Coelho, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <command>CLUSTER</command> information to <application>psql</>
-       <command>\d</> display
-       (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Change <application>psql</> <command>\copy stdin/stdout</> to read
-       from command input/output (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>pstdin</>/<option>pstdout</> to read from
-       <application>psql</>'s <literal>stdin</>/<literal>stdout</> (Mark
-       Feit)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename>
-       (Bruce)
-      </para>
-      <para>
-       This allows a central file where global <application>psql</> startup commands can
-       be stored.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Have <application>psql</> <command>\d+</> indicate if the table
-       has an <type>OID</> column (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       On Windows, use binary mode in <application>psql</> when reading files so control-Z
-       is not seen as end-of-file
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Have <command>\dn+</> show permissions and description for schemas (Dennis
-       Bj&ouml;rklund)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow boolean settings to be set using upper or lower case (Michael Paesold)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title><application>pg_dump</> Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Use dependency information to improve the reliability of
-       <application>pg_dump</> (Tom)
-      </para>
-      <para>
-       This should solve the longstanding problems with related objects
-       sometimes being dumped in the wrong order.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Have <application>pg_dump</> output objects in alphabetical order if possible (Tom)
-      </para>
-      <para>
-       This should make it easier to identify changes between
-       dump files.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <application>pg_restore</> to ignore some SQL errors (Fabien Coelho)
-      </para>
-      <para>
-       This makes <application>pg_restore</>'s behavior similar to the
-       results of feeding a <application>pg_dump</> output script to
-       <application>psql</>. In most cases, ignoring errors and plowing
-       ahead is the most useful thing to do. Also added was a pg_restore
-       option to give the old behavior of exiting on an error.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <application>pg_restore</> <option>-l</> display now includes
-       objects' schema names
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New begin/end markers in <application>pg_dump</> text output (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add start/stop times for
-       <application>pg_dump</>/<application>pg_dumpall</> in verbose mode
-       (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow most <application>pg_dump</> options in
-       <application>pg_dumpall</> (Christopher)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Have <application>pg_dump</> use <command>ALTER OWNER</> rather
-       than <command>SET SESSION AUTHORIZATION</> by default
-       (Christopher)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>libpq Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Make libpq's <option>SIGPIPE</> handling thread-safe (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>PQmbdsplen()</> which returns the display length
-       of a character (Tatsuo)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add thread locking to <application>SSL</> and
-       <application>Kerberos</> connections (Manfred Spraul)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <function>PQoidValue()</>, <function>PQcmdTuples()</>, and
-       <function>PQoidStatus()</> to work on <command>EXECUTE</command>
-       commands (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>PQserverVersion()</> to provide more convenient
-       access to the server version number (Greg Sabino Mullane)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <function>PQprepare/PQsendPrepared()</> functions to support
-       preparing statements without necessarily specifying the data types
-       of their parameters (Abhijit Menon-Sen)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Source Code Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Shell script commands converted to C versions for Windows support (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Create an extension makefile framework (Fabien Coelho, Peter)
-      </para>
-      <para>
-       This simplifies the task of building extensions outside the original
-       source tree.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Support relocatable installations (Bruce)
-      </para>
-      <para>
-       Directory paths for installed files (such as the
-       <filename>/share</> directory) are now computed relative to the
-       actual location of the executables, so that an installation tree
-       can be moved to another place without reconfiguring and
-       rebuilding.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Use <option>--with-docdir</> to choose installation location of documentation; also
-       allow <option>--infodir</> (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add <option>--without-docdir</> to prevent installation of documentation (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Upgrade to <application>DocBook</> V4.2 SGML (Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <literal>PostgreSQL</> <application>CVS</> tag (Marc)
-      </para>
-      <para>
-       This was done to make it easier for organizations to manage their
-       own copies of the <productname>PostgreSQL</productname>
-       <application>CVS</> repository. File version stamps from the master
-       repository will not get munged by checking into or out of a copied
-       repository.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Clarify locking code (Manfred Koizar)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Buffer manager cleanup (Neil)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Decouple platform tests from CPU spinlock code (Bruce, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add inlined test-and-set code on PA-RISC for <application>gcc</>
-       (ViSolve, Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improve i386 spinlock code (Manfred Spraul)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Clean up spinlock assembly code to avoid warnings from newer
-       <application>gcc</> releases (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove JDBC from source tree; now a separate project
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove the libpgtcl client interface; now a separate project
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       More accurately estimate memory and file descriptor usage (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Improvements to the Mac OS X startup scripts (Ray A.)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <function>fsync()</> test program (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Major documentation improvements (Neil, Peter)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <application>pg_encoding</application>; not needed
-       anymore
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <application>pg_id</application>; not needed anymore
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Remove <application>initlocation</application>; not needed
-       anymore
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Auto-detect thread flags (no more manual testing) (Bruce)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Use Olson's public domain <application>timezone</> library (Magnus)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       With threading enabled, use thread flags on Unixware for
-       backend executables too (Bruce)
-      </para>
-      <para>
-       Unixware cannot mix threaded and nonthreaded object files in the
-       same executable, so everything must be compiled as threaded.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <application>psql</> now uses a <application>flex</>-generated
-       lexical analyzer to process command strings
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Reimplement the linked list data structure used throughout the
-       backend (Neil)
-      </para>
-      <para>
-       This improves performance by allowing list append and length
-       operations to be more efficient.
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow dynamically loaded modules to create their own server configuration
-       parameters (Thomas Hallgren)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New Brazilian version of FAQ (Euler Taveira de Oliveira)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add French FAQ (Guillaume Lelarge)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <application>pgevent</> for Windows logging
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Make libpq and ECPG build as proper shared libraries on OS X (Tom)
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-
-   <sect3>
-    <title>Contrib Changes</title>
-    <itemizedlist>
-
-     <listitem>
-      <para>
-       Overhaul of <filename>contrib/dblink</> (Joe)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       <filename>contrib/dbmirror</> improvements (Steven Singer)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <filename>contrib/xml2</> (John Gray, Torchbox)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Updated <filename>contrib/mysql</filename>
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New version of <filename>contrib/btree_gist</> (Teodor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       New <filename>contrib/trgm</>, trigram matching for
-       <productname>PostgreSQL</productname> (Teodor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Many <filename>contrib/tsearch2</> improvements (Teodor)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Add functions to <filename>contrib/dbsize</> (Andreas Pflug)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Removed <filename>contrib/pg_logger</>: obsoleted by integrated logging
-       subprocess
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Removed <filename>contrib/rserv</>: obsoleted by various separate projects
-      </para>
-     </listitem>
-
-    </itemizedlist>
-   </sect3>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-25">
-  <title>Release 7.4.25</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-03-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.24.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.25</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-    However, if you are upgrading from a version earlier than 7.4.11,
-    see the release notes for 7.4.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>
-      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-7-4-24">
-  <title>Release 7.4.24</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2009-02-02</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.23.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.24</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-    However, if you are upgrading from a version earlier than 7.4.11,
-    see the release notes for 7.4.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>
-      Avoid unnecessary locking of small tables in <command>VACUUM</>
-      (Heikki)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix uninitialized variables in <filename>contrib/tsearch2</>'s
-      <function>get_covers()</> function (Teodor)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix bug in <function>to_char()</>'s handling of <literal>TH</>
-      format codes (Andreas Scherbaum)
-     </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>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-23">
-  <title>Release 7.4.23</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-11-03</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.22.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.23</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-    However, if you are upgrading from a version earlier than 7.4.11,
-    see the release notes for 7.4.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <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 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 USER</> (Michael)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-22">
-  <title>Release 7.4.22</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-09-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.21.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.22</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-    However, if you are upgrading from a version earlier than 7.4.11,
-    see the release notes for 7.4.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <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 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>
-      Improve <application>pg_dump</> and <application>pg_restore</>'s
-      error reporting after failure to send a SQL command (Tom)
-     </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-21">
-  <title>Release 7.4.21</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-06-12</simpara>
-  </note>
-
-  <para>
-   This release contains one serious bug fix over 7.4.20.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.21</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-    However, if you are upgrading from a version earlier than 7.4.11,
-    see the release notes for 7.4.11.
-   </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>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-20">
-  <title>Release 7.4.20</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>never released</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.19.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.20</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-    However, if you are upgrading from a version earlier than 7.4.11,
-    see the release notes for 7.4.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <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>
-      Fix incorrect result from <application>ecpg</>'s
-      <function>PGTYPEStimestamp_sub()</> function (Michael)
-     </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>
-      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-7-4-19">
-  <title>Release 7.4.19</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-01-07</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.18,
-   including fixes for significant security issues.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.19</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </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 7.4.18 was incomplete, as it plugged
-      the hole for only some <filename>dblink</> functions.  (CVE-2007-6601,
-      CVE-2007-3278)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix planner failure in some cases of <literal>WHERE false AND var IN
-      (SELECT ...)</> (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential crash in <function>translate()</> when using a multibyte
-      database encoding (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix PL/Python to not crash on long exception messages (Alvaro)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      <application>ecpg</> parser fixes (Michael)
-     </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-7-4-18">
-  <title>Release 7.4.18</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-09-17</simpara>
-  </note>
-
-  <para>
-   This release contains fixes from 7.4.17.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.18</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </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>
-      Fix excessive logging of <acronym>SSL</> error messages (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix crash when <varname>log_min_error_statement</> logging runs out
-      of memory (Tom)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Prevent <command>CLUSTER</> from failing
-      due to attempting to process temporary tables of other sessions (Alvaro)
-     </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-7-4-17">
-  <title>Release 7.4.17</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-04-23</simpara>
-  </note>
-
-  <para>
-   This release contains fixes from 7.4.16,
-   including a security fix.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.17</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </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>
-     Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
-     <command>UPDATE</> chains (Tom, Pavan Deolasee)
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15)
-     (Tom)
-    </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-16">
-  <title>Release 7.4.16</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-05</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.15, including
-   a security fix.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.16</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-    <para>
-     Remove security vulnerability that allowed connected users
-     to read backend memory (Tom)
-    </para>
-    <para>
-     The vulnerability involves suppressing the normal check that a SQL
-     function returns the data type it's declared to, or changing the
-     data type of a table column used in a SQL function (CVE-2007-0555).
-     This error 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>
-     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>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-15">
-  <title>Release 7.4.15</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-01-08</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.14.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.15</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </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 <quote>failed to re-find parent key</> errors in
-       <command>VACUUM</> (Tom)
-      </para>
-     </listitem>
-
-     <listitem>
-      <para>
-       Fix bugs affecting multi-gigabyte hash indexes (Tom)
-      </para>
-     </listitem>
-
-    <listitem>
-     <para>
-      Fix error when constructing an <literal>ARRAY[]</> made up of multiple
-      empty elements (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>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-14">
-  <title>Release 7.4.14</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-10-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.13.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.14</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix core dump when an untyped literal is taken as
-ANYARRAY</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 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>Fix backslash escaping in /contrib/dbmirror</para></listitem>
-<listitem><para>Adjust regression tests for recent changes in US DST laws
-</para> </listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-13">
-  <title>Release 7.4.13</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-05-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.12,
-   including patches for extremely serious security issues.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.13</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </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 some incorrect encoding conversion functions</para>
-<para><function>win1251_to_iso</>, <function>alt_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>Fix bug that sometimes caused OR'd index scans to
-miss rows they should have returned</para></listitem>
-
-<listitem><para>Fix WAL replay for case where a btree index has been
-truncated</para></listitem>
-
-<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
-<literal>|</> (Tom)</para></listitem>
-
-<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-12">
-  <title>Release 7.4.12</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-02-14</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.11.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.12</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.11, see the release
-    notes for 7.4.11.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix potential crash in <command>SET
-SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
-<para>An unprivileged user could crash the server process, resulting in
-momentary denial of service to other users, if the server 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 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 file creation
-(Tom)</para></listitem>
-
-<listitem><para>Properly check <literal>DOMAIN</> constraints for
-<literal>UNKNOWN</> parameters in prepared statements
-(Neil)</para></listitem>
-
-<listitem><para>Fix to allow restoring dumps that have cross-schema
-references to custom operators (Tom)</para></listitem>
-
-<listitem><para>Portability fix for testing presence of <function>finite</>
-and <function>isinf</> during configure (Tom)</para></listitem>
-
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-11">
-  <title>Release 7.4.11</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-01-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.10.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.11</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.8, see the release
-    notes for 7.4.8.
-    Also, 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 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>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 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 <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-7-4-10">
-  <title>Release 7.4.10</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-12-12</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.9.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.10</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.8, see the release
-    notes for 7.4.8.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-
-<listitem><para>Fix race condition in transaction log management</para>
-<para>There was a narrow window in which an I/O operation could be initiated
-for the wrong page, leading to an Assert failure or data
-corruption.</para>
-</listitem>
-
-<listitem><para>Prevent failure if client sends Bind protocol message
-when current transaction is already aborted</para></listitem>
-
-<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
-
-<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
-
-<listitem><para>Fix longstanding planning error for outer joins</para>
-<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
-only supported with merge-joinable join conditions</>.</para></listitem>
-
-<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
-table has been dropped</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-9">
-  <title>Release 7.4.9</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-10-04</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.8.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.9</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    if you are upgrading from a version earlier than 7.4.8, see the release
-    notes for 7.4.8.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix error that allowed <command>VACUUM</> to remove
-<literal>ctid</> chains too soon, and add more checking in code that follows
-<literal>ctid</> links</para>
-<para>This fixes a long-standing problem that could cause crashes in very rare
-circumstances.</para></listitem>
-<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
-length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
-<para>In prior releases, the padding of <type>CHAR()</> was incorrect
-because it only padded to the specified number of bytes without
-considering how many characters were stored.</para></listitem>
-<listitem><para>Fix the sense of the test for read-only transaction
-in <command>COPY</></para>
-<para>The code formerly prohibited <command>COPY TO</>, where it should
-prohibit <command>COPY FROM</>.
-</para></listitem>
-<listitem><para>Fix planning problem with outer-join ON clauses that reference
-only the inner-side relation</para></listitem>
-<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
-cases</para></listitem>
-<listitem><para>Make <function>array_in</> and <function>array_recv</> more
-paranoid about validating their OID parameter</para></listitem>
-<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
-a...</> with GiST index on column <literal>a</></para></listitem>
-<listitem><para>Improve robustness of datetime parsing</para></listitem>
-<listitem><para>Improve checking for partially-written WAL
-pages</para></listitem>
-<listitem><para>Improve robustness of signal handling when SSL is
-enabled</para></listitem>
-<listitem><para>Don't try to open more than <literal>max_files_per_process</>
-files during postmaster startup</para></listitem>
-<listitem><para>Various memory leakage fixes</para></listitem>
-<listitem><para>Various portability improvements</para></listitem>
-<listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
-the variable is of pass-by-reference type</para></listitem>
-<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
-code</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-8">
-  <title>Release 7.4.8</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-05-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.7, including several
-   security-related issues.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.8</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    it is one possible way of handling two significant security problems
-    that have been found in the initial contents of 7.4.X system
-    catalogs.  A dump/initdb/reload sequence using 7.4.8's initdb will
-    automatically correct these problems.
-   </para>
-
-   <para>
-    The larger security problem is that the built-in character set encoding
-    conversion functions can be invoked from SQL commands by unprivileged
-    users, but the functions were not designed for such use and are not
-    secure against malicious choices of arguments.  The fix involves changing
-    the declared parameter list of these functions so that they can no longer
-    be invoked from SQL commands.  (This does not affect their normal use
-    by the encoding conversion machinery.)
-   </para>
-
-   <para>
-    The lesser problem is that the <filename>contrib/tsearch2</> module
-    creates several functions that are misdeclared to return
-    <type>internal</> when they do not accept <type>internal</> arguments.
-    This breaks type safety for all functions using <type>internal</>
-    arguments.
-   </para>
-
-   <para>
-    It is strongly recommended that all installations repair these errors,
-    either by initdb or by following the manual repair procedures given
-    below.  The errors at least allow unprivileged database users to crash
-    their server process, and might allow unprivileged users to gain the
-    privileges of a database superuser.
-   </para>
-
-   <para>
-    If you wish not to do an initdb, perform the following procedures instead.
-    As the database superuser, do:
-
-<programlisting>
-BEGIN;
-UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
-WHERE pronamespace = 11 AND pronargs = 5
-     AND proargtypes[2] = 'cstring'::regtype;
--- The command should report having updated 90 rows;
--- if not, rollback and investigate instead of committing!
-COMMIT;
-</programlisting>
-
-    Next, if you have installed <filename>contrib/tsearch2</>, do:
-
-<programlisting>
-BEGIN;
-UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
-WHERE oid IN (
-   'dex_init(text)'::regprocedure,
-   'snb_en_init(text)'::regprocedure,
-   'snb_ru_init(text)'::regprocedure,
-   'spell_init(text)'::regprocedure,
-   'syn_init(text)'::regprocedure
-);
--- The command should report having updated 5 rows;
--- if not, rollback and investigate instead of committing!
-COMMIT;
-</programlisting>
-
-    If this command fails with a message like <quote>function
-    "dex_init(text)" does not exist</>, then either <filename>tsearch2</>
-    is not installed in this database, or you already did the update.
-   </para>
-
-   <para>
-    The above procedures must be carried out in <emphasis>each</> database
-    of an installation, including <literal>template1</>, and ideally
-    including <literal>template0</> as well.  If you do not fix the
-    template databases then any subsequently created databases will contain
-    the same errors.  <literal>template1</> can be fixed in the same way
-    as any other database, but fixing <literal>template0</> requires
-    additional steps.  First, from any database issue:
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-</programlisting>
-     Next connect to <literal>template0</> and perform the above repair
-     procedures.  Finally, do:
-<programlisting>
--- re-freeze template0:
-VACUUM FREEZE;
--- and protect it against future alterations:
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Change encoding function signature to prevent
-misuse</para></listitem>
-<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
-<type>INTERNAL</> function results</para></listitem>
-<listitem><para>Repair ancient race condition that allowed a transaction to be
-seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
-than for other purposes</para>
-<para>This is an extremely serious bug since it could lead to apparent
-data inconsistencies being briefly visible to applications.</para></listitem>
-<listitem><para>Repair race condition between relation extension and
-VACUUM</para>
-<para>This could theoretically have caused loss of a page's worth of
-freshly-inserted data, although the scenario seems of very low probability.
-There are no known cases of it having caused more than an Assert failure.
-</para></listitem>
-<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
-<para>
-The comparison code was wrong in the case where the
-<literal>--enable-integer-datetimes</> configuration switch had been used.
-NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
-it will need to be <command>REINDEX</>ed after installing this update, because
-the fix corrects the sort order of column values.
-</para></listitem>
-<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
-<type>TIME WITH TIME ZONE</> values</para></listitem>
-<listitem><para>Fix mis-display of negative fractional seconds in
-<type>INTERVAL</> values</para>
-<para>
-This error only occurred when the
-<literal>--enable-integer-datetimes</> configuration switch had been used.
-</para></listitem>
-<listitem><para>Ensure operations done during backend shutdown are counted by
-statistics collector</para>
-<para>
-This is expected to resolve reports of <application>pg_autovacuum</>
-not vacuuming the system catalogs often enough &mdash; it was not being
-told about catalog deletions caused by temporary table removal during
-backend exit.
-</para></listitem>
-<listitem><para>Additional buffer overrun checks in plpgsql
-(Neil)</para></listitem>
-<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
-correctly (Neil)</para></listitem>
-<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
-(Marko Kreen)</para></listitem>
-<listitem><para>Still more 64-bit fixes for
-<filename>contrib/intagg</></para></listitem>
-<listitem><para>Prevent incorrect optimization of functions returning
-<type>RECORD</></para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
-month-related formats</para></listitem>
-<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
-<listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem>
-<listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem>
-<listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem>
-<listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para>
-<para>
-This fixes a lock management error that would only be visible if a transaction
-was kicked out of a wait for a lock (typically by query cancel) and then the
-holder of the lock released it within a very narrow window.
-</para></listitem>
-<listitem><para>Fix problem with untyped parameter appearing in
-<command>INSERT ... SELECT</></para></listitem>
-<listitem><para>Fix <command>CLUSTER</> failure after
-<command>ALTER TABLE SET WITHOUT OIDS</></para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-7">
-  <title>Release 7.4.7</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-01-31</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.6, including several
-   security-related issues.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.4.7</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
-<para>
-On platforms that will automatically execute initialization functions of a
-shared library (this includes at least Windows and ELF-based Unixen),
-<command>LOAD</> can be used to make the server execute arbitrary code.
-Thanks to NGS Software for reporting this.</para></listitem>
-<listitem><para>Check that creator of an aggregate function has the right to
-execute the specified transition functions</para>
-<para>
-This oversight made it possible to bypass denial of EXECUTE
-permission on a function.</para></listitem>
-<listitem><para>Fix security and 64-bit issues in
-contrib/intagg</para></listitem>
-<listitem><para>Add needed STRICT marking to some contrib functions (Kris
-Jurka)</para></listitem>
-<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
-many parameters (Neil)</para></listitem>
-<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
-<para>
-The result of the join was mistakenly supposed to be sorted the same as the
-left input.  This could not only deliver mis-sorted output to the user, but
-in case of nested merge joins could give outright wrong answers.
-</para></listitem>
-<listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
-<listitem><para>Fix display of negative intervals in SQL and GERMAN
-datestyles</para></listitem>
-<listitem><para>Make age(timestamptz) do calculation in local timezone not
-GMT</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-6">
-  <title>Release 7.4.6</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-10-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.5.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.4.6</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair possible failure to update hint bits on disk</para>
-<para>
-Under rare circumstances this oversight could lead to
-<quote>could not access transaction status</> failures, which qualifies
-it as a potential-data-loss bug.
-</para></listitem>
-<listitem><para>Ensure that hashed outer join does not miss tuples</para>
-<para>
-Very large left joins using a hash join plan could fail to output unmatched
-left-side rows given just the right data distribution.
-</para></listitem>
-<listitem><para>Disallow running <application>pg_ctl</> as root</para>
-<para>
-This is to guard against any possible security issues.
-</para></listitem>
-<listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
-<para>
-This has been reported as a security issue, though it's hardly worthy of
-concern since there is no reason for non-developers to use this script anyway.
-</para></listitem>
-<listitem><para>Prevent forced backend shutdown from re-emitting prior command
-result</para>
-<para>
-In rare cases, a client might think that its last command had succeeded when
-it really had been aborted by forced database shutdown.
-</para></listitem>
-<listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
-<para>
-This could lead to misbehavior in some of the system-statistics views.
-</para></listitem>
-<listitem><para>Fix small memory leak in postmaster</para></listitem>
-<listitem><para>Fix <quote>expected both swapped tables to have TOAST
-tables</> bug</para>
-<para>
-This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
-</para></listitem>
-<listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem>
-<listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
-<listitem><para><literal>::</> is no longer interpreted as a variable in an
-ECPG prepare statement</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-5">
-  <title>Release 7.4.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-08-18</simpara>
-  </note>
-
-  <para>
-   This release contains one serious bug fix over 7.4.4.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.4.5</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
-<para>
-This patch fixes a rare case in which concurrent insertions into a B-tree index
-could result in a server panic.  No permanent damage would result, but it's
-still worth a re-release.  The bug does not exist in pre-7.4 releases.
-</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-4">
-  <title>Release 7.4.4</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-08-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.3.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.4.4</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Prevent possible loss of committed transactions during crash</para>
-<para>
-Due to insufficient interlocking between transaction commit and checkpointing,
-it was possible for transactions committed just before the most recent
-checkpoint to be lost, in whole or in part, following a database crash and
-restart.  This is a serious bug that has existed
-since <productname>PostgreSQL</productname> 7.1.
-</para></listitem>
-<listitem><para>Check HAVING restriction before evaluating result list of an
-aggregate plan</para></listitem>
-<listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
-<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
-<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
-<listitem><para>Pretty-print UNION queries correctly</para></listitem>
-<listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem>
-<listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem>
-<listitem><para>Fix thread support for OS X and Solaris</para></listitem>
-<listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
-<listitem><para>ECPG fixes</para></listitem>
-<listitem><para>Translation updates (various contributors)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-3">
-  <title>Release 7.4.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-06-14</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.2.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.4.3</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
-<listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
-<listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
-<listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
-<listitem><para>Several important fixes in pg_autovacuum, including fixes for
-large tables, unsigned oids, stability, temp tables, and debug mode
-(Matthew T. O'Connor)</para></listitem>
-<listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
-<listitem><para>Several JDBC fixes</para></listitem>
-<listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
-<listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
-<listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
-<listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
-<listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
-<listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
-<para>
-Select-list aliases within the sub-select will now take precedence over
-names from outer query levels.
-</para></listitem>
-<listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem>
-<listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
-<para>
- This fixes a difficult-to-exploit security hole.
-</para></listitem>
-<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
-<listitem><para>Numerous translation updates (various contributors)</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-2">
-  <title>Release 7.4.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-03-08</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.1.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.4.2</title>
-
-   <para>
-    A dump/restore is not required for those running 7.4.X.  However,
-    it might be advisable as the easiest method of incorporating fixes for
-    two errors that have been found in the initial contents of 7.4.X system
-    catalogs.  A dump/initdb/reload sequence using 7.4.2's initdb will
-    automatically correct these problems.
-   </para>
-
-   <para>
-    The more severe of the two errors is that data type <type>anyarray</>
-    has the wrong alignment label; this is a problem because the
-    <structname>pg_statistic</> system catalog uses <type>anyarray</>
-    columns.  The mislabeling can cause planner misestimations and even
-    crashes when planning queries that involve <literal>WHERE</> clauses on
-    double-aligned columns (such as <type>float8</> and <type>timestamp</>).
-    It is strongly recommended that all installations repair this error,
-    either by initdb or by following the manual repair procedure given
-    below.
-   </para>
-
-   <para>
-    The lesser error is that the system view <structname>pg_settings</>
-    ought to be marked as having public update access, to allow
-    <literal>UPDATE pg_settings</> to be used as a substitute for
-    <command>SET</>.  This can also be fixed either by initdb or manually,
-    but it is not necessary to fix unless you want to use <literal>UPDATE
-    pg_settings</>.
-   </para>
-
-   <para>
-    If you wish not to do an initdb, the following procedure will work
-    for fixing <structname>pg_statistic</>.  As the database superuser,
-    do:
-
-<programlisting>
--- clear out old data in pg_statistic:
-DELETE FROM pg_statistic;
-VACUUM pg_statistic;
--- this should update 1 row:
-UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
--- this should update 6 rows:
-UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
---
--- At this point you MUST start a fresh backend to avoid a crash!
---
--- repopulate pg_statistic:
-ANALYZE;
-</programlisting>
-
-    This can be done in a live database, but beware that all backends
-    running in the altered database must be restarted before it is safe to
-    repopulate <structname>pg_statistic</>.
-   </para>
-
-   <para>
-    To repair the <structname>pg_settings</> error, simply do:
-<programlisting>
-GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
-</programlisting>
-   </para>
-
-   <para>
-    The above procedures must be carried out in <emphasis>each</> database
-    of an installation, including <literal>template1</>, and ideally
-    including <literal>template0</> as well.  If you do not fix the
-    template databases then any subsequently created databases will contain
-    the same errors.  <literal>template1</> can be fixed in the same way
-    as any other database, but fixing <literal>template0</> requires
-    additional steps.  First, from any database issue:
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-</programlisting>
-     Next connect to <literal>template0</> and perform the above repair
-     procedures.  Finally, do:
-<programlisting>
--- re-freeze template0:
-VACUUM FREEZE;
--- and protect it against future alterations:
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<para>
-   Release 7.4.2 incorporates all the fixes included in release 7.3.6,
-   plus the following fixes:
-</para>
-
-<itemizedlist>
-<listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para>
-<para>See above for details about this problem.</para></listitem>
-<listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem>
-<listitem><para>Fix several optimizer bugs, most of which led to
-<quote>variable not found in subplan target lists</> errors</para></listitem>
-<listitem><para>Avoid out-of-memory failure during startup of large multiple
-index scan</para></listitem>
-<listitem><para>Fix multibyte problem that could lead to <quote>out of
-memory</> error during <command>COPY IN</></para></listitem>
-<listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE
-TABLE AS</> from tables without OIDs</para></listitem>
-<listitem><para>Fix problems with <filename>alter_table</> regression test
-during parallel testing</para></listitem>
-<listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem>
-<listitem><para>Partial fix for Turkish-locale issues</para>
-<para>initdb will succeed now in Turkish locale, but there are still some
-inconveniences associated with the <literal>i/I</> problem.</para></listitem>
-<listitem><para>Make pg_dump set client encoding on restore</para></listitem>
-<listitem><para>Other minor pg_dump fixes</para></listitem>
-<listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
-<listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to
-<literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem>
-<listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
-<listitem><para>Various other ecpg fixes (Michael)</para></listitem>
-<listitem><para>Fixes for Borland compiler</para></listitem>
-<listitem><para>Thread build improvements (Bruce)</para></listitem>
-<listitem><para>Various other build fixes</para></listitem>
-<listitem><para>Various JDBC fixes</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-4-1">
-  <title>Release 7.4.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2003-12-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.4.
-   For information about new features in the 7.4 major release, see
-   <xref linkend="release-7-4">.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.4.1</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those
-    running 7.4.
-   </para>
-
-   <para>
-    If you want to install the fixes in the information schema
-    you need to reload it into the database.
-    This is either accomplished by initializing a new cluster
-    by running <command>initdb</command>, or by running the following
-    sequence of SQL commands in each database (ideally including
-    <literal>template1</literal>) as a superuser in
-    <application>psql</application>, after installing the new release:
-<programlisting>
-DROP SCHEMA information_schema CASCADE;
-\i /usr/local/pgsql/share/information_schema.sql
-</programlisting>
-    Substitute your installation path in the second command.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
-<listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
-<listitem><para>Fix for subqueries that used hash joins (Tom)</para>
-<para>
-   Certain subqueries that used hash joins would crash because of
-   improperly shared structures.
-</para></listitem>
-<listitem><para>Fix free space map compaction bug (Tom)</para>
-<para>
-   This fixes a bug where compaction of the free space map could lead
-   to a database server shutdown.
-</para>
-</listitem>
-<listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
-<listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
-<para>
-   Fix these functions to return values consistent with pre-7.4
-   releases.
-</para>
-</listitem>
-<listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
-<para>
-   Fixes include improper variable initialization, missing vacuum after
-   <command>TRUNCATE</command>, and duration computation overflow for long vacuums.
-</para>
-</listitem>
-<listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
-<listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
-<para>
-   Fix crash on Solaris caused by use of any type of password
-   authentication when no passwords were defined.
-</para>
-</listitem>
-<listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
-<listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
-<listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
-<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
-<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
-<listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
-<listitem><para>Escape <type>bytea</type> output for bytes &gt; 0x7e(Joe)</para>
-<para>
- If different client encodings are used for <type>bytea</type> output and input, it
- is possible for <type>bytea</type> values to be corrupted by the differing
- encodings.  This fix escapes all bytes that might be affected.
-</para>
-</listitem>
-<listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
-<listitem><para>New Czech FAQ</para></listitem>
-<listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
-<listitem><para>ECPG fixes (Michael)</para></listitem>
-<listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
-<listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
-<listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
-<para>
- Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
- By installing them in their own directory, name conflicts have been reduced.
-</para>
-</listitem>
-<listitem><para>Fix SSL memory leak (Neil)</para>
-<para>
- This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
-</para>
-</listitem>
-<listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
-<listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
-<sect1 id="release-7-4">
- <title>Release 7.4</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2003-11-17</simpara>
- </note>
-
- <sect2>
-  <title>Overview</title>
-
-  <para>
-   Major changes in this release:
-  </para>
-
-  <variablelist>
-   <varlistentry>
-    <term>
-     <literal>IN</literal> / <literal>NOT IN</literal> subqueries are
-     now much more efficient
-    </term>
-
-    <listitem>
-     <para>
-      In previous releases, <literal>IN</literal>/<literal>NOT
-      IN</literal> subqueries were joined to the upper query by
-      sequentially scanning the subquery looking for a match.  The
-      7.4 code uses the same sophisticated techniques used by
-      ordinary joins and so is much faster.  An
-      <literal>IN</literal> will now usually be as fast as or faster
-      than an equivalent <literal>EXISTS</literal> subquery; this
-      reverses the conventional wisdom that applied to previous
-      releases.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Improved <literal>GROUP BY</literal> processing by using hash buckets
-    </term>
-
-    <listitem>
-     <para>
-      In previous releases, rows to be grouped had to be sorted
-      first.  The 7.4 code can do <literal>GROUP BY</literal>
-      without sorting, by accumulating results into a hash table
-      with one entry per group.  It will still use the sort
-      technique, however, if the hash table is estimated to be too
-      large to fit in <varname>sort_mem</>.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     New multikey hash join capability
-    </term>
-
-    <listitem>
-     <para>
-      In previous releases, hash joins could only occur on single
-      keys.  This release allows multicolumn hash joins.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Queries using the explicit <literal>JOIN</literal> syntax are
-     now better optimized
-    </term>
-
-    <listitem>
-     <para>
-      Prior releases evaluated queries using the explicit
-      <literal>JOIN</literal> syntax only in the order implied by
-      the syntax. 7.4 allows full optimization of these queries,
-      meaning the optimizer considers all possible join orderings
-      and chooses the most efficient.  Outer joins, however, must
-      still follow the declared ordering.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Faster and more powerful regular expression code
-    </term>
-
-    <listitem>
-   &n