Split the release notes into a separate file for each (active) major branch,
authorTom Lane <[email protected]>
Sat, 2 May 2009 20:18:21 +0000 (20:18 +0000)
committerTom Lane <[email protected]>
Sat, 2 May 2009 20:18:21 +0000 (20:18 +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/generate_history.pl [new file with mode: 0644]
doc/src/sgml/release-7.4.sgml [new file with mode: 0644]
doc/src/sgml/release-old.sgml [new file with mode: 0644]
doc/src/sgml/release.sgml

index c71cd5067bd2b4ae53470d3d32ad22c9d87914c9..02e69fbfeded12889feb26fc328aba6c69bc24c3 100644 (file)
@@ -2,7 +2,7 @@
 #
 # PostgreSQL documentation makefile
 #
-# $Header: /cvsroot/pgsql/doc/src/sgml/Makefile,v 1.59.2.3 2004/03/09 20:10:19 momjian Exp $
+# $Header: /cvsroot/pgsql/doc/src/sgml/Makefile,v 1.59.2.4 2009/05/02 20:18:21 tgl Exp $
 #
 #----------------------------------------------------------------------------
 
@@ -173,9 +173,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 V3.1//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 23b51ca6a5aa8edef56122936fd962ba1e53541a..48e6f2653a1a47f961b954ba76357aee4b72ad5d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.33 2003/10/23 13:58:43 tgl Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.33.2.1 2009/05/02 20:18:21 tgl Exp $ -->
 
 <!entity history    SYSTEM "history.sgml">
 <!entity info       SYSTEM "info.sgml">
 <!entity errcodes   SYSTEM "errcodes.sgml">
 <!entity features   SYSTEM "features.sgml">
 <!entity keywords   SYSTEM "keywords.sgml">
+
 <!entity release    SYSTEM "release.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">
diff --git a/doc/src/sgml/generate_history.pl b/doc/src/sgml/generate_history.pl
new file mode 100644 (file)
index 0000000..6fa7c79
--- /dev/null
@@ -0,0 +1,58 @@
+#! /usr/bin/perl -w
+
+# generate_history.pl -- flatten release notes for use as HISTORY file
+#
+# Usage: generate_history.pl srcdir release.sgml >output.sgml
+#
+# The main point of this script is to strip out <link> references, which
+# generally point into the rest of the documentation and so can't be used
+# in a standalone build of the release notes.  To make sure this is done
+# everywhere, we have to fold in the sub-files of the release notes.
+#
+# $PostgreSQL: pgsql/doc/src/sgml/generate_history.pl,v 1.1.10.1 2009/05/02 20:18:21 tgl Exp $
+
+use strict;
+
+my($srcdir) = shift;
+defined($srcdir) || die "$0: missing required argument: srcdir\n";
+my($infile) = shift;
+defined($infile) || die "$0: missing required argument: inputfile\n";
+
+# Emit DOCTYPE header so that the output is a self-contained SGML document
+print "<!DOCTYPE appendix PUBLIC \"-//OASIS//DTD DocBook V3.1//EN\">\n";
+
+process_file($infile);
+
+exit 0;
+
+sub process_file {
+    my($filename) = @_;
+
+    local *FILE;       # need a local filehandle so we can recurse
+
+    my($f) = $srcdir . '/' . $filename;
+    open(FILE, $f) || die "could not read $f: $!\n";
+
+    while (<FILE>) {
+   # Recursively expand sub-files of the release notes
+   if (m/^&(release-.*);$/) {
+       process_file($1 . ".sgml");
+       next;
+   }
+
+   # Remove <link ...> tags, which might span multiple lines
+   while (m/<link/) {
+       if (s/<link\s+linkend[^>]*>//) {
+       next;
+       }
+       # incomplete tag, so slurp another line
+       $_ .= <FILE>;
+   }
+
+   # Remove </link> too
+   s|</link>||g;
+
+   print;
+    }
+    close(FILE);
+}
diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml
new file mode 100644 (file)
index 0000000..73037b4
--- /dev/null
@@ -0,0 +1,3975 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-7.4.sgml,v 1.1.10.1 2009/05/02 20:18:21 tgl Exp $ -->
+<!-- See header comment in release.sgml about typical markup -->
+
+ <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.
+      (CVE-2009-0922)
+     </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>
+     <para>
+      The entire regular expression module has been replaced with a
+      new version by Henry Spencer, originally written for Tcl.  The
+      code greatly improves performance and supports several flavors
+      of regular expressions.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Function-inlining for simple SQL functions
+    </term>
+
+    <listitem>
+     <para>
+      Simple SQL functions can now be inlined by including their SQL
+      in the main query.  This improves performance by eliminating
+      per-call overhead.  That means simple SQL functions now
+      behave like macros.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Full support for IPv6 connections and IPv6 address data types
+    </term>
+
+    <listitem>
+     <para>
+      Previous releases allowed only IPv4 connections, and the IP
+      data types only supported IPv4 addresses. This release adds
+      full IPv6 support in both of these areas.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Major improvements in SSL performance and reliability
+    </term>
+
+    <listitem>
+     <para>
+      Several people very familiar with the SSL API have overhauled
+      our SSL code to improve SSL key negotiation and error
+      recovery.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Make free space map efficiently reuse empty index pages,
+     and other free space management improvements
+    </term>
+
+    <listitem>
+     <para>
+      In previous releases, B-tree index pages that were left empty
+      because of deleted rows could only be reused by rows with
+      index values similar to the rows originally indexed on that
+      page. In 7.4, <command>VACUUM</command> records empty index
+      pages and allows them to be reused for any future index rows.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     SQL-standard information schema
+    </term>
+
+    <listitem>
+     <para>
+      The information schema provides a standardized and stable way
+      to access information about the schema objects defined in a
+      database.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Cursors conform more closely to the SQL standard
+    </term>
+
+    <listitem>
+     <para>
+      The commands <command>FETCH</command> and
+      <command>MOVE</command> have been overhauled to conform more
+      closely to the SQL standard.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Cursors can exist outside transactions
+    </term>
+
+    <listitem>
+     <para>
+      These cursors are also called holdable cursors.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     New client-to-server protocol
+    </term>
+
+    <listitem>
+     <para>
+      The new protocol adds error codes, more status information,
+      faster startup, better support for binary data transmission,
+      parameter values separated from SQL commands, prepared
+      statements available at the protocol level, and cleaner
+      recovery from <command>COPY</command> failures.  The older
+      protocol is still supported by both server and clients.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     <application>libpq</application> and
+     <application>ECPG</application> applications are now fully
+     thread-safe
+    </term>
+
+    <listitem>
+     <para>
+      While previous <application>libpq</application> releases
+      already supported threads, this release improves thread safety
+      by fixing some non-thread-safe code that was used during
+      database connection startup.  The <command>configure</command>
+      option <option>--enable-thread-safety</option> must be used to
+      enable this feature.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     New version of full-text indexing
+    </term>
+
+    <listitem>
+     <para>
+      A new full-text indexing suite is available in
+      <filename>contrib/tsearch2</filename>.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     New autovacuum tool
+    </term>
+
+    <listitem>
+     <para>
+      The new autovacuum tool in
+      <filename>contrib/autovacuum</filename> monitors the database
+      statistics tables for
+      <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
+      activity and automatically vacuums tables when needed.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Array handling has been improved and moved into the server core
+    </term>
+
+    <listitem>
+     <para>
+      Many array limitations have been removed, and arrays behave
+      more like fully-supported data types.
+     </para>
+    </listitem>
+   </varlistentry>
+
+  </variablelist>
+ </sect2>
+
+ <sect2>
+  <title>Migration to Version 7.4</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>
+     The server-side autocommit setting was removed and
+     reimplemented in client applications and languages.
+     Server-side autocommit was causing too many problems with
+     languages and applications that wanted to control their own
+     autocommit behavior, so autocommit was removed from the server
+     and added to individual client APIs as appropriate.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Error message wording has changed substantially in this
+     release.  Significant effort was invested to make the messages
+     more consistent and user-oriented.  If your applications try to
+     detect different error conditions by parsing the error message,
+     you are strongly encouraged to use the new error code facility instead.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Inner joins using the explicit <literal>JOIN</literal> syntax
+     might behave differently because they are now better
+     optimized.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     A number of server configuration parameters have been renamed
+     for clarity, primarily those related to
+     logging.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
+     does nothing.  In prior releases, <literal>FETCH 0</literal>
+     would fetch all remaining rows, and <literal>MOVE 0</literal>
+     would move to the end of the cursor.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <command>FETCH</command> and <command>MOVE</command> now return
+     the actual number of rows fetched/moved, or zero if at the
+     beginning/end of the cursor.  Prior releases would return the
+     row count passed to the command, not the number of rows
+     actually fetched or moved.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <command>COPY</command> now can process files that use
+     carriage-return or carriage-return/line-feed end-of-line
+     sequences. Literal carriage-returns and line-feeds are no
+     longer accepted in data values; use <literal>\r</literal> and
+     <literal>\n</literal> instead.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Trailing spaces are now trimmed when converting from type
+     <type>char(<replaceable>n</>)</type> to
+     <type>varchar(<replaceable>n</>)</type> or <type>text</type>.
+     This is what most people always expected to happen anyway.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The data type <type>float(<replaceable>p</>)</type> now
+     measures <replaceable>p</> in binary digits, not decimal
+     digits.  The new behavior follows the SQL standard.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Ambiguous date values now must match the ordering specified by
+     the <varname>datestyle</varname> setting.  In prior releases, a
+     date specification of <literal>10/20/03</> was interpreted as a
+     date in October even if <varname>datestyle</> specified that
+     the day should be first.  7.4 will throw an error if a date
+     specification is invalid for the current setting of
+     <varname>datestyle</>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The functions <function>oidrand</function>,
+     <function>oidsrand</function>, and
+     <function>userfntest</function> have been removed.  These
+     functions were determined to be no longer useful.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     String literals specifying time-varying date/time values, such
+     as <literal>'now'</literal> or <literal>'today'</literal> will
+     no longer work as expected in column default expressions; they
+     now cause the time of the table creation to be the default, not
+     the time of the insertion.  Functions such as
+     <function>now()</>, <function>current_timestamp</>, or
+     <function>current_date</function> should be used instead.
+    </para>
+
+    <para>
+     In previous releases, there was special code so that strings
+     such as <literal>'now'</literal> were interpreted at
+     <command>INSERT</> time and not at table creation time, but
+     this work around didn't cover all cases.  Release 7.4 now
+     requires that defaults be defined properly using functions such
+     as <function>now()</> or <function>current_timestamp</>. These
+     will work in all situations.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The dollar sign (<literal>$</>) is no longer allowed in
+     operator names.  It can instead be a non-first character in
+     identifiers.  This was done to improve compatibility with other
+     database systems, and to avoid syntax problems when parameter
+     placeholders (<literal>$<replaceable>n</></>) are written
+     adjacent to operators.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+  <para>
+   Below you will find a detailed account of the changes between
+   release 7.4 and the previous major release.
+  </para>
+
+ <sect3>
+  <title>Server Operation Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
+     Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Fix SSL to handle errors cleanly (Nathan Mueller)
+    </para>
+    <para>
+     In prior releases, certain SSL API error reports were not
+     handled correctly.  This release fixes those problems.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     SSL protocol security and performance improvements (Sean Chittenden)
+    </para>
+    <para>
+     SSL key renegotiation was happening too frequently, causing poor
+     SSL performance.  Also, initial key handling was improved.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Print lock information when a deadlock is detected (Tom)
+    </para>
+    <para>
+     This allows easier debugging of deadlock situations.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Update <filename>/tmp</filename> socket modification times
+     regularly to avoid their removal (Tom)
+    </para>
+    <para>
+     This should help prevent <filename>/tmp</filename> directory
+     cleaner administration scripts from removing server socket
+     files.
+    </para>
+   </listitem>
+
+   <listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
+
+   <listitem>
+    <para>Make B-tree indexes fully WAL-safe (Tom)</para>
+    <para>
+     In prior releases, under certain rare cases, a server crash
+     could cause B-tree indexes to become corrupt. This release
+     removes those last few rare cases.
+    </para>
+   </listitem>
+
+   <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     Fix inconsistent index lookups during split of first root page (Tom)
+    </para>
+    <para>
+     In prior releases, when a single-page index split into two
+     pages, there was a brief period when another database session
+     could miss seeing an index entry.  This release fixes that rare
+     failure case.
+    </para>
+   </listitem>
+
+   <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
+
+   <listitem>
+    <para>Preserve free space information between server restarts (Tom)</para>
+    <para>
+     In prior releases, the free space map was not saved when the
+     postmaster was stopped, so newly started servers had no free
+     space information. This release saves the free space map, and
+     reloads it when the server is restarted.
+    </para>
+   </listitem>
+
+   <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
+   <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
+   <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
+   <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
+   <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
+   <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
+   <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Performance Improvements</title>
+
+  <itemizedlist>
+   <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
+   <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
+   <listitem><para>Allow multikey hash joins (Tom)</para></listitem>
+   <listitem><para>Improve constant folding (Tom)</para></listitem>
+   <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
+
+   <listitem>
+    <para>Reduce memory usage for queries using complex functions (Tom)</para>
+    <para>
+     In prior releases, functions returning allocated memory would
+     not free it until the query completed. This release allows the
+     freeing of function-allocated memory when the function call
+     completes, reducing the total memory used by functions.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Improve GEQO optimizer performance (Tom)</para>
+    <para>
+     This release fixes several inefficiencies in the way the GEQO optimizer
+     manages potential query paths.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
+     tables (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
+     performance (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow most <literal>IN</literal> subqueries to be processed as
+     joins (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Pattern matching operations can use indexes regardless of
+     locale (Peter)
+    </para>
+    <para>
+     There is no way for non-ASCII locales to use the standard
+     indexes for <literal>LIKE</literal> comparisons. This release
+     adds a way to create a special index for
+     <literal>LIKE</literal>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
+    <para>
+     For shared libraries that require a long time to load, this
+     option is available so the library can be preloaded in the
+     postmaster and inherited by all database sessions.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Improve optimizer cost computations, particularly for subqueries (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
+     means <literal>a.x = 42</literal> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow hash/merge joins on complex joins (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow hash joins for more data types (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow join optimization of explicit inner joins, disable with
+     <varname>join_collapse_limit</varname> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add parameter <varname>from_collapse_limit</varname> to control
+     conversion of subqueries to joins (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Use faster and more powerful regular expression code from Tcl
+     (Henry Spencer, Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Use bit-mapped relation sets in the optimizer (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Improve connection startup time (Tom)</para>
+    <para>
+     The new client/server protocol requires fewer network packets to
+     start a database session.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Improve trigger/constraint performance (Stephan)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Fix hash indexes which were broken in rare cases (Tom)
+    </para>
+   </listitem>
+
+   <listitem><para>Improve hash index concurrency and speed (Tom)</para>
+    <para>
+     Prior releases suffered from poor hash index performance,
+     particularly for high concurrency situations. This release fixes
+     that, and the development group is interested in reports
+     comparing B-tree and hash index performance.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
+    <para>
+     Certain CPU's perform faster data copies when addresses are
+     32-byte aligned.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
+    <para>
+     <type>numeric</type> used to be stored in base 100. The new code
+     uses base 10000, for significantly better performance.
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Server Configuration Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
+    <para>
+     This was done so most parameters that control the server logs
+     begin with <literal>log_</>.
+    </para>
+   </listitem>
+
+   <listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
+   <listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
+   <listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
+
+   <listitem>
+    <para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
+    <para>
+     In prior releases, it was difficult to determine if checkpoint
+     was happening too frequently. This feature adds a warning to the
+     server logs when excessive checkpointing happens.
+    </para>
+   </listitem>
+
+   <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     Change debug server log messages to output as <literal>DEBUG</>
+     rather than <literal>LOG</> (Bruce)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
+    <para>
+     This is a security feature so non-superusers cannot disable
+     logging that was enabled by the administrator.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <varname>log_min_messages</>/<varname>client_min_messages</> now
+     controls <varname>debug_*</> output (Bruce)
+    </para>
+    <para>
+     This centralizes client debug information so all debug output
+     can be sent to either the client or server logs.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
+    <para>
+     This allows Mac OS X hosts to query the network for available
+     <productname>PostgreSQL</productname> servers.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add ability to print only slow statements using
+     <varname>log_min_duration_statement</varname>
+     (Christopher)
+    </para>
+    <para>
+     This is an often requested debugging feature that allows
+     administrators to see only slow queries in their server logs.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
+    <para>
+     This allows administrators to merge the host IP address and
+     netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
+    </para>
+   </listitem>
+
+   <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
+
+   <listitem>
+    <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
+    <para>
+     This works with the new error reporting feature to supply
+     additional error information like hints, file names and line
+     numbers.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
+    <para>
+     This option is useful for administration tools that need to know
+     the configuration variable names and their minimums, maximums,
+     defaults, and descriptions.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add new columns in <literal>pg_settings</literal>:
+     <literal>context</>, <literal>type</>, <literal>source</>,
+     <literal>min_val</>, <literal>max_val</> (Joe)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make default <varname>shared_buffers</> 1000 and
+     <varname>max_connections</> 100, if possible (Tom)
+    </para>
+    <para>
+     Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
+     would start on even very old systems. This release tests the
+     amount of shared memory allowed by the platform and selects more
+     reasonable default values if possible.  Of course, users are
+     still encouraged to evaluate their resource load and size
+     <varname>shared_buffers</varname> accordingly.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     New <filename>pg_hba.conf</filename> record type
+     <literal>hostnossl</> to prevent SSL connections (Jon
+     Jensen)
+    </para>
+    <para>
+     In prior releases, there was no way to prevent SSL connections
+     if both the client and server supported SSL. This option allows
+     that capability.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Remove parameter <varname>geqo_random_seed</varname>
+     (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Query Changes</title>
+
+  <itemizedlist>
+   <listitem><para>New SQL-standard information schema (Peter)</para></listitem>
+   <listitem><para>Add read-only transactions (Peter)</para></listitem>
+   <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
+
+   <listitem>
+    <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
+    <para>
+     In prior releases, only the superuser could see query strings
+     using <literal>pg_stat_activity</literal>. Now ordinary users
+     can see their own query strings.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
+    <para>
+     The SQL standard says that an aggregate function appearing
+     within a nested subquery belongs to the outer query if its
+     argument contains only outer-query variables.  Prior
+     <productname>PostgreSQL</productname> releases did not handle
+     this fine point correctly.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
+    <para>
+     By default, tables mentioned in the query are automatically
+     added to the <literal>FROM</> clause if they are not already
+     there.  This is compatible with historic
+     <productname>POSTGRES</productname> behavior but is contrary to
+     the SQL standard.  This option allows selecting
+     standard-compatible behavior.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
+    <para>
+     This allows <command>UPDATE</command> to set a column to its
+     declared default value.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
+    <para>
+     In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
+     only use constants, not expressions.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Object Manipulation Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
+   </listitem>
+
+   <listitem>
+    <para>Add statement-level triggers (Neil)</para>
+    <para>
+     While this allows a trigger to fire at the end of a statement,
+     it does not allow the trigger to access all rows modified by the
+     statement.  This capability is planned for a future release.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add check constraints for domains (Rod)</para>
+    <para>
+     This greatly increases the usefulness of domains by allowing
+     them to use check constraints.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add <command>ALTER DOMAIN</command> (Rod)</para>
+    <para>
+     This allows manipulation of existing domains.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Fix several zero-column table bugs (Tom)</para>
+    <para>
+     <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
+     that occur when using such tables.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
+    <para>
+     In prior releases, <literal>ALTER TABLE ... ADD
+     PRIMARY</literal> would add a unique index, but not a not-null
+     constraint.  That is fixed in this release.
+    </para>
+   </listitem>
+
+   <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
+    <para>
+     This allows control over whether new and updated rows will have
+     an OID column.  This is most useful for saving storage space.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
+     increment, cache, cycle values (Rod)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
+    <para>
+     This command is used by <command>pg_dump</command> to record the
+     cluster column for each table previously clustered. This
+     information is used by database-wide cluster to cluster all
+     previously clustered tables.
+    </para>
+   </listitem>
+
+   <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
+   <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
+   <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     Allow copying table schema using <literal>LIKE
+     <replaceable>subtable</replaceable></literal>, also SQL:2003
+     feature <literal>INCLUDING DEFAULTS</literal> (Rod)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add <literal>WITH GRANT OPTION</literal> clause to
+     <command>GRANT</command> (Peter)
+    </para>
+    <para>
+     This enabled <command>GRANT</command> to give other users the
+     ability to grant privileges on a object.
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Utility Command Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
+    <para>
+     This adds the ability for a table to be dropped or all rows
+     deleted on transaction commit.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
+    <para>
+     In previous releases, cursors were removed at the end of the
+     transaction that created them. Cursors can now be created with
+     the <literal>WITH HOLD</literal> option, which allows them to
+     continue to be accessed after the creating transaction has
+     committed.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
+    <para>
+     In previous releases, <literal>FETCH 0</literal> fetched all
+     remaining rows, and <literal>MOVE 0</literal> moved to the end
+     of the cursor.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Cause <command>FETCH</command> and <command>MOVE</command> to
+     return the number of rows fetched/moved, or zero if at the
+     beginning/end of cursor, per SQL standard (Bruce)
+    </para>
+    <para>
+     In prior releases, the row count returned by
+     <command>FETCH</command> and <command>MOVE</command> did not
+     accurately reflect the number of rows processed.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Properly handle <literal>SCROLL</literal> with cursors, or
+    report an error (Neil)</para>
+    <para>
+     Allowing random access (both forward and backward scrolling) to
+     some kinds of queries cannot be done without some additional
+     work. If <literal>SCROLL</literal> is specified when the cursor
+     is created, this additional work will be performed. Furthermore,
+     if the cursor has been created with <literal>NO SCROLL</literal>,
+     no random access is allowed.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Implement SQL-compatible options <literal>FIRST</>,
+     <literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
+     <literal>RELATIVE <replaceable>n</></> for
+     <command>FETCH</command> and <command>MOVE</command> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
+   </listitem>
+
+   <listitem>
+    <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
+    <para>
+     This allows all previously clustered tables in a database to be
+     reclustered with a single command.
+    </para>
+   </listitem>
+
+   <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
+
+   <listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
+
+   <listitem>
+    <para>
+     Disallow literal carriage return as a data value,
+     backslash-carriage-return and <literal>\r</> are still allowed
+     (Bruce)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
+    <para>
+     <command>TRUNCATE</command> can now be used inside a
+     transaction. If the transaction aborts, the changes made by the
+     <command>TRUNCATE</command> are automatically rolled back.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow prepare/bind of utility commands like
+     <command>FETCH</command> and <command>EXPLAIN</command> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
+   </listitem>
+
+   <listitem>
+    <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
+    <para>
+     In prior releases, functional indexes only supported a simple
+     function applied to one or more column names.  This release
+     allows any type of scalar expression.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Have <command>SHOW TRANSACTION ISOLATION</command> match input
+     to <command>SET TRANSACTION ISOLATION</command>
+     (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+      Have <command>COMMENT ON DATABASE</command> on nonlocal
+      database generate a warning, rather than an error (Rod)
+     </para>
+
+    <para>
+     Database comments are stored in database-local tables so
+     comments on a database have to be stored in each database.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
+    <para>
+     This allows system tables to be reindexed without the
+     requirement of a standalone session, which was necessary in
+     previous releases. The only tables that now require a standalone
+     session for reindexing are the global system tables
+     <literal>pg_database</>, <literal>pg_shadow</>, and
+     <literal>pg_group</>.
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Data Type and Function Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     New server parameter <varname>extra_float_digits</varname> to
+     control precision display of floating-point numbers (Pedro
+     Ferreira, Tom)
+    </para>
+    <para>
+     This controls output precision which was causing regression
+     testing problems.
+    </para>
+   </listitem>
+
+   <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     Remove rarely used functions <function>oidrand</>,
+     <function>oidsrand</>, and <function>userfntest</> functions
+     (Neil)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
+    <para>
+     An MD5 function was frequently requested. For more complex
+     encryption capabilities, use
+     <filename>contrib/pgcrypto</filename>.
+    </para>
+   </listitem>
+
+   <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
+
+   <listitem>
+    <para>
+     Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
+     <type>timestamp without time zone</type> is assumed to be in
+     local time, not GMT (Tom)
+    </para>
+   </listitem>
+
+   <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
+   <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
+   <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
+   <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
+
+   <listitem>
+    <para>
+     Allow functions that can take any argument data type and return
+     any data type, using <type>anyelement</type> and
+     <type>anyarray</type> (Joe)
+    </para>
+    <para>
+     This allows the creation of functions that can work with any
+     data type.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
+     <literal>ARRAY[['a','b'],['c','d']]</literal>, or
+     <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow proper comparisons for arrays, including <literal>ORDER
+     BY</literal> and <literal>DISTINCT</literal> support
+     (Joe)
+    </para>
+   </listitem>
+
+   <listitem><para>Allow indexes on array columns (Joe)</para></listitem>
+   <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
+
+   <listitem>
+    <para>
+     Allow <literal>WHERE</literal> qualification
+     <literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
+     (<replaceable>array_expr</>)</literal> (Joe)
+    </para>
+    <para>
+     This allows arrays to behave like a list of values, for purposes
+     like <literal>SELECT * FROM tab WHERE col IN
+     (array_val)</literal>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     New array functions <function>array_append</>,
+     <function>array_cat</>, <function>array_lower</>,
+     <function>array_prepend</>, <function>array_to_string</>,
+     <function>array_upper</>, <function>string_to_array</> (Joe)
+    </para>
+   </listitem>
+
+   <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
+   <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
+
+   <listitem>
+    <para>
+     Allow 60 in seconds fields of <type>time</type>,
+     <type>timestamp</type>, and <type>interval</type> input values
+     (Tom)
+    </para>
+    <para>
+     Sixty-second values are needed for leap seconds.
+    </para>
+   </listitem>
+
+   <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
+
+   <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
+
+   <listitem>
+    <para>
+     Trim trailing spaces when <type>char</type> is cast to
+     <type>varchar</> or <type>text</> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make <type>float(<replaceable>p</>)</> measure the precision
+     <replaceable>p</> in binary digits, not decimal digits
+     (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
+   </listitem>
+
+   <listitem>
+    <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Have <literal>SHOW datestyle</literal> generate output similar
+     to that used by <literal>SET datestyle</literal> (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
+     TIME ZONE</literal> follow the SQL convention for the sign of
+     time zone offsets, i.e., positive is east from UTC (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para>
+    <para>
+     Prior releases returned an incorrect value for this function call.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
+    <para>
+     <function>initcap()</function> now uppercases a letter appearing
+     after any non-alphanumeric character, rather than only after
+     whitespace.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add new <varname>datestyle</varname> values <literal>MDY</>,
+     <literal>DMY</>, and <literal>YMD</> to set input field order;
+     honor <literal>US</> and <literal>European</> for backward
+     compatibility (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     String literals like <literal>'now'</literal> or
+     <literal>'today'</literal> will no longer work as a column
+     default. Use functions such as <function>now()</function>,
+     <function>current_timestamp</function> instead.  (change
+     required for prepared statements) (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
+    <para>
+     NaN was already sorted after ordinary numeric values for most
+     purposes, but <function>min()</> and <function>max()</> didn't
+     get this right.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Prevent interval from suppressing <literal>:00</literal>
+    seconds display</para>
+   </listitem>
+
+   <listitem>
+    <para>
+     New functions <function>pg_get_triggerdef(prettyprint)</function>
+     and <function>pg_conversion_is_visible()</function> (Christopher)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
+     match <varname>datestyle</varname>
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make <function>pg_get_constraintdef</function> support
+     unique, primary-key, and check constraints (Christopher)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Server-Side Language Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
+     used on a zero-row record variable (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make PL/Python's <function>spi_execute</function> interface
+     handle null values properly (Andrew Bosma)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
+   </listitem>
+
+   <listitem>
+    <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
+    <para>
+     The Python language no longer supports a restricted execution
+     environment, so the trusted version of PL/Python was removed. If
+     this situation changes, a version of PL/Python that can be used
+     by non-superusers will be readded.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Allow polymorphic SQL functions (Joe)</para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Improved compiled function caching mechanism in PL/pgSQL with
+     full support for polymorphism (Joe)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Add new parameter <literal>$0</> in PL/pgSQL representing the
+     function's actual return type (Joe)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
+     qualified type names in the parameter type list
+     (Jan)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>psql Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
+    <para>
+     This forces the pager to be used even if the number of rows is
+     less than the screen height.  This is valuable for rows that
+     wrap across several screen rows.
+    </para>
+   </listitem>
+
+   <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
+   <listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
+   <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
+
+   <listitem>
+    <para>
+     <command>\encoding</> now changes based on the server parameter
+     <varname>client_encoding</varname> (Tom)
+    </para>
+    <para>
+     In previous versions, <command>\encoding</command> was not aware
+     of encoding changes made using <literal>SET
+     client_encoding</literal>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Save editor buffer into readline history (Ross)</para>
+    <para>
+     When <command>\e</> is used to edit a query, the result is saved
+     in the readline history for retrieval using the up arrow.
+    </para>
+   </listitem>
+
+   <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
+   <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
+
+   <listitem>
+    <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
+    <para>
+     This takes the place of the removed server parameter <varname>autocommit</varname>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
+    <para>
+     This controls the new error reporting details.
+    </para>
+   </listitem>
+
+   <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
+   <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>pg_dump Changes</title>
+
+  <itemizedlist>
+   <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
+   <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
+
+   <listitem>
+    <para>Make pg_dump preserve column storage characteristics (Christopher)</para>
+    <para>
+     This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
+    </para>
+   </listitem>
+
+   <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
+
+   <listitem>
+    <para>
+     Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow pg_dumpall to support the options <option>-a</>,
+     <option>-s</>, <option>-x</> of pg_dump (Tom)
+    </para>
+   </listitem>
+
+   <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     pg_dump options <option>--use-set-session-authorization</option>
+     and <option>--no-reconnect</option> now do nothing, all dumps
+     use <command>SET SESSION AUTHORIZATION</command>
+    </para>
+    <para>
+     pg_dump no longer reconnects to switch users, but instead always
+     uses <command>SET SESSION AUTHORIZATION</command>. This will
+     reduce password prompting during restores.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Long options for <application>pg_dump</application> are now available on all platforms</para>
+    <para>
+     <productname>PostgreSQL</productname> now includes its own
+     long-option processing routines.
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>libpq Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     Add function <function>PQfreemem</function> for freeing memory on
+     Windows, suggested for <command>NOTIFY</command> (Bruce)
+    </para>
+    <para>
+     Windows requires that memory allocated in a library be freed by
+     a function in the same library, hence
+     <function>free()</function> doesn't work for freeing memory
+     allocated by libpq. <function>PQfreemem</function> is the proper
+     way to free libpq memory, especially on Windows, and is
+     recommended for other platforms as well.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Document service capability, and add sample file (Bruce)</para>
+    <para>
+     This allows clients to look up connection information in a
+     central file on the client machine.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Make <function>PQsetdbLogin</function> have the same defaults as
+     <function>PQconnectdb</function> (Tom)
+    </para>
+   </listitem>
+
+   <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow thread-safe libpq with <filename>configure</filename>
+     option <option>--enable-thread-safety</option> (Lee Kindness,
+     Philip Yarra)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow function <function>pqInternalNotice</function> to accept a
+     format string and arguments instead of just a preformatted
+     message (Tom, Sean Chittenden)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Control SSL negotiation with <literal>sslmode</literal> values
+     <literal>disable</literal>, <literal>allow</literal>,
+     <literal>prefer</literal>, and <literal>require</literal> (Jon
+     Jensen)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Allow new error codes and levels of text (Tom)</para>
+   </listitem>
+
+   <listitem>
+    <para>Allow access to the underlying table and column of a query result (Tom)</para>
+    <para>
+     This is helpful for query-builder applications that want to know
+     the underlying table and column names associated with a specific
+     result set.
+    </para>
+   </listitem>
+
+   <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
+   <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
+
+   <listitem>
+    <para>
+     Add function <function>PQexecPrepared</function> and
+     <function>PQsendQueryPrepared</function> functions which perform
+     bind/execute of previously prepared statements (Tom)
+     </para>
+    </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>JDBC Changes</title>
+
+  <itemizedlist>
+   <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
+   <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
+   <listitem><para>Support SSL connections (Barry)</para></listitem>
+   <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
+   <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Miscellaneous Interface Changes</title>
+
+  <itemizedlist>
+   <listitem>
+    <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
+   </listitem>
+   <listitem>
+    <para>Add Informix compatibility to ECPG (Michael)</para>
+    <para>
+     This allows ECPG to process embedded C programs that were
+     written using certain Informix extensions.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Allow thread-safe embedded SQL programs with
+     <filename>configure</filename> option
+     <option>--enable-thread-safety</option> (Lee Kindness, Bruce)
+    </para>
+    <para>
+     This allows multiple threads to access the database at the same
+     time.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Source Code Changes</title>
+
+  <itemizedlist>
+   <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
+   <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
+   <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
+   <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
+   <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
+   <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
+   <listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
+   <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
+   <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
+   <listitem><para>Convert administration scripts to C (Peter)</para></listitem>
+   <listitem><para> Bison &gt;= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
+   <listitem><para>Merge documentation into one book (Peter)</para></listitem>
+   <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
+   <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
+   <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
+   <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
+   <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
+   <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
+   <listitem>
+    <para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
+    <para>
+     This was no longer needed now that we have <command>CREATE CONVERSION</command>.
+    </para>
+   </listitem>
+   <listitem>
+    <para>Generate a compile error if spinlock code is not found (Bruce)</para>
+    <para>
+     Platforms without spinlock code will now fail to compile, rather
+     than silently using semaphores. This failure can be disabled
+     with a new <command>configure</command> option.
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect3>
+
+ <sect3>
+  <title>Contrib Changes</title>
+
+  <itemizedlist>
+   <listitem><para>Change dbmirror license to BSD</para></listitem>
+   <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
+   <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
+   <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
+   <listitem><para>Update oracle</para></listitem>
+   <listitem><para>Update mysql</para></listitem>
+   <listitem><para>Update cube (Bruno Wolff III)</para></listitem>
+   <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
+   <listitem><para>Update btree_gist (Oleg)</para></listitem>
+   <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
+   <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
+   <listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
+   <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
+   <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
+   <listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
+   <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
+   <listitem><para>Improve pgstattuple (Rod)</para></listitem>
+   <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
+   <listitem><para>Improve adddepend (Rod)</para></listitem>
+   <listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem>
+   <listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
+   <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
+  </itemizedlist>
+ </sect3>
+ </sect2>
+</sect1>
diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml
new file mode 100644 (file)
index 0000000..ee07384
--- /dev/null
@@ -0,0 +1,6657 @@
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-old.sgml,v 1.1.10.1 2009/05/02 20:18:21 tgl Exp $ -->
+<!-- See header comment in release.sgml about typical markup -->
+
+ <sect1 id="release-7-3-21">
+  <title>Release 7.3.21</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2008-01-07</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.20,
+   including fixes for significant security issues.
+  </para>
+
+  <para>
+   This is expected to be the last <productname>PostgreSQL</> release
+   in the 7.3.X series.  Users are encouraged to update to a newer
+   release branch soon.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.21</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </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>
+      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.3.20 was incomplete, as it plugged
+      the hole for only some <filename>dblink</> functions.  (CVE-2007-6601,
+      CVE-2007-3278)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix potential crash in <function>translate()</> when using a multibyte
+      database encoding (Tom)
+     </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>
+      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-3-20">
+  <title>Release 7.3.20</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2007-09-17</simpara>
+  </note>
+
+  <para>
+   This release contains fixes from 7.3.19.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.20</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </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 crash when <varname>log_min_error_statement</> logging runs out
+      of memory (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-7-3-19">
+  <title>Release 7.3.19</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2007-04-23</simpara>
+  </note>
+
+  <para>
+   This release contains fixes from 7.3.18,
+   including a security fix.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.19</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+    <para>
+     Support explicit placement of the temporary-table schema within
+     <varname>search_path</>, and disable searching it for functions
+     and operators (Tom)
+    </para>
+    <para>
+     This is needed to allow a security-definer function to set a
+     truly secure value of <varname>search_path</>.  Without it,
+     an unprivileged SQL user can use temporary objects to execute code
+     with the privileges of the security-definer function (CVE-2007-2138).
+     See <command>CREATE FUNCTION</> for more information.
+    </para>
+    </listitem>
+
+    <listitem>
+    <para>
+     Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
+     <command>UPDATE</> chains (Tom, Pavan Deolasee)
+    </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-18">
+  <title>Release 7.3.18</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2007-02-05</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.17, including
+   a security fix.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.18</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </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 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>
+     Tighten security of multi-byte character processing for UTF8 sequences
+     over three bytes long (Tom)
+    </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-17">
+  <title>Release 7.3.17</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2007-01-08</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.16.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.17</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <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-3-16">
+  <title>Release 7.3.16</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2006-10-16</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.15.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.16</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+<itemizedlist>
+<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>Back-port 7.4 spinlock code to improve performance and support
+64-bit architectures better</para> </listitem>
+<listitem><para>Fix SSL-related memory leak in libpq</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-3-15">
+  <title>Release 7.3.15</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2006-05-23</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.14,
+   including patches for extremely serious security issues.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.15</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </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</para>
+<para>This fixes <application>libpq</>-using applications for the security
+issues described in CVE-2006-2313 and CVE-2006-2314.
+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 server to use custom DH SSL parameters correctly (Michael
+Fuhr)</para></listitem>
+
+<listitem><para>Fix various minor memory leaks</para></listitem>
+</itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-14">
+  <title>Release 7.3.14</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2006-02-14</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.13.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.14</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.13, see the release
+    notes for 7.3.13.
+   </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.3.11 release.
+</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>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-3-13">
+  <title>Release 7.3.13</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2006-01-09</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.12.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.13</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.10, see the release
+    notes for 7.3.10.
+    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 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-3-12">
+  <title>Release 7.3.12</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2005-12-12</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.11.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.12</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.10, see the release
+    notes for 7.3.10.
+   </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><filename>/contrib/ltree</> fixes (Teodor)</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-3-11">
+  <title>Release 7.3.11</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2005-10-04</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.10.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.11</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    if you are upgrading from a version earlier than 7.3.10, see the release
+    notes for 7.3.10.
+   </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 missing rows in queries like <literal>UPDATE a=... WHERE
+a...</> with GiST index on column <literal>a</></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>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>
+</itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-7-3-10">
+  <title>Release 7.3.10</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2005-05-09</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.9, including several
+   security-related issues.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.10</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.X.  However,
+    it is one possible way of handling a significant security problem
+    that has been found in the initial contents of 7.3.X system
+    catalogs.  A dump/initdb/reload sequence using 7.3.10's initdb will
+    automatically correct this problem.
+   </para>
+
+   <para>
+    The 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.)
+    It is strongly recommended that all installations repair this error,
+    either by initdb or by following the manual repair procedure given
+    below.  The error at least allows 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 procedure 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>
+   </para>
+
+   <para>
+    The above procedure 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 error.  <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
+     procedure.  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>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>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>Prevent <function>to_char(interval)</> from dumping core for
+month-related formats</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>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-9">
+  <title>Release 7.3.9</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2005-01-31</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.8, including several
+   security-related issues.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.3.9</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.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>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-8">
+  <title>Release 7.3.8</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2004-10-22</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.7.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.3.8</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.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 pg_ctl as root</para>
+<para>
+This is to guard against any possible security issues.
+</para></listitem>
+<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</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>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-7">
+  <title>Release 7.3.7</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2004-08-16</simpara>
+  </note>
+
+  <para>
+   This release contains one critical fix over 7.3.6, and some minor items.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.3.7</title>
+
+   <para>
+    A dump/restore is not required for those running 7.3.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>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
+<listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-6">
+  <title>Release 7.3.6</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2004-03-02</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.3.5.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.3.6</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those
+    running 7.3.*.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Revert erroneous changes in rule permissions checking</para>
+<para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
+turns out to have disabled rule-related permissions checks in many
+not-so-corner cases.  This would for example allow users to insert into views
+they weren't supposed to have permission to insert into.  We have therefore
+reverted the 7.3.3 patch.  The original bug will be fixed in 8.0.
+</para></listitem>
+<listitem><para>Repair incorrect order of operations in
+GetNewTransactionId()</para>
+<para>
+This bug could result in failure under out-of-disk-space conditions, including
+inability to restart even after disk space is freed.
+</para></listitem>
+<listitem><para>Ensure configure selects -fno-strict-aliasing even when
+an external value for CFLAGS is supplied</para>
+<para>
+On some platforms, building with -fstrict-aliasing causes bugs.
+</para></listitem>
+<listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
+<para>
+This bug prevented proper restoration from archive files exceeding 4 GB.
+</para></listitem>
+<listitem><para>Make contrib/dblink not assume that local and remote type OIDs
+match (Joe)</para></listitem>
+<listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
+<listitem><para>Don't crash when a rowtype argument to a plpgsql function is
+NULL</para></listitem>
+<listitem><para>Avoid generating invalid character encoding sequences in
+corner cases when planning LIKE operations</para></listitem>
+<listitem><para>Ensure text_position() cannot scan past end of source string
+in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
+<listitem><para>Fix index optimization and selectivity estimates for LIKE
+operations on bytea columns (Joe)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-5">
+  <title>Release 7.3.5</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2003-12-03</simpara>
+  </note>
+
+  <para>
+   This has a variety of fixes from 7.3.4.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.3.5</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those
+    running 7.3.*.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+<itemizedlist>
+<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>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
+<listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
+<listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
+<listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
+<listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
+<listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
+<listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
+<listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
+<listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
+<listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
+<listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
+<listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
+<listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
+<listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
+<listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
+(prevents possible SQL-injection attacks)</para></listitem>
+<listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
+<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-3-4">
+  <title>Release 7.3.4</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2003-07-24</simpara>
+  </note>
+
+  <para>
+   This has a variety of fixes from 7.3.3.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.3.4</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those
+    running 7.3.*.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
+<listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
+<listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
+<listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
+<listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
+<listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
+<listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
+<listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
+<listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
+</itemizedlist>
+  </sect2>
+ </sect1>
+
+
+<sect1 id="release-7-3-3">
+ <title>Release 7.3.3</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2003-05-22</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.3.2.
+ </para>
+
+ <sect2>
+  <title>Migration to Version 7.3.3</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.3.*.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
+<listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
+<listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
+<listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
+<listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
+<listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
+<listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
+<listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
+<listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
+<listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
+<listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
+<type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
+<listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
+      not applied unless you <application>initdb</application>)</para></listitem>
+<listitem><para>Fix <application>pg_proc</application> entry for
+     <type>timestampt_izone</type> (fix is not applied unless you
+       <application>initdb</application>)</para></listitem>
+<listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
+<listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
+<listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
+<listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
+      synonym for <command>TEMPORARY</command></para></listitem>
+<listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
+<listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
+<listitem><para>Fix incorrect time-qual check in row fetch for
+      <command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
+<listitem><para>Foreign-key clauses were parsed but ignored in
+      <command>ALTER TABLE ADD COLUMN</command></para></listitem>
+<listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
+<listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
+<listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
+<listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
+<listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
+<listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
+<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
+<listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
+<listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
+<listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
+<listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
+<listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
+<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
+<listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
+<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
+<listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
+<listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
+<listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
+<listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
+<listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
+<listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
+<listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
+<listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
+<listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
+<listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
+<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
+<listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
+<listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
+<listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
+<listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
+<listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
+<listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
+<listitem><para>Allow qualified type names in <command>CREATE CAST</command>
+      and <command> DROP CAST</command></para></listitem>
+<listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
+      be written <function>SETOF _type</function></para></listitem>
+<listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
+<listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
+<listitem><para><application>pg_dump</application> failed to handle error return
+      from <function>lo_read</function> (Oleg Drokin)</para></listitem>
+<listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
+<listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
+<listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
+<listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
+<listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
+<listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
+<listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
+<listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
+<listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
+<listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
+<listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
+<listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-3-2">
+ <title>Release 7.3.2</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2003-02-04</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.3.1.
+ </para>
+
+
+ <sect2>
+  <title>Migration to Version 7.3.2</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.3.*.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
+<listitem><para>Fix <application>pg_dump</> core dump when dumping views having comments</para></listitem>
+<listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
+<listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
+<listitem><para>Increase default value of max_fsm_relations</para></listitem>
+<listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
+<listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
+<listitem><para>Fix problems with loading <application>pg_dump</> files containing contrib/lo usage</para></listitem>
+<listitem><para>Fix problem with all-numeric user names</para></listitem>
+<listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
+<listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
+<listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
+<listitem><para>Work with bison 1.875</para></listitem>
+<listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
+<listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
+<listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
+<listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
+<listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
+<listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
+<listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
+<listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
+<listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
+<listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
+<listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
+<listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
+<listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
+<listitem><para>Update my2pg, ora2pg</para></listitem>
+<listitem><para>Translation updates</para></listitem>
+<listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
+<listitem><para>fastpath code now checks for privilege to call function</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-3-1">
+ <title>Release 7.3.1</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2002-12-18</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.3.
+ </para>
+
+
+ <sect2>
+  <title>Migration to Version 7.3.1</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.3. However, it should be noted that the main
+   <productname>PostgreSQL</productname> interface library, libpq,
+   has a new major version number for this release, which might require
+   recompilation of client code in certain cases.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
+<listitem><para>Allow <application>pg_dump</> to work with pre-7.2 servers (Philip)</para></listitem>
+<listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
+<listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
+<listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
+<listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
+<listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
+<listitem><para>Optimizer fixes (Tom)</para></listitem>
+<listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
+<listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
+<listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
+<listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
+<listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
+<listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
+<listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
+<listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-3">
+ <title>Release 7.3</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2002-11-27</simpara>
+ </note>
+
+ <sect2>
+  <title>Overview</title>
+
+  <para>
+   Major changes in this release:
+  </para>
+
+  <variablelist>
+   <varlistentry>
+    <term>Schemas</term>
+    <listitem>
+     <para>
+      Schemas allow users to create objects in separate namespaces,
+      so two people or applications can have tables with the same
+      name. There is also a public schema for shared tables.
+      Table/index creation can be restricted by removing privileges
+      on the public schema.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Drop Column</term>
+    <listitem>
+     <para>
+      <productname>PostgreSQL</productname> now supports the
+      <literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Table Functions</term>
+    <listitem>
+     <para>
+      Functions returning multiple rows and/or multiple columns are
+      now much easier to use than before.  You can call such a
+      <quote>table function</quote> in the <literal>SELECT</literal>
+      <literal>FROM</literal> clause, treating its output like a
+      table. Also, <application>PL/pgSQL</application> functions can
+      now return sets.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Prepared Queries</term>
+    <listitem>
+     <para>
+      <productname>PostgreSQL</productname> now supports prepared
+      queries, for improved performance.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Dependency Tracking</term>
+    <listitem>
+     <para>
+      <productname>PostgreSQL</productname> now records object
+      dependencies, which allows improvements in many areas.
+      <command>DROP</command> statements now take either
+      <literal>CASCADE</> or <literal>RESTRICT</> to control whether
+      dependent objects are also dropped.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Privileges</term>
+    <listitem>
+     <para>
+      Functions and procedural languages now have privileges, and
+      functions can be defined to run with the privileges of their
+      creator.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Internationalization</term>
+    <listitem>
+     <para>
+      Both multibyte and locale support are now always enabled.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Logging</term>
+    <listitem>
+     <para>
+      A variety of logging options have been enhanced.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Interfaces</term>
+    <listitem>
+     <para>
+      A large number of interfaces have been moved to <ulink
+      url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
+      where they can be developed and released independently.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Functions/Identifiers</term>
+    <listitem>
+     <para>
+      By default, functions can now take up to 32 parameters, and
+      identifiers can be up to 63 bytes long.  Also, <literal>OPAQUE</>
+      is now deprecated: there are specific <quote>pseudo-datatypes</>
+      to represent each of the former meanings of <literal>OPAQUE</>
+      in function argument and result types.
+     </para>
+    </listitem>
+   </varlistentry>
+
+  </variablelist>
+ </sect2>
+
+ <sect2>
+  <title>Migration to Version 7.3</title>
+
+  <para>
+   A dump/restore using <application>pg_dump</> is required for those
+   wishing to migrate data from any previous release. If your
+   application examines the system catalogs, additional changes will
+   be required due to the introduction of schemas in 7.3; for more
+   information, see: <ulink
+   url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></>.
+  </para>
+
+  <para>
+   Observe the following incompatibilities:
+  </para>
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     Pre-6.3 clients are no longer supported.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <filename>pg_hba.conf</filename> now has a column for the user
+     name and additional features.  Existing files need to be
+     adjusted.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Several <filename>postgresql.conf</filename> logging parameters
+     have been renamed.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <literal>LIMIT #,#</literal> has been disabled; use
+     <literal>LIMIT # OFFSET #</literal>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <command>INSERT</command> statements with column lists must
+     specify a value for each specified column. For example,
+     <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
+     is now invalid.  It's still allowed to supply fewer columns than
+     expected if the <command>INSERT</command> does not have a column list.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <type>serial</type> columns are no longer automatically
+     <literal>UNIQUE</>; thus, an index will not automatically be
+     created.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     A <command>SET</command> command inside an aborted transaction
+     is now rolled back.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     <command>COPY</command> no longer considers missing trailing
+     columns to be null.  All columns need to be specified.
+     (However, one can achieve a similar effect by specifying a
+     column list in the <command>COPY</command> command.)
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The data type <type>timestamp</type> is now equivalent to
+     <type>timestamp without time zone</type>, instead of
+     <type>timestamp with time zone</type>.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     Pre-7.3 databases loaded into 7.3 will not have the new object
+     dependencies for <type>serial</type> columns, unique
+     constraints, and foreign keys. See the directory
+     <filename>contrib/adddepend/</filename> for a detailed
+     description and a script that will add such dependencies.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     An empty string (<literal>''</literal>) is no longer allowed as
+     the input into an integer field.  Formerly, it was silently
+     interpreted as 0.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+  <sect3>
+   <title>Server Operation</title>
+<itemizedlist>
+<listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
+<listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
+<listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
+<listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Performance</title>
+<itemizedlist>
+<listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
+<listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
+<listitem><para>Improve caching of index information (Tom)</para></listitem>
+<listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
+<listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
+<listitem><para>Hash function improvements (Neil)</para></listitem>
+<listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
+<listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
+<listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
+<listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
+<listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
+<listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
+<listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
+<listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
+<listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
+<listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
+<listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
+<listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Privileges</title>
+<itemizedlist>
+<listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
+<listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
+<listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
+<listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
+<listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Server Configuration</title>
+<itemizedlist>
+<listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
+<listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
+<listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
+<listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
+<listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
+<listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
+<listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
+<listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
+<listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
+<listitem><para>SSL improvements (Bear Giles)</para></listitem>
+<listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
+<listitem><para>Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
+<listitem><para>Add log_duration parameter (Bruce)</para></listitem>
+<listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
+<listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
+<listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Queries</title>
+<itemizedlist>
+<listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
+<listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
+<listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
+<listitem><para>UNION fixes for merging &gt;= 3 columns of different lengths (Tom)</para></listitem>
+<listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
+<listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
+<listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1');  (Rod)</para></listitem>
+<listitem><para>Fix for join aliases (Tom)</para></listitem>
+<listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
+<listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
+<listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
+<listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
+<listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
+<listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
+<listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
+<listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
+<listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
+<listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Object Manipulation</title>
+<itemizedlist>
+<listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
+<listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
+<listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
+<listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
+<listitem><para>Create schema for temporary tables (Tom)</para></listitem>
+<listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
+<listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
+<listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
+<listitem><para>Make rule names unique only per table (Tom)</para></listitem>
+<listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
+<listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
+<listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
+<listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
+<listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
+<listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
+<listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
+<listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
+<listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
+<listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
+<listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
+<listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
+<listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
+<listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
+<listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
+<listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
+<listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
+<listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
+<listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
+<listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
+<listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
+<listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Utility Commands</title>
+<itemizedlist>
+<listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
+<listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
+<listitem><para>Make <application>pg_dump</> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
+<listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
+<listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
+<listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
+<listitem><para>Restrict database comment changes to the current database</para></listitem>
+<listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
+<listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
+<listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
+<listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
+<listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
+<listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
+<listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
+<listitem><para>Fix <application>pg_dump</> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
+<listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
+<listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
+<listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
+<listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
+<listitem><para>Have SHOW output a query result (Joe)</para></listitem>
+<listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
+<listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
+<listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
+<listitem><para>Add smart quoting, portability improvements to <application>pg_dump</> output (Peter)</para></listitem>
+<listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
+<listitem><para>Enable large file support, &gt;2G for <application>pg_dump</> (Peter, Philip Warner, Bruce)</para></listitem>
+<listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
+<listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
+<listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
+<listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
+<listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
+<listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
+<listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
+<listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Data Types and Functions</title>
+<itemizedlist>
+<listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
+<listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
+<listitem><para>Fix for array slice extraction (Tom)</para></listitem>
+<listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
+<listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
+<listitem><para>Add domain support (Rod)</para></listitem>
+<listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
+<listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
+<listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
+<listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
+<listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
+<listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
+<listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
+<listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
+<listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
+<listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
+<listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
+<listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
+<listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
+<listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
+<listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
+<listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
+<listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
+<listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
+<listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
+<listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
+<listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
+<listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
+<listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
+<listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
+<listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
+<listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
+<listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
+<listitem><para>Add current_database() (Rod)</para></listitem>
+<listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
+<listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
+<listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
+<listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
+<listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
+<listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Internationalization</title>
+<itemizedlist>
+<listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
+<listitem><para>Enable locale support by default (Peter)</para></listitem>
+<listitem><para>Add locale variables (Peter)</para></listitem>
+<listitem><para>Escape byes &gt;= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
+<listitem><para>Add locale awareness to regular expression character classes</para></listitem>
+<listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
+<listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
+<listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
+<listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
+<listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
+<listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
+<listitem><para>New and updated translations</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Server-side Languages</title>
+<itemizedlist>
+<listitem><para>Allow recursive SQL function (Peter)</para></listitem>
+<listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
+<listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
+<listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
+<listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
+<listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
+<listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>psql</title>
+<itemizedlist>
+<listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
+<listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
+<listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
+<listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
+<listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
+<listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
+<listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
+<listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
+<listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
+<listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
+<listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>libpq</title>
+<itemizedlist>
+<listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
+<listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
+<listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
+<listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
+<listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
+<listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
+<listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
+<listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>JDBC</title>
+<itemizedlist>
+<listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
+<listitem><para>Add JDBC 3 support (Barry)</para></listitem>
+<listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
+<listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
+<listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
+<listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
+<listitem><para>Add query cancel capability</para></listitem>
+<listitem><para>Add refresh row (Dave)</para></listitem>
+<listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
+<listitem><para>Add support for prepared statements (Barry)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Miscellaneous Interfaces</title>
+<itemizedlist>
+<listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
+<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
+<listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
+<listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
+<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
+<listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
+<listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Source Code</title>
+<itemizedlist>
+<listitem><para>Fix for parallel make (Peter)</para></listitem>
+<listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
+<listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
+<listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
+<listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
+<listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
+<listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
+<listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
+<listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
+<listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
+<listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
+<listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
+<listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
+<listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
+<listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
+<listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
+<listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
+<listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
+<listitem><para>Bison &gt;= 1.50 now required for developer builds</para></listitem>
+<listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
+<listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
+<listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
+<listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
+<listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
+<listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
+<listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
+<listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
+<listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
+<listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
+<listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
+<listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
+<listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
+<listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
+<listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
+<listitem><para>Add Posix semaphore support (Tom)</para></listitem>
+<listitem><para>Document need for reindex (Bruce)</para></listitem>
+<listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
+<listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
+<listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
+<listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
+<listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
+<listitem><para>Remove unused system table columns (Peter)</para></listitem>
+<listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
+<listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
+<listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
+<listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
+<listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
+<listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
+<listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Contrib</title>
+<itemizedlist>
+<listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
+<listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
+<listitem><para>Upgrade /contrib/mysql</para></listitem>
+<listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
+<listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
+<listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
+<listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
+<listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
+<listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
+<listitem><para>Update /contrib/dblink (Joe)</para></listitem>
+<listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
+<listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
+<listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
+<listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
+<listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
+<listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
+<listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
+<listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
+<listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
+<listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
+<listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-8">
+  <title>Release 7.2.8</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2005-05-09</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.2.7, including one
+   security-related issue.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.2.8</title>
+
+   <para>
+    A dump/restore is not required for those running 7.2.X.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+<itemizedlist>
+<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 <function>EXTRACT(EPOCH)</> for
+<type>TIME WITH TIME ZONE</> values</para></listitem>
+<listitem><para>Additional buffer overrun checks in plpgsql
+(Neil)</para></listitem>
+<listitem><para>Fix pg_dump to dump index names and trigger names containing
+<literal>%</> correctly (Neil)</para></listitem>
+<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
+month-related formats</para></listitem>
+<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
+(Marko Kreen)</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-7">
+  <title>Release 7.2.7</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2005-01-31</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.2.6, including several
+   security-related issues.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.2.7</title>
+
+   <para>
+    A dump/restore is not required for those running 7.2.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>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 display of negative intervals in SQL and GERMAN
+datestyles</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-6">
+  <title>Release 7.2.6</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2004-10-22</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.2.5.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.2.6</title>
+
+   <para>
+    A dump/restore is not required for those running 7.2.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 pg_ctl as root</para>
+<para>
+This is to guard against any possible security issues.
+</para></listitem>
+<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</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>Update to newer versions of Bison</para></listitem>
+</itemizedlist>
+
+ </sect2>
+</sect1>
+
+ <sect1 id="release-7-2-5">
+  <title>Release 7.2.5</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2004-08-16</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 7.2.4.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.2.5</title>
+
+   <para>
+    A dump/restore is not required for those running 7.2.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>Fix corner case for btree search in parallel with first root page split</para></listitem>
+<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
+<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
+<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
+<listitem><para>Repair memory leaks in pg_dump</para></listitem>
+<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+<sect1 id="release-7-2-4">
+ <title>Release 7.2.4</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2003-01-30</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.2.3,
+  including fixes to prevent possible data loss.
+ </para>
+
+ <sect2>
+  <title>Migration to Version 7.2.4</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.2.*.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
+<listitem><para>Prevent VACUUM from being called inside a function  (Bruce)</para></listitem>
+<listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
+<listitem><para>Avoid integer overflow during large hash joins</para></listitem>
+<listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
+<listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
+<listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add()  (Neil)</para></listitem>
+<listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2-3">
+ <title>Release 7.2.3</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2002-10-01</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.2.2,
+  including fixes to prevent possible data loss.
+ </para>
+
+ <sect2>
+  <title>Migration to Version 7.2.3</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.2.*.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
+<listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
+<listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
+<listitem><para>Fix possible hang during server shutdown</para></listitem>
+<listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
+<listitem><para>Fix <application>pg_dump</> to properly dump FULL JOIN USING (Tom)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2-2">
+ <title>Release 7.2.2</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2002-08-23</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.2.1.
+ </para>
+
+ <sect2>
+  <title>Migration to Version 7.2.2</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.2.*.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
+<listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
+<listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes &gt; 0x7f (Tatsuo)</para></listitem>
+<listitem><para>Fix for psql and <application>pg_dump</> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
+<listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
+<listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
+<listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
+<listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
+<listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
+<listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
+<listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
+<listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
+<listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2-1">
+ <title>Release 7.2.1</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2002-03-21</simpara>
+ </note>
+
+ <para>
+  This release contains a variety of fixes for version 7.2.
+ </para>
+
+ <sect2>
+  <title>Migration to Version 7.2.1</title>
+
+  <para>
+   A dump/restore is <emphasis>not</emphasis> required for those
+   running version 7.2.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+<itemizedlist>
+<listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
+<listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
+<listitem><para>Optimizer improvements (Tom)</para></listitem>
+<listitem><para>Cash I/O improvements (Tom)</para></listitem>
+<listitem><para>New Russian FAQ</para></listitem>
+<listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
+<listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
+<listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
+<listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
+<listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
+<listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
+<listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
+<listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
+<listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
+<listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
+<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
+</itemizedlist>
+ </sect2>
+</sect1>
+
+
+<sect1 id="release-7-2">
+ <title>Release 7.2</title>
+
+ <note>
+  <title>Release date</title>
+  <simpara>2002-02-04</simpara>
+ </note>
+
+ <sect2>
+  <title>Overview</title>
+
+  <para>
+   This release improves <productname>PostgreSQL</> for use in
+   high-volume applications.
+  </para>
+
+  <para>
+   Major changes in this release:
+  </para>
+
+  <variablelist>
+   <varlistentry>
+    <term>VACUUM</term>
+    <listitem>
+     <para>
+      Vacuuming no longer locks tables, thus allowing normal user
+      access during the vacuum.  A new <command>VACUUM FULL</>
+      command does old-style vacuum by locking the table and
+      shrinking the on-disk copy of the table.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Transactions</term>
+    <listitem>
+     <para>
+      There is no longer a problem with installations that exceed
+      four billion transactions.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>OIDs</term>
+    <listitem>
+     <para>
+      OIDs are now optional.  Users can now create tables without
+      OIDs for cases where OID usage is excessive.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Optimizer</term>
+    <listitem>
+     <para>
+      The system now computes histogram column statistics during
+      <command>ANALYZE</>, allowing much better optimizer choices.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Security</term>
+    <listitem>
+     <para>
+      A new MD5 encryption option allows more secure storage and
+      transfer of passwords.  A new Unix-domain socket
+      authentication option is available on Linux and BSD systems.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Statistics</term>
+    <listitem>
+     <para>
+      Administrators can use the new table access statistics module
+      to get fine-grained information about table and index usage.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>Internationalization</term>
+    <listitem>
+     <para>
+      Program and library messages can now be displayed in several
+      languages.
+     </para>
+    </listitem>
+   </varlistentry>
+
+  </variablelist>
+ </sect2>
+
+ <sect2>
+  <title>Migration to Version 7.2</title>
+
+  <para>
+   A dump/restore using <command>pg_dump</command> is required for
+   those wishing to migrate data from any previous release.
+  </para>
+
+  <para>
+   Observe the following incompatibilities:
+  </para>
+
+  <itemizedlist>
+   <listitem>
+    <para>
+     The semantics of the <command>VACUUM</command> command have
+     changed in this release.  You might wish to update your
+     maintenance procedures accordingly.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     In this release, comparisons using <literal>= NULL</literal>
+     will always return false (or NULL, more precisely).  Previous
+     releases automatically transformed this syntax to <literal>IS
+     NULL</literal>.  The old behavior can be re-enabled using a
+     <filename>postgresql.conf</filename> parameter.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
+     configuration is now only reloaded after receiving a
+     <systemitem>SIGHUP</> signal, not with each connection.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The function <filename>octet_length()</> now returns the uncompressed data length.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The date/time value <literal>'current'</literal> is no longer
+     available.  You will need to rewrite your applications.
+    </para>
+   </listitem>
+
+   <listitem>
+    <para>
+     The <literal>timestamp()</literal>, <literal>time()</literal>,
+     and <literal>interval()</literal> functions are no longer
+     available.  Instead of <literal>timestamp()</literal>, use
+     <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+
+  <para>
+   The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
+   in the next release. You should change your queries to use
+   separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
+   20</literal>.
+  </para>
+ </sect2>
+
+ <sect2>
+  <title>Changes</title>
+
+  <sect3>
+   <title>Server Operation</title>
+<itemizedlist>
+<listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem>
+<listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem>
+<listitem><para>Added unique indexes to some system tables (Tom)</para></listitem>
+<listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
+<listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem>
+<listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem>
+<listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem>
+<listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem>
+<listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem>
+<listitem><para>Removed OIDs from some system tables (Tom)</para></listitem>
+<listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem>
+<listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem>
+<listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem>
+<listitem><para>Long value compression improvement (Tom)</para></listitem>
+<listitem><para>Statistics collector for table, index access (Jan)</para></listitem>
+<listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem>
+<listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem>
+<listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem>
+<listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem>
+<listitem><para>New pg_ctl "reload" option (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Performance</title>
+<itemizedlist>
+<listitem><para>Optimizer improvements (Tom)</para></listitem>
+<listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem>
+<listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem>
+<listitem><para>Cache improvements (Tom)</para></listitem>
+<listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem>
+<listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem>
+<listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem>
+<listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem>
+<listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem>
+<listitem><para>B-tree splits more efficient (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Privileges</title>
+<itemizedlist>
+<listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem>
+<listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem>
+<listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem>
+<listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem>
+<listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem>
+<listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem>
+<listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem>
+<listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Client Authentication</title>
+<itemizedlist>
+<listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem>
+<listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem>
+<listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem>
+<listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem>
+<listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem>
+<listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Server Configuration</title>
+<itemizedlist>
+<listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem>
+<listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem>
+<listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem>
+<listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem>
+<listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem>
+<listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Queries</title>
+<itemizedlist>
+<listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem>
+<listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem>
+<listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem>
+<listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem>
+<listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem>
+<listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem>
+<listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem>
+<listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem>
+<listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Schema Manipulation</title>
+<itemizedlist>
+<listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem>
+<listitem><para>Allow temporary sequences (Bruce)</para></listitem>
+<listitem><para>Sequences now use int8 internally (Tom)</para></listitem>
+<listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem>
+<listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem>
+<listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem>
+<listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem>
+<listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem>
+<listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem>
+<listitem><para>Allow column renaming in views</para></listitem>
+<listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem>
+<listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem>
+<listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem>
+<listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem>
+<listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem>
+<listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
+<listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Utility Commands</title>
+<itemizedlist>
+<listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem>
+<listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem>
+<listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem>
+<listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem>
+<listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem>
+<listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem>
+<listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem>
+<listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem>
+<listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem>
+<listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Data Types and Functions</title>
+<itemizedlist>
+<listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem>
+<listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem>
+<listitem><para>New function bit_length() (Peter E)</para></listitem>
+<listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem>
+<listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem>
+<listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem>
+<listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem>
+<listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem>
+<listitem><para>INET, CIDR operators &lt;&lt; and &lt;&lt;= indexable (Alex Pilosov)</para></listitem>
+<listitem><para>Bytea \### now requires valid three digit octal number</para></listitem>
+<listitem><para>Bytea comparison improvements, now supports =, &lt;&gt;, &gt;, &gt;=, &lt;, and &lt;=</para></listitem>
+<listitem><para>Bytea now supports B-tree indexes</para></listitem>
+<listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem>
+<listitem><para>Bytea now supports concatenation</para></listitem>
+<listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem>
+<listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem>
+<listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem>
+<listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem>
+<listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem>
+<listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem>
+<listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem>
+<listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem>
+<listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem>
+<listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem>
+<listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem>
+<listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem>
+<listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem>
+<listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem>
+<listitem><para>Correct description of translate() function (Bruce)</para></listitem>
+<listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem>
+<listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem>
+<listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem>
+<listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem>
+<listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem>
+<listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem>
+<listitem><para>Some datatype() function calls now evaluated differently</para></listitem>
+<listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Internationalization</title>
+<itemizedlist>
+<listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem>
+<listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem>
+<listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem>
+<listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem>
+<listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem>
+<listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem>
+<listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem>
+<listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title><application>PL/pgSQL</></title>
+<itemizedlist>
+<listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem>
+<listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem>
+<listitem><para>Can now return open cursors (Jan)</para></listitem>
+<listitem><para>Add ELSEIF (Klaus Reger)</para></listitem>
+<listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem>
+<listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem>
+<listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem>
+<listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem>
+<listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem>
+<listitem><para>Memory leak fix (Jan, Tom)</para></listitem>
+<listitem><para>Make trailing semicolon optional (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>PL/Perl</title>
+<itemizedlist>
+<listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem>
+<listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem>
+</itemizedlist>
+   </sect3>
+
+  <sect3>
+   <title>PL/Tcl</title>
+<itemizedlist>
+<listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem>
+<listitem><para>Add spi_lastoid function ([email protected])</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>PL/Python</title>
+<itemizedlist>
+<listitem><para>...is new (Andrew Bosma)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title><application>psql</></title>
+<itemizedlist>
+<listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem>
+<listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem>
+<listitem><para>Read password from /dev/tty if possible</para></listitem>
+<listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem>
+<listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title><application>libpq</></title>
+<itemizedlist>
+<listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem>
+<listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>JDBC</title>
+<itemizedlist>
+<listitem><para>Return OID of INSERT (Ken K)</para></listitem>
+<listitem><para>Handle more data types (Ken K)</para></listitem>
+<listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem>
+<listitem><para>Handle NULL variables (Ken K)</para></listitem>
+<listitem><para>Fix for time zone handling (Barry Lind)</para></listitem>
+<listitem><para>Improved Druid support</para></listitem>
+<listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem>
+<listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem>
+<listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem>
+<listitem><para>Update DatabaseMetaData (Peter E)</para></listitem>
+<listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem>
+<listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem>
+<listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem>
+<listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem>
+<listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem>
+<listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem>
+<listitem><para>Transaction performance improvements (Barry Lind)</para></listitem>
+<listitem><para>Array fixes (Greg Zoller)</para></listitem>
+<listitem><para>Serialize addition </para></listitem>
+<listitem><para>Fix batch processing (Rene Pijlman)</para></listitem>
+<listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem>
+<listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem>
+<listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem>
+<listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem>
+<listitem><para>Add bytea type capability (Barry Lind)</para></listitem>
+<listitem><para>Add isNullable() (Rene Pijlman)</para></listitem>
+<listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem>
+<listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem>
+<listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem>
+<listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem>
+<listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem>
+<listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>ODBC</title>
+<itemizedlist>
+<listitem><para>Remove query size limit (Hiroshi)</para></listitem>
+<listitem><para>Remove text field size limit (Hiroshi)</para></listitem>
+<listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem>
+<listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem>
+<listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem>
+<listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem>
+<listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem>
+<listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem>
+<listitem><para>MD5 password encryption support (Bruce)</para></listitem>
+<listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title><application>ECPG</></title>
+<itemizedlist>
+<listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem>
+<listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem>
+<listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem>
+<listitem><para>Fix INITIALLY DEFERRED bug</para></listitem>
+<listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem>
+<listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem>
+<listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem>
+<listitem><para>ECPGfree_auto_mem fixed</para></listitem>
+<listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem>
+<listitem><para>Fixes for arrays of structures (Michael)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Misc. Interfaces</title>
+<itemizedlist>
+<listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem>
+<listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem>
+<listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem>
+<listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem>
+<listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Build and Install</title>
+<itemizedlist>
+<listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem>
+<listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem>
+<listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem>
+<listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem>
+<listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem>
+<listitem><para>BeOS fixes (Cyril Velter)</para></listitem>
+<listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem>
+<listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem>
+<listitem><para>Fix parallel make (Peter E)</para></listitem>
+<listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem>
+<listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem>
+<listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Source Code</title>
+<itemizedlist>
+<listitem><para>Remove SEP_CHAR (Bruce)</para></listitem>
+<listitem><para>New GUC hooks (Tom)</para></listitem>
+<listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem>
+<listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem>
+<listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem>
+<listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem>
+<listitem><para>pgindent fixes (Bruce, Tom)</para></listitem>
+<listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem>
+<listitem><para>Dynahash portability improvements (Tom)</para></listitem>
+<listitem><para>Add 'volatile' usage in spinlock structures</para></listitem>
+<listitem><para>Improve signal handling logic (Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+
+  <sect3>
+   <title>Contrib</title>
+<itemizedlist>
+<listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem>
+<listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem>
+<listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem>
+<listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem>
+<listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem>
+<listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem>
+<listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem>
+<listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem>
+<listitem><para>New pg_upgrade utility (Bruce)</para></listitem>
+<listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem>
+</itemizedlist>
+  </sect3>
+ </sect2>
+</sect1>
+
+
+ <sect1 id="release-7-1-3">
+  <title>Release 7.1.3</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2001-08-15</simpara>
+  </note>
+
+  <sect2>
+   <title>Migration to Version 7.1.3</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    7.1.X.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Remove unused WAL segments of large transactions (Tom)
+Multiaction rule fix (Tom)
+PL/pgSQL memory allocation fix (Jan)
+VACUUM buffer fix (Tom)
+Regression test fixes (Tom)
+pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
+Fix subselects with DISTINCT ON or LIMIT (Tom)
+BeOS fix
+Disable COPY TO/FROM a view (Tom)
+Cygwin build (Jason Tishler)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-7-1-2">
+  <title>Release 7.1.2</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2001-05-11</simpara>
+  </note>
+
+  <para>
+   This has one fix from 7.1.1.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.1.2</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    7.1.X.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Fix PL/pgSQL SELECTs when returning no rows
+Fix for psql backslash core dump
+Referential integrity privilege fix
+Optimizer fixes
+pg_dump cleanups
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-7-1-1">
+  <title>Release 7.1.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2001-05-05</simpara>
+  </note>
+
+  <para>
+   This has a variety of fixes from 7.1.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.1.1</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    7.1.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Fix for numeric MODULO operator (Tom)
+pg_dump fixes (Philip)
+pg_dump can dump 7.0 databases (Philip)
+readline 4.2 fixes (Peter E)
+JOIN fixes (Tom)
+AIX, MSWIN, VAX, N32K fixes (Tom)
+Multibytes fixes (Tom)
+Unicode fixes (Tatsuo)
+Optimizer improvements (Tom)
+Fix for whole rows in functions (Tom)
+Fix for pg_ctl and option strings with spaces (Peter E)
+ODBC fixes (Hiroshi)
+EXTRACT can now take string argument (Thomas)
+Python fixes (Darcy)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-7-1">
+  <title>Release 7.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2001-04-13</simpara>
+  </note>
+
+  <para>
+       This release focuses on removing limitations that have existed in the
+       <productname>PostgreSQL</productname> code for many years.
+  </para>
+
+  <para>
+   Major changes in this release:
+  </para>
+
+  <variablelist>
+   <varlistentry>
+    <term>
+      Write-ahead Log (WAL)
+    </term>
+    <listitem>
+     <para>
+To maintain database consistency in case of an operating system crash,
+previous releases of <productname>PostgreSQL</productname> have forced
+all data modifications to disk before each transaction commit.  With
+WAL, only one log file must be flushed to disk, greatly improving
+performance.  If you have been using -F in previous releases to
+disable disk flushes, you might want to consider discontinuing its use.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+      TOAST
+    </term>
+    <listitem>
+     <para>
+      TOAST - Previous releases had a compiled-in row length limit,
+typically 8k - 32k. This limit made storage of long text fields
+difficult.  With TOAST, long rows of any length can be stored with good
+performance.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+      Outer Joins
+    </term>
+    <listitem>
+     <para>
+We now support outer joins.  The UNION/NOT IN
+workaround for outer joins is no longer required.  We use the SQL92
+outer join syntax.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+      Function Manager
+    </term>
+    <listitem>
+     <para>
+The previous C function manager did not
+handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha).  The new
+function manager does.  You can continue using your old custom
+functions, but you might want to rewrite them in the future to use the new
+function manager call interface.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+      Complex Queries
+    </term>
+    <listitem>
+     <para>
+A large number of complex queries that were
+unsupported in previous releases now work.  Many combinations of views,
+aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
+now work properly. Inherited tables are now accessed by default.
+Subqueries in FROM are now supported.
+     </para>
+    </listitem>
+   </varlistentry>
+
+  </variablelist>
+
+  <sect2>
+   <title>Migration to Version 7.1</title>
+
+   <para>
+       A dump/restore using pg_dump is required for those wishing to migrate
+       data from any previous release.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+Many multibyte/Unicode/locale fixes (Tatsuo and others)
+More reliable ALTER TABLE RENAME (Tom)
+Kerberos V fixes (David Wragg)
+Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
+Prompt username/password on standard error (Bruce)
+Large objects inv_read/inv_write fixes (Tom)
+Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
+   Daniel Baldoni)
+Prevent query expressions from leaking memory (Tom)
+Allow UPDATE of arrays elements (Tom)
+Wake up lock waiters during cancel (Hiroshi)
+Fix rare cursor crash when using hash join (Tom)
+Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
+Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
+Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
+Fix PL/perl (Alex Kapranoff)
+Disallow LOCK on views (Mark Hollomon)
+Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
+Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
+Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
+Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
+Fix rare failure with TRUNCATE command (Tom)
+Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
+   DISTINCT, ORDER BY, SELECT...INTO (Tom)
+Fix parser failures during aborted transactions (Tom)
+Allow temporary relations to properly clean up indexes (Bruce)
+Fix VACUUM problem with moving rows in same page (Tom)
+Modify pg_dump to better handle user-defined items in template1 (Philip)
+Allow LIMIT in VIEW (Tom)
+Require cursor FETCH to honor LIMIT (Tom)
+Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
+Allow ORDER BY, LIMIT in subqueries (Tom)
+Allow UNION in CREATE RULE (Tom)
+Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
+Store initdb collation in pg_control so collation cannot be changed (Tom)
+Fix INSERT...SELECT with rules (Tom)
+Fix FOR UPDATE inside views and subselects (Tom)
+Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
+Fix lpad() and rpad() to handle length less than input string (Tom)
+Fix use of NOTIFY in some rules (Tom)
+Overhaul btree code (Tom)
+Fix NOT NULL use in Pl/pgSQL variables (Tom)
+Overhaul GIST code (Oleg)
+Fix CLUSTER to preserve constraints and column default (Tom)
+Improved deadlock detection handling (Tom)
+Allow multiple SERIAL columns in a table (Tom)
+Prevent occasional index corruption (Vadim)
+
+Enhancements
+------------
+Add OUTER JOINs (Tom)
+Function manager overhaul (Tom)
+Allow ALTER TABLE RENAME on indexes (Tom)
+Improve CLUSTER (Tom)
+Improve ps status display for more platforms (Peter E, Marc)
+Improve CREATE FUNCTION failure message (Ross)
+JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
+   Gunnar)
+Grand Unified Configuration scheme/GUC.  Many options can now be set in
+   data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
+Improved handling of file descriptor cache (Tom)
+New warning code about auto-created table alias entries (Bruce)
+Overhaul initdb process (Tom, Peter E)
+Overhaul of inherited tables; inherited tables now accessed by default;
+  new ONLY key word prevents it (Chris Bitmead, Tom)
+ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
+   Michael Fork)
+Allow renaming of temp tables (Tom)
+Overhaul memory manager contexts (Tom)
+pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
+Overhaul pg_dump (Philip Warner)
+Allow pg_hba.conf secondary password file to specify only username (Peter E)
+Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
+New memory leak checker (Karel)
+New SET SESSION CHARACTERISTICS (Thomas)
+Allow nested block comments (Thomas)
+Add WITHOUT TIME ZONE type qualifier (Thomas)
+New ALTER TABLE ADD CONSTRAINT (Stephan)
+Use NUMERIC accumulators for INTEGER aggregates (Tom)
+Overhaul aggregate code (Tom)
+New VARIANCE and STDDEV() aggregates
+Improve dependency ordering of pg_dump (Philip)
+New pg_restore command (Philip)
+New pg_dump tar output option (Philip)
+New pg_dump of large objects  (Philip)
+New ESCAPE option to LIKE (Thomas)
+New case-insensitive LIKE - ILIKE (Thomas)
+Allow functional indexes to use binary-compatible type (Tom)
+Allow SQL functions to be used in more contexts (Tom)
+New pg_config utility (Peter E)
+New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
+   (Jan)
+New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
+New quote_identifiers() and quote_literal() functions (Jan)
+New ALTER TABLE table OWNER TO user command (Mark Hollomon)
+Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
+Update PyGreSQL to version 3.1 (D'Arcy)
+Store tables as files named by OID (Vadim)
+New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
+Require DROP VIEW to remove views, no DROP TABLE (Mark)
+Allow DROP VIEW view1, view2 (Mark)
+Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
+Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
+New /contrib/pgcrypto hashing functions (Marko Kreen)
+New pg_dumpall --globals-only option (Peter E)
+New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
+New AT TIME ZONE syntax (Thomas)
+Allow location of Unix domain socket to be configurable (David J. MacKenzie)
+Allow postmaster to listen on a specific IP address (David J. MacKenzie)
+Allow socket path name to be specified in hostname by using leading slash
+   (David J. MacKenzie)
+Allow CREATE DATABASE to specify template database (Tom)
+New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
+New /contrib/rserv replication toolkit (Vadim)
+New file format for COPY BINARY (Tom)
+New /contrib/oid2name to map numeric files to table names (B Palmer)
+New "idle in transaction" ps status message (Marc)
+Update to pgaccess 0.98.7 (Constantin Teodorescu)
+pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
+Add rudimentary dependency checking to pg_dump (Philip)
+
+Types
+-----
+Fix INET/CIDR type ordering and add new functions (Tom)
+Make OID behave as an unsigned type (Tom)
+Allow BIGINT as synonym for INT8 (Peter E)
+New int2 and int8 comparison operators (Tom)
+New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
+CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
+New GIST seg/cube examples (Gene Selkov)
+Improved round(numeric) handling (Tom)
+Fix CIDR output formatting (Tom)
+New CIDR abbrev() function (Tom)
+
+Performance
+-----------
+Write-Ahead Log (WAL) to provide crash recovery with less performance
+   overhead (Vadim)
+ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
+Reduced file seeks (Denis Perchine)
+Improve BTREE code for duplicate keys (Tom)
+Store all large objects in a single table (Denis Perchine, Tom)
+Improve memory allocation performance (Karel, Tom)
+
+Source Code
+-----------
+New function manager call conventions (Tom)
+SGI portability fixes (David Kaelbling)
+New configure --enable-syslog option (Peter E)
+New BSDI README (Bruce)
+configure script moved to top level, not /src (Peter E)
+Makefile/configuration/compilation overhaul (Peter E)
+New configure --with-python option (Peter E)
+Solaris cleanups (Peter E)
+Overhaul /contrib Makefiles (Karel)
+New OpenSSL configuration option (Magnus, Peter E)
+AIX fixes (Andreas)
+QNX fixes (Maurizio)
+New heap_open(), heap_openr() API (Tom)
+Remove colon and semi-colon operators (Thomas)
+New pg_class.relkind value for views (Mark Hollomon)
+Rename ichar() to chr() (Karel)
+New documentation for btrim(), ascii(), chr(), repeat() (Karel)
+Fixes for NT/Cygwin (Pete Forman)
+AIX port fixes (Andreas)
+New BeOS port (David Reid, Cyril Velter)
+Add proofreader's changes to docs (Addison-Wesley, Bruce)
+New Alpha spinlock code (Adriaan Joubert, Compaq)
+UnixWare port overhaul (Peter E)
+New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
+New FreeBSD Alpha port (Alfred)
+Overhaul shared memory segments (Tom)
+Add IBM S/390 support (Neale Ferguson)
+Moved macmanuf to /contrib (Larry Rosenman)
+Syslog improvements (Larry Rosenman)
+New template0 database that contains no user additions (Tom)
+New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
+Allow NetBSD's libedit instead of readline (Peter)
+Improved assembly language source code format (Bruce)
+New contrib/pg_logger
+New --template option to createdb
+New contrib/pg_control utility (Oliver)
+New FreeBSD tools ipc_check, start-scripts/freebsd
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-7-0-3">
+  <title>Release 7.0.3</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2000-11-11</simpara>
+  </note>
+
+  <para>
+   This has a variety of fixes from 7.0.2.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.0.3</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    7.0.*.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Jdbc fixes (Peter)
+Large object fix (Tom)
+Fix lean in COPY WITH OIDS leak (Tom)
+Fix backwards-index-scan (Tom)
+Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
+Add --enable-syslog to configure (Marc)
+Fix abort transaction at backend exit in rare cases (Tom)
+Fix for psql \l+ when multibyte enabled (Tatsuo)
+Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
+Make vacuum always flush buffers (Tom)
+Fix to allow cancel while waiting for a lock (Hiroshi)
+Fix for memory allocation problem in user authentication code (Tom)
+Remove bogus use of int4out() (Tom)
+Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
+Fix for failure of triggers on heap open in certain cases (Jeroen van
+   Vianen)
+Fix for erroneous selectivity of not-equals (Tom)
+Fix for erroneous use of strcmp() (Tom)
+Fix for bug where storage manager accesses items beyond end of file
+   (Tom)
+Fix to include kernel errno message in all smgr elog messages (Tom)
+Fix for '.' not in PATH at build time (SL Baur)
+Fix for out-of-file-descriptors error (Tom)
+Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
+Fix for subselect in targetlist of Append node (Tom)
+Fix for mergejoin plans (Tom)
+Fix TRUNCATE failure on relations with indexes (Tom)
+Avoid database-wide restart on write error (Hiroshi)
+Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
+Fix VACUUM problem with moving chain of update row versions when source
+   and destination of a row version lie on the same page (Tom)
+Fix user.c CommandCounterIncrement (Tom)
+Fix for AM/PM boundary problem in to_char() (Karel Zak)
+Fix TIME aggregate handling (Tom)
+Fix to_char() to avoid coredump on NULL input (Tom)
+Buffer fix (Tom)
+Fix for inserting/copying longer multibyte strings into char() data
+   types (Tatsuo)
+Fix for crash of backend, on abort (Tom)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-7-0-2">
+  <title>Release 7.0.2</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2000-06-05</simpara>
+  </note>
+
+  <para>
+   This is a repackaging of 7.0.1 with added documentation.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 7.0.2</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    7.*.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Added documentation to tarball.
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-7-0-1">
+  <title>Release 7.0.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2000-06-01</simpara>
+  </note>
+
+  <para>
+   This is a cleanup release for 7.0.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 7.0.1</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    7.0.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Fix many CLUSTER failures (Tom)
+Allow ALTER TABLE RENAME works on indexes (Tom)
+Fix plpgsql to handle datetime-&gt;timestamp and timespan-&gt;interval (Bruce)
+New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
+Fix the off by one errors in ResultSet from 6.5.3, and more.
+jdbc ResultSet fixes (Joseph Shraibman)
+optimizer tunings (Tom)
+Fix create user for pgaccess
+Fix for UNLISTEN failure
+IRIX fixes (David Kaelbling)
+QNX fixes (Andreas Kardos)
+Reduce COPY IN lock level (Tom)
+Change libpqeasy to use PQconnectdb() style parameters (Bruce)
+Fix pg_dump to handle OID indexes (Tom)
+Fix small memory leak (Tom)
+Solaris fix for createdb/dropdb (Tatsuo)
+Fix for non-blocking connections (Alfred Perlstein)
+Fix improper recovery after RENAME TABLE failures (Tom)
+Copy pg_ident.conf.sample into /lib directory in install (Bruce)
+Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
+Fix too long syslog message (Tatsuo)
+Fix problem with quoted indexes that are too long (Tom)
+JDBC ResultSet.getTimestamp() fix (Gregory Krasnow &amp; Floyd Marinescu)
+ecpg changes (Michael)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-7-0">
+  <title>Release 7.0</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>2000-05-08</simpara>
+  </note>
+
+  <para>
+   This release contains improvements in many areas, demonstrating
+   the continued growth of <productname>PostgreSQL</productname>.
+   There are more improvements and fixes in 7.0 than in any previous
+   release. The developers have confidence that this is the best
+   release yet; we do our best to put out only solid releases, and
+   this one is no exception.
+  </para>
+
+  <para>
+   Major changes in this release:
+  </para>
+
+  <variablelist>
+   <varlistentry>
+    <term>
+     Foreign Keys
+    </term>
+    <listitem>
+     <para>
+      Foreign keys are now implemented, with the exception of PARTIAL MATCH
+      foreign keys. Many users have been asking for this feature, and we are
+      pleased to offer it.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Optimizer Overhaul
+    </term>
+    <listitem>
+     <para>
+      Continuing on work started a year ago, the optimizer has been
+      improved, allowing better query plan selection and faster performance
+      with less memory usage.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Updated <application>psql</application>
+    </term>
+    <listitem>
+     <para>
+      <application>psql</application>, our interactive terminal monitor, has been
+      updated with a variety of new features. See the <application>psql</application> manual page for details.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term>
+     Join Syntax
+    </term>
+    <listitem>
+     <para>
+      SQL92 join syntax is now supported, though only as
+      <literal>INNER JOIN</> for this release. <literal>JOIN</>,
+      <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
+      and <literal>JOIN</>/<literal>ON</> are available, as are
+      column correlation names.
+     </para>
+    </listitem>
+
+   </varlistentry>
+  </variablelist>
+
+  <sect2>
+   <title>Migration to Version 7.0</title>
+
+   <para>
+    A dump/restore using <application>pg_dump</application>
+    is required for those wishing to migrate data from any
+    previous release of <productname>PostgreSQL</productname>.
+    For those upgrading from 6.5.*, you can instead use
+    <application>pg_upgrade</application> to upgrade to this
+    release; however, a full dump/reload installation is always the
+    most robust method for upgrades.
+   </para>
+
+   <para>
+    Interface and compatibility issues to consider for the new
+    release include:
+   </para>
+
+   <itemizedlist>
+    <listitem>
+     <para>
+      The date/time types <type>datetime</type> and
+      <type>timespan</type> have been superseded by the
+      SQL92-defined types <type>timestamp</type> and
+      <type>interval</type>. Although there has been some effort to
+      ease the transition by allowing
+      <productname>PostgreSQL</productname> to recognize
+      the deprecated type names and translate them to the new type
+      names, this mechanism cannot be completely transparent to
+      your existing application.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      The optimizer has been substantially improved in the area of
+      query cost estimation. In some cases, this will result in
+      decreased query times as the optimizer makes a better choice
+      for the preferred plan. However, in a small number of cases,
+      usually involving pathological distributions of data, your
+      query times might go up. If you are dealing with large amounts
+      of data, you might want to check your queries to verify
+      performance.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
+      interfaces have been upgraded and extended.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      The string function <function>CHAR_LENGTH</function> is now a
+      native function. Previous versions translated this into a call
+      to <function>LENGTH</function>, which could result in
+      ambiguity with other types implementing
+      <function>LENGTH</function> such as the geometric types.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+Prevent function calls exceeding maximum number of arguments (Tom)
+Improve CASE construct (Tom)
+Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
+Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
+Fix GROUP BY scan bug (Tom)
+Improvements in SQL grammar processing (Tom)
+Fix for views involved in INSERT ... SELECT ... (Tom)
+Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
+Fix for subselects in INSERT ... SELECT (Tom)
+Prevent INSERT ... SELECT ... ORDER BY (Tom)
+Fixes for relations greater than 2GB, including vacuum
+Improve propagating system table changes to other backends (Tom)
+Improve propagating user table changes to other backends (Tom)
+Fix handling of temp tables in complex situations (Bruce, Tom)
+Allow table locking at table open, improving concurrent reliability (Tom)
+Properly quote sequence names in pg_dump (Ross J. Reedstrom)
+Prevent DROP DATABASE while others accessing
+Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
+Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
+Fix pg_upgrade so it works for MVCC (Tom)
+Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) &gt; 1) (Tom)
+Fix for "f1 datetime DEFAULT 'now'"  (Tom)
+Fix problems with CURRENT_DATE used in DEFAULT (Tom)
+Allow comment-only lines, and ;;; lines too. (Tom)
+Improve recovery after failed disk writes, disk full (Hiroshi)
+Fix cases where table is mentioned in FROM but not joined (Tom)
+Allow HAVING clause without aggregate functions (Tom)
+Fix for "--" comment and no trailing newline, as seen in perl interface
+Improve pg_dump failure error reports (Bruce)
+Allow sorts and hashes to exceed 2GB file sizes (Tom)
+Fix for pg_dump dumping of inherited rules (Tom)
+Fix for NULL handling comparisons (Tom)
+Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
+Fix for dbname with dash
+Prevent DROP INDEX from interfering with other backends (Tom)
+Fix file descriptor leak in verify_password()
+Fix for "Unable to identify an operator =$" problem
+Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
+Fix for recursive exit call (Massimo)
+Fix for extra-long timezones (Jeroen van Vianen)
+Make pg_dump preserve primary key information (Peter E)
+Prevent databases with single quotes (Peter E)
+Prevent DROP DATABASE inside  transaction (Peter E)
+ecpg memory leak fixes (Stephen Birch)
+Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
+Y2K timestamp fix (Massimo)
+Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
+Fix for views with tables/columns containing spaces  (Tom)
+Prevent privileges on indexes (Peter E)
+Fix for spinlock stuck problem when error is generated (Hiroshi)
+Fix ipcclean on Linux
+Fix handling of NULL constraint conditions (Tom)
+Fix memory leak in odbc driver (Nick Gorham)
+Fix for privilege check on UNION tables (Tom)
+Fix to allow SELECT 'a' LIKE 'a' (Tom)
+Fix for SELECT 1 + NULL (Tom)
+Fixes to CHAR
+Fix log() on numeric type (Tom)
+Deprecate ':' and ';' operators
+Allow vacuum of temporary tables
+Disallow inherited columns with the same name as new columns
+Recover or force failure when disk space is exhausted (Hiroshi)
+Fix INSERT INTO ... SELECT with AS columns matching result columns
+Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
+Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
+Fix UNION with LIMIT
+Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
+Fix CREATE TABLE test(col char(2) DEFAULT user)
+Fix mismatched types in CREATE TABLE ... DEFAULT
+Fix SELECT * FROM pg_class where oid in (0,-1)
+Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
+Prevent user who can create databases can modifying pg_database table (Peter E)
+Fix btree to give a useful elog when key &gt; 1/2 (page - overhead) (Tom)
+Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
+
+Enhancements
+------------
+New CLI interface include file sqlcli.h, based on SQL3/SQL98
+Remove all limits on query length, row length limit still exists (Tom)
+Update jdbc protocol to 2.0 (Jens Glaser <email>[email protected]</email>)
+Add TRUNCATE command to quickly truncate relation (Mike Mascari)
+Fix to give super user and createdb user proper update catalog rights (Peter E)
+Allow ecpg bool variables to have NULL values (Christof)
+Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
+Allow ^C to cancel COPY command (Massimo)
+Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
+Function name overloading for dynamically-loaded C functions (Frankpitt)
+Add CmdTuples() to libpq++(Vince)
+New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
+Allow CREATE FUNCTION/WITH clause to be used for all language types
+configure --enable-debug adds -g (Peter E)
+configure --disable-debug removes -g (Peter E)
+Allow more complex default expressions (Tom)
+First real FOREIGN KEY constraint trigger functionality (Jan)
+Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
+Add FOREIGN KEY ... MATCH &lt;unspecified&gt; referential actions (Don Baccus)
+Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
+Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
+Change pgeasy connectdb() parameter ordering (Bruce)
+Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
+Add Oracle's COMMENT ON command (Mike Mascari <email>[email protected]</email>)
+libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
+Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
+Make USING in COPY optional (Bruce)
+Allow subselects in the target list (Tom)
+Allow subselects on the left side of comparison operators (Tom)
+New parallel regression test (Jan)
+Change backend-side COPY to write files with permissions 644 not 666 (Tom)
+Force permissions on PGDATA directory to be secure, even if it exists (Tom)
+Added psql LASTOID variable to return last inserted oid (Peter E)
+Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
+Add privilege check for vacuum (Peter E)
+New libpq functions to allow asynchronous connections: PQconnectStart(),
+  PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
+  PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
+New libpq PQsetenv() function (Ewan Mellor)
+create/alter user extension (Peter E)
+New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
+New scripts for create/drop user/db (Peter E)
+Major psql overhaul (Peter E)
+Add const to libpq interface (Peter E)
+New libpq function PQoidValue (Peter E)
+Show specific non-aggregate causing problem with GROUP BY (Tom)
+Make changes to pg_shadow recreate pg_pwd file (Peter E)
+Add aggregate(DISTINCT ...) (Tom)
+Allow flag to control COPY input/output of NULLs (Peter E)
+Make postgres user have a password by default (Peter E)
+Add CREATE/ALTER/DROP GROUP (Peter E)
+All administration scripts now support --long options (Peter E, Karel)
+Vacuumdb script now supports --all option (Peter E)
+ecpg new portable FETCH syntax
+Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
+       and EXEC SQL ENDIF directives
+Add pg_ctl script to control backend start-up (Tatsuo)
+Add postmaster.opts.default file to store start-up flags (Tatsuo)
+Allow --with-mb=SQL_ASCII
+Increase maximum number of index keys to 16 (Bruce)
+Increase maximum number of function arguments to 16 (Bruce)
+Allow configuration of maximum number of index keys and arguments (Bruce)
+Allow unprivileged users to change their passwords (Peter E)
+Password authentication enabled; required for new users (Peter E)
+Disallow dropping a user who owns a database (Peter E)
+Change initdb option --with-mb to --enable-multibyte
+Add option for initdb to prompts for superuser password (Peter E)
+Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
+Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
+New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
+libpq non-blocking mode (Alfred Perlstein)
+Improve conversion of types in casts that don't specify a length
+New plperl internal programming language (Mark Hollomon)
+Allow COPY IN to read file that do not end with a newline (Tom)
+Indicate when long identifiers are truncated (Tom)
+Allow aggregates to use type equivalency (Peter E)
+Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
+       conversion functions (Karel Zak &lt;[email protected]&gt;)
+Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
+Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
+Add NUMERIC and int8 types to ODBC
+Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
+Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
+Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
+Enable backward sequential scan even after reaching EOF (Hiroshi)
+Add btree indexing of boolean values, &gt;= and &lt;= (Don Baccus)
+Print current line number when COPY FROM fails (Massimo)
+Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
+Add DEC as synonym for DECIMAL (Thomas)
+Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
+Implement SQL92 column aliases (aka correlation names) (Thomas)
+Implement SQL92 join syntax (Thomas)
+Make INTERVAL reserved word allowed as a column identifier (Thomas)
+Implement REINDEX command (Hiroshi)
+Accept ALL in aggregate function SUM(ALL col) (Tom)
+Prevent GROUP BY from using column aliases (Tom)
+New psql \encoding option (Tatsuo)
+Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
+Allow negation of a negative number in all cases
+Add ecpg descriptors (Christof, Michael)
+Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
+Allow casts with length, like foo::char(8)
+New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
+Add support for SJIS user defined characters (Tatsuo)
+Larger views/rules supported
+Make libpq's PQconndefaults() thread-safe (Tom)
+Disable // as comment to be ANSI conforming, should use -- (Tom)
+Allow column aliases on views CREATE VIEW name (collist)
+Fixes for views with subqueries (Tom)
+Allow UPDATE table SET fld = (SELECT ...) (Tom)
+SET command options no longer require quotes
+Update pgaccess to 0.98.6
+New SET SEED command
+New pg_options.sample file
+New SET FSYNC command (Massimo)
+Allow pg_descriptions when creating tables
+Allow pg_descriptions when creating types, columns, and functions
+Allow psql \copy to allow delimiters (Peter E)
+Allow psql to print nulls as distinct from "" [null] (Peter E)
+
+Types
+-----
+Many array fixes (Tom)
+Allow bare column names to be subscripted as arrays (Tom)
+Improve type casting of int and float constants (Tom)
+Cleanups for int8 inputs, range checking, and type conversion (Tom)
+Fix for SELECT timespan('21:11:26'::time) (Tom)
+netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
+Add btree index on NUMERIC (Jan)
+Perl fix for large objects containing NUL characters (Douglas Thomson)
+ODBC fix for large objects (free)
+Fix indexing of cidr data type
+Fix for Ethernet MAC addresses (macaddr type) comparisons
+Fix for date/time types when overflows happened in computations (Tom)
+Allow array on int8 (Peter E)
+Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
+Allow NUMERIC arrays
+Fix bugs in NUMERIC ceil() and floor() functions (Tom)
+Make char_length()/octet_length including trailing blanks (Tom)
+Made abstime/reltime use int4 instead of time_t (Peter E)
+New lztext data type for compressed text fields
+Revise code to handle coercion of int and float constants (Tom)
+Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
+NUMERIC now accepts scientific notation (Tom)
+NUMERIC to int4 rounds (Tom)
+Convert float4/8 to NUMERIC properly (Tom)
+Allow type conversion with NUMERIC (Thomas)
+Make ISO date style (2000-02-16 09:33) the default (Thomas)
+Add NATIONAL CHAR [ VARYING ] (Thomas)
+Allow NUMERIC round and trunc to accept negative scales (Tom)
+New TIME WITH TIME ZONE type (Thomas)
+Add MAX()/MIN() on time type (Thomas)
+Add abs(), mod(), fac() for int8 (Thomas)
+Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
+Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
+Add exp() and ln() for NUMERIC type
+Rename NUMERIC power() to pow() (Thomas)
+Improved TRANSLATE() function (Edwin Ramirez, Tom)
+Allow X=-Y operators  (Tom)
+Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
+Allow LOCALE to use indexes in regular expression searches (Tom)
+Allow creation of functional indexes to use default types
+
+Performance
+-----------
+Prevent exponential space consumption with many AND's and OR's (Tom)
+Collect attribute selectivity values for system columns (Tom)
+Reduce memory usage of aggregates (Tom)
+Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
+Fix r-tree index optimizer selectivity (Thomas)
+Improve optimizer selectivity computations and functions (Tom)
+Optimize btree searching for cases where many equal keys exist (Tom)
+Enable fast LIKE index processing only if index present (Tom)
+Re-use free space on index pages with duplicates (Tom)
+Improve hash join processing (Tom)
+Prevent descending sort if result is already sorted(Hiroshi)
+Allow commuting of index scan query qualifications (Tom)
+Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
+Allocate large memory requests in fix-sized chunks for performance (Tom)
+Fix vacuum's performance by reducing memory allocation requests (Tom)
+Implement constant-expression simplification (Bernard Frankpitt, Tom)
+Use secondary columns to be used to determine start of index scan (Hiroshi)
+Prevent quadruple use of disk space when doing internal sorting (Tom)
+Faster sorting by calling fewer functions (Tom)
+Create system indexes to match all system caches (Bruce, Hiroshi)
+Make system caches use system indexes (Bruce)
+Make all system indexes unique (Bruce)
+Improve pg_statistics management for VACUUM speed improvement (Tom)
+Flush backend cache less frequently (Tom, Hiroshi)
+COPY now reuses previous memory allocation, improving performance (Tom)
+Improve optimization cost estimation (Tom)
+Improve optimizer estimate of range queries x &gt; lowbound AND x &lt; highbound (Tom)
+Use DNF instead of CNF where appropriate (Tom, Taral)
+Further cleanup for OR-of-AND WHERE-clauses (Tom)
+Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
+Smarter optimizer computations for random index page access (Tom)
+New SET variable to control optimizer costs (Tom)
+Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
+Reduce optimizer internal housekeeping of join paths for speedup (Tom)
+Major subquery speedup (Tom)
+Fewer fsync writes when fsync is not disabled (Tom)
+Improved LIKE optimizer estimates (Tom)
+Prevent fsync in SELECT-only queries (Vadim)
+Make index creation use psort code, because it is now faster (Tom)
+Allow creation of sort temp tables &gt; 1 Gig
+
+Source Tree Changes
+-------------------
+Fix for linux PPC compile
+New generic expression-tree-walker subroutine (Tom)
+Change form() to varargform() to prevent portability problems
+Improved range checking for large integers on Alphas
+Clean up #include in /include directory (Bruce)
+Add scripts for checking includes (Bruce)
+Remove un-needed #include's from *.c files (Bruce)
+Change #include's to use &lt;&gt; and "" as appropriate (Bruce)
+Enable Windows compilation of libpq
+Alpha spinlock fix from Uncle George <email>[email protected]</email>
+Overhaul of optimizer data structures (Tom)
+Fix to cygipc library (Yutaka Tanida)
+Allow pgsql to work on newer Cygwin snapshots (Dan)
+New catalog version number (Tom)
+Add Linux ARM
+Rename heap_replace to heap_update
+Update for QNX (Dr. Andreas Kardos)
+New platform-specific regression handling (Tom)
+Rename oid8 -&gt; oidvector and int28 -&gt; int2vector (Bruce)
+Included all yacc and lex files into the distribution (Peter E.)
+Remove lextest, no longer needed (Peter E)
+Fix for libpq and psql on Windows (Magnus)
+Internally change datetime and timespan into timestamp and interval (Thomas)
+Fix for plpgsql on BSD/OS
+Add SQL_ASCII test case to the regression test (Tatsuo)
+configure --with-mb now deprecated (Tatsuo)
+NT fixes
+NetBSD fixes (Johnny C. Lam <email>[email protected]</email>)
+Fixes for Alpha compiles
+New multibyte encodings
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-6-5-3">
+  <title>Release 6.5.3</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1999-10-13</simpara>
+  </note>
+
+  <para>
+   This is basically a cleanup release for 6.5.2.  We have added a new
+   <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 6.5.3</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    6.5.*.
+   </para>
+  </sect2>
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Updated version of pgaccess 0.98
+NT-specific patch
+Fix dumping rules on inherited tables
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="release-6-5-2">
+  <title>Release 6.5.2</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1999-09-15</simpara>
+  </note>
+
+  <para>
+   This is basically a cleanup release for 6.5.1.  We have fixed a variety of
+   problems reported by 6.5.1 users.
+  </para>
+
+
+  <sect2>
+   <title>Migration to Version 6.5.2</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    6.5.*.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+subselect+CASE fixes(Tom)
+Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
+Fixes for CASE in WHERE join clauses(Tom)
+Fix BTScan abort(Tom)
+Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
+Improve it so that it checks for multicolumn constraints(Thomas)
+Fix for Windows making problem with MB enabled(Hiroki Kataoka)
+Allow BSD yacc and bison to compile pl code(Bruce)
+Fix SET NAMES working
+int8 fixes(Thomas)
+Fix vacuum's memory consumption(Hiroshi,Tatsuo)
+Reduce the total memory consumption of vacuum(Tom)
+Fix for timestamp(datetime)
+Rule deparsing bugfixes(Tom)
+Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
+This is to re-use space on index pages freed by vacuum(Vadim)
+document -x for pg_dump(Bruce)
+Fix for unary operators in rule deparser(Tom)
+Comment out FileUnlink of excess segments during mdtruncate()(Tom)
+IRIX linking fix from Yu Cao &gt;[email protected]&lt;
+Repair logic error in LIKE: should not return LIKE_ABORT
+  when reach end of pattern before end of text(Tom)
+Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
+Updated version of pgaccess 0.98
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-6-5-1">
+  <title>Release 6.5.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1999-07-15</simpara>
+  </note>
+
+  <para>
+   This is basically a cleanup release for 6.5.  We have fixed a variety of
+   problems reported by 6.5 users.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 6.5.1</title>
+
+   <para>
+    A dump/restore is <emphasis>not</emphasis> required for those running
+    6.5.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Add NT README file
+Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
+Remove QUERY_LIMIT, use SELECT...LIMIT
+Fix for EXPLAIN on inheritance(Tom)
+Patch to allow vacuum on multisegment tables(Hiroshi)
+R-Tree optimizer selectivity fix(Tom)
+ACL file descriptor leak fix(Atsushi Ogawa)
+New expression subtree code(Tom)
+Avoid disk writes for read-only transactions(Vadim)
+Fix for removal of temp tables if last transaction was aborted(Bruce)
+Fix to prevent too large row from being created(Bruce)
+plpgsql fixes
+Allow port numbers 32k - 64k(Bruce)
+Add ^ precedence(Bruce)
+Rename sort files called pg_temp to pg_sorttemp(Bruce)
+Fix for microseconds in time values(Tom)
+Tutorial source cleanup
+New linux_m68k port
+Fix for sorting of NULL's in some cases(Tom)
+Shared library dependencies fixed (Tom)
+Fixed glitches affecting GROUP BY in subselects(Tom)
+Fix some compiler warnings (Tomoaki Nishiyama)
+Add Win1250 (Czech) support (Pavel Behal)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-6-5">
+  <title>Release 6.5</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1999-06-09</simpara>
+  </note>
+
+  <para>
+   This release marks a major step in the development team's mastery of the source
+   code we inherited from Berkeley.  You will see we are now easily adding
+   major features, thanks to the increasing size and experience of our
+   world-wide development team.
+  </para>
+
+  <para>
+   Here is a brief summary of the more notable changes:
+
+   <variablelist>
+    <varlistentry>
+     <term>
+      Multiversion concurrency control(MVCC)
+     </term>
+     <listitem>
+      <para>
+       This removes our old table-level locking, and replaces it with
+       a locking system that is superior to most commercial database
+       systems.  In a traditional system, each row that is modified
+       is locked until committed, preventing reads by other users.
+       MVCC uses the natural multiversion nature of
+       <productname>PostgreSQL</productname> to allow readers to
+       continue reading consistent data during writer activity.
+       Writers continue to use the compact pg_log transaction system.
+       This is all performed without having to allocate a lock for
+       every row like traditional database systems.  So, basically,
+       we no longer are restricted by simple table-level locking; we
+       have something better than row-level locking.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Hot backups from <application>pg_dump</application>
+     </term>
+     <listitem>
+      <para>
+       <application>pg_dump</application> takes advantage of the new
+       MVCC features to give a consistent database dump/backup while
+       the database stays online and available for queries.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Numeric data type
+     </term>
+     <listitem>
+      <para>
+       We now have a true numeric data type, with
+       user-specified precision.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Temporary tables
+     </term>
+     <listitem>
+      <para>
+       Temporary tables are guaranteed to have unique names
+       within a database session, and are destroyed on session exit.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      New SQL features
+     </term>
+     <listitem>
+      <para>
+       We now have CASE, INTERSECT, and EXCEPT statement
+       support.  We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
+       SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Speedups
+     </term>
+     <listitem>
+      <para>
+       We continue to speed up <productname>PostgreSQL</productname>,
+       thanks to the variety of talents within our team.  We have
+       sped up memory allocation, optimization, table joins, and row
+       transfer routines.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Ports
+     </term>
+     <listitem>
+      <para>
+       We continue to expand our port list, this time including
+       <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Interfaces
+     </term>
+     <listitem>
+      <para>
+       Most interfaces have new versions, and existing functionality
+       has been improved.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term>
+      Documentation
+     </term>
+     <listitem>
+      <para>
+       New and updated material is present throughout the
+       documentation. New <acronym>FAQ</acronym>s have been
+       contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
+       The <citetitle>Tutorial</citetitle> has introductory information
+       on <acronym>SQL</acronym> from Stefan Simkovics.
+       For the <citetitle>User's Guide</citetitle>, there are
+       reference pages covering the postmaster and more utility
+       programs, and a new appendix
+       contains details on date/time behavior.
+       The <citetitle>Administrator's Guide</citetitle> has a new
+       chapter on troubleshooting from Tom Lane.
+       And the <citetitle>Programmer's Guide</citetitle> has a
+       description of query processing, also from Stefan, and details
+       on obtaining the <productname>PostgreSQL</productname> source
+       tree via anonymous <productname>CVS</productname> and
+       <productname>CVSup</productname>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+
+  <sect2>
+   <title>Migration to Version 6.5</title>
+
+   <para>
+    A dump/restore using <application>pg_dump</application>
+    is required for those wishing to migrate data from any
+    previous release of <productname>PostgreSQL</productname>.
+    <application>pg_upgrade</application> can <emphasis>not</emphasis>
+    be used to upgrade to this release because the on-disk structure
+    of the tables has changed compared to previous releases.
+   </para>
+
+   <para>
+    The new Multiversion Concurrency Control (MVCC) features can
+    give somewhat different behaviors in multiuser
+    environments. <emphasis>Read and understand the following section
+     to ensure that your existing applications will give you the
+     behavior you need.</emphasis>
+   </para>
+
+   <sect3>
+    <title>Multiversion Concurrency Control</title>
+
+    <para>
+     Because readers in 6.5 don't lock data, regardless of transaction
+     isolation level, data read by one transaction can be overwritten by
+     another. In other words, if a row is returned by
+     <command>SELECT</command> it doesn't mean that this row really exists
+     at the time it is returned (i.e. sometime after the statement or
+     transaction began) nor that the row is protected from being deleted or
+     updated by concurrent transactions before the current transaction does
+     a commit or rollback.
+    </para>
+
+    <para>
+     To ensure the actual existence of a row and protect it against
+     concurrent updates one must use <command>SELECT FOR UPDATE</command> or
+     an appropriate <command>LOCK TABLE</command> statement. This should be
+     taken into account when porting applications from previous releases of
+     <productname>PostgreSQL</productname> and other environments.
+    </para>
+
+    <para>
+     Keep the above in mind if you are using
+     <filename>contrib/refint.*</filename> triggers for
+     referential integrity. Additional techniques are required now. One way is
+     to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
+     command if a transaction is going to update/delete a primary key and
+     use <command>LOCK parent_table IN SHARE MODE</command> command if a
+     transaction is going to update/insert a foreign key.
+
+     <note>
+      <para>
+       Note that if you run a transaction in SERIALIZABLE mode then you must
+       execute the <command>LOCK</command> commands above before execution of any
+       <acronym>DML</acronym> statement
+       (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
+       transaction.
+      </para>
+     </note>
+    </para>
+
+    <para>
+     These inconveniences will disappear in the future
+     when the ability to read dirty
+     (uncommitted) data (regardless of isolation level) and true referential
+     integrity will be implemented.
+    </para>
+   </sect3>
+   </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+Fix text&lt;-&gt;float8 and text&lt;-&gt;float4 conversion functions(Thomas)
+Fix for creating tables with mixed-case constraints(Billy)
+Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
+Fix bug in pg_dump -z
+Memory overrun cleanups(Tatsuo)
+Fix for lo_import crash(Tatsuo)
+Adjust handling of data type names to suppress double quotes(Thomas)
+Use type coercion for matching columns and DEFAULT(Thomas)
+Fix deadlock so it only checks once after one second of sleep(Bruce)
+Fixes for aggregates and PL/pgsql(Hiroshi)
+Fix for subquery crash(Vadim)
+Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
+Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
+Fix for pg_dump -d or -D and  quote special characters in INSERT
+Repair serious problems with dynahash(Tom)
+Fix INET/CIDR portability problems
+Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
+Fix executor so mergejoin of different column types works(Tom)
+Fix for Alpha OR selectivity bug
+Fix OR index selectivity problem(Bruce)
+Fix so \d shows proper length for char()/varchar()(Ryan)
+Fix tutorial code(Clark)
+Improve destroyuser checking(Oliver)
+Fix for Kerberos(Rodney McDuff)
+Fix for dropping database while dirty buffers(Bruce)
+Fix so sequence nextval() can be case-sensitive(Bruce)
+Fix !!= operator
+Drop buffers before destroying database files(Bruce)
+Fix case where executor evaluates functions twice(Tatsuo)
+Allow sequence nextval actions to be case-sensitive(Bruce)
+Fix optimizer indexing not working for negative numbers(Bruce)
+Fix for memory leak in executor with fjIsNull
+Fix for aggregate memory leaks(Erik Riedel)
+Allow user name containing a dash to grant privileges
+Cleanup of NULL in inet types
+Clean up system table bugs(Tom)
+Fix problems of PAGER and \? command(Masaaki Sakaida)
+Reduce default multisegment file size limit to 1GB(Peter)
+Fix for dumping of CREATE OPERATOR(Tom)
+Fix for backward scanning of cursors(Hiroshi Inoue)
+Fix for COPY FROM STDIN when using \i(Tom)
+Fix for subselect is compared inside an expression(Jan)
+Fix handling of error reporting while returning rows(Tom)
+Fix problems with reference to array types(Tom,Jan)
+Prevent UPDATE SET oid(Jan)
+Fix pg_dump so -t option can handle case-sensitive tablenames
+Fixes for GROUP BY in special cases(Tom, Jan)
+Fix for memory leak in failed queries(Tom)
+DEFAULT now supports mixed-case identifiers(Tom)
+Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
+Disable use of pg_dump with both -o and -d options(Bruce)
+Allow pg_dump to properly dump group privileges(Bruce)
+Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
+Fix for computations in views(Jan)
+Fix for aggregates on array indexes(Tom)
+Fix for DEFAULT handles single quotes in value requiring too many quotes
+Fix security problem with non-super users importing/exporting large objects(Tom)
+Rollback of transaction that creates table cleaned up properly(Tom)
+Fix to allow long table and column names to generate proper serial names(Tom)
+
+Enhancements
+------------
+Add "vacuumdb" utility
+Speed up libpq by allocating memory better(Tom)
+EXPLAIN all indexes used(Tom)
+Implement CASE, COALESCE, NULLIF  expression(Thomas)
+New pg_dump table output format(Constantin)
+Add string min()/max() functions(Thomas)
+Extend new type coercion techniques to aggregates(Thomas)
+New moddatetime contrib(Terry)
+Update to pgaccess 0.96(Constantin)
+Add routines for single-byte "char" type(Thomas)
+Improved substr() function(Thomas)
+Improved multibyte handling(Tatsuo)
+Multiversion concurrency control/MVCC(Vadim)
+New Serialized mode(Vadim)
+Fix for tables over 2gigs(Peter)
+New SET TRANSACTION ISOLATION LEVEL(Vadim)
+New LOCK TABLE IN ... MODE(Vadim)
+Update ODBC driver(Byron)
+New NUMERIC data type(Jan)
+New SELECT FOR UPDATE(Vadim)
+Handle "NaN" and "Infinity" for input values(Jan)
+Improved date/year handling(Thomas)
+Improved handling of backend connections(Magnus)
+New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
+New TCL_ARRAYS option(Massimo)
+New INTERSECT and EXCEPT(Stefan)
+New pg_index.indisprimary for primary key tracking(D'Arcy)
+New pg_dump option to allow dropping of tables before creation(Brook)
+Speedup of row output routines(Tom)
+New READ COMMITTED isolation level(Vadim)
+New TEMP tables/indexes(Bruce)
+Prevent sorting if result is already sorted(Jan)
+New memory allocation optimization(Jan)
+Allow psql to do \p\g(Bruce)
+Allow multiple rule actions(Jan)
+Added LIMIT/OFFSET functionality(Jan)
+Improve optimizer when joining a large number of tables(Bruce)
+New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
+New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
+Improved int8 support(Ryan Bradetich, Thomas, Tom)
+New routines to convert between int8 and text/varchar types(Thomas)
+New bushy plans, where meta-tables are joined(Bruce)
+Enable right-hand queries by default(Bruce)
+Allow reliable maximum number of backends to be set at configure time
+     (--with-maxbackends and postmaster switch (-N backends))(Tom)
+GEQO default now 10 tables because of optimizer speedups(Tom)
+Allow NULL=Var for MS-SQL portability(Michael, Bruce)
+Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
+Allow psql \d on a view show query(Ryan)
+Speedup for LIKE(Bruce)
+Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
+JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
+Make % operator have precedence like /(Bruce)
+Add new postgres -O option to allow system table structure changes(Bruce)
+Update contrib/pginterface/findoidjoins script(Tom)
+Major speedup in vacuum of deleted rows with indexes(Vadim)
+Allow non-SQL functions to run different versions based on arguments(Tom)
+Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
+Add version number in start-up banners for psql(Masaaki Sakaida)
+New contrib/vacuumlo removes large objects not referenced(Peter)
+New initialization for table sizes so non-vacuumed tables perform better(Tom)
+Improve error messages when a connection is rejected(Tom)
+Support for arrays of char() and varchar() fields(Massimo)
+Overhaul of hash code to increase reliability and performance(Tom)
+Update to PyGreSQL 2.4(D'Arcy)
+Changed debug options so -d4 and -d5 produce different node displays(Jan)
+New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
+Better optimization statistics for system table access(Tom)
+Better handling of non-default block sizes(Massimo)
+Improve GEQO optimizer memory consumption(Tom)
+UNION now supports ORDER BY of columns not in target list(Jan)
+Major libpq++ improvements(Vince Vielhaber)
+pg_dump now uses -z(ACL's) as default(Bruce)
+backend cache, memory speedups(Tom)
+have pg_dump do everything in one snapshot transaction(Vadim)
+fix for large object memory leakage, fix for pg_dumping(Tom)
+INET type now respects netmask for comparisons
+Make VACUUM ANALYZE only use a readlock(Vadim)
+Allow VIEWs on UNIONS(Jan)
+pg_dump now can generate consistent snapshots on active databases(Vadim)
+
+Source Tree Changes
+-------------------
+Improve port matching(Tom)
+Portability fixes for SunOS
+Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
+New port to Cobalt Qube(Mips) running Linux(Tatsuo)
+Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
+Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
+Port to NetBSD/macppc(Toshimi Aoki)
+Fix for tcl/tk configuration(Vince)
+Removed CURRENT key word for rule queries(Jan)
+NT dynamic loading now works(Daniel Horak)
+Add ARM32 support(Andrew McMurry)
+Better support for HP-UX 11 and UnixWare
+Improve file handling to be more uniform, prevent file descriptor leak(Tom)
+New install commands for plpgsql(Jan)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+
+<sect1 id="release-6-4-2">
+<title>Release 6.4.2</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1998-12-20</simpara>
+  </note>
+
+<para>
+The 6.4.1 release was improperly packaged.  This also has one additional
+bug fix.
+</para>
+
+
+<sect2>
+<title>Migration to Version 6.4.2</title>
+
+<para>
+A dump/restore is <emphasis>not</emphasis> required for those running
+6.4.*.
+</para>
+</sect2>
+<sect2>
+<title>Changes</title>
+
+<para>
+<programlisting>
+Fix for datetime constant problem on some platforms(Thomas)
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+
+
+<sect1 id="release-6-4-1">
+<title>Release 6.4.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1998-12-18</simpara>
+  </note>
+
+<para>
+This is basically a cleanup release for 6.4.  We have fixed a variety of
+problems reported by 6.4 users.
+</para>
+
+
+<sect2>
+<title>Migration to Version 6.4.1</title>
+
+<para>
+A dump/restore is <emphasis>not</emphasis> required for those running
+6.4.
+</para>
+</sect2>
+<sect2>
+<title>Changes</title>
+
+<para>
+<programlisting>
+Add pg_dump -N flag to force double quotes around identifiers.  This is
+       the default(Thomas)
+Fix for NOT in where clause causing crash(Bruce)
+EXPLAIN VERBOSE coredump fix(Vadim)
+Fix shared-library problems on Linux
+Fix test for table existence to allow mixed-case and whitespace in
+       the table name(Thomas)
+Fix a couple of pg_dump bugs
+Configure matches template/.similar entries better(Tom)
+Change builtin function names from SPI_* to spi_*
+OR WHERE clause fix(Vadim)
+Fixes for mixed-case table names(Billy)
+contrib/linux/postgres.init.csh/sh fix(Thomas)
+libpq memory overrun fix
+SunOS fixes(Tom)
+Change exp() behavior to generate error on underflow(Thomas)
+pg_dump fixes for memory leak, inheritance constraints, layout change
+update pgaccess to 0.93
+Fix prototype for 64-bit platforms
+Multibyte fixes(Tatsuo)
+New ecpg man page
+Fix memory overruns(Tatsuo)
+Fix for lo_import() crash(Bruce)
+Better search for install program(Tom)
+Timezone fixes(Tom)
+HP-UX fixes(Tom)
+Use implicit type coercion for matching DEFAULT values(Thomas)
+Add routines to help with single-byte (internal) character type(Thomas)
+Compilation of libpq for Windows fixes(Magnus)
+Upgrade to PyGreSQL 2.2(D'Arcy)
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+
+
+<sect1 id="release-6-4">
+<title>Release 6.4</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1998-10-30</simpara>
+  </note>
+
+<para>
+There are <emphasis>many</emphasis> new features and improvements in this release.
+Thanks to our developers and maintainers, nearly every aspect of the system
+has received some attention since the previous release.
+Here is a brief, incomplete summary:
+
+<itemizedlist>
+<listitem>
+<para>
+Views and rules are now functional thanks to extensive new code in the
+rewrite rules system from Jan Wieck. He also wrote a chapter on it
+for the <citetitle>Programmer's Guide</citetitle>.
+</para>
+</listitem>
+<listitem>
+<para>
+Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
+original <application>PL/pgTCL</application> procedural language he contributed last release.
+</para>
+</listitem>
+
+<listitem>
+<para>
+We have optional multiple-byte character set support from Tatsuo Ishii
+to complement our existing locale support.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Client/server communications has been cleaned up, with better support for
+asynchronous messages and interrupts thanks to Tom Lane.
+</para>
+</listitem>
+
+<listitem>
+<para>
+The parser will now perform automatic type coercion to match arguments
+to available operators and functions, and to match columns and expressions
+with target columns. This uses a generic mechanism which supports
+the type extensibility features of <productname>PostgreSQL</productname>.
+There is a new chapter in the <citetitle>User's Guide</citetitle>
+which covers this topic.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Three new data types have been added.
+Two types, <type>inet</type> and <type>cidr</type>, support various forms
+of IP network, subnet, and machine addressing. There is now an 8-byte integer
+type available on some platforms. See the chapter on data types
+in the <citetitle>User's Guide</citetitle> for details.
+A fourth type, <type>serial</type>, is now supported by the parser as an
+amalgam of the <type>int4</type> type, a sequence, and a unique index.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Several more <acronym>SQL92</acronym>-compatible syntax features have been
+added, including <command>INSERT DEFAULT VALUES</command>
+</para>
+</listitem>
+
+<listitem>
+<para>
+The automatic configuration and installation system has received some
+attention, and should be more robust for more platforms than it has ever
+been.
+</para>
+</listitem>
+
+</itemizedlist>
+</para>
+
+<sect2>
+<title>Migration to Version 6.4</title>
+
+<para>
+A dump/restore using <application>pg_dump</application>
+or <application>pg_dumpall</application>
+is required for those wishing to migrate data from any
+previous release of <productname>PostgreSQL</productname>.
+</para>
+</sect2>
+
+  <sect2>
+<title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
+Remove char2-16 data types, use char/varchar(Darren)
+Pqfn not handles a NOTICE message(Anders)
+Reduced busywaiting overhead for spinlocks with many backends (dg)
+Stuck spinlock detection (dg)
+Fix up "ISO-style" timespan decoding and encoding(Thomas)
+Fix problem with table drop after rollback of transaction(Vadim)
+Change error message and remove non-functional update message(Vadim)
+Fix for COPY array checking
+Fix for SELECT 1 UNION SELECT NULL
+Fix for buffer leaks in large object calls(Pascal)
+Change owner from oid to int4 type(Bruce)
+Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
+Fix for shared invalidation cache overflow(Massimo)
+Prevent file descriptor leaks in failed COPY's(Bruce)
+Fix memory leak in libpgtcl's pg_select(Constantin)
+Fix problems with username/passwords over 8 characters(Tom)
+Fix problems with handling of asynchronous NOTIFY in backend(Tom)
+Fix of many bad system table entries(Tom)
+
+Enhancements
+------------
+Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
+Show the index used in an EXPLAIN(Zeugswetter)
+EXPLAIN  invokes  rule system and shows plan(s) for rewritten queries(Jan)
+Multibyte awareness of many data types and functions, via configure(Tatsuo)
+New configure --with-mb option(Tatsuo)
+New initdb --pgencoding option(Tatsuo)
+New createdb -E multibyte option(Tatsuo)
+Select version(); now returns PostgreSQL version(Jeroen)
+libpq now allows asynchronous clients(Tom)
+Allow cancel from client of backend query(Tom)
+psql now cancels query with Control-C(Tom)
+libpq users need not issue dummy queries to get NOTIFY messages(Tom)
+NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
+PGresult struct now includes associated error message, if any(Tom)
+Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
+Add routines to convert between varchar and bpchar(Thomas)
+Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
+Add bit flags to support timezonehour and minute in data retrieval(Thomas)
+Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
+Fixes for unary minus parsing with leading spaces(Thomas)
+Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
+Check for and properly ignore FOREIGN KEY column constraints(Thomas)
+Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
+Enable HAVING clause but no fixes elsewhere yet.
+Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
+Save string type if specified for DEFAULT clause handling(Thomas)
+Coerce operations involving different data types(Thomas)
+Allow some index use for columns of different types(Thomas)
+Add capabilities for automatic type conversion(Thomas)
+Cleanups for large objects, so file is truncated on open(Peter)
+Readline cleanups(Tom)
+Allow psql  \f \ to make spaces as delimiter(Bruce)
+Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
+Msql compatibility library in /contrib(Aldrin)
+Remove the requirement that ORDER/GROUP BY clause identifiers be
+included in the target list(David)
+Convert columns to match columns in UNION clauses(Thomas)
+Remove fork()/exec() and only do fork()(Bruce)
+Jdbc cleanups(Peter)
+Show backend status on ps command line(only works on some platforms)(Bruce)
+Pg_hba.conf now has a sameuser option in the database field
+Make lo_unlink take oid param, not int4
+New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce)
+Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
+libpgtcl cleanups(Tom)
+Add -error option to libpgtcl's pg_result command(Tom)
+New locale patch, see docs/README/locale(Oleg)
+Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
+New contrib/lo code for large object orphan removal(Peter)
+New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
+feature, see /doc/README.mb(Tatsuo)
+contrib/noupdate code to revoke update permission on a column
+libpq can now be compiled on Windows(Magnus)
+Add PQsetdbLogin() in libpq
+New 8-byte integer type, checked by configure for OS support(Thomas)
+Better support for quoted table/column names(Thomas)
+Surround table and column names with double-quotes in pg_dump(Thomas)
+PQreset() now works with passwords(Tom)
+Handle case of GROUP BY target list column number out of range(David)
+Allow UNION in subselects
+Add auto-size to screen to \d? commands(Bruce)
+Use UNION to show all \d? results in one query(Bruce)
+Add \d? field search feature(Bruce)
+Pg_dump issues fewer \connect requests(Tom)
+Make pg_dump -z flag work better, document it in manual page(Tom)
+Add HAVING clause with full support for subselects and unions(Stephan)
+Full text indexing routines in contrib/fulltextindex(Maarten)
+Transaction ids now stored in shared memory(Vadim)
+New PGCLIENTENCODING when issuing COPY command(Tatsuo)
+Support for SQL92 syntax "SET NAMES"(Tatsuo)
+Support for LATIN2-5(Tatsuo)
+Add UNICODE regression test case(Tatsuo)
+Lock manager cleanup, new locking modes for LLL(Vadim)
+Allow index use with OR clauses(Bruce)
+Allows "SELECT NULL ORDER BY 1;"
+Explain VERBOSE prints the plan, and now pretty-prints the plan to
+the postmaster log file(Bruce)
+Add indexes display to \d command(Bruce)
+Allow GROUP BY on functions(David)
+New pg_class.relkind for large objects(Bruce)
+New way to send libpq NOTICE messages to a different location(Tom)
+New \w write command to psql(Bruce)
+New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
+Allow binary-compatible indexes to be considered when checking for valid
+Indexes for restriction clauses containing a constant(Thomas)
+New ISBN/ISSN code in /contrib/isbn_issn
+Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
+New rewrite system fixes many problems with rules and views(Jan)
+       * Rules on relations work
+       * Event qualifications on insert/update/delete work
+       * New OLD variable to reference CURRENT, CURRENT will be remove in future
+       * Update rules can reference NEW and OLD in rule qualifications/actions
+       * Insert/update/delete rules on views work
+       * Multiple rule actions are now supported, surrounded by parentheses
+       * Regular users can create views/rules on tables they have RULE permits
+       * Rules and views inherit the privileges of the creator
+       * No rules at the column level
+       * No UPDATE NEW/OLD rules
+       * New pg_tables, pg_indexes, pg_rules and pg_views system views
+       * Only a single action on SELECT rules
+       * Total rewrite overhaul, perhaps for 6.5
+       * handle subselects
+       * handle aggregates on views
+       * handle insert into select from view works
+System indexes are now multikey(Bruce)
+Oidint2, oidint4, and oidname types are removed(Bruce)
+Use system cache for more system table lookups(Bruce)
+New backend programming language PL/pgSQL in backend/pl(Jan)
+New SERIAL data type, auto-creates sequence/index(Thomas)
+Enable assert checking without a recompile(Massimo)
+User lock enhancements(Massimo)
+New setval() command to set sequence value(Massimo)
+Auto-remove unix socket file on start-up if no postmaster running(Massimo)
+Conditional trace package(Massimo)
+New UNLISTEN command(Massimo)
+psql and libpq now compile under Windows using win32.mak(Magnus)
+Lo_read no longer stores trailing NULL(Bruce)
+Identifiers are now truncated to 31 characters internally(Bruce)
+Createuser options now available on the command line
+Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
+Prevent file descriptor leaf from failed COPY(Bruce)
+New pg_upgrade command(Bruce)
+Updated /contrib directories(Massimo)
+New CREATE TABLE DEFAULT VALUES statement available(Thomas)
+New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
+New DECLARE and FETCH feature(Thomas)
+libpq's internal structures now not exported(Tom)
+Allow up to 8 key indexes(Bruce)
+Remove ARCHIVE key word, that is no longer used(Thomas)
+pg_dump -n flag to suppress quotes around indentifiers
+disable system columns for views(Jan)
+new INET and CIDR types for network addresses(TomH, Paul)
+no more double quotes in psql output
+pg_dump now dumps views(Terry)
+new SET QUERY_LIMIT(Tatsuo,Jan)
+
+Source Tree Changes
+-------------------
+/contrib cleanup(Jun)
+Inline some small functions called for every row(Bruce)
+Alpha/linux fixes
+HP-UX cleanups(Tom)
+Multibyte regression tests(Soonmyung.)
+Remove --disabled options from configure
+Define PGDOC to use POSTGRESDIR by default
+Make regression optional
+Remove extra braces code to pgindent(Bruce)
+Add bsdi shared library support(Bruce)
+New --without-CXX support configure option(Brook)
+New FAQ_CVS
+Update backend flowchart in tools/backend(Bruce)
+Change atttypmod from int16 to int32(Bruce, Tom)
+Getrusage() fix for platforms that do not have it(Tom)
+Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
+NS32K platform fixes(Phil Nelson, John Buller)
+SCO 7/UnixWare 2.x fixes(Billy,others)
+Sparc/Solaris 2.5 fixes(Ryan)
+Pgbuiltin.3 is obsolete, move to doc files(Thomas)
+Even more documentation(Thomas)
+Nextstep support(Jacek)
+Aix support(David)
+pginterface manual page(Bruce)
+shared libraries all have version numbers
+merged all OS-specific shared library defines into one file
+smarter TCL/TK configuration checking(Billy)
+smarter perl configuration(Brook)
+configure uses supplied install-sh if no install script found(Tom)
+new Makefile.shlib for shared library configuration(Tom)
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-6-3-2">
+<title>Release 6.3.2</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1998-04-07</simpara>
+  </note>
+
+<para>
+This is a bug-fix release for 6.3.x.
+Refer to the release notes for version 6.3 for a more complete summary of new features.
+</para>
+<para>
+Summary:
+
+<itemizedlist>
+<listitem>
+<para>
+Repairs automatic configuration support for some platforms, including Linux,
+from breakage inadvertently introduced in version 6.3.1.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
+</para>
+</listitem>
+
+</itemizedlist>
+</para>
+<para>
+A dump/restore is NOT required for those running 6.3 or 6.3.1.  A
+<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
+This last step should be performed while the postmaster is not running.
+You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
+</para>
+<para>
+For upgrades from pre-6.3 installations,
+refer to the installation and migration instructions for version 6.3.
+</para>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
+Manual page improvements(Bruce)
+BETWEEN and LIKE fix(Thomas)
+fix for psql \connect used by pg_dump(Oliver Elphick)
+New odbc driver
+pgaccess, version 0.86
+qsort removed, now uses libc version, cleanups(Jeroen)
+fix for buffer over-runs detected(Maurice Gittens)
+fix for buffer overrun in libpgtcl(Randy Kunkee)
+fix for UNION with DISTINCT or ORDER BY(Bruce)
+gettimeofday configure check(Doug Winterburn)
+Fix "indexes not used" bug(Vadim)
+docs additions(Thomas)
+Fix for backend memory leak(Bruce)
+libreadline cleanup(Erwan MAS)
+Remove DISTDIR(Bruce)
+Makefile dependency cleanup(Jeroen van Vianen)
+ASSERT fixes(Bruce)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-6-3-1">
+  <title>Release 6.3.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1998-03-23</simpara>
+  </note>
+
+  <para>
+   Summary:
+
+<itemizedlist>
+<listitem>
+<para>
+Additional support for multibyte character sets.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Repair byte ordering for mixed-endian clients and servers.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Minor updates to allowed SQL syntax.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvements to the configuration autodetection for installation.
+</para>
+</listitem>
+
+</itemizedlist>
+</para>
+<para>
+A dump/restore is NOT required for those running 6.3.  A
+<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
+This last step should be performed while the postmaster is not running.
+You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
+</para>
+<para>
+For upgrades from pre-6.3 installations,
+refer to the installation and migration instructions for version 6.3.
+</para>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+ecpg cleanup/fixes, now version 1.1(Michael Meskes)
+pg_user cleanup(Bruce)
+large object fix for pg_dump and tclsh (alvin)
+LIKE fix for multiple adjacent underscores
+fix for redefining builtin functions(Thomas)
+ultrix4 cleanup
+upgrade to pg_access 0.83
+updated CLUSTER manual page
+multibyte character set support, see doc/README.mb(Tatsuo)
+configure --with-pgport fix
+pg_ident fix
+big-endian fix for backend communications(Kataoka)
+SUBSTR() and substring() fix(Jan)
+several jdbc fixes(Peter)
+libpgtcl improvements, see libptcl/README(Randy Kunkee)
+Fix for "Datasize = 0" error(Vadim)
+Prevent \do from wrapping(Bruce)
+Remove duplicate Russian character set entries
+Sunos4 cleanup
+Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
+CREATE SEQUENCE options to allow a negative integer(Thomas)
+Add "PASSWORD" as an allowed column identifier(Thomas)
+Add checks for UNION target fields(Bruce)
+Fix Alpha port(Dwayne Bailey)
+Fix for text arrays containing quotes(Doug Gibson)
+Solaris compile fix(Albert Chin-A-Young)
+Better identify tcl and tk libs and includes(Bruce)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-6-3">
+  <title>Release 6.3</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1998-03-01</simpara>
+  </note>
+
+  <para>
+   There are <emphasis>many</emphasis> new features and improvements in this release.
+   Here is a brief, incomplete summary:
+
+   <itemizedlist>
+    <listitem>
+     <para>
+      Many new SQL features, including
+      full <acronym>SQL92</acronym> subselect capability
+      (everything is here but target-list subselects).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Support for client-side environment variables to specify time zone and date style.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Socket interface for client/server connection. This is the default now
+      so you might need to start <application>postmaster</application> with the
+      <option>-i</option> flag.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Better password authorization mechanisms. Default table privileges have changed.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Old-style <firstterm>time travel</firstterm>
+      has been removed. Performance has been improved.
+     </para>
+    </listitem>
+   </itemizedlist>
+  </para>
+
+  <note>
+   <para>
+    Bruce Momjian wrote the following notes to introduce the new release.
+   </para>
+  </note>
+
+  <para>
+   There are some general 6.3 issues that I want to mention.  These are
+   only the big items that cannot be described in one sentence.  A review
+   of the detailed changes list is still needed.
+  </para>
+  <para>
+   First, we now have subselects.  Now that we have them, I would like to
+   mention that without subselects, SQL is a very limited language.
+   Subselects are a major feature, and you should review your code for
+   places where subselects provide a better solution for your queries.  I
+   think you will find that there are more uses for subselects than you might
+   think.  Vadim has put us on the big SQL map with subselects, and fully
+   functional ones too.  The only thing you cannot do with subselects is to
+   use them in the target list.
+  </para>
+  <para>
+   Second, 6.3 uses Unix domain sockets rather than TCP/IP by default.  To
+   enable connections from other machines, you have to use the new
+   postmaster -i option, and of course edit <filename>pg_hba.conf</filename>.  Also, for this
+   reason, the format of <filename>pg_hba.conf</filename> has changed.
+  </para>
+  <para>
+   Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
+   <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
+   any columns after the first column of this type.  <type>char()</type> used to also
+   have this access penalty, but it no longer does.  This might suggest that
+   you redesign some of your tables, especially if you have short character
+   columns that you have defined as <type>varchar()</type> or <type>text</type>.  This and other
+   changes make 6.3 even faster than earlier releases.
+  </para>
+  <para>
+   We now have passwords definable independent of any Unix file.  There are
+   new SQL USER commands.
+   See the <citetitle>Administrator's Guide</citetitle> for more
+   information.  There is a new table, pg_shadow, which is used to store
+   user information and user passwords, and it by default only SELECT-able
+   by the <systemitem>postgres</systemitem> super-user.  pg_user is now a view of pg_shadow, and is
+   SELECT-able by PUBLIC.  You should keep using pg_user in your
+   application without changes.
+  </para>
+  <para>
+   User-created tables now no longer have SELECT privilege to PUBLIC by
+   default.  This was done because the ANSI standard requires it.  You can
+   of course GRANT any privileges you want after the table is created.
+   System tables continue to be SELECT-able by PUBLIC.
+  </para>
+  <para>
+   We also have real deadlock detection code.  No more sixty-second
+   timeouts.  And the new locking code implements a <acronym>FIFO</acronym> better, so there
+   should be less resource starvation during heavy use.
+  </para>
+  <para>
+   Many complaints have been made about inadequate documentation in previous
+   releases.  Thomas has put much effort into many new manuals for this
+   release.  Check out the doc/ directory.
+  </para>
+  <para>
+   For performance reasons, time travel is gone, but can be implemented
+   using triggers (see <filename>pgsql/contrib/spi/README</filename>).  Please check out the new
+   \d command for types, operators, etc.  Also, views have their own
+   privileges now, not based on the underlying tables, so privileges on
+   them have to be set separately.  Check <filename>/pgsql/interfaces</filename> for some new
+   ways to talk to <productname>PostgreSQL</productname>.
+  </para>
+  <para>
+   This is the first release that really required an explanation for
+   existing users.  In many ways, this was necessary because the new
+   release removes many limitations, and the work-arounds people were using
+   are no longer needed.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 6.3</title>
+
+   <para>
+    A dump/restore using <application>pg_dump</application>
+    or <application>pg_dumpall</application>
+    is required for those wishing to migrate data from any
+    previous release of <productname>PostgreSQL</productname>.
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+Fix binary cursors broken by MOVE implementation(Vadim)
+Fix for tcl library crash(Jan)
+Fix for array handling, from Gerhard Hintermayer
+Fix acl error, and remove duplicate pqtrace(Bruce)
+Fix psql \e for empty file(Bruce)
+Fix for textcat on varchar() fields(Bruce)
+Fix for DBT Sendproc (Zeugswetter Andres)
+Fix vacuum analyze syntax problem(Bruce)
+Fix for international identifiers(Tatsuo)
+Fix aggregates on inherited tables(Bruce)
+Fix substr() for out-of-bounds data
+Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
+Fix notty output to show status result.  -q option still turns it off(Bruce)
+Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
+Fix cluster(Bruce)
+Fix for PQtrace start/stop several times(Bruce)
+Fix a variety of locking problems like newer lock waiters getting
+       lock before older waiters, and having readlock people not share
+       locks if a writer is waiting for a lock, and waiting writers not
+       getting priority over waiting readers(Bruce)
+Fix crashes in psql when executing queries from external files(James)
+Fix problem with multiple order by columns, with the first one having
+       NULL values(Jeroen)
+Use correct hash table support functions for float8 and int4(Thomas)
+Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
+Change precedence for boolean operators to match expected behavior(Thomas)
+Generate elog(ERROR) on over-large integer(Bruce)
+Allow multiple-argument functions in constraint clauses(Thomas)
+Check boolean input literals for 'true','false','yes','no','1','0'
+       and throw elog(ERROR) if unrecognized(Thomas)
+Major large objects fix
+Fix for GROUP BY showing duplicates(Vadim)
+Fix for index scans in MergeJoin(Vadim)
+
+Enhancements
+------------
+Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
+New User Manual(Thomas, others)
+Speedup by inlining some frequently-called functions
+Real deadlock detection, no more timeouts(Bruce)
+Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
+       CURRENT_USER(Thomas)
+Modify constraint syntax to be SQL92-compliant(Thomas)
+Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
+Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
+Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
+Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
+Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
+Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
+Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
+Allow SQL92 delimited identifiers(Thomas)
+Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
+Support SQL92 syntax for type coercion of literal strings
+       (e.g. "DATETIME 'now'")(Thomas)
+Add conversions for int2, int4, and OID types to and from text(Thomas)
+Use shared lock when building indexes(Vadim)
+Free memory allocated for an user query inside transaction block after
+       this query is done, was turned off in &lt;= 6.2.1(Vadim)
+New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
+New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
+Rename pg_dump -H option to -h(Bruce)
+Add Java support for passwords, European dates(Peter)
+Use indexes for LIKE and ~, !~ operations(Bruce)
+Add hash functions for datetime and timespan(Thomas)
+Time Travel removed(Vadim, Bruce)
+Add paging for \d and \z, and fix \i(Bruce)
+Add Unix domain socket support to backend and to frontend library(Goran)
+Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
+Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
+Augment support for SQL92 SET TIME ZONE...(Thomas)
+SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
+Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
+Enable SET TIME ZONE using TZ environment variable(Thomas)
+Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
+Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
+       frontend library initialization environment variables(Thomas)
+Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
+Add pg_description table for info on tables, columns, operators, types, and
+       aggregates(Bruce)
+Increase 16 char limit on system table/index names to 32 characters(Bruce)
+Rename system indexes(Bruce)
+Add 'GERMAN' option to SET DATESTYLE(Thomas)
+Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
+Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
+Validate numeric input more carefully for delta times(Thomas)
+Implement day of year as possible input to date_part()(Thomas)
+Define timespan_finite() and text_timespan() functions(Thomas)
+Remove archive stuff(Bruce)
+Allow for a pg_password authentication database that is separate from
+       the system password file(Todd)
+Dump ACLs, GRANT, REVOKE privileges(Matt)
+Define text, varchar, and bpchar string length functions(Thomas)
+Fix Query handling for inheritance, and cost computations(Bruce)
+Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
+Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
+Implement UNIONs for SELECT(Bruce)
+Add UNION, GROUP, DISTINCT to INSERT(Bruce)
+varchar() stores only necessary bytes on disk(Bruce)
+Fix for BLOBs(Peter)
+Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
+Remove unused "option" from PQconnectdb()
+New LOCK command and lock manual page describing deadlocks(Bruce)
+Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
+Enhance psql \z to show sequences(Bruce)
+Show NOT NULL and DEFAULT in psql \d table(Bruce)
+New psql .psqlrc file start-up(Andrew)
+Modify sample start-up script in contrib/linux to show syslog(Thomas)
+New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
+Unix system time conversions with date/time types in contrib/unixdate(Thomas)
+Update of contrib stuff(Massimo)
+Add Unix socket support to DBD::Pg(Goran)
+New python interface (PyGreSQL 2.0)(D'Arcy)
+New frontend/backend protocol has a version number, network byte order(Phil)
+Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
+CHAR() now faster access than VARCHAR() or TEXT
+ecpg embedded SQL preprocessor
+Reduce system column overhead(Vadmin)
+Remove pg_time table(Vadim)
+Add pg_type attribute to identify types that need length (bpchar, varchar)
+Add report of offending line when COPY command fails
+Allow VIEW privileges to be set separately from the underlying tables.
+       For security, use GRANT/REVOKE on views as appropriate(Jan)
+Tables now have no default GRANT SELECT TO PUBLIC.  You must
+       explicitly grant such privileges.
+Clean up tutorial examples(Darren)
+
+Source Tree Changes
+-------------------
+Add new html development tools, and flow chart in /tools/backend
+Fix for SCO compiles
+Stratus computer port Robert Gillies
+Added support for shlib for BSD44_derived &amp; i386_solaris
+Make configure more automated(Brook)
+Add script to check regression test results
+Break parser functions into smaller files, group together(Bruce)
+Rename heap_create to heap_create_and_catalog, rename heap_creatr
+       to heap_create()(Bruce)
+Sparc/Linux patch for locking(TomS)
+Remove PORTNAME and reorganize port-specific stuff(Marc)
+Add optimizer README file(Bruce)
+Remove some recursion in optimizer and clean up some code there(Bruce)
+Fix for NetBSD locking(Henry)
+Fix for libptcl make(Tatsuo)
+AIX patch(Darren)
+Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
+       function calls to istrue() or isfalse() to allow optimization(Thomas)
+Various fixes NetBSD/Sparc related(TomH)
+Alpha linux locking(Travis,Ryan)
+Change elog(WARN) to elog(ERROR)(Bruce)
+FAQ for FreeBSD(Marc)
+Bring in the PostODBC source tree as part of our standard distribution(Marc)
+A minor patch for HP/UX 10 vs 9(Stan)
+New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
+UnixWare patches(Billy)
+New i386 'lock' for spinlock asm(Billy)
+Support for multiplexed backends is removed
+Start an OpenBSD port
+Start an AUX port
+Start a Cygnus port
+Add string functions to regression suite(Thomas)
+Expand a few function names formerly truncated to 16 characters(Thomas)
+Remove un-needed malloc() calls and replace with palloc()(Bruce)
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-6-2-1">
+<title>Release 6.2.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1997-10-17</simpara>
+  </note>
+
+<para>
+6.2.1 is a bug-fix and usability release on 6.2.
+</para>
+<para>
+Summary:
+
+<itemizedlist>
+<listitem>
+<para>
+Allow strings to span lines, per <acronym>SQL92</acronym>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Include example trigger function for inserting user names on table updates.
+</para>
+</listitem>
+
+</itemizedlist>
+</para>
+<para>
+This is a minor bug-fix release on 6.2.
+For upgrades from pre-6.2 systems, a full dump/reload is required.
+Refer to the 6.2 release notes for instructions.
+</para>
+
+<sect2>
+<title>Migration from version 6.2 to version 6.2.1</title>
+
+<para>
+This is a minor bug-fix release. A dump/reload is not required from version 6.2,
+but is required from any release prior to 6.2.
+</para>
+<para>
+In upgrading from version 6.2, if you choose to dump/reload you will find that
+avg(money) is now calculated correctly. All other bug fixes take effect
+upon updating the executables.
+</para>
+<para>
+Another way to avoid dump/reload is to use the following SQL command
+from <command>psql</command> to update the existing system table:
+
+<programlisting>
+ update pg_aggregate set aggfinalfn = 'cash_div_flt8'
+  where aggname = 'avg' and aggbasetype = 790;
+</programlisting>
+</para>
+<para>
+This will need to be done to every existing database, including template1.
+</para>
+</sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Allow TIME and TYPE column names(Thomas)
+Allow larger range of true/false as boolean values(Thomas)
+Support output of "now" and "current"(Thomas)
+Handle DEFAULT with INSERT of NULL properly(Vadim)
+Fix for relation reference counts problem in buffer manager(Vadim)
+Allow strings to span lines, like ANSI(Thomas)
+Fix for backward cursor with ORDER BY(Vadim)
+Fix avg(cash) computation(Thomas)
+Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
+Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
+Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+<sect1 id="release-6-2">
+<title>Release 6.2</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1997-10-02</simpara>
+  </note>
+
+<para>
+A dump/restore is required for those wishing to migrate data from
+previous releases of <productname>PostgreSQL</productname>.
+</para>
+
+<sect2>
+<title>Migration from version 6.1 to version 6.2</title>
+
+<para>
+This migration requires a complete dump of the 6.1 database and a
+restore of the database in 6.2.
+</para>
+<para>
+Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
+to dump the 6.1 database.
+</para>
+</sect2>
+
+<sect2>
+<title>Migration from version 1.<replaceable>x</> to version 6.2</title>
+
+<para>
+Those migrating from earlier 1.* releases should first upgrade to 1.09
+because the COPY output format was improved from the 1.02 release.
+</para>
+</sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
+Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
+        from Solaris(Diab Jerius)
+Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
+Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
+Catch non-functional delete attempts(Vadim)
+Change time function names to be more consistent(Michael Reifenberg)
+Check for zero divides(Michael Reifenberg)
+Fix very old bug which made rows changed/inserted by a command
+       visible to the command itself (so we had multiple update of
+       updated rows, etc.)(Vadim)
+Fix for SELECT null, 'fail' FROM pg_am (Patrick)
+SELECT NULL as EMPTY_FIELD now allowed(Patrick)
+Remove un-needed signal stuff from contrib/pginterface
+Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
+Fix time_cmp function (Vadim)
+Fix handling of functions with non-attribute first argument in
+       WHERE clauses (Vadim)
+Fix GROUP BY when order of entries is different from order
+       in target list (Vadim)
+Fix pg_dump for aggregates without sfunc1 (Vadim)
+
+Enhancements
+------------
+Default genetic optimizer GEQO parameter is now 8(Bruce)
+Allow use parameters in target list having aggregates in functions(Vadim)
+Added JDBC driver as an interface(Adrian &amp; Peter)
+pg_password utility
+Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
+Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
+SPI (Server Programming Interface) allows execution of queries inside
+       C-functions (Vadim)
+NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
+Include reserved words for string handling, outer joins, and unions(Thomas)
+Implement extended comments ("/* ... */") using exclusive states(Thomas)
+Add "//" single-line comments(Bruce)
+Remove some restrictions on characters in operator names(Thomas)
+DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim &amp; Thomas)
+Add text concatenation operator and function (SQL92)(Thomas)
+Support WITH TIME ZONE syntax (SQL92)(Thomas)
+Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
+Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
+       and CHARACTER VARYING (SQL92)(Thomas)
+Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
+Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
+Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
+Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
+Add more reserved words, mostly for SQL92 compliance(Thomas)
+Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
+Add center() routines for lseg, path, polygon(Thomas)
+Add distance() routines for circle-polygon, polygon-polygon(Thomas)
+Check explicitly for points and polygons contained within polygons
+       using an axis-crossing algorithm(Thomas)
+Add routine to convert circle-box(Thomas)
+Merge conflicting operators for different geometric data types(Thomas)
+Replace distance operator "&lt;===&gt;" with "&lt;-&gt;"(Thomas)
+Replace "above" operator "!^" with "&gt;^" and "below" operator "!|" with "&lt;^"(Thomas)
+Add routines for text trimming on both ends, substring, and string position(Thomas)
+Added conversion routines circle(box) and poly(circle)(Thomas)
+Allow internal sorts to be stored in memory rather than in files(Bruce &amp; Vadim)
+Allow functions and operators on internally-identical types to succeed(Bruce)
+Speed up backend start-up after profiling analysis(Bruce)
+Inline frequently called functions for performance(Bruce)
+Reduce open() calls(Bruce)
+psql:  Add PAGER for \h and \?,\C fix
+Fix for psql pager when no tty(Bruce)
+New entab utility(Bruce)
+General trigger functions for referential integrity (Vadim)
+General trigger functions for time travel (Vadim)
+General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
+MOVE implementation (Vadim)
+
+Source Tree Changes
+-------------------
+HP-UX 10 patches (Vladimir Turin)
+Added SCO support, (Daniel Harris)
+MkLinux patches (Tatsuo Ishii)
+Change geometric box terminology from "length" to "width"(Thomas)
+Deprecate temporary unstored slope fields in geometric code(Thomas)
+Remove restart instructions from INSTALL(Bruce)
+Look in /usr/ucb first for install(Bruce)
+Fix c++ copy example code(Thomas)
+Add -o to psql manual page(Bruce)
+Prevent relname unallocated string length from being copied into database(Bruce)
+Cleanup for NAMEDATALEN use(Bruce)
+Fix pg_proc names over 15 chars in output(Bruce)
+Add strNcpy() function(Bruce)
+remove some (void) casts that are unnecessary(Bruce)
+new interfaces directory(Marc)
+Replace fopen() calls with calls to fd.c functions(Bruce)
+Make functions static where possible(Bruce)
+enclose unused functions in #ifdef NOT_USED(Bruce)
+Remove call to difftime() in timestamp support to fix SunOS(Bruce &amp; Thomas)
+Changes for Digital Unix
+Portability fix for pg_dumpall(Bruce)
+Rename pg_attribute.attnvals to attdispersion(Bruce)
+"intro/unix" manual page now "pgintro"(Bruce)
+"built-in" manual page now "pgbuiltin"(Bruce)
+"drop" manual page now "drop_table"(Bruce)
+Add "create_trigger", "drop_trigger" manual pages(Thomas)
+Add constraints regression test(Vadim &amp; Thomas)
+Add comments syntax regression test(Thomas)
+Add PGINDENT and support program(Bruce)
+Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
+Files moved to /src/tools directory(Bruce)
+SPI and Trigger programming guides (Vadim &amp; D'Arcy)
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-6-1-1">
+<title>Release 6.1.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1997-07-22</simpara>
+  </note>
+
+<sect2>
+<title>Migration from version 6.1 to version 6.1.1</title>
+
+<para>
+This is a minor bug-fix release. A dump/reload is not required from version 6.1,
+but is required from any release prior to 6.1.
+Refer to the release notes for 6.1 for more details.
+</para>
+</sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+fix for SET with options (Thomas)
+allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
+new psql \connect option allows changing usernames without changing databases
+fix for initdb --debug option(Yoshihiko Ichikawa))
+lextest cleanup(Bruce)
+hash fixes(Vadim)
+fix date/time month boundary arithmetic(Thomas)
+fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
+timestamp overhauled to use standard functions(Thomas)
+other code cleanup in date/time routines(Thomas)
+psql's \d now case-insensitive(Bruce)
+psql's backslash commands can now have trailing semicolon(Bruce)
+fix memory leak in psql when using \g(Bruce)
+major fix for endian handling of communication to server(Thomas, Tatsuo)
+Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
+allow underscores in usernames(Bruce)
+pg_dumpall now returns proper status, portability fix(Bruce)
+    </programlisting>
+   </para>
+  </sect2>
+ </sect1>
+
+<sect1 id="release-6-1">
+<title>Release 6.1</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1997-06-08</simpara>
+  </note>
+
+<para>
+ The regression tests have been adapted and extensively modified for the
+ 6.1 release of <productname>PostgreSQL</productname>.
+</para>
+
+<para>
+ Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
+ the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
+ have had their output formats made consistent across the data types.
+ The polygon output in misc.out has only been spot-checked for correctness
+ relative to the original regression output.
+</para>
+
+<para>
+ <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
+optimizer which uses <firstterm>genetic</firstterm>
+ algorithms. These algorithms introduce a random behavior in the ordering
+ of query results when the query contains multiple qualifiers or multiple
+ tables (giving the optimizer a choice on order of evaluation). Several
+ regression tests have been modified to explicitly order the results, and
+ hence are insensitive to optimizer choices. A few regression tests are
+ for data types which are inherently unordered (e.g. points and time
+ intervals) and tests involving those types are explicitly bracketed with
+ <command>set geqo to 'off'</command> and <command>reset geqo</command>.
+</para>
+
+<para>
+ The interpretation of array specifiers (the curly braces around atomic
+ values) appears to have changed sometime after the original regression
+ tests were generated. The current <filename>./expected/*.out</filename> files reflect this
+ new interpretation, which might not be correct!
+</para>
+
+<para>
+ The float8 regression test fails on at least some platforms. This is due
+ to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
+ mechanisms used for overflow and underflow conditions.
+</para>
+
+<para>
+ The <quote>random</> results in the random test should cause the
+ <quote>random</quote> test to be <quote>failed</quote>, since the
+ regression tests are evaluated using a simple diff. However,
+ <quote>random</> does not seem to produce random results on my test
+ machine (Linux/<application>gcc</>/i686).
+</para>
+
+<sect2>
+<title>Migration to Version 6.1</title>
+
+<para>
+This migration requires a complete dump of the 6.0 database and a
+restore of the database in 6.1.
+</para>
+<para>
+Those migrating from earlier 1.* releases should first upgrade to 1.09
+because the COPY output format was improved from the 1.02 release.
+</para>
+</sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+packet length checking in library routines
+lock manager priority patch
+check for under/over flow of float8(Bruce)
+multitable join fix(Vadim)
+SIGPIPE crash fix(Darren)
+large object fixes(Sven)
+allow btree indexes to handle NULLs(Vadim)
+timezone fixes(D'Arcy)
+select SUM(x) can return NULL on no rows(Thomas)
+internal optimizer, executor bug fixes(Vadim)
+fix problem where inner loop in &lt; or &lt;= has no rows(Vadim)
+prevent re-commuting join index clauses(Vadim)
+fix join clauses for multiple tables(Vadim)
+fix hash, hashjoin for arrays(Vadim)
+fix btree for abstime type(Vadim)
+large object fixes(Raymond)
+fix buffer leak in hash indexes (Vadim)
+fix rtree for use in inner scan (Vadim)
+fix gist for use in inner scan, cleanups (Vadim, Andrea)
+avoid unnecessary local buffers allocation (Vadim, Massimo)
+fix local buffers leak in transaction aborts (Vadim)
+fix file manager memmory leaks, cleanups (Vadim, Massimo)
+fix storage manager memmory leaks (Vadim)
+fix btree duplicates handling (Vadim)
+fix deleted rows reincarnation caused by vacuum (Vadim)
+fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
+many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
+
+Enhancements
+------------
+attribute optimization statistics(Bruce)
+much faster new btree bulk load code(Paul)
+BTREE UNIQUE added to bulk load code(Vadim)
+new lock debug code(Massimo)
+massive changes to libpg++(Leo)
+new GEQO optimizer speeds table multitable optimization(Martin)
+new WARN message for non-unique insert into unique key(Marc)
+update x=-3, no spaces, now valid(Bruce)
+remove case-sensitive identifier handling(Bruce,Thomas,Dan)
+debug backend now pretty-prints tree(Darren)
+new Oracle character functions(Edmund)
+new plaintext password functions(Dan)
+no such class or insufficient privilege changed to distinct messages(Dan)
+new ANSI timestamp function(Dan)
+new ANSI Time and Date types (Thomas)
+move large chunks of data in backend(Martin)
+multicolumn btree indexes(Vadim)
+new SET var TO value command(Martin)
+update transaction status on reads(Dan)
+new locale settings for character types(Oleg)
+new SEQUENCE serial number generator(Vadim)
+GROUP BY function now possible(Vadim)
+re-organize regression test(Thomas,Marc)
+new optimizer operation weights(Vadim)
+new psql \z grant/permit option(Marc)
+new MONEY data type(D'Arcy,Thomas)
+tcp socket communication speed improved(Vadim)
+new VACUUM option for attribute statistics, and for certain columns (Vadim)
+many geometric type improvements(Thomas,Keith)
+additional regression tests(Thomas)
+new datestyle variable(Thomas,Vadim,Martin)
+more comparison operators for sorting types(Thomas)
+new conversion functions(Thomas)
+new more compact btree format(Vadim)
+allow pg_dumpall to preserve database ownership(Bruce)
+new SET GEQO=# and R_PLANS variable(Vadim)
+old (!GEQO) optimizer can use right-sided plans (Vadim)
+typechecking improvement in SQL parser(Bruce)
+new SET, SHOW, RESET commands(Thomas,Vadim)
+new \connect database USER option
+new destroydb -i option (Igor)
+new \dt and \di psql commands (Darren)
+SELECT "\n" now escapes newline (A. Duursma)
+new geometry conversion functions from old format (Thomas)
+
+Source tree changes
+-------------------
+new configuration script(Marc)
+readline configuration option added(Marc)
+OS-specific configuration options removed(Marc)
+new OS-specific template files(Marc)
+no more need to edit Makefile.global(Marc)
+re-arrange include files(Marc)
+nextstep patches (Gregor Hoffleit)
+removed Windows-specific code(Bruce)
+removed postmaster -e option, now only postgres -e option (Bruce)
+merge duplicate library code in front/backends(Martin)
+now works with eBones, international Kerberos(Jun)
+more shared library support
+c++ include file cleanup(Bruce)
+warn about buggy flex(Bruce)
+DG/UX, Ultrix, IRIX, AIX portability fixes
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-6-0">
+<title>Release 6.0</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1997-01-29</simpara>
+  </note>
+
+<para>
+A dump/restore is required for those wishing to migrate data from
+previous releases of <productname>PostgreSQL</productname>.
+</para>
+
+<sect2>
+<title>Migration from version 1.09 to version 6.0</title>
+
+<para>
+This migration requires a complete dump of the 1.09 database and a
+restore of the database in 6.0.
+</para>
+</sect2>
+
+<sect2>
+<title>Migration from pre-1.09 to version 6.0</title>
+
+<para>
+Those migrating from earlier 1.* releases should first upgrade to 1.09
+because the COPY output format was improved from the 1.02 release.
+</para>
+</sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <para>
+    <programlisting>
+Bug Fixes
+---------
+ALTER TABLE bug - running postgres process needs to re-read table definition
+Allow vacuum to be run on one table or entire database(Bruce)
+Array fixes
+Fix array over-runs of memory writes(Kurt)
+Fix elusive btree range/non-range bug(Dan)
+Fix for hash indexes on some types like time and date
+Fix for pg_log size explosion
+Fix permissions on lo_export()(Bruce)
+Fix uninitialized reads of memory(Kurt)
+Fixed ALTER TABLE ... char(3) bug(Bruce)
+Fixed a few small memory leaks
+Fixed EXPLAIN handling of options and changed full_path option name
+Fixed output of group acl privileges
+Memory leaks (hunt and destroy with tools like Purify(Kurt)
+Minor improvements to rules system
+NOTIFY fixes
+New asserts for run-checking
+Overhauled parser/analyze code to properly report errors and increase speed
+Pg_dump -d now handles NULL's properly(Bruce)
+Prevent SELECT NULL from crashing server (Bruce)
+Properly report errors when INSERT ... SELECT columns did not match
+Properly report errors when insert column names were not correct
+psql \g filename now works(Bruce)
+psql fixed problem with multiple statements on one line with multiple outputs
+Removed duplicate system OIDs
+SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
+Several fixes for queries that crashed the backend
+Starting quote in insert string errors(Bruce)
+Submitting an empty query now returns empty status, not just " " query(Bruce)
+
+Enhancements
+------------
+Add EXPLAIN manual page(Bruce)
+Add UNIQUE index capability(Dan)
+Add hostname/user level access control rather than just hostname and user
+Add synonym of != for &lt;&gt;(Bruce)
+Allow "select oid,* from table"
+Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
+Allow COPY from the frontend(Bryan)
+Allow GROUP BY to use alias column name(Bruce)
+Allow actual compression, not just reuse on the same page(Vadim)
+Allow installation-configuration option to auto-add all local users(Bryan)
+Allow libpq to distinguish between text value '' and null(Bruce)
+Allow non-postgres users with createdb privs to destroydb's
+Allow restriction on who can create C functions(Bryan)
+Allow restriction on who can do backend COPY(Bryan)
+Can shrink tables, pg_time and pg_log(Vadim &amp; Erich)
+Change debug level 2 to print queries only, changed debug heading layout(Bruce)
+Change default decimal constant representation from float4 to float8(Bruce)
+European date format now set when postmaster is started
+Execute lowercase function names if not found with exact case
+Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
+Gist now included in the distribution(Marc)
+Idend authentication of local users(Bryan)
+Implement BETWEEN qualifier(Bruce)
+Implement IN qualifier(Bruce)
+libpq has PQgetisnull()(Bruce)
+libpq++ improvements
+New options to initdb(Bryan)
+Pg_dump allow dump of OIDs(Bruce)
+Pg_dump create indexes after tables are loaded for speed(Bruce)
+Pg_dumpall dumps all databases, and the user table
+Pginterface additions for NULL values(Bruce)
+Prevent postmaster from being run as root
+psql \h and \? is now readable(Bruce)
+psql allow backslashed, semicolons anywhere on the line(Bruce)
+psql changed command prompt for lines in query or in quotes(Bruce)
+psql char(3) now displays as (bp)char in \d output(Bruce)
+psql return code now more accurate(Bryan?)
+psql updated help syntax(Bruce)
+Re-visit and fix vacuum(Vadim)
+Reduce size of regression diffs, remove timezone name difference(Bruce)
+Remove compile-time parameters to enable binary distributions(Bryan)
+Reverse meaning of HBA masks(Bryan)
+Secure Authentication of local users(Bryan)
+Speed up vacuum(Vadim)
+Vacuum now had VERBOSE option(Bruce)
+
+Source tree changes
+-------------------
+All functions now have prototypes that are compared against the calls
+Allow asserts to be disabled easily from Makefile.global(Bruce)
+Change oid constants used in code to #define names
+Decoupled sparc and solaris defines(Kurt)
+Gcc -Wall compiles cleanly with warnings only from unfixable constructs
+Major include file reorganization/reduction(Marc)
+Make now stops on compile failure(Bryan)
+Makefile restructuring(Bryan, Marc)
+Merge bsdi_2_1 to bsdi(Bruce)
+Monitor program removed
+Name change from Postgres95 to PostgreSQL
+New config.h file(Marc, Bryan)
+PG_VERSION now set to 6.0 and used by postmaster
+Portability additions, including Ultrix, DG/UX, AIX, and Solaris
+Reduced the number of #define's, centralized #define's
+Remove duplicate OIDS in system tables(Dan)
+Remove duplicate system catalog info or report mismatches(Dan)
+Removed many os-specific #define's
+Restructured object file generation/location(Bryan, Marc)
+Restructured port-specific file locations(Bryan, Marc)
+Unused/uninitialized variables corrected
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-1-09">
+<title>Release 1.09</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1996-11-04</simpara>
+  </note>
+
+<para>
+Sorry, we didn't keep track of changes from 1.02 to 1.09.  Some of
+the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
+releases.
+</para>
+</sect1>
+
+<sect1 id="release-1-02">
+<title>Release 1.02</title>
+
+  <note>
+  <title>Release date</title>
+  <simpara>1996-08-01</simpara>
+  </note>
+
+<sect2>
+<title>Migration from version 1.02 to version 1.02.1</title>
+
+<para>
+Here is a new migration file for 1.02.1.  It includes the 'copy' change
+and a script to convert old <acronym>ASCII</acronym> files.
+</para>
+<note>
+<para>
+The following notes are for the benefit of users who want to migrate
+databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
+</para>
+<para>
+If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
+to migrate old databases, you do not need to read any further.
+</para>
+</note>
+
+<para>
+In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
+version 1.02.1, the following steps are required:
+</para>
+<procedure>
+<step>
+<para>
+Start up a new 1.02.1 postmaster
+</para>
+</step>
+<step>
+<para>
+Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
+  databases.  This is done by running the new 1.02.1 server against
+  your own 1.01 or 1.02 database and applying the queries attached at
+  the end of the file.   This can be done easily through <command>psql</>.  If your
+  1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
+  from the end of this file and saved them in <filename>addfunc.sql</filename>:
+<programlisting>
+       % psql testdb -f addfunc.sql
+</programlisting>
+
+Those upgrading 1.02 databases will get a warning when executing the
+last two statements in the file because they are already present in 1.02.  This is
+not a cause for concern.
+</para>
+</step>
+</procedure>
+</sect2>
+
+<sect2>
+<title>Dump/Reload Procedure</title>
+
+<para>
+If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
+stdout</literal> generated with a previous version, you will need to run the
+attached <command>sed</command> script on the ASCII file before loading it into the
+database.  The old format used '.' as end-of-data, while '\.' is now the
+end-of-data marker.  Also, empty strings are now loaded in as '' rather
+than NULL. See the copy manual page for full details.
+
+<programlisting>
+       sed 's/^\.$/\\./g' &lt;in_file &gt;out_file
+</programlisting>
+</para>
+<para>
+If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
+end-of-data character, and hence no conversion necessary.
+
+<programlisting>
+-- following lines added by agc to reflect the case-insensitive
+-- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
+create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
+create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
+create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
+create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
+</programlisting>
+</para>
+</sect2>
+
+<sect2>
+<title>Changes</title>
+
+<para>
+<programlisting>
+Source code maintenance and development
+ * worldwide team of volunteers
+ * the source tree now in CVS at ftp.ki.net
+
+Enhancements
+ * psql (and underlying libpq library) now has many more options for
+   formatting output, including HTML
+ * pg_dump now output the schema and/or the data, with many fixes to
+   enhance completeness.
+ * psql used in place of monitor in administration shell scripts.
+   monitor to be deprecated in next release.
+ * date/time functions enhanced
+ * NULL insert/update/comparison fixed/enhanced
+ * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
+
+Bug Fixes (almost too numerous to mention)
+ * indexes
+ * storage management
+ * check for NULL pointer before dereferencing
+ * Makefile fixes
+
+New Ports
+ * added SolarisX86 port
+ * added BSD/OS 2.1 port
+ * added DG/UX port
+</programlisting>
+</para>
+<!--
+Contributors (apologies to any missed)
+ * Kurt J. Lidl &lt;[email protected]&gt;
+        (missed in first run, but no less important)
+ * Erich Stamberger &lt;[email protected]&gt;
+ * Jason Wright &lt;[email protected]&gt;
+ * Cees de Groot &lt;[email protected]&gt;
+ * [email protected] (Michael Siebenborn (6929))
+ * Brian E. Gallew &lt;[email protected]&gt;
+ * Vadim B. Mikheev &lt;[email protected]&gt;
+ * Adam Sussman &lt;[email protected]&gt;
+ * Chris Dunlop &lt;[email protected]&gt;
+ * Marc G. Fournier &lt;[email protected]&gt;
+ * Dan McGuirk &lt;[email protected]&gt;
+ * Dr_George_D_Detlefsen &lt;[email protected]&gt;
+ * Erich Stamberger &lt;[email protected]&gt;
+ * Massimo Dal Zotto &lt;[email protected]&gt;
+ * Randy Kunkee &lt;[email protected]&gt;
+ * Rick Weldon &lt;[email protected]&gt;
+ * Thomas van Reimersdahl &lt;[email protected]&gt;
+ * david bennett &lt;[email protected]&gt;
+ * Julian Assange &lt;[email protected]&gt;
+ * Bruce Momjian &lt;[email protected]&gt;
+ * Paul "Shag" Walmsley &lt;[email protected]&gt;
+ * "Alistair G. Crooks" &lt;[email protected]&gt;
+-->
+</sect2>
+</sect1>
+
+<sect1 id="release-1-01">
+<title>Release 1.01</title>
+
+   <note>
+   <title>Release date</title>
+   <simpara>1996-02-23</simpara>
+   </note>
+
+
+<sect2>
+<title>Migration from version 1.0 to version 1.01</title>
+
+<para>
+The following notes are for the benefit of users who want to migrate
+databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
+</para>
+<para>
+If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
+to migrate old databases, you do not need to read any further.
+</para>
+<para>
+In order to <productname>Postgres95</> version 1.01 with databases created with
+<productname>Postgres95</> version 1.0, the following steps are required:
+</para>
+<procedure>
+<step>
+<para>
+Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
+   and <symbol>OIDNAMELEN</symbol> to 20.
+</para>
+</step>
+<step>
+<para>
+Decide whether you want to use Host based authentication.
+</para>
+<substeps>
+<step>
+<para>
+If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
+   directory (typically the value of your <envar>$PGDATA</envar>).  <filename>src/libpq/pg_hba</filename>
+   shows an example syntax.
+</para>
+</step>
+<step>
+<para>
+If you do not want host-based authentication, you can comment out
+   the line:
+<programlisting>
+        HBA = 1
+</programlisting>
+   in <filename>src/Makefile.global</filename>
+</para>
+<para>
+   Note that host-based authentication is turned on by default, and if
+   you do not take steps A or B above, the out-of-the-box 1.01 will
+   not allow you to connect to 1.0 databases.
+</para>
+</step>
+</substeps>
+</step>
+
+<step>
+<para>
+Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
+</para>
+</step>
+<step>
+<para>
+Before doing anything else, terminate your 1.0 postmaster, and
+   backup your existing <envar>$PGDATA</envar> directory.
+</para>
+</step>
+<step>
+<para>
+Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
+   path up so that 1.01 binaries are being used.
+</para>
+</step>
+<step>
+<para>
+Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
+</para>
+</step>
+<step>
+<para>
+Start up a new 1.01 postmaster
+</para>
+</step>
+<step>
+<para>
+Add the new built-in functions and operators of 1.01 to 1.0
+   databases.  This is done by running the new 1.01 server against
+   your own 1.0 database and applying the queries attached and saving
+   in the file 1.0_to_1.01.sql.   This can be done easily through <command>psql</command>.
+   If your 1.0 database is name <literal>testdb</literal>:
+
+<programlisting>
+        % psql testdb -f 1.0_to_1.01.sql
+</programlisting>
+
+and then execute the following commands (cut and paste from here):
+
+<programlisting>
+-- add builtin functions that are new to 1.01
+
+create function int4eqoid (int4, oid) returns bool as 'foo'
+language 'internal';
+create function oideqint4 (oid, int4) returns bool as 'foo'
+language 'internal';
+create function char2icregexeq (char2, text) returns bool as 'foo'
+language 'internal';
+create function char2icregexne (char2, text) returns bool as 'foo'
+language 'internal';
+create function char4icregexeq (char4, text) returns bool as 'foo'
+language 'internal';
+create function char4icregexne (char4, text) returns bool as 'foo'
+language 'internal';
+create function char8icregexeq (char8, text) returns bool as 'foo'
+language 'internal';
+create function char8icregexne (char8, text) returns bool as 'foo'
+language 'internal';
+create function char16icregexeq (char16, text) returns bool as 'foo'
+language 'internal';
+create function char16icregexne (char16, text) returns bool as 'foo'
+language 'internal';
+create function texticregexeq (text, text) returns bool as 'foo'
+language 'internal';
+create function texticregexne (text, text) returns bool as 'foo'
+language 'internal';
+
+-- add builtin functions that are new to 1.01
+
+create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
+create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
+create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
+create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
+create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
+create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
+create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
+create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
+create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
+create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
+create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
+create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
+</programlisting>
+</para>
+</step>
+</procedure>
+</sect2>
+
+<sect2>
+<title>Changes</title>
+
+<para>
+<programlisting>
+Incompatibilities:
+ * 1.01 is backwards compatible with 1.0 database provided the user
+   follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
+   If those steps are not taken, 1.01 is not compatible with 1.0 database.
+
+Enhancements:
+ * added PQdisplayTuples() to libpq and changed monitor and psql to use it
+ * added NeXT port (requires SysVIPC implementation)
+ * added CAST .. AS ... syntax
+ * added ASC and DESC key words
+ * added 'internal' as a possible language for CREATE FUNCTION
+   internal functions are C functions which have been statically linked
+   into the postgres backend.
+ * a new type "name" has been added for system identifiers (table names,
+   attribute names, etc.)  This replaces the old char16 type.   The
+   of name is set by the NAMEDATALEN #define in src/Makefile.global
+ * a readable reference manual that describes the query language.
+ * added host-based access control.  A configuration file ($PGDATA/pg_hba)
+   is used to hold the configuration data.  If host-based access control
+   is not desired, comment out HBA=1 in src/Makefile.global.
+ * changed regex handling to be uniform use of Henry Spencer's regex code
+   regardless of platform.  The regex code is included in the distribution
+ * added functions and operators for case-insensitive regular expressions.
+   The operators are ~* and !~*.
+ * pg_dump uses COPY instead of SELECT loop for better performance
+
+Bug fixes:
+ * fixed an optimizer bug that was causing core dumps when
+   functions calls were used in comparisons in the WHERE clause
+ * changed all uses of getuid to geteuid so that effective uids are used
+ * psql now returns non-zero status on errors when using -c
+ * applied public patches 1-14
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-1-0">
+<title>Release 1.0</title>
+
+   <note>
+   <title>Release date</title>
+   <simpara>1995-09-05</simpara>
+   </note>
+
+<sect2>
+<title>Changes</title>
+
+<para>
+<programlisting>
+Copyright change:
+ * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
+   and modifiable for any purpose.  Please read the COPYRIGHT file.
+   Thanks to Professor Michael Stonebraker for making this possible.
+
+Incompatibilities:
+ *  date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
+   EUROPEAN STYLE).  This follows SQL-92 specs.
+ *  "delimiters" is now a key word
+
+Enhancements:
+ *  sql LIKE syntax has been added
+ *  copy command now takes an optional USING DELIMITER specification.
+   delimiters can be any single-character string.
+ *  IRIX 5.3 port has been added.
+   Thanks to Paul Walmsley and others.
+ *  updated pg_dump to work with new libpq
+ *  \d has been added psql
+   Thanks to Keith Parks
+ *  regexp performance for architectures that use POSIX regex has been
+   improved due to caching of precompiled patterns.
+   Thanks to Alistair Crooks
+ *  a new version of libpq++
+   Thanks to William Wanders
+
+Bug fixes:
+ *  arbitrary userids can be specified in the createuser script
+ *  \c to connect to other databases in psql now works.
+ *  bad pg_proc entry for float4inc() is fixed
+ *  users with usecreatedb field set can now create databases without
+   having to be usesuper
+ *  remove access control entries when the entry no longer has any
+   privileges
+ *  fixed non-portable datetimes implementation
+ *  added kerberos flags to the src/backend/Makefile
+ *  libpq now works with kerberos
+ *  typographic errors in the user manual have been corrected.
+ *  btrees with multiple index never worked, now we tell you they don't
+   work when you try to use them
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-0-03">
+<title><productname>Postgres95</productname> Release 0.03</title>
+
+   <note>
+   <title>Release date</title>
+   <simpara>1995-07-21</simpara>
+   </note>
+
+<sect2>
+<title>Changes</title>
+<para>
+<programlisting>
+Incompatible changes:
+ * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
+   (due to system catalog changes and indexing structure changes).
+ * double-quote (") is deprecated as a quoting character for string literals;
+   you need to convert them to single quotes ('). <!-- " -->
+ * name of aggregates (eg. int4sum) are renamed in accordance with the
+   SQL standard (eg. sum).
+ * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
+ * float literals (eg. 3.14) are now of type float4 (instead of float8 in
+   previous releases); you might have to do typecasting if you depend on it
+   being of type float8.  If you neglect to do the typecasting and you assign
+   a float literal to a field of type float8, you might get incorrect values
+   stored!
+ * LIBPQ has been totally revamped so that frontend applications
+   can connect to multiple backends
+ * the usesysid field in pg_user has been changed from int2 to int4 to
+   allow wider range of Unix user ids.
+ * the netbsd/freebsd/bsd o/s ports have been consolidated into a
+   single BSD44_derived port.  (thanks to Alistair Crooks)
+
+SQL standard-compliance (the following details changes that makes postgres95
+more compliant to the SQL-92 standard):
+ * the following SQL types are now built-in: smallint, int(eger), float, real,
+   char(N), varchar(N), date and time.
+
+   The following are aliases to existing postgres types:
+                smallint -&gt; int2
+                integer, int -&gt; int4
+                float, real  -&gt; float4
+   char(N) and varchar(N) are implemented as truncated text types. In
+   addition, char(N) does blank-padding.
+ * single-quote (') is used for quoting string literals; '' (in addition to
+   \') is supported as means of inserting a single quote in a string
+ * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
+   (Also, aggregates can now be overloaded, i.e. you can define your
+   own MAX aggregate to take in a user-defined type.)
+ * CHANGE ACL removed. GRANT/REVOKE syntax added.
+   - Privileges can be given to a group using the "GROUP" key word.
+        For example:
+                GRANT SELECT ON foobar TO GROUP my_group;
+        The key word 'PUBLIC' is also supported to mean all users.
+
+        Privileges can only be granted or revoked to one user or group
+        at a time.
+
+        "WITH GRANT OPTION" is not supported.  Only class owners can change
+        access control
+   - The default access control is to grant users readonly access.
+     You must explicitly grant insert/update access to users.  To change
+     this, modify the line in
+                src/backend/utils/acl.h
+     that defines ACL_WORLD_DEFAULT
+
+Bug fixes:
+ * the bug where aggregates of empty tables were not run has been fixed. Now,
+   aggregates run on empty tables will return the initial conditions of the
+   aggregates. Thus, COUNT of an empty  table will now properly return 0.
+   MAX/MIN of an empty table will return a row of value NULL.
+ * allow the use of \; inside the monitor
+ * the LISTEN/NOTIFY asynchronous notification mechanism now work
+ * NOTIFY in rule action bodies now work
+ * hash indexes work, and access methods in general should perform better.
+   creation of large btree indexes should be much faster.  (thanks to Paul
+   Aoki)
+
+Other changes and enhancements:
+ * addition of an EXPLAIN statement used for explaining the query execution
+   plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
+   the query).
+ * WARN and NOTICE messages no longer have timestamps on them. To turn on
+   timestamps of error messages, uncomment the line in
+   src/backend/utils/elog.h:
+        /* define ELOG_TIMESTAMPS */
+ * On an access control violation, the message
+        "Either no such class or insufficient privilege"
+   will be given.  This is the same message that is returned when
+   a class is not found.  This dissuades non-privileged users from
+   guessing the existence of privileged classes.
+ * some additional system catalog changes have been made that are not
+   visible to the user.
+
+libpgtcl changes:
+ * The -oid option has been added to the "pg_result" tcl command.
+   pg_result -oid returns oid of the last row inserted.   If the
+   last command was not an INSERT, then pg_result -oid returns "".
+ * the large object interface is available as pg_lo* tcl commands:
+   pg_lo_open, pg_lo_close, pg_lo_creat, etc.
+
+Portability enhancements and New Ports:
+ * flex/lex problems have been cleared up.  Now, you should be able to use
+   flex instead of lex on any platforms.  We no longer make assumptions of
+   what lexer you use based on the platform you use.
+ * The Linux-ELF port is now supported.  Various configuration have been
+   tested:  The following configuration is known to work:
+        kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
+   with everything in ELF format,
+
+New utilities:
+ * ipcclean added to the distribution
+   ipcclean usually does not need to be run, but if your backend crashes
+   and leaves shared memory segments hanging around, ipcclean will
+   clean them up for you.
+
+New documentation:
+ * the user manual has been revised and libpq documentation added.
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-0-02">
+<title><productname>Postgres95</productname> Release 0.02</title>
+
+   <note>
+   <title>Release date</title>
+   <simpara>1995-05-25</simpara>
+   </note>
+
+<sect2>
+<title>Changes</title>
+
+<para>
+<programlisting>
+Incompatible changes:
+ * The SQL statement for creating a database is 'CREATE DATABASE' instead
+   of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
+   of 'DESTROYDB'. However, the names of the executables 'createdb' and
+   'destroydb' remain the same.
+
+New tools:
+ * pgperl - a Perl (4.036) interface to Postgres95
+ * pg_dump - a utility for dumping out a postgres database into a
+        script file containing query commands. The script files are in a ASCII
+        format and can be used to reconstruct the database, even on other
+        machines and other architectures. (Also good for converting
+        a Postgres 4.2 database to Postgres95 database.)
+
+The following ports have been incorporated into postgres95-beta-0.02:
+ * the NetBSD port by Alistair Crooks
+ * the AIX port by Mike Tung
+ * the Windows NT port by Jon Forrest (more stuff but not done yet)
+ * the Linux ELF port by Brian Gallew
+
+The following bugs have been fixed in postgres95-beta-0.02:
+ * new lines not escaped in COPY OUT and problem with COPY OUT when first
+   attribute is a '.'
+ * cannot type return to use the default user id in createuser
+ * SELECT DISTINCT on big tables crashes
+ * Linux installation problems
+ * monitor doesn't allow use of 'localhost' as PGHOST
+ * psql core dumps when doing \c or \l
+ * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
+ * libpgtcl has a hard-wired default port number
+ * SELECT DISTINCT INTO TABLE hangs
+ * CREATE TYPE doesn't accept 'variable' as the internallength
+ * wrong result using more than 1 aggregate in a SELECT
+</programlisting>
+</para>
+</sect2>
+</sect1>
+
+<sect1 id="release-0-01">
+<title><productname>Postgres95</productname> Release 0.01</title>
+
+   <note>
+   <title>Release date</title>
+   <simpara>1995-05-01</simpara>
+   </note>
+
+<para>
+Initial release.
+</para>
+</sect1>
+
+<![IGNORE[
+  <sect1 id="timing-results">
+   <title>Timing Results</title>
+
+   <para>
+    These timing results are from running the regression test with the commands
+
+    <programlisting>
+% cd src/test/regress
+% make all
+% time make runtest
+    </programlisting>
+   </para>
+   <para>
+    Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
+    to run, presumably due to the scheduling vagaries of multitasking systems.
+   </para>
+
+   <sect2>
+    <title>Version 6.5</title>
+
+    <para>
+     As has been the case for previous releases, timing between
+     releases is not directly comparable since new regression tests
+     have been added. In general, 6.5 is faster than previous
+     releases.
+    </para>
+
+    <para>
+     Timing with <function>fsync()</function> disabled:
+
+     <programlisting>
+  Time   System
+  02:00  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
+  04:38  Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
+     </programlisting>
+    </para>
+
+    <para>
+     Timing with <function>fsync()</function> enabled:
+
+     <programlisting>
+  Time   System
+  04:21  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
+     </programlisting>
+
+     For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
+     disks leads to a 50% improvement in speed on the regression test.
+    </para>
+   </sect2>
+
+<sect2>
+<title>Version 6.4beta</title>
+
+<para>
+The times for this release are not directly comparable to those for previous releases
+since some additional regression tests have been included.
+In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
+</para>
+<para>
+<programlisting>
+  Time   System
+  02:26  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
+</programlisting>
+</para>
+</sect2>
+
+<sect2>
+<title>Version 6.3</title>
+
+<para>
+The times for this release are not directly comparable to those for previous releases
+since some additional regression tests have been included and some obsolete tests involving
+time travel have been removed.
+In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
+</para>
+<para>
+<programlisting>
+  Time   System
+  02:30  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
+  04:12  Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
+</programlisting>
+</para>
+</sect2>
+
+<sect2>
+<title>Version 6.1</title>
+
+<para>
+<programlisting>
+  Time   System
+  06:12  Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
+  12:06  P-100, 48MB, Linux 2.0.29, gcc
+  39:58  Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
+</programlisting>
+</para>
+</sect2>
+</sect1>
+]]>
index 52e91fedc0e5a1606a3fbfd1f3e8fa9621675622..12b25c3a132624c20492a96befe40cccfeffdab6 100644 (file)
@@ -1,15 +1,16 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.235.2.67 2009/03/12 22:36:46 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.235.2.68 2009/05/02 20:18:21 tgl Exp $ -->
 <!--
 
 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,10630 +63,14 @@ do it for earlier branch release files.
    review, so each item is truly a community effort.
   </para>
 
- <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>
+<!--
+  To add a new major-release series, add an entry here and in filelist.sgml.
+  Follow the naming convention, or you'll confuse generate_history.pl.
 
-<listitem><para>Fix 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>
-     <para>
-      The entire regular expression module has been replaced with a
-      new version by Henry Spencer, originally written for Tcl.  The
-      code greatly improves performance and supports several flavors
-      of regular expressions.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Function-inlining for simple SQL functions
-    </term>
-
-    <listitem>
-     <para>
-      Simple SQL functions can now be inlined by including their SQL
-      in the main query.  This improves performance by eliminating
-      per-call overhead.  That means simple SQL functions now
-      behave like macros.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Full support for IPv6 connections and IPv6 address data types
-    </term>
-
-    <listitem>
-     <para>
-      Previous releases allowed only IPv4 connections, and the IP
-      data types only supported IPv4 addresses. This release adds
-      full IPv6 support in both of these areas.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Major improvements in SSL performance and reliability
-    </term>
-
-    <listitem>
-     <para>
-      Several people very familiar with the SSL API have overhauled
-      our SSL code to improve SSL key negotiation and error
-      recovery.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Make free space map efficiently reuse empty index pages,
-     and other free space management improvements
-    </term>
-
-    <listitem>
-     <para>
-      In previous releases, B-tree index pages that were left empty
-      because of deleted rows could only be reused by rows with
-      index values similar to the rows originally indexed on that
-      page. In 7.4, <command>VACUUM</command> records empty index
-      pages and allows them to be reused for any future index rows.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     SQL-standard information schema
-    </term>
-
-    <listitem>
-     <para>
-      The information schema provides a standardized and stable way
-      to access information about the schema objects defined in a
-      database.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Cursors conform more closely to the SQL standard
-    </term>
-
-    <listitem>
-     <para>
-      The commands <command>FETCH</command> and
-      <command>MOVE</command> have been overhauled to conform more
-      closely to the SQL standard.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Cursors can exist outside transactions
-    </term>
-
-    <listitem>
-     <para>
-      These cursors are also called holdable cursors.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     New client-to-server protocol
-    </term>
-
-    <listitem>
-     <para>
-      The new protocol adds error codes, more status information,
-      faster startup, better support for binary data transmission,
-      parameter values separated from SQL commands, prepared
-      statements available at the protocol level, and cleaner
-      recovery from <command>COPY</command> failures.  The older
-      protocol is still supported by both server and clients.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     <application>libpq</application> and
-     <application>ECPG</application> applications are now fully
-     thread-safe
-    </term>
-
-    <listitem>
-     <para>
-      While previous <application>libpq</application> releases
-      already supported threads, this release improves thread safety
-      by fixing some non-thread-safe code that was used during
-      database connection startup.  The <command>configure</command>
-      option <option>--enable-thread-safety</option> must be used to
-      enable this feature.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     New version of full-text indexing
-    </term>
-
-    <listitem>
-     <para>
-      A new full-text indexing suite is available in
-      <filename>contrib/tsearch2</filename>.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     New autovacuum tool
-    </term>
-
-    <listitem>
-     <para>
-      The new autovacuum tool in
-      <filename>contrib/autovacuum</filename> monitors the database
-      statistics tables for
-      <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
-      activity and automatically vacuums tables when needed.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Array handling has been improved and moved into the server core
-    </term>
-
-    <listitem>
-     <para>
-      Many array limitations have been removed, and arrays behave
-      more like fully-supported data types.
-     </para>
-    </listitem>
-   </varlistentry>
-
-  </variablelist>
- </sect2>
-
- <sect2>
-  <title>Migration to Version 7.4</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>
-     The server-side autocommit setting was removed and
-     reimplemented in client applications and languages.
-     Server-side autocommit was causing too many problems with
-     languages and applications that wanted to control their own
-     autocommit behavior, so autocommit was removed from the server
-     and added to individual client APIs as appropriate.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Error message wording has changed substantially in this
-     release.  Significant effort was invested to make the messages
-     more consistent and user-oriented.  If your applications try to
-     detect different error conditions by parsing the error message,
-     you are strongly encouraged to use the new error code facility instead.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Inner joins using the explicit <literal>JOIN</literal> syntax
-     might behave differently because they are now better
-     optimized.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     A number of server configuration parameters have been renamed
-     for clarity, primarily those related to
-     logging.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
-     does nothing.  In prior releases, <literal>FETCH 0</literal>
-     would fetch all remaining rows, and <literal>MOVE 0</literal>
-     would move to the end of the cursor.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <command>FETCH</command> and <command>MOVE</command> now return
-     the actual number of rows fetched/moved, or zero if at the
-     beginning/end of the cursor.  Prior releases would return the
-     row count passed to the command, not the number of rows
-     actually fetched or moved.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <command>COPY</command> now can process files that use
-     carriage-return or carriage-return/line-feed end-of-line
-     sequences. Literal carriage-returns and line-feeds are no
-     longer accepted in data values; use <literal>\r</literal> and
-     <literal>\n</literal> instead.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Trailing spaces are now trimmed when converting from type
-     <type>char(<replaceable>n</>)</type> to
-     <type>varchar(<replaceable>n</>)</type> or <type>text</type>.
-     This is what most people always expected to happen anyway.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The data type <type>float(<replaceable>p</>)</type> now
-     measures <replaceable>p</> in binary digits, not decimal
-     digits.  The new behavior follows the SQL standard.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Ambiguous date values now must match the ordering specified by
-     the <varname>datestyle</varname> setting.  In prior releases, a
-     date specification of <literal>10/20/03</> was interpreted as a
-     date in October even if <varname>datestyle</> specified that
-     the day should be first.  7.4 will throw an error if a date
-     specification is invalid for the current setting of
-     <varname>datestyle</>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The functions <function>oidrand</function>,
-     <function>oidsrand</function>, and
-     <function>userfntest</function> have been removed.  These
-     functions were determined to be no longer useful.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     String literals specifying time-varying date/time values, such
-     as <literal>'now'</literal> or <literal>'today'</literal> will
-     no longer work as expected in column default expressions; they
-     now cause the time of the table creation to be the default, not
-     the time of the insertion.  Functions such as
-     <function>now()</>, <function>current_timestamp</>, or
-     <function>current_date</function> should be used instead.
-    </para>
-
-    <para>
-     In previous releases, there was special code so that strings
-     such as <literal>'now'</literal> were interpreted at
-     <command>INSERT</> time and not at table creation time, but
-     this work around didn't cover all cases.  Release 7.4 now
-     requires that defaults be defined properly using functions such
-     as <function>now()</> or <function>current_timestamp</>. These
-     will work in all situations.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The dollar sign (<literal>$</>) is no longer allowed in
-     operator names.  It can instead be a non-first character in
-     identifiers.  This was done to improve compatibility with other
-     database systems, and to avoid syntax problems when parameter
-     placeholders (<literal>$<replaceable>n</></>) are written
-     adjacent to operators.
-    </para>
-   </listitem>
-
-  </itemizedlist>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-  <para>
-   Below you will find a detailed account of the changes between
-   release 7.4 and the previous major release.
-  </para>
-
- <sect3>
-  <title>Server Operation Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>
-     Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
-     Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Fix SSL to handle errors cleanly (Nathan Mueller)
-    </para>
-    <para>
-     In prior releases, certain SSL API error reports were not
-     handled correctly.  This release fixes those problems.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     SSL protocol security and performance improvements (Sean Chittenden)
-    </para>
-    <para>
-     SSL key renegotiation was happening too frequently, causing poor
-     SSL performance.  Also, initial key handling was improved.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Print lock information when a deadlock is detected (Tom)
-    </para>
-    <para>
-     This allows easier debugging of deadlock situations.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Update <filename>/tmp</filename> socket modification times
-     regularly to avoid their removal (Tom)
-    </para>
-    <para>
-     This should help prevent <filename>/tmp</filename> directory
-     cleaner administration scripts from removing server socket
-     files.
-    </para>
-   </listitem>
-
-   <listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
-
-   <listitem>
-    <para>Make B-tree indexes fully WAL-safe (Tom)</para>
-    <para>
-     In prior releases, under certain rare cases, a server crash
-     could cause B-tree indexes to become corrupt. This release
-     removes those last few rare cases.
-    </para>
-   </listitem>
-
-   <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     Fix inconsistent index lookups during split of first root page (Tom)
-    </para>
-    <para>
-     In prior releases, when a single-page index split into two
-     pages, there was a brief period when another database session
-     could miss seeing an index entry.  This release fixes that rare
-     failure case.
-    </para>
-   </listitem>
-
-   <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
-
-   <listitem>
-    <para>Preserve free space information between server restarts (Tom)</para>
-    <para>
-     In prior releases, the free space map was not saved when the
-     postmaster was stopped, so newly started servers had no free
-     space information. This release saves the free space map, and
-     reloads it when the server is restarted.
-    </para>
-   </listitem>
-
-   <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
-   <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
-   <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
-   <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
-   <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
-   <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
-   <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Performance Improvements</title>
-
-  <itemizedlist>
-   <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
-   <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
-   <listitem><para>Allow multikey hash joins (Tom)</para></listitem>
-   <listitem><para>Improve constant folding (Tom)</para></listitem>
-   <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
-
-   <listitem>
-    <para>Reduce memory usage for queries using complex functions (Tom)</para>
-    <para>
-     In prior releases, functions returning allocated memory would
-     not free it until the query completed. This release allows the
-     freeing of function-allocated memory when the function call
-     completes, reducing the total memory used by functions.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Improve GEQO optimizer performance (Tom)</para>
-    <para>
-     This release fixes several inefficiencies in the way the GEQO optimizer
-     manages potential query paths.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
-     tables (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
-     performance (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow most <literal>IN</literal> subqueries to be processed as
-     joins (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Pattern matching operations can use indexes regardless of
-     locale (Peter)
-    </para>
-    <para>
-     There is no way for non-ASCII locales to use the standard
-     indexes for <literal>LIKE</literal> comparisons. This release
-     adds a way to create a special index for
-     <literal>LIKE</literal>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
-    <para>
-     For shared libraries that require a long time to load, this
-     option is available so the library can be preloaded in the
-     postmaster and inherited by all database sessions.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Improve optimizer cost computations, particularly for subqueries (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
-     means <literal>a.x = 42</literal> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow hash/merge joins on complex joins (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow hash joins for more data types (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow join optimization of explicit inner joins, disable with
-     <varname>join_collapse_limit</varname> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add parameter <varname>from_collapse_limit</varname> to control
-     conversion of subqueries to joins (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Use faster and more powerful regular expression code from Tcl
-     (Henry Spencer, Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Use bit-mapped relation sets in the optimizer (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Improve connection startup time (Tom)</para>
-    <para>
-     The new client/server protocol requires fewer network packets to
-     start a database session.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Improve trigger/constraint performance (Stephan)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Fix hash indexes which were broken in rare cases (Tom)
-    </para>
-   </listitem>
-
-   <listitem><para>Improve hash index concurrency and speed (Tom)</para>
-    <para>
-     Prior releases suffered from poor hash index performance,
-     particularly for high concurrency situations. This release fixes
-     that, and the development group is interested in reports
-     comparing B-tree and hash index performance.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
-    <para>
-     Certain CPU's perform faster data copies when addresses are
-     32-byte aligned.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
-    <para>
-     <type>numeric</type> used to be stored in base 100. The new code
-     uses base 10000, for significantly better performance.
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Server Configuration Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
-    <para>
-     This was done so most parameters that control the server logs
-     begin with <literal>log_</>.
-    </para>
-   </listitem>
-
-   <listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
-   <listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
-   <listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
-
-   <listitem>
-    <para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
-    <para>
-     In prior releases, it was difficult to determine if checkpoint
-     was happening too frequently. This feature adds a warning to the
-     server logs when excessive checkpointing happens.
-    </para>
-   </listitem>
-
-   <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     Change debug server log messages to output as <literal>DEBUG</>
-     rather than <literal>LOG</> (Bruce)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
-    <para>
-     This is a security feature so non-superusers cannot disable
-     logging that was enabled by the administrator.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <varname>log_min_messages</>/<varname>client_min_messages</> now
-     controls <varname>debug_*</> output (Bruce)
-    </para>
-    <para>
-     This centralizes client debug information so all debug output
-     can be sent to either the client or server logs.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
-    <para>
-     This allows Mac OS X hosts to query the network for available
-     <productname>PostgreSQL</productname> servers.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add ability to print only slow statements using
-     <varname>log_min_duration_statement</varname>
-     (Christopher)
-    </para>
-    <para>
-     This is an often requested debugging feature that allows
-     administrators to see only slow queries in their server logs.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
-    <para>
-     This allows administrators to merge the host IP address and
-     netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
-    </para>
-   </listitem>
-
-   <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
-
-   <listitem>
-    <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
-    <para>
-     This works with the new error reporting feature to supply
-     additional error information like hints, file names and line
-     numbers.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
-    <para>
-     This option is useful for administration tools that need to know
-     the configuration variable names and their minimums, maximums,
-     defaults, and descriptions.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add new columns in <literal>pg_settings</literal>:
-     <literal>context</>, <literal>type</>, <literal>source</>,
-     <literal>min_val</>, <literal>max_val</> (Joe)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make default <varname>shared_buffers</> 1000 and
-     <varname>max_connections</> 100, if possible (Tom)
-    </para>
-    <para>
-     Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
-     would start on even very old systems. This release tests the
-     amount of shared memory allowed by the platform and selects more
-     reasonable default values if possible.  Of course, users are
-     still encouraged to evaluate their resource load and size
-     <varname>shared_buffers</varname> accordingly.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     New <filename>pg_hba.conf</filename> record type
-     <literal>hostnossl</> to prevent SSL connections (Jon
-     Jensen)
-    </para>
-    <para>
-     In prior releases, there was no way to prevent SSL connections
-     if both the client and server supported SSL. This option allows
-     that capability.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Remove parameter <varname>geqo_random_seed</varname>
-     (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Query Changes</title>
-
-  <itemizedlist>
-   <listitem><para>New SQL-standard information schema (Peter)</para></listitem>
-   <listitem><para>Add read-only transactions (Peter)</para></listitem>
-   <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
-
-   <listitem>
-    <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
-    <para>
-     In prior releases, only the superuser could see query strings
-     using <literal>pg_stat_activity</literal>. Now ordinary users
-     can see their own query strings.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
-    <para>
-     The SQL standard says that an aggregate function appearing
-     within a nested subquery belongs to the outer query if its
-     argument contains only outer-query variables.  Prior
-     <productname>PostgreSQL</productname> releases did not handle
-     this fine point correctly.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
-    <para>
-     By default, tables mentioned in the query are automatically
-     added to the <literal>FROM</> clause if they are not already
-     there.  This is compatible with historic
-     <productname>POSTGRES</productname> behavior but is contrary to
-     the SQL standard.  This option allows selecting
-     standard-compatible behavior.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
-    <para>
-     This allows <command>UPDATE</command> to set a column to its
-     declared default value.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
-    <para>
-     In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
-     only use constants, not expressions.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Object Manipulation Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
-   </listitem>
-
-   <listitem>
-    <para>Add statement-level triggers (Neil)</para>
-    <para>
-     While this allows a trigger to fire at the end of a statement,
-     it does not allow the trigger to access all rows modified by the
-     statement.  This capability is planned for a future release.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add check constraints for domains (Rod)</para>
-    <para>
-     This greatly increases the usefulness of domains by allowing
-     them to use check constraints.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add <command>ALTER DOMAIN</command> (Rod)</para>
-    <para>
-     This allows manipulation of existing domains.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Fix several zero-column table bugs (Tom)</para>
-    <para>
-     <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
-     that occur when using such tables.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
-    <para>
-     In prior releases, <literal>ALTER TABLE ... ADD
-     PRIMARY</literal> would add a unique index, but not a not-null
-     constraint.  That is fixed in this release.
-    </para>
-   </listitem>
-
-   <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
-    <para>
-     This allows control over whether new and updated rows will have
-     an OID column.  This is most useful for saving storage space.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
-     increment, cache, cycle values (Rod)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
-    <para>
-     This command is used by <command>pg_dump</command> to record the
-     cluster column for each table previously clustered. This
-     information is used by database-wide cluster to cluster all
-     previously clustered tables.
-    </para>
-   </listitem>
-
-   <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
-   <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
-   <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     Allow copying table schema using <literal>LIKE
-     <replaceable>subtable</replaceable></literal>, also SQL:2003
-     feature <literal>INCLUDING DEFAULTS</literal> (Rod)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add <literal>WITH GRANT OPTION</literal> clause to
-     <command>GRANT</command> (Peter)
-    </para>
-    <para>
-     This enabled <command>GRANT</command> to give other users the
-     ability to grant privileges on a object.
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Utility Command Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
-    <para>
-     This adds the ability for a table to be dropped or all rows
-     deleted on transaction commit.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
-    <para>
-     In previous releases, cursors were removed at the end of the
-     transaction that created them. Cursors can now be created with
-     the <literal>WITH HOLD</literal> option, which allows them to
-     continue to be accessed after the creating transaction has
-     committed.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
-    <para>
-     In previous releases, <literal>FETCH 0</literal> fetched all
-     remaining rows, and <literal>MOVE 0</literal> moved to the end
-     of the cursor.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Cause <command>FETCH</command> and <command>MOVE</command> to
-     return the number of rows fetched/moved, or zero if at the
-     beginning/end of cursor, per SQL standard (Bruce)
-    </para>
-    <para>
-     In prior releases, the row count returned by
-     <command>FETCH</command> and <command>MOVE</command> did not
-     accurately reflect the number of rows processed.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Properly handle <literal>SCROLL</literal> with cursors, or
-    report an error (Neil)</para>
-    <para>
-     Allowing random access (both forward and backward scrolling) to
-     some kinds of queries cannot be done without some additional
-     work. If <literal>SCROLL</literal> is specified when the cursor
-     is created, this additional work will be performed. Furthermore,
-     if the cursor has been created with <literal>NO SCROLL</literal>,
-     no random access is allowed.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Implement SQL-compatible options <literal>FIRST</>,
-     <literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
-     <literal>RELATIVE <replaceable>n</></> for
-     <command>FETCH</command> and <command>MOVE</command> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
-   </listitem>
-
-   <listitem>
-    <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
-    <para>
-     This allows all previously clustered tables in a database to be
-     reclustered with a single command.
-    </para>
-   </listitem>
-
-   <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
-
-   <listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
-
-   <listitem>
-    <para>
-     Disallow literal carriage return as a data value,
-     backslash-carriage-return and <literal>\r</> are still allowed
-     (Bruce)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
-    <para>
-     <command>TRUNCATE</command> can now be used inside a
-     transaction. If the transaction aborts, the changes made by the
-     <command>TRUNCATE</command> are automatically rolled back.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow prepare/bind of utility commands like
-     <command>FETCH</command> and <command>EXPLAIN</command> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
-   </listitem>
-
-   <listitem>
-    <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
-    <para>
-     In prior releases, functional indexes only supported a simple
-     function applied to one or more column names.  This release
-     allows any type of scalar expression.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Have <command>SHOW TRANSACTION ISOLATION</command> match input
-     to <command>SET TRANSACTION ISOLATION</command>
-     (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-      Have <command>COMMENT ON DATABASE</command> on nonlocal
-      database generate a warning, rather than an error (Rod)
-     </para>
-
-    <para>
-     Database comments are stored in database-local tables so
-     comments on a database have to be stored in each database.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
-    <para>
-     This allows system tables to be reindexed without the
-     requirement of a standalone session, which was necessary in
-     previous releases. The only tables that now require a standalone
-     session for reindexing are the global system tables
-     <literal>pg_database</>, <literal>pg_shadow</>, and
-     <literal>pg_group</>.
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Data Type and Function Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>
-     New server parameter <varname>extra_float_digits</varname> to
-     control precision display of floating-point numbers (Pedro
-     Ferreira, Tom)
-    </para>
-    <para>
-     This controls output precision which was causing regression
-     testing problems.
-    </para>
-   </listitem>
-
-   <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     Remove rarely used functions <function>oidrand</>,
-     <function>oidsrand</>, and <function>userfntest</> functions
-     (Neil)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
-    <para>
-     An MD5 function was frequently requested. For more complex
-     encryption capabilities, use
-     <filename>contrib/pgcrypto</filename>.
-    </para>
-   </listitem>
-
-   <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
-
-   <listitem>
-    <para>
-     Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
-     <type>timestamp without time zone</type> is assumed to be in
-     local time, not GMT (Tom)
-    </para>
-   </listitem>
-
-   <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
-   <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
-   <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
-   <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
-
-   <listitem>
-    <para>
-     Allow functions that can take any argument data type and return
-     any data type, using <type>anyelement</type> and
-     <type>anyarray</type> (Joe)
-    </para>
-    <para>
-     This allows the creation of functions that can work with any
-     data type.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
-     <literal>ARRAY[['a','b'],['c','d']]</literal>, or
-     <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow proper comparisons for arrays, including <literal>ORDER
-     BY</literal> and <literal>DISTINCT</literal> support
-     (Joe)
-    </para>
-   </listitem>
-
-   <listitem><para>Allow indexes on array columns (Joe)</para></listitem>
-   <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
-
-   <listitem>
-    <para>
-     Allow <literal>WHERE</literal> qualification
-     <literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
-     (<replaceable>array_expr</>)</literal> (Joe)
-    </para>
-    <para>
-     This allows arrays to behave like a list of values, for purposes
-     like <literal>SELECT * FROM tab WHERE col IN
-     (array_val)</literal>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     New array functions <function>array_append</>,
-     <function>array_cat</>, <function>array_lower</>,
-     <function>array_prepend</>, <function>array_to_string</>,
-     <function>array_upper</>, <function>string_to_array</> (Joe)
-    </para>
-   </listitem>
-
-   <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
-   <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
-
-   <listitem>
-    <para>
-     Allow 60 in seconds fields of <type>time</type>,
-     <type>timestamp</type>, and <type>interval</type> input values
-     (Tom)
-    </para>
-    <para>
-     Sixty-second values are needed for leap seconds.
-    </para>
-   </listitem>
-
-   <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
-
-   <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
-
-   <listitem>
-    <para>
-     Trim trailing spaces when <type>char</type> is cast to
-     <type>varchar</> or <type>text</> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make <type>float(<replaceable>p</>)</> measure the precision
-     <replaceable>p</> in binary digits, not decimal digits
-     (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
-   </listitem>
-
-   <listitem>
-    <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Have <literal>SHOW datestyle</literal> generate output similar
-     to that used by <literal>SET datestyle</literal> (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
-     TIME ZONE</literal> follow the SQL convention for the sign of
-     time zone offsets, i.e., positive is east from UTC (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para>
-    <para>
-     Prior releases returned an incorrect value for this function call.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
-    <para>
-     <function>initcap()</function> now uppercases a letter appearing
-     after any non-alphanumeric character, rather than only after
-     whitespace.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add new <varname>datestyle</varname> values <literal>MDY</>,
-     <literal>DMY</>, and <literal>YMD</> to set input field order;
-     honor <literal>US</> and <literal>European</> for backward
-     compatibility (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     String literals like <literal>'now'</literal> or
-     <literal>'today'</literal> will no longer work as a column
-     default. Use functions such as <function>now()</function>,
-     <function>current_timestamp</function> instead.  (change
-     required for prepared statements) (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
-    <para>
-     NaN was already sorted after ordinary numeric values for most
-     purposes, but <function>min()</> and <function>max()</> didn't
-     get this right.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Prevent interval from suppressing <literal>:00</literal>
-    seconds display</para>
-   </listitem>
-
-   <listitem>
-    <para>
-     New functions <function>pg_get_triggerdef(prettyprint)</function>
-     and <function>pg_conversion_is_visible()</function> (Christopher)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
-     match <varname>datestyle</varname>
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make <function>pg_get_constraintdef</function> support
-     unique, primary-key, and check constraints (Christopher)
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Server-Side Language Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>
-     Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
-     used on a zero-row record variable (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make PL/Python's <function>spi_execute</function> interface
-     handle null values properly (Andrew Bosma)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
-   </listitem>
-
-   <listitem>
-    <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
-    <para>
-     The Python language no longer supports a restricted execution
-     environment, so the trusted version of PL/Python was removed. If
-     this situation changes, a version of PL/Python that can be used
-     by non-superusers will be readded.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Allow polymorphic SQL functions (Joe)</para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Improved compiled function caching mechanism in PL/pgSQL with
-     full support for polymorphism (Joe)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Add new parameter <literal>$0</> in PL/pgSQL representing the
-     function's actual return type (Joe)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
-     qualified type names in the parameter type list
-     (Jan)
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>psql Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
-    <para>
-     This forces the pager to be used even if the number of rows is
-     less than the screen height.  This is valuable for rows that
-     wrap across several screen rows.
-    </para>
-   </listitem>
-
-   <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
-   <listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
-   <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
-
-   <listitem>
-    <para>
-     <command>\encoding</> now changes based on the server parameter
-     <varname>client_encoding</varname> (Tom)
-    </para>
-    <para>
-     In previous versions, <command>\encoding</command> was not aware
-     of encoding changes made using <literal>SET
-     client_encoding</literal>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Save editor buffer into readline history (Ross)</para>
-    <para>
-     When <command>\e</> is used to edit a query, the result is saved
-     in the readline history for retrieval using the up arrow.
-    </para>
-   </listitem>
-
-   <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
-   <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
-
-   <listitem>
-    <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
-    <para>
-     This takes the place of the removed server parameter <varname>autocommit</varname>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
-    <para>
-     This controls the new error reporting details.
-    </para>
-   </listitem>
-
-   <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
-   <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>pg_dump Changes</title>
-
-  <itemizedlist>
-   <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
-   <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
-
-   <listitem>
-    <para>Make pg_dump preserve column storage characteristics (Christopher)</para>
-    <para>
-     This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
-    </para>
-   </listitem>
-
-   <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
-
-   <listitem>
-    <para>
-     Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow pg_dumpall to support the options <option>-a</>,
-     <option>-s</>, <option>-x</> of pg_dump (Tom)
-    </para>
-   </listitem>
-
-   <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     pg_dump options <option>--use-set-session-authorization</option>
-     and <option>--no-reconnect</option> now do nothing, all dumps
-     use <command>SET SESSION AUTHORIZATION</command>
-    </para>
-    <para>
-     pg_dump no longer reconnects to switch users, but instead always
-     uses <command>SET SESSION AUTHORIZATION</command>. This will
-     reduce password prompting during restores.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Long options for <application>pg_dump</application> are now available on all platforms</para>
-    <para>
-     <productname>PostgreSQL</productname> now includes its own
-     long-option processing routines.
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>libpq Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>
-     Add function <function>PQfreemem</function> for freeing memory on
-     Windows, suggested for <command>NOTIFY</command> (Bruce)
-    </para>
-    <para>
-     Windows requires that memory allocated in a library be freed by
-     a function in the same library, hence
-     <function>free()</function> doesn't work for freeing memory
-     allocated by libpq. <function>PQfreemem</function> is the proper
-     way to free libpq memory, especially on Windows, and is
-     recommended for other platforms as well.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Document service capability, and add sample file (Bruce)</para>
-    <para>
-     This allows clients to look up connection information in a
-     central file on the client machine.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Make <function>PQsetdbLogin</function> have the same defaults as
-     <function>PQconnectdb</function> (Tom)
-    </para>
-   </listitem>
-
-   <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow thread-safe libpq with <filename>configure</filename>
-     option <option>--enable-thread-safety</option> (Lee Kindness,
-     Philip Yarra)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow function <function>pqInternalNotice</function> to accept a
-     format string and arguments instead of just a preformatted
-     message (Tom, Sean Chittenden)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Control SSL negotiation with <literal>sslmode</literal> values
-     <literal>disable</literal>, <literal>allow</literal>,
-     <literal>prefer</literal>, and <literal>require</literal> (Jon
-     Jensen)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Allow new error codes and levels of text (Tom)</para>
-   </listitem>
-
-   <listitem>
-    <para>Allow access to the underlying table and column of a query result (Tom)</para>
-    <para>
-     This is helpful for query-builder applications that want to know
-     the underlying table and column names associated with a specific
-     result set.
-    </para>
-   </listitem>
-
-   <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
-   <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
-
-   <listitem>
-    <para>
-     Add function <function>PQexecPrepared</function> and
-     <function>PQsendQueryPrepared</function> functions which perform
-     bind/execute of previously prepared statements (Tom)
-     </para>
-    </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>JDBC Changes</title>
-
-  <itemizedlist>
-   <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
-   <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
-   <listitem><para>Support SSL connections (Barry)</para></listitem>
-   <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
-   <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Miscellaneous Interface Changes</title>
-
-  <itemizedlist>
-   <listitem>
-    <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
-   </listitem>
-   <listitem>
-    <para>Add Informix compatibility to ECPG (Michael)</para>
-    <para>
-     This allows ECPG to process embedded C programs that were
-     written using certain Informix extensions.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Allow thread-safe embedded SQL programs with
-     <filename>configure</filename> option
-     <option>--enable-thread-safety</option> (Lee Kindness, Bruce)
-    </para>
-    <para>
-     This allows multiple threads to access the database at the same
-     time.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Source Code Changes</title>
-
-  <itemizedlist>
-   <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
-   <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
-   <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
-   <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
-   <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
-   <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
-   <listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
-   <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
-   <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
-   <listitem><para>Convert administration scripts to C (Peter)</para></listitem>
-   <listitem><para> Bison &gt;= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
-   <listitem><para>Merge documentation into one book (Peter)</para></listitem>
-   <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
-   <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
-   <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
-   <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
-   <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
-   <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
-   <listitem>
-    <para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
-    <para>
-     This was no longer needed now that we have <command>CREATE CONVERSION</command>.
-    </para>
-   </listitem>
-   <listitem>
-    <para>Generate a compile error if spinlock code is not found (Bruce)</para>
-    <para>
-     Platforms without spinlock code will now fail to compile, rather
-     than silently using semaphores. This failure can be disabled
-     with a new <command>configure</command> option.
-    </para>
-   </listitem>
-  </itemizedlist>
- </sect3>
-
- <sect3>
-  <title>Contrib Changes</title>
-
-  <itemizedlist>
-   <listitem><para>Change dbmirror license to BSD</para></listitem>
-   <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
-   <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
-   <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
-   <listitem><para>Update oracle</para></listitem>
-   <listitem><para>Update mysql</para></listitem>
-   <listitem><para>Update cube (Bruno Wolff III)</para></listitem>
-   <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
-   <listitem><para>Update btree_gist (Oleg)</para></listitem>
-   <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
-   <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
-   <listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
-   <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
-   <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
-   <listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
-   <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
-   <listitem><para>Improve pgstattuple (Rod)</para></listitem>
-   <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
-   <listitem><para>Improve adddepend (Rod)</para></listitem>
-   <listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem>
-   <listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
-   <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
-  </itemizedlist>
- </sect3>
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-21">
-  <title>Release 7.3.21</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2008-01-07</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.20,
-   including fixes for significant security issues.
-  </para>
-
-  <para>
-   This is expected to be the last <productname>PostgreSQL</> release
-   in the 7.3.X series.  Users are encouraged to update to a newer
-   release branch soon.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.21</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </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>
-      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.3.20 was incomplete, as it plugged
-      the hole for only some <filename>dblink</> functions.  (CVE-2007-6601,
-      CVE-2007-3278)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Fix potential crash in <function>translate()</> when using a multibyte
-      database encoding (Tom)
-     </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>
-      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-3-20">
-  <title>Release 7.3.20</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-09-17</simpara>
-  </note>
-
-  <para>
-   This release contains fixes from 7.3.19.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.20</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </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 crash when <varname>log_min_error_statement</> logging runs out
-      of memory (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-7-3-19">
-  <title>Release 7.3.19</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-04-23</simpara>
-  </note>
-
-  <para>
-   This release contains fixes from 7.3.18,
-   including a security fix.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.19</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <listitem>
-    <para>
-     Support explicit placement of the temporary-table schema within
-     <varname>search_path</>, and disable searching it for functions
-     and operators (Tom)
-    </para>
-    <para>
-     This is needed to allow a security-definer function to set a
-     truly secure value of <varname>search_path</>.  Without it,
-     an unprivileged SQL user can use temporary objects to execute code
-     with the privileges of the security-definer function (CVE-2007-2138).
-     See <command>CREATE FUNCTION</> for more information.
-    </para>
-    </listitem>
-
-    <listitem>
-    <para>
-     Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
-     <command>UPDATE</> chains (Tom, Pavan Deolasee)
-    </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-3-18">
-  <title>Release 7.3.18</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-02-05</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.17, including
-   a security fix.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.18</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </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 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>
-     Tighten security of multi-byte character processing for UTF8 sequences
-     over three bytes long (Tom)
-    </para>
-    </listitem>
-
-   </itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-3-17">
-  <title>Release 7.3.17</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2007-01-08</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.16.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.17</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <itemizedlist>
-
-    <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-3-16">
-  <title>Release 7.3.16</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-10-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.15.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.16</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<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>Back-port 7.4 spinlock code to improve performance and support
-64-bit architectures better</para> </listitem>
-<listitem><para>Fix SSL-related memory leak in libpq</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-3-15">
-  <title>Release 7.3.15</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-05-23</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.14,
-   including patches for extremely serious security issues.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.15</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </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</para>
-<para>This fixes <application>libpq</>-using applications for the security
-issues described in CVE-2006-2313 and CVE-2006-2314.
-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 server to use custom DH SSL parameters correctly (Michael
-Fuhr)</para></listitem>
-
-<listitem><para>Fix various minor memory leaks</para></listitem>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-3-14">
-  <title>Release 7.3.14</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-02-14</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.13.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.14</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.13, see the release
-    notes for 7.3.13.
-   </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.3.11 release.
-</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>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-3-13">
-  <title>Release 7.3.13</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2006-01-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.12.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.13</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.10, see the release
-    notes for 7.3.10.
-    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 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-3-12">
-  <title>Release 7.3.12</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-12-12</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.11.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.12</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.10, see the release
-    notes for 7.3.10.
-   </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><filename>/contrib/ltree</> fixes (Teodor)</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-3-11">
-  <title>Release 7.3.11</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-10-04</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.10.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.11</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    if you are upgrading from a version earlier than 7.3.10, see the release
-    notes for 7.3.10.
-   </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 missing rows in queries like <literal>UPDATE a=... WHERE
-a...</> with GiST index on column <literal>a</></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>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>
-</itemizedlist>
-
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-3-10">
-  <title>Release 7.3.10</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-05-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.9, including several
-   security-related issues.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.10</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.X.  However,
-    it is one possible way of handling a significant security problem
-    that has been found in the initial contents of 7.3.X system
-    catalogs.  A dump/initdb/reload sequence using 7.3.10's initdb will
-    automatically correct this problem.
-   </para>
-
-   <para>
-    The 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.)
-    It is strongly recommended that all installations repair this error,
-    either by initdb or by following the manual repair procedure given
-    below.  The error at least allows 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 procedure 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>
-   </para>
-
-   <para>
-    The above procedure 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 error.  <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
-     procedure.  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>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>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>Prevent <function>to_char(interval)</> from dumping core for
-month-related formats</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>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-9">
-  <title>Release 7.3.9</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-01-31</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.8, including several
-   security-related issues.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.3.9</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.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>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-8">
-  <title>Release 7.3.8</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-10-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.7.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.3.8</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.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 pg_ctl as root</para>
-<para>
-This is to guard against any possible security issues.
-</para></listitem>
-<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</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>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-7">
-  <title>Release 7.3.7</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-08-16</simpara>
-  </note>
-
-  <para>
-   This release contains one critical fix over 7.3.6, and some minor items.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.3.7</title>
-
-   <para>
-    A dump/restore is not required for those running 7.3.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>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
-<listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-6">
-  <title>Release 7.3.6</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-03-02</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.3.5.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.3.6</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those
-    running 7.3.*.
-   </para>
-
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Revert erroneous changes in rule permissions checking</para>
-<para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
-turns out to have disabled rule-related permissions checks in many
-not-so-corner cases.  This would for example allow users to insert into views
-they weren't supposed to have permission to insert into.  We have therefore
-reverted the 7.3.3 patch.  The original bug will be fixed in 8.0.
-</para></listitem>
-<listitem><para>Repair incorrect order of operations in
-GetNewTransactionId()</para>
-<para>
-This bug could result in failure under out-of-disk-space conditions, including
-inability to restart even after disk space is freed.
-</para></listitem>
-<listitem><para>Ensure configure selects -fno-strict-aliasing even when
-an external value for CFLAGS is supplied</para>
-<para>
-On some platforms, building with -fstrict-aliasing causes bugs.
-</para></listitem>
-<listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
-<para>
-This bug prevented proper restoration from archive files exceeding 4 GB.
-</para></listitem>
-<listitem><para>Make contrib/dblink not assume that local and remote type OIDs
-match (Joe)</para></listitem>
-<listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
-<listitem><para>Don't crash when a rowtype argument to a plpgsql function is
-NULL</para></listitem>
-<listitem><para>Avoid generating invalid character encoding sequences in
-corner cases when planning LIKE operations</para></listitem>
-<listitem><para>Ensure text_position() cannot scan past end of source string
-in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
-<listitem><para>Fix index optimization and selectivity estimates for LIKE
-operations on bytea columns (Joe)</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-5">
-  <title>Release 7.3.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2003-12-03</simpara>
-  </note>
-
-  <para>
-   This has a variety of fixes from 7.3.4.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.3.5</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those
-    running 7.3.*.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<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>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
-<listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
-<listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
-<listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
-<listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
-<listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
-<listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
-<listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
-<listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
-<listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
-<listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
-<listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
-<listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
-<listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
-<listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
-(prevents possible SQL-injection attacks)</para></listitem>
-<listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
-<listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-3-4">
-  <title>Release 7.3.4</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2003-07-24</simpara>
-  </note>
-
-  <para>
-   This has a variety of fixes from 7.3.3.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.3.4</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those
-    running 7.3.*.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
-<listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
-<listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
-<listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
-<listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
-<listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
-<listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
-<listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
-<listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
-</itemizedlist>
-  </sect2>
- </sect1>
-
-
-<sect1 id="release-7-3-3">
- <title>Release 7.3.3</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2003-05-22</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.3.2.
- </para>
-
- <sect2>
-  <title>Migration to Version 7.3.3</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.3.*.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
-<listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
-<listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
-<listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
-<listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
-<listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
-<listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
-<listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
-<listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
-<listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
-<listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
-<type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
-<listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
-      not applied unless you <application>initdb</application>)</para></listitem>
-<listitem><para>Fix <application>pg_proc</application> entry for
-     <type>timestampt_izone</type> (fix is not applied unless you
-       <application>initdb</application>)</para></listitem>
-<listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
-<listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
-<listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
-<listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
-      synonym for <command>TEMPORARY</command></para></listitem>
-<listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
-<listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
-<listitem><para>Fix incorrect time-qual check in row fetch for
-      <command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
-<listitem><para>Foreign-key clauses were parsed but ignored in
-      <command>ALTER TABLE ADD COLUMN</command></para></listitem>
-<listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
-<listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
-<listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
-<listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
-<listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
-<listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
-<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
-<listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
-<listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
-<listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
-<listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
-<listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
-<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
-<listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
-<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
-<listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
-<listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
-<listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
-<listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
-<listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
-<listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
-<listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
-<listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
-<listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
-<listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
-<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
-<listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
-<listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
-<listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
-<listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
-<listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
-<listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
-<listitem><para>Allow qualified type names in <command>CREATE CAST</command>
-      and <command> DROP CAST</command></para></listitem>
-<listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
-      be written <function>SETOF _type</function></para></listitem>
-<listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
-<listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
-<listitem><para><application>pg_dump</application> failed to handle error return
-      from <function>lo_read</function> (Oleg Drokin)</para></listitem>
-<listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
-<listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
-<listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
-<listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
-<listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
-<listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
-<listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
-<listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
-<listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
-<listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
-<listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
-<listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-3-2">
- <title>Release 7.3.2</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2003-02-04</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.3.1.
- </para>
-
-
- <sect2>
-  <title>Migration to Version 7.3.2</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.3.*.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
-<listitem><para>Fix <application>pg_dump</> core dump when dumping views having comments</para></listitem>
-<listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
-<listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
-<listitem><para>Increase default value of max_fsm_relations</para></listitem>
-<listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
-<listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
-<listitem><para>Fix problems with loading <application>pg_dump</> files containing contrib/lo usage</para></listitem>
-<listitem><para>Fix problem with all-numeric user names</para></listitem>
-<listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
-<listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
-<listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
-<listitem><para>Work with bison 1.875</para></listitem>
-<listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
-<listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
-<listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
-<listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
-<listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
-<listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
-<listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
-<listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
-<listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
-<listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
-<listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
-<listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
-<listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
-<listitem><para>Update my2pg, ora2pg</para></listitem>
-<listitem><para>Translation updates</para></listitem>
-<listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
-<listitem><para>fastpath code now checks for privilege to call function</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-3-1">
- <title>Release 7.3.1</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2002-12-18</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.3.
- </para>
-
-
- <sect2>
-  <title>Migration to Version 7.3.1</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.3. However, it should be noted that the main
-   <productname>PostgreSQL</productname> interface library, libpq,
-   has a new major version number for this release, which might require
-   recompilation of client code in certain cases.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
-<listitem><para>Allow <application>pg_dump</> to work with pre-7.2 servers (Philip)</para></listitem>
-<listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
-<listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
-<listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
-<listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
-<listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
-<listitem><para>Optimizer fixes (Tom)</para></listitem>
-<listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
-<listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
-<listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
-<listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
-<listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
-<listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
-<listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
-<listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-3">
- <title>Release 7.3</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2002-11-27</simpara>
- </note>
-
- <sect2>
-  <title>Overview</title>
-
-  <para>
-   Major changes in this release:
-  </para>
-
-  <variablelist>
-   <varlistentry>
-    <term>Schemas</term>
-    <listitem>
-     <para>
-      Schemas allow users to create objects in separate namespaces,
-      so two people or applications can have tables with the same
-      name. There is also a public schema for shared tables.
-      Table/index creation can be restricted by removing privileges
-      on the public schema.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Drop Column</term>
-    <listitem>
-     <para>
-      <productname>PostgreSQL</productname> now supports the
-      <literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Table Functions</term>
-    <listitem>
-     <para>
-      Functions returning multiple rows and/or multiple columns are
-      now much easier to use than before.  You can call such a
-      <quote>table function</quote> in the <literal>SELECT</literal>
-      <literal>FROM</literal> clause, treating its output like a
-      table. Also, <application>PL/pgSQL</application> functions can
-      now return sets.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Prepared Queries</term>
-    <listitem>
-     <para>
-      <productname>PostgreSQL</productname> now supports prepared
-      queries, for improved performance.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Dependency Tracking</term>
-    <listitem>
-     <para>
-      <productname>PostgreSQL</productname> now records object
-      dependencies, which allows improvements in many areas.
-      <command>DROP</command> statements now take either
-      <literal>CASCADE</> or <literal>RESTRICT</> to control whether
-      dependent objects are also dropped.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Privileges</term>
-    <listitem>
-     <para>
-      Functions and procedural languages now have privileges, and
-      functions can be defined to run with the privileges of their
-      creator.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Internationalization</term>
-    <listitem>
-     <para>
-      Both multibyte and locale support are now always enabled.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Logging</term>
-    <listitem>
-     <para>
-      A variety of logging options have been enhanced.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Interfaces</term>
-    <listitem>
-     <para>
-      A large number of interfaces have been moved to <ulink
-      url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
-      where they can be developed and released independently.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Functions/Identifiers</term>
-    <listitem>
-     <para>
-      By default, functions can now take up to 32 parameters, and
-      identifiers can be up to 63 bytes long.  Also, <literal>OPAQUE</>
-      is now deprecated: there are specific <quote>pseudo-datatypes</>
-      to represent each of the former meanings of <literal>OPAQUE</>
-      in function argument and result types.
-     </para>
-    </listitem>
-   </varlistentry>
-
-  </variablelist>
- </sect2>
-
- <sect2>
-  <title>Migration to Version 7.3</title>
-
-  <para>
-   A dump/restore using <application>pg_dump</> is required for those
-   wishing to migrate data from any previous release. If your
-   application examines the system catalogs, additional changes will
-   be required due to the introduction of schemas in 7.3; for more
-   information, see: <ulink
-   url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></>.
-  </para>
-
-  <para>
-   Observe the following incompatibilities:
-  </para>
-
-  <itemizedlist>
-   <listitem>
-    <para>
-     Pre-6.3 clients are no longer supported.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <filename>pg_hba.conf</filename> now has a column for the user
-     name and additional features.  Existing files need to be
-     adjusted.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Several <filename>postgresql.conf</filename> logging parameters
-     have been renamed.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <literal>LIMIT #,#</literal> has been disabled; use
-     <literal>LIMIT # OFFSET #</literal>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <command>INSERT</command> statements with column lists must
-     specify a value for each specified column. For example,
-     <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
-     is now invalid.  It's still allowed to supply fewer columns than
-     expected if the <command>INSERT</command> does not have a column list.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <type>serial</type> columns are no longer automatically
-     <literal>UNIQUE</>; thus, an index will not automatically be
-     created.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     A <command>SET</command> command inside an aborted transaction
-     is now rolled back.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     <command>COPY</command> no longer considers missing trailing
-     columns to be null.  All columns need to be specified.
-     (However, one can achieve a similar effect by specifying a
-     column list in the <command>COPY</command> command.)
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The data type <type>timestamp</type> is now equivalent to
-     <type>timestamp without time zone</type>, instead of
-     <type>timestamp with time zone</type>.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     Pre-7.3 databases loaded into 7.3 will not have the new object
-     dependencies for <type>serial</type> columns, unique
-     constraints, and foreign keys. See the directory
-     <filename>contrib/adddepend/</filename> for a detailed
-     description and a script that will add such dependencies.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     An empty string (<literal>''</literal>) is no longer allowed as
-     the input into an integer field.  Formerly, it was silently
-     interpreted as 0.
-    </para>
-   </listitem>
-
-  </itemizedlist>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-  <sect3>
-   <title>Server Operation</title>
-<itemizedlist>
-<listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
-<listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
-<listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
-<listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Performance</title>
-<itemizedlist>
-<listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
-<listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
-<listitem><para>Improve caching of index information (Tom)</para></listitem>
-<listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
-<listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
-<listitem><para>Hash function improvements (Neil)</para></listitem>
-<listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
-<listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
-<listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
-<listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
-<listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
-<listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
-<listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
-<listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
-<listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
-<listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
-<listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
-<listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Privileges</title>
-<itemizedlist>
-<listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
-<listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
-<listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
-<listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
-<listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Server Configuration</title>
-<itemizedlist>
-<listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
-<listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
-<listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
-<listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
-<listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
-<listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
-<listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
-<listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
-<listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
-<listitem><para>SSL improvements (Bear Giles)</para></listitem>
-<listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
-<listitem><para>Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
-<listitem><para>Add log_duration parameter (Bruce)</para></listitem>
-<listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
-<listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
-<listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Queries</title>
-<itemizedlist>
-<listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
-<listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
-<listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
-<listitem><para>UNION fixes for merging &gt;= 3 columns of different lengths (Tom)</para></listitem>
-<listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
-<listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
-<listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1');  (Rod)</para></listitem>
-<listitem><para>Fix for join aliases (Tom)</para></listitem>
-<listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
-<listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
-<listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
-<listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
-<listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
-<listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
-<listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
-<listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
-<listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
-<listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Object Manipulation</title>
-<itemizedlist>
-<listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
-<listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
-<listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
-<listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
-<listitem><para>Create schema for temporary tables (Tom)</para></listitem>
-<listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
-<listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
-<listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
-<listitem><para>Make rule names unique only per table (Tom)</para></listitem>
-<listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
-<listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
-<listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
-<listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
-<listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
-<listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
-<listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
-<listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
-<listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
-<listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
-<listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
-<listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
-<listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
-<listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
-<listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
-<listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
-<listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
-<listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
-<listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
-<listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
-<listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
-<listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Utility Commands</title>
-<itemizedlist>
-<listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
-<listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
-<listitem><para>Make <application>pg_dump</> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
-<listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
-<listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
-<listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
-<listitem><para>Restrict database comment changes to the current database</para></listitem>
-<listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
-<listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
-<listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
-<listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
-<listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
-<listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
-<listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
-<listitem><para>Fix <application>pg_dump</> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
-<listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
-<listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
-<listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
-<listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
-<listitem><para>Have SHOW output a query result (Joe)</para></listitem>
-<listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
-<listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
-<listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
-<listitem><para>Add smart quoting, portability improvements to <application>pg_dump</> output (Peter)</para></listitem>
-<listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
-<listitem><para>Enable large file support, &gt;2G for <application>pg_dump</> (Peter, Philip Warner, Bruce)</para></listitem>
-<listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
-<listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
-<listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
-<listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
-<listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
-<listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
-<listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
-<listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Data Types and Functions</title>
-<itemizedlist>
-<listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
-<listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
-<listitem><para>Fix for array slice extraction (Tom)</para></listitem>
-<listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
-<listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
-<listitem><para>Add domain support (Rod)</para></listitem>
-<listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
-<listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
-<listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
-<listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
-<listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
-<listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
-<listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
-<listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
-<listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
-<listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
-<listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
-<listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
-<listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
-<listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
-<listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
-<listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
-<listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
-<listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
-<listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
-<listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
-<listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
-<listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
-<listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
-<listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
-<listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
-<listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
-<listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
-<listitem><para>Add current_database() (Rod)</para></listitem>
-<listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
-<listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
-<listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
-<listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
-<listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
-<listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Internationalization</title>
-<itemizedlist>
-<listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
-<listitem><para>Enable locale support by default (Peter)</para></listitem>
-<listitem><para>Add locale variables (Peter)</para></listitem>
-<listitem><para>Escape byes &gt;= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
-<listitem><para>Add locale awareness to regular expression character classes</para></listitem>
-<listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
-<listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
-<listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
-<listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
-<listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
-<listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
-<listitem><para>New and updated translations</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Server-side Languages</title>
-<itemizedlist>
-<listitem><para>Allow recursive SQL function (Peter)</para></listitem>
-<listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
-<listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
-<listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
-<listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
-<listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
-<listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>psql</title>
-<itemizedlist>
-<listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
-<listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
-<listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
-<listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
-<listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
-<listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
-<listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
-<listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
-<listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
-<listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
-<listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>libpq</title>
-<itemizedlist>
-<listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
-<listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
-<listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
-<listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
-<listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
-<listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
-<listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
-<listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>JDBC</title>
-<itemizedlist>
-<listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
-<listitem><para>Add JDBC 3 support (Barry)</para></listitem>
-<listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
-<listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
-<listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
-<listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
-<listitem><para>Add query cancel capability</para></listitem>
-<listitem><para>Add refresh row (Dave)</para></listitem>
-<listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
-<listitem><para>Add support for prepared statements (Barry)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Miscellaneous Interfaces</title>
-<itemizedlist>
-<listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
-<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
-<listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
-<listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
-<listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
-<listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
-<listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Source Code</title>
-<itemizedlist>
-<listitem><para>Fix for parallel make (Peter)</para></listitem>
-<listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
-<listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
-<listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
-<listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
-<listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
-<listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
-<listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
-<listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
-<listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
-<listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
-<listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
-<listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
-<listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
-<listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
-<listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
-<listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
-<listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
-<listitem><para>Bison &gt;= 1.50 now required for developer builds</para></listitem>
-<listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
-<listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
-<listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
-<listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
-<listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
-<listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
-<listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
-<listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
-<listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
-<listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
-<listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
-<listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
-<listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
-<listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
-<listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
-<listitem><para>Add Posix semaphore support (Tom)</para></listitem>
-<listitem><para>Document need for reindex (Bruce)</para></listitem>
-<listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
-<listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
-<listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
-<listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
-<listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
-<listitem><para>Remove unused system table columns (Peter)</para></listitem>
-<listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
-<listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
-<listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
-<listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
-<listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
-<listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
-<listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Contrib</title>
-<itemizedlist>
-<listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
-<listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
-<listitem><para>Upgrade /contrib/mysql</para></listitem>
-<listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
-<listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
-<listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
-<listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
-<listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
-<listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
-<listitem><para>Update /contrib/dblink (Joe)</para></listitem>
-<listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
-<listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
-<listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
-<listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
-<listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
-<listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
-<listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
-<listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
-<listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
-<listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
-<listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
-</itemizedlist>
-  </sect3>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-8">
-  <title>Release 7.2.8</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-05-09</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.2.7, including one
-   security-related issue.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.2.8</title>
-
-   <para>
-    A dump/restore is not required for those running 7.2.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-<itemizedlist>
-<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 <function>EXTRACT(EPOCH)</> for
-<type>TIME WITH TIME ZONE</> values</para></listitem>
-<listitem><para>Additional buffer overrun checks in plpgsql
-(Neil)</para></listitem>
-<listitem><para>Fix pg_dump to dump index names and trigger names containing
-<literal>%</> correctly (Neil)</para></listitem>
-<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
-month-related formats</para></listitem>
-<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
-(Marko Kreen)</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-7">
-  <title>Release 7.2.7</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2005-01-31</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.2.6, including several
-   security-related issues.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.2.7</title>
-
-   <para>
-    A dump/restore is not required for those running 7.2.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>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 display of negative intervals in SQL and GERMAN
-datestyles</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-6">
-  <title>Release 7.2.6</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-10-22</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.2.5.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.2.6</title>
-
-   <para>
-    A dump/restore is not required for those running 7.2.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 pg_ctl as root</para>
-<para>
-This is to guard against any possible security issues.
-</para></listitem>
-<listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</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>Update to newer versions of Bison</para></listitem>
-</itemizedlist>
-
- </sect2>
-</sect1>
-
- <sect1 id="release-7-2-5">
-  <title>Release 7.2.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2004-08-16</simpara>
-  </note>
-
-  <para>
-   This release contains a variety of fixes from 7.2.4.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.2.5</title>
-
-   <para>
-    A dump/restore is not required for those running 7.2.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>Fix corner case for btree search in parallel with first root page split</para></listitem>
-<listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
-<listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
-<listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
-<listitem><para>Repair memory leaks in pg_dump</para></listitem>
-<listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-<sect1 id="release-7-2-4">
- <title>Release 7.2.4</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2003-01-30</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.2.3,
-  including fixes to prevent possible data loss.
- </para>
-
- <sect2>
-  <title>Migration to Version 7.2.4</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.2.*.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
-<listitem><para>Prevent VACUUM from being called inside a function  (Bruce)</para></listitem>
-<listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
-<listitem><para>Avoid integer overflow during large hash joins</para></listitem>
-<listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
-<listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
-<listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add()  (Neil)</para></listitem>
-<listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2-3">
- <title>Release 7.2.3</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2002-10-01</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.2.2,
-  including fixes to prevent possible data loss.
- </para>
-
- <sect2>
-  <title>Migration to Version 7.2.3</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.2.*.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
-<listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
-<listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
-<listitem><para>Fix possible hang during server shutdown</para></listitem>
-<listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
-<listitem><para>Fix <application>pg_dump</> to properly dump FULL JOIN USING (Tom)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2-2">
- <title>Release 7.2.2</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2002-08-23</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.2.1.
- </para>
-
- <sect2>
-  <title>Migration to Version 7.2.2</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.2.*.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
-<listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
-<listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes &gt; 0x7f (Tatsuo)</para></listitem>
-<listitem><para>Fix for psql and <application>pg_dump</> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
-<listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
-<listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
-<listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
-<listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
-<listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
-<listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
-<listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
-<listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
-<listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2-1">
- <title>Release 7.2.1</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2002-03-21</simpara>
- </note>
-
- <para>
-  This release contains a variety of fixes for version 7.2.
- </para>
-
- <sect2>
-  <title>Migration to Version 7.2.1</title>
-
-  <para>
-   A dump/restore is <emphasis>not</emphasis> required for those
-   running version 7.2.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-<itemizedlist>
-<listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
-<listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
-<listitem><para>Optimizer improvements (Tom)</para></listitem>
-<listitem><para>Cash I/O improvements (Tom)</para></listitem>
-<listitem><para>New Russian FAQ</para></listitem>
-<listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
-<listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
-<listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
-<listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
-<listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
-<listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
-<listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
-<listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
-<listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
-<listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
-<listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
-</itemizedlist>
- </sect2>
-</sect1>
-
-
-<sect1 id="release-7-2">
- <title>Release 7.2</title>
-
- <note>
-  <title>Release date</title>
-  <simpara>2002-02-04</simpara>
- </note>
-
- <sect2>
-  <title>Overview</title>
-
-  <para>
-   This release improves <productname>PostgreSQL</> for use in
-   high-volume applications.
-  </para>
-
-  <para>
-   Major changes in this release:
-  </para>
-
-  <variablelist>
-   <varlistentry>
-    <term>VACUUM</term>
-    <listitem>
-     <para>
-      Vacuuming no longer locks tables, thus allowing normal user
-      access during the vacuum.  A new <command>VACUUM FULL</>
-      command does old-style vacuum by locking the table and
-      shrinking the on-disk copy of the table.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Transactions</term>
-    <listitem>
-     <para>
-      There is no longer a problem with installations that exceed
-      four billion transactions.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>OIDs</term>
-    <listitem>
-     <para>
-      OIDs are now optional.  Users can now create tables without
-      OIDs for cases where OID usage is excessive.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Optimizer</term>
-    <listitem>
-     <para>
-      The system now computes histogram column statistics during
-      <command>ANALYZE</>, allowing much better optimizer choices.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Security</term>
-    <listitem>
-     <para>
-      A new MD5 encryption option allows more secure storage and
-      transfer of passwords.  A new Unix-domain socket
-      authentication option is available on Linux and BSD systems.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Statistics</term>
-    <listitem>
-     <para>
-      Administrators can use the new table access statistics module
-      to get fine-grained information about table and index usage.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>Internationalization</term>
-    <listitem>
-     <para>
-      Program and library messages can now be displayed in several
-      languages.
-     </para>
-    </listitem>
-   </varlistentry>
-
-  </variablelist>
- </sect2>
-
- <sect2>
-  <title>Migration to Version 7.2</title>
-
-  <para>
-   A dump/restore using <command>pg_dump</command> is required for
-   those wishing to migrate data from any previous release.
-  </para>
-
-  <para>
-   Observe the following incompatibilities:
-  </para>
-
-  <itemizedlist>
-   <listitem>
-    <para>
-     The semantics of the <command>VACUUM</command> command have
-     changed in this release.  You might wish to update your
-     maintenance procedures accordingly.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     In this release, comparisons using <literal>= NULL</literal>
-     will always return false (or NULL, more precisely).  Previous
-     releases automatically transformed this syntax to <literal>IS
-     NULL</literal>.  The old behavior can be re-enabled using a
-     <filename>postgresql.conf</filename> parameter.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
-     configuration is now only reloaded after receiving a
-     <systemitem>SIGHUP</> signal, not with each connection.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The function <filename>octet_length()</> now returns the uncompressed data length.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The date/time value <literal>'current'</literal> is no longer
-     available.  You will need to rewrite your applications.
-    </para>
-   </listitem>
-
-   <listitem>
-    <para>
-     The <literal>timestamp()</literal>, <literal>time()</literal>,
-     and <literal>interval()</literal> functions are no longer
-     available.  Instead of <literal>timestamp()</literal>, use
-     <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
-    </para>
-   </listitem>
-
-  </itemizedlist>
-
-  <para>
-   The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
-   in the next release. You should change your queries to use
-   separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
-   20</literal>.
-  </para>
- </sect2>
-
- <sect2>
-  <title>Changes</title>
-
-  <sect3>
-   <title>Server Operation</title>
-<itemizedlist>
-<listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem>
-<listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem>
-<listitem><para>Added unique indexes to some system tables (Tom)</para></listitem>
-<listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
-<listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem>
-<listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem>
-<listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem>
-<listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem>
-<listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem>
-<listitem><para>Removed OIDs from some system tables (Tom)</para></listitem>
-<listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem>
-<listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem>
-<listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem>
-<listitem><para>Long value compression improvement (Tom)</para></listitem>
-<listitem><para>Statistics collector for table, index access (Jan)</para></listitem>
-<listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem>
-<listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem>
-<listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem>
-<listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem>
-<listitem><para>New pg_ctl "reload" option (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Performance</title>
-<itemizedlist>
-<listitem><para>Optimizer improvements (Tom)</para></listitem>
-<listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem>
-<listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem>
-<listitem><para>Cache improvements (Tom)</para></listitem>
-<listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem>
-<listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem>
-<listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem>
-<listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem>
-<listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem>
-<listitem><para>B-tree splits more efficient (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Privileges</title>
-<itemizedlist>
-<listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem>
-<listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem>
-<listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem>
-<listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem>
-<listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem>
-<listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem>
-<listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem>
-<listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Client Authentication</title>
-<itemizedlist>
-<listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem>
-<listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem>
-<listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem>
-<listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem>
-<listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem>
-<listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Server Configuration</title>
-<itemizedlist>
-<listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem>
-<listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem>
-<listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem>
-<listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem>
-<listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem>
-<listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Queries</title>
-<itemizedlist>
-<listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem>
-<listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem>
-<listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem>
-<listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem>
-<listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem>
-<listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem>
-<listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem>
-<listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem>
-<listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Schema Manipulation</title>
-<itemizedlist>
-<listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem>
-<listitem><para>Allow temporary sequences (Bruce)</para></listitem>
-<listitem><para>Sequences now use int8 internally (Tom)</para></listitem>
-<listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem>
-<listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem>
-<listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem>
-<listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem>
-<listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>Allow column renaming in views</para></listitem>
-<listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem>
-<listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem>
-<listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem>
-<listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem>
-<listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem>
-<listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
-<listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Utility Commands</title>
-<itemizedlist>
-<listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem>
-<listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem>
-<listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem>
-<listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem>
-<listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem>
-<listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem>
-<listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem>
-<listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem>
-<listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem>
-<listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Data Types and Functions</title>
-<itemizedlist>
-<listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem>
-<listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem>
-<listitem><para>New function bit_length() (Peter E)</para></listitem>
-<listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem>
-<listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem>
-<listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem>
-<listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem>
-<listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem>
-<listitem><para>INET, CIDR operators &lt;&lt; and &lt;&lt;= indexable (Alex Pilosov)</para></listitem>
-<listitem><para>Bytea \### now requires valid three digit octal number</para></listitem>
-<listitem><para>Bytea comparison improvements, now supports =, &lt;&gt;, &gt;, &gt;=, &lt;, and &lt;=</para></listitem>
-<listitem><para>Bytea now supports B-tree indexes</para></listitem>
-<listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem>
-<listitem><para>Bytea now supports concatenation</para></listitem>
-<listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem>
-<listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem>
-<listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem>
-<listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem>
-<listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem>
-<listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem>
-<listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem>
-<listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem>
-<listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem>
-<listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem>
-<listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem>
-<listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem>
-<listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem>
-<listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem>
-<listitem><para>Correct description of translate() function (Bruce)</para></listitem>
-<listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem>
-<listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem>
-<listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem>
-<listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem>
-<listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem>
-<listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem>
-<listitem><para>Some datatype() function calls now evaluated differently</para></listitem>
-<listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Internationalization</title>
-<itemizedlist>
-<listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem>
-<listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem>
-<listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem>
-<listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem>
-<listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem>
-<listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem>
-<listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem>
-<listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title><application>PL/pgSQL</></title>
-<itemizedlist>
-<listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem>
-<listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem>
-<listitem><para>Can now return open cursors (Jan)</para></listitem>
-<listitem><para>Add ELSEIF (Klaus Reger)</para></listitem>
-<listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem>
-<listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem>
-<listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem>
-<listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem>
-<listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem>
-<listitem><para>Memory leak fix (Jan, Tom)</para></listitem>
-<listitem><para>Make trailing semicolon optional (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>PL/Perl</title>
-<itemizedlist>
-<listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem>
-<listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem>
-</itemizedlist>
-   </sect3>
-
-  <sect3>
-   <title>PL/Tcl</title>
-<itemizedlist>
-<listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem>
-<listitem><para>Add spi_lastoid function ([email protected])</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>PL/Python</title>
-<itemizedlist>
-<listitem><para>...is new (Andrew Bosma)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title><application>psql</></title>
-<itemizedlist>
-<listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem>
-<listitem><para>Read password from /dev/tty if possible</para></listitem>
-<listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem>
-<listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title><application>libpq</></title>
-<itemizedlist>
-<listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem>
-<listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>JDBC</title>
-<itemizedlist>
-<listitem><para>Return OID of INSERT (Ken K)</para></listitem>
-<listitem><para>Handle more data types (Ken K)</para></listitem>
-<listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem>
-<listitem><para>Handle NULL variables (Ken K)</para></listitem>
-<listitem><para>Fix for time zone handling (Barry Lind)</para></listitem>
-<listitem><para>Improved Druid support</para></listitem>
-<listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem>
-<listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem>
-<listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem>
-<listitem><para>Update DatabaseMetaData (Peter E)</para></listitem>
-<listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem>
-<listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem>
-<listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem>
-<listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem>
-<listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem>
-<listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem>
-<listitem><para>Transaction performance improvements (Barry Lind)</para></listitem>
-<listitem><para>Array fixes (Greg Zoller)</para></listitem>
-<listitem><para>Serialize addition </para></listitem>
-<listitem><para>Fix batch processing (Rene Pijlman)</para></listitem>
-<listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem>
-<listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem>
-<listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem>
-<listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem>
-<listitem><para>Add bytea type capability (Barry Lind)</para></listitem>
-<listitem><para>Add isNullable() (Rene Pijlman)</para></listitem>
-<listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem>
-<listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem>
-<listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem>
-<listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem>
-<listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem>
-<listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>ODBC</title>
-<itemizedlist>
-<listitem><para>Remove query size limit (Hiroshi)</para></listitem>
-<listitem><para>Remove text field size limit (Hiroshi)</para></listitem>
-<listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem>
-<listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem>
-<listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem>
-<listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem>
-<listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem>
-<listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem>
-<listitem><para>MD5 password encryption support (Bruce)</para></listitem>
-<listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title><application>ECPG</></title>
-<itemizedlist>
-<listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem>
-<listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem>
-<listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem>
-<listitem><para>Fix INITIALLY DEFERRED bug</para></listitem>
-<listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem>
-<listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem>
-<listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem>
-<listitem><para>ECPGfree_auto_mem fixed</para></listitem>
-<listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem>
-<listitem><para>Fixes for arrays of structures (Michael)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Misc. Interfaces</title>
-<itemizedlist>
-<listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem>
-<listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem>
-<listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem>
-<listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem>
-<listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Build and Install</title>
-<itemizedlist>
-<listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem>
-<listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem>
-<listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem>
-<listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem>
-<listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem>
-<listitem><para>BeOS fixes (Cyril Velter)</para></listitem>
-<listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem>
-<listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem>
-<listitem><para>Fix parallel make (Peter E)</para></listitem>
-<listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem>
-<listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem>
-<listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Source Code</title>
-<itemizedlist>
-<listitem><para>Remove SEP_CHAR (Bruce)</para></listitem>
-<listitem><para>New GUC hooks (Tom)</para></listitem>
-<listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem>
-<listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem>
-<listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem>
-<listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem>
-<listitem><para>pgindent fixes (Bruce, Tom)</para></listitem>
-<listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem>
-<listitem><para>Dynahash portability improvements (Tom)</para></listitem>
-<listitem><para>Add 'volatile' usage in spinlock structures</para></listitem>
-<listitem><para>Improve signal handling logic (Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
-
-  <sect3>
-   <title>Contrib</title>
-<itemizedlist>
-<listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem>
-<listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem>
-<listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem>
-<listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem>
-<listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem>
-<listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem>
-<listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem>
-<listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem>
-<listitem><para>New pg_upgrade utility (Bruce)</para></listitem>
-<listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem>
-</itemizedlist>
-  </sect3>
- </sect2>
-</sect1>
-
-
- <sect1 id="release-7-1-3">
-  <title>Release 7.1.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2001-08-15</simpara>
-  </note>
-
-  <sect2>
-   <title>Migration to Version 7.1.3</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    7.1.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Remove unused WAL segments of large transactions (Tom)
-Multiaction rule fix (Tom)
-PL/pgSQL memory allocation fix (Jan)
-VACUUM buffer fix (Tom)
-Regression test fixes (Tom)
-pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
-Fix subselects with DISTINCT ON or LIMIT (Tom)
-BeOS fix
-Disable COPY TO/FROM a view (Tom)
-Cygwin build (Jason Tishler)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-7-1-2">
-  <title>Release 7.1.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2001-05-11</simpara>
-  </note>
-
-  <para>
-   This has one fix from 7.1.1.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.1.2</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    7.1.X.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Fix PL/pgSQL SELECTs when returning no rows
-Fix for psql backslash core dump
-Referential integrity privilege fix
-Optimizer fixes
-pg_dump cleanups
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-7-1-1">
-  <title>Release 7.1.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2001-05-05</simpara>
-  </note>
-
-  <para>
-   This has a variety of fixes from 7.1.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.1.1</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    7.1.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Fix for numeric MODULO operator (Tom)
-pg_dump fixes (Philip)
-pg_dump can dump 7.0 databases (Philip)
-readline 4.2 fixes (Peter E)
-JOIN fixes (Tom)
-AIX, MSWIN, VAX, N32K fixes (Tom)
-Multibytes fixes (Tom)
-Unicode fixes (Tatsuo)
-Optimizer improvements (Tom)
-Fix for whole rows in functions (Tom)
-Fix for pg_ctl and option strings with spaces (Peter E)
-ODBC fixes (Hiroshi)
-EXTRACT can now take string argument (Thomas)
-Python fixes (Darcy)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-7-1">
-  <title>Release 7.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2001-04-13</simpara>
-  </note>
-
-  <para>
-       This release focuses on removing limitations that have existed in the
-       <productname>PostgreSQL</productname> code for many years.
-  </para>
-
-  <para>
-   Major changes in this release:
-  </para>
-
-  <variablelist>
-   <varlistentry>
-    <term>
-      Write-ahead Log (WAL)
-    </term>
-    <listitem>
-     <para>
-To maintain database consistency in case of an operating system crash,
-previous releases of <productname>PostgreSQL</productname> have forced
-all data modifications to disk before each transaction commit.  With
-WAL, only one log file must be flushed to disk, greatly improving
-performance.  If you have been using -F in previous releases to
-disable disk flushes, you might want to consider discontinuing its use.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-      TOAST
-    </term>
-    <listitem>
-     <para>
-      TOAST - Previous releases had a compiled-in row length limit,
-typically 8k - 32k. This limit made storage of long text fields
-difficult.  With TOAST, long rows of any length can be stored with good
-performance.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-      Outer Joins
-    </term>
-    <listitem>
-     <para>
-We now support outer joins.  The UNION/NOT IN
-workaround for outer joins is no longer required.  We use the SQL92
-outer join syntax.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-      Function Manager
-    </term>
-    <listitem>
-     <para>
-The previous C function manager did not
-handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha).  The new
-function manager does.  You can continue using your old custom
-functions, but you might want to rewrite them in the future to use the new
-function manager call interface.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-      Complex Queries
-    </term>
-    <listitem>
-     <para>
-A large number of complex queries that were
-unsupported in previous releases now work.  Many combinations of views,
-aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
-now work properly. Inherited tables are now accessed by default.
-Subqueries in FROM are now supported.
-     </para>
-    </listitem>
-   </varlistentry>
-
-  </variablelist>
-
-  <sect2>
-   <title>Migration to Version 7.1</title>
-
-   <para>
-       A dump/restore using pg_dump is required for those wishing to migrate
-       data from any previous release.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-Many multibyte/Unicode/locale fixes (Tatsuo and others)
-More reliable ALTER TABLE RENAME (Tom)
-Kerberos V fixes (David Wragg)
-Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
-Prompt username/password on standard error (Bruce)
-Large objects inv_read/inv_write fixes (Tom)
-Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
-   Daniel Baldoni)
-Prevent query expressions from leaking memory (Tom)
-Allow UPDATE of arrays elements (Tom)
-Wake up lock waiters during cancel (Hiroshi)
-Fix rare cursor crash when using hash join (Tom)
-Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
-Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
-Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
-Fix PL/perl (Alex Kapranoff)
-Disallow LOCK on views (Mark Hollomon)
-Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
-Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
-Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
-Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
-Fix rare failure with TRUNCATE command (Tom)
-Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
-   DISTINCT, ORDER BY, SELECT...INTO (Tom)
-Fix parser failures during aborted transactions (Tom)
-Allow temporary relations to properly clean up indexes (Bruce)
-Fix VACUUM problem with moving rows in same page (Tom)
-Modify pg_dump to better handle user-defined items in template1 (Philip)
-Allow LIMIT in VIEW (Tom)
-Require cursor FETCH to honor LIMIT (Tom)
-Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
-Allow ORDER BY, LIMIT in subqueries (Tom)
-Allow UNION in CREATE RULE (Tom)
-Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
-Store initdb collation in pg_control so collation cannot be changed (Tom)
-Fix INSERT...SELECT with rules (Tom)
-Fix FOR UPDATE inside views and subselects (Tom)
-Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
-Fix lpad() and rpad() to handle length less than input string (Tom)
-Fix use of NOTIFY in some rules (Tom)
-Overhaul btree code (Tom)
-Fix NOT NULL use in Pl/pgSQL variables (Tom)
-Overhaul GIST code (Oleg)
-Fix CLUSTER to preserve constraints and column default (Tom)
-Improved deadlock detection handling (Tom)
-Allow multiple SERIAL columns in a table (Tom)
-Prevent occasional index corruption (Vadim)
-
-Enhancements
-------------
-Add OUTER JOINs (Tom)
-Function manager overhaul (Tom)
-Allow ALTER TABLE RENAME on indexes (Tom)
-Improve CLUSTER (Tom)
-Improve ps status display for more platforms (Peter E, Marc)
-Improve CREATE FUNCTION failure message (Ross)
-JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
-   Gunnar)
-Grand Unified Configuration scheme/GUC.  Many options can now be set in
-   data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
-Improved handling of file descriptor cache (Tom)
-New warning code about auto-created table alias entries (Bruce)
-Overhaul initdb process (Tom, Peter E)
-Overhaul of inherited tables; inherited tables now accessed by default;
-  new ONLY key word prevents it (Chris Bitmead, Tom)
-ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
-   Michael Fork)
-Allow renaming of temp tables (Tom)
-Overhaul memory manager contexts (Tom)
-pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
-Overhaul pg_dump (Philip Warner)
-Allow pg_hba.conf secondary password file to specify only username (Peter E)
-Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
-New memory leak checker (Karel)
-New SET SESSION CHARACTERISTICS (Thomas)
-Allow nested block comments (Thomas)
-Add WITHOUT TIME ZONE type qualifier (Thomas)
-New ALTER TABLE ADD CONSTRAINT (Stephan)
-Use NUMERIC accumulators for INTEGER aggregates (Tom)
-Overhaul aggregate code (Tom)
-New VARIANCE and STDDEV() aggregates
-Improve dependency ordering of pg_dump (Philip)
-New pg_restore command (Philip)
-New pg_dump tar output option (Philip)
-New pg_dump of large objects  (Philip)
-New ESCAPE option to LIKE (Thomas)
-New case-insensitive LIKE - ILIKE (Thomas)
-Allow functional indexes to use binary-compatible type (Tom)
-Allow SQL functions to be used in more contexts (Tom)
-New pg_config utility (Peter E)
-New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
-   (Jan)
-New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
-New quote_identifiers() and quote_literal() functions (Jan)
-New ALTER TABLE table OWNER TO user command (Mark Hollomon)
-Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
-Update PyGreSQL to version 3.1 (D'Arcy)
-Store tables as files named by OID (Vadim)
-New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
-Require DROP VIEW to remove views, no DROP TABLE (Mark)
-Allow DROP VIEW view1, view2 (Mark)
-Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
-Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
-New /contrib/pgcrypto hashing functions (Marko Kreen)
-New pg_dumpall --globals-only option (Peter E)
-New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
-New AT TIME ZONE syntax (Thomas)
-Allow location of Unix domain socket to be configurable (David J. MacKenzie)
-Allow postmaster to listen on a specific IP address (David J. MacKenzie)
-Allow socket path name to be specified in hostname by using leading slash
-   (David J. MacKenzie)
-Allow CREATE DATABASE to specify template database (Tom)
-New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
-New /contrib/rserv replication toolkit (Vadim)
-New file format for COPY BINARY (Tom)
-New /contrib/oid2name to map numeric files to table names (B Palmer)
-New "idle in transaction" ps status message (Marc)
-Update to pgaccess 0.98.7 (Constantin Teodorescu)
-pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
-Add rudimentary dependency checking to pg_dump (Philip)
-
-Types
------
-Fix INET/CIDR type ordering and add new functions (Tom)
-Make OID behave as an unsigned type (Tom)
-Allow BIGINT as synonym for INT8 (Peter E)
-New int2 and int8 comparison operators (Tom)
-New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
-CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
-New GIST seg/cube examples (Gene Selkov)
-Improved round(numeric) handling (Tom)
-Fix CIDR output formatting (Tom)
-New CIDR abbrev() function (Tom)
-
-Performance
------------
-Write-Ahead Log (WAL) to provide crash recovery with less performance
-   overhead (Vadim)
-ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
-Reduced file seeks (Denis Perchine)
-Improve BTREE code for duplicate keys (Tom)
-Store all large objects in a single table (Denis Perchine, Tom)
-Improve memory allocation performance (Karel, Tom)
-
-Source Code
------------
-New function manager call conventions (Tom)
-SGI portability fixes (David Kaelbling)
-New configure --enable-syslog option (Peter E)
-New BSDI README (Bruce)
-configure script moved to top level, not /src (Peter E)
-Makefile/configuration/compilation overhaul (Peter E)
-New configure --with-python option (Peter E)
-Solaris cleanups (Peter E)
-Overhaul /contrib Makefiles (Karel)
-New OpenSSL configuration option (Magnus, Peter E)
-AIX fixes (Andreas)
-QNX fixes (Maurizio)
-New heap_open(), heap_openr() API (Tom)
-Remove colon and semi-colon operators (Thomas)
-New pg_class.relkind value for views (Mark Hollomon)
-Rename ichar() to chr() (Karel)
-New documentation for btrim(), ascii(), chr(), repeat() (Karel)
-Fixes for NT/Cygwin (Pete Forman)
-AIX port fixes (Andreas)
-New BeOS port (David Reid, Cyril Velter)
-Add proofreader's changes to docs (Addison-Wesley, Bruce)
-New Alpha spinlock code (Adriaan Joubert, Compaq)
-UnixWare port overhaul (Peter E)
-New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
-New FreeBSD Alpha port (Alfred)
-Overhaul shared memory segments (Tom)
-Add IBM S/390 support (Neale Ferguson)
-Moved macmanuf to /contrib (Larry Rosenman)
-Syslog improvements (Larry Rosenman)
-New template0 database that contains no user additions (Tom)
-New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
-Allow NetBSD's libedit instead of readline (Peter)
-Improved assembly language source code format (Bruce)
-New contrib/pg_logger
-New --template option to createdb
-New contrib/pg_control utility (Oliver)
-New FreeBSD tools ipc_check, start-scripts/freebsd
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-7-0-3">
-  <title>Release 7.0.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2000-11-11</simpara>
-  </note>
-
-  <para>
-   This has a variety of fixes from 7.0.2.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.0.3</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    7.0.*.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Jdbc fixes (Peter)
-Large object fix (Tom)
-Fix lean in COPY WITH OIDS leak (Tom)
-Fix backwards-index-scan (Tom)
-Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
-Add --enable-syslog to configure (Marc)
-Fix abort transaction at backend exit in rare cases (Tom)
-Fix for psql \l+ when multibyte enabled (Tatsuo)
-Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
-Make vacuum always flush buffers (Tom)
-Fix to allow cancel while waiting for a lock (Hiroshi)
-Fix for memory allocation problem in user authentication code (Tom)
-Remove bogus use of int4out() (Tom)
-Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
-Fix for failure of triggers on heap open in certain cases (Jeroen van
-   Vianen)
-Fix for erroneous selectivity of not-equals (Tom)
-Fix for erroneous use of strcmp() (Tom)
-Fix for bug where storage manager accesses items beyond end of file
-   (Tom)
-Fix to include kernel errno message in all smgr elog messages (Tom)
-Fix for '.' not in PATH at build time (SL Baur)
-Fix for out-of-file-descriptors error (Tom)
-Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
-Fix for subselect in targetlist of Append node (Tom)
-Fix for mergejoin plans (Tom)
-Fix TRUNCATE failure on relations with indexes (Tom)
-Avoid database-wide restart on write error (Hiroshi)
-Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
-Fix VACUUM problem with moving chain of update row versions when source
-   and destination of a row version lie on the same page (Tom)
-Fix user.c CommandCounterIncrement (Tom)
-Fix for AM/PM boundary problem in to_char() (Karel Zak)
-Fix TIME aggregate handling (Tom)
-Fix to_char() to avoid coredump on NULL input (Tom)
-Buffer fix (Tom)
-Fix for inserting/copying longer multibyte strings into char() data
-   types (Tatsuo)
-Fix for crash of backend, on abort (Tom)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-7-0-2">
-  <title>Release 7.0.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2000-06-05</simpara>
-  </note>
-
-  <para>
-   This is a repackaging of 7.0.1 with added documentation.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 7.0.2</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    7.*.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Added documentation to tarball.
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-7-0-1">
-  <title>Release 7.0.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2000-06-01</simpara>
-  </note>
-
-  <para>
-   This is a cleanup release for 7.0.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 7.0.1</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    7.0.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Fix many CLUSTER failures (Tom)
-Allow ALTER TABLE RENAME works on indexes (Tom)
-Fix plpgsql to handle datetime-&gt;timestamp and timespan-&gt;interval (Bruce)
-New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
-Fix the off by one errors in ResultSet from 6.5.3, and more.
-jdbc ResultSet fixes (Joseph Shraibman)
-optimizer tunings (Tom)
-Fix create user for pgaccess
-Fix for UNLISTEN failure
-IRIX fixes (David Kaelbling)
-QNX fixes (Andreas Kardos)
-Reduce COPY IN lock level (Tom)
-Change libpqeasy to use PQconnectdb() style parameters (Bruce)
-Fix pg_dump to handle OID indexes (Tom)
-Fix small memory leak (Tom)
-Solaris fix for createdb/dropdb (Tatsuo)
-Fix for non-blocking connections (Alfred Perlstein)
-Fix improper recovery after RENAME TABLE failures (Tom)
-Copy pg_ident.conf.sample into /lib directory in install (Bruce)
-Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
-Fix too long syslog message (Tatsuo)
-Fix problem with quoted indexes that are too long (Tom)
-JDBC ResultSet.getTimestamp() fix (Gregory Krasnow &amp; Floyd Marinescu)
-ecpg changes (Michael)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
- <sect1 id="release-7-0">
-  <title>Release 7.0</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>2000-05-08</simpara>
-  </note>
-
-  <para>
-   This release contains improvements in many areas, demonstrating
-   the continued growth of <productname>PostgreSQL</productname>.
-   There are more improvements and fixes in 7.0 than in any previous
-   release. The developers have confidence that this is the best
-   release yet; we do our best to put out only solid releases, and
-   this one is no exception.
-  </para>
-
-  <para>
-   Major changes in this release:
-  </para>
-
-  <variablelist>
-   <varlistentry>
-    <term>
-     Foreign Keys
-    </term>
-    <listitem>
-     <para>
-      Foreign keys are now implemented, with the exception of PARTIAL MATCH
-      foreign keys. Many users have been asking for this feature, and we are
-      pleased to offer it.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Optimizer Overhaul
-    </term>
-    <listitem>
-     <para>
-      Continuing on work started a year ago, the optimizer has been
-      improved, allowing better query plan selection and faster performance
-      with less memory usage.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Updated <application>psql</application>
-    </term>
-    <listitem>
-     <para>
-      <application>psql</application>, our interactive terminal monitor, has been
-      updated with a variety of new features. See the <application>psql</application> manual page for details.
-     </para>
-    </listitem>
-   </varlistentry>
-
-   <varlistentry>
-    <term>
-     Join Syntax
-    </term>
-    <listitem>
-     <para>
-      SQL92 join syntax is now supported, though only as
-      <literal>INNER JOIN</> for this release. <literal>JOIN</>,
-      <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
-      and <literal>JOIN</>/<literal>ON</> are available, as are
-      column correlation names.
-     </para>
-    </listitem>
-
-   </varlistentry>
-  </variablelist>
-
-  <sect2>
-   <title>Migration to Version 7.0</title>
-
-   <para>
-    A dump/restore using <application>pg_dump</application>
-    is required for those wishing to migrate data from any
-    previous release of <productname>PostgreSQL</productname>.
-    For those upgrading from 6.5.*, you can instead use
-    <application>pg_upgrade</application> to upgrade to this
-    release; however, a full dump/reload installation is always the
-    most robust method for upgrades.
-   </para>
-
-   <para>
-    Interface and compatibility issues to consider for the new
-    release include:
-   </para>
-
-   <itemizedlist>
-    <listitem>
-     <para>
-      The date/time types <type>datetime</type> and
-      <type>timespan</type> have been superseded by the
-      SQL92-defined types <type>timestamp</type> and
-      <type>interval</type>. Although there has been some effort to
-      ease the transition by allowing
-      <productname>PostgreSQL</productname> to recognize
-      the deprecated type names and translate them to the new type
-      names, this mechanism cannot be completely transparent to
-      your existing application.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The optimizer has been substantially improved in the area of
-      query cost estimation. In some cases, this will result in
-      decreased query times as the optimizer makes a better choice
-      for the preferred plan. However, in a small number of cases,
-      usually involving pathological distributions of data, your
-      query times might go up. If you are dealing with large amounts
-      of data, you might want to check your queries to verify
-      performance.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
-      interfaces have been upgraded and extended.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      The string function <function>CHAR_LENGTH</function> is now a
-      native function. Previous versions translated this into a call
-      to <function>LENGTH</function>, which could result in
-      ambiguity with other types implementing
-      <function>LENGTH</function> such as the geometric types.
-     </para>
-    </listitem>
-   </itemizedlist>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-Prevent function calls exceeding maximum number of arguments (Tom)
-Improve CASE construct (Tom)
-Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
-Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
-Fix GROUP BY scan bug (Tom)
-Improvements in SQL grammar processing (Tom)
-Fix for views involved in INSERT ... SELECT ... (Tom)
-Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
-Fix for subselects in INSERT ... SELECT (Tom)
-Prevent INSERT ... SELECT ... ORDER BY (Tom)
-Fixes for relations greater than 2GB, including vacuum
-Improve propagating system table changes to other backends (Tom)
-Improve propagating user table changes to other backends (Tom)
-Fix handling of temp tables in complex situations (Bruce, Tom)
-Allow table locking at table open, improving concurrent reliability (Tom)
-Properly quote sequence names in pg_dump (Ross J. Reedstrom)
-Prevent DROP DATABASE while others accessing
-Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
-Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
-Fix pg_upgrade so it works for MVCC (Tom)
-Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) &gt; 1) (Tom)
-Fix for "f1 datetime DEFAULT 'now'"  (Tom)
-Fix problems with CURRENT_DATE used in DEFAULT (Tom)
-Allow comment-only lines, and ;;; lines too. (Tom)
-Improve recovery after failed disk writes, disk full (Hiroshi)
-Fix cases where table is mentioned in FROM but not joined (Tom)
-Allow HAVING clause without aggregate functions (Tom)
-Fix for "--" comment and no trailing newline, as seen in perl interface
-Improve pg_dump failure error reports (Bruce)
-Allow sorts and hashes to exceed 2GB file sizes (Tom)
-Fix for pg_dump dumping of inherited rules (Tom)
-Fix for NULL handling comparisons (Tom)
-Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
-Fix for dbname with dash
-Prevent DROP INDEX from interfering with other backends (Tom)
-Fix file descriptor leak in verify_password()
-Fix for "Unable to identify an operator =$" problem
-Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
-Fix for recursive exit call (Massimo)
-Fix for extra-long timezones (Jeroen van Vianen)
-Make pg_dump preserve primary key information (Peter E)
-Prevent databases with single quotes (Peter E)
-Prevent DROP DATABASE inside  transaction (Peter E)
-ecpg memory leak fixes (Stephen Birch)
-Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
-Y2K timestamp fix (Massimo)
-Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
-Fix for views with tables/columns containing spaces  (Tom)
-Prevent privileges on indexes (Peter E)
-Fix for spinlock stuck problem when error is generated (Hiroshi)
-Fix ipcclean on Linux
-Fix handling of NULL constraint conditions (Tom)
-Fix memory leak in odbc driver (Nick Gorham)
-Fix for privilege check on UNION tables (Tom)
-Fix to allow SELECT 'a' LIKE 'a' (Tom)
-Fix for SELECT 1 + NULL (Tom)
-Fixes to CHAR
-Fix log() on numeric type (Tom)
-Deprecate ':' and ';' operators
-Allow vacuum of temporary tables
-Disallow inherited columns with the same name as new columns
-Recover or force failure when disk space is exhausted (Hiroshi)
-Fix INSERT INTO ... SELECT with AS columns matching result columns
-Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
-Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
-Fix UNION with LIMIT
-Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
-Fix CREATE TABLE test(col char(2) DEFAULT user)
-Fix mismatched types in CREATE TABLE ... DEFAULT
-Fix SELECT * FROM pg_class where oid in (0,-1)
-Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
-Prevent user who can create databases can modifying pg_database table (Peter E)
-Fix btree to give a useful elog when key &gt; 1/2 (page - overhead) (Tom)
-Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
-
-Enhancements
-------------
-New CLI interface include file sqlcli.h, based on SQL3/SQL98
-Remove all limits on query length, row length limit still exists (Tom)
-Update jdbc protocol to 2.0 (Jens Glaser <email>[email protected]</email>)
-Add TRUNCATE command to quickly truncate relation (Mike Mascari)
-Fix to give super user and createdb user proper update catalog rights (Peter E)
-Allow ecpg bool variables to have NULL values (Christof)
-Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
-Allow ^C to cancel COPY command (Massimo)
-Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
-Function name overloading for dynamically-loaded C functions (Frankpitt)
-Add CmdTuples() to libpq++(Vince)
-New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
-Allow CREATE FUNCTION/WITH clause to be used for all language types
-configure --enable-debug adds -g (Peter E)
-configure --disable-debug removes -g (Peter E)
-Allow more complex default expressions (Tom)
-First real FOREIGN KEY constraint trigger functionality (Jan)
-Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
-Add FOREIGN KEY ... MATCH &lt;unspecified&gt; referential actions (Don Baccus)
-Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
-Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
-Change pgeasy connectdb() parameter ordering (Bruce)
-Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
-Add Oracle's COMMENT ON command (Mike Mascari <email>[email protected]</email>)
-libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
-Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
-Make USING in COPY optional (Bruce)
-Allow subselects in the target list (Tom)
-Allow subselects on the left side of comparison operators (Tom)
-New parallel regression test (Jan)
-Change backend-side COPY to write files with permissions 644 not 666 (Tom)
-Force permissions on PGDATA directory to be secure, even if it exists (Tom)
-Added psql LASTOID variable to return last inserted oid (Peter E)
-Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
-Add privilege check for vacuum (Peter E)
-New libpq functions to allow asynchronous connections: PQconnectStart(),
-  PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
-  PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
-New libpq PQsetenv() function (Ewan Mellor)
-create/alter user extension (Peter E)
-New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
-New scripts for create/drop user/db (Peter E)
-Major psql overhaul (Peter E)
-Add const to libpq interface (Peter E)
-New libpq function PQoidValue (Peter E)
-Show specific non-aggregate causing problem with GROUP BY (Tom)
-Make changes to pg_shadow recreate pg_pwd file (Peter E)
-Add aggregate(DISTINCT ...) (Tom)
-Allow flag to control COPY input/output of NULLs (Peter E)
-Make postgres user have a password by default (Peter E)
-Add CREATE/ALTER/DROP GROUP (Peter E)
-All administration scripts now support --long options (Peter E, Karel)
-Vacuumdb script now supports --all option (Peter E)
-ecpg new portable FETCH syntax
-Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
-       and EXEC SQL ENDIF directives
-Add pg_ctl script to control backend start-up (Tatsuo)
-Add postmaster.opts.default file to store start-up flags (Tatsuo)
-Allow --with-mb=SQL_ASCII
-Increase maximum number of index keys to 16 (Bruce)
-Increase maximum number of function arguments to 16 (Bruce)
-Allow configuration of maximum number of index keys and arguments (Bruce)
-Allow unprivileged users to change their passwords (Peter E)
-Password authentication enabled; required for new users (Peter E)
-Disallow dropping a user who owns a database (Peter E)
-Change initdb option --with-mb to --enable-multibyte
-Add option for initdb to prompts for superuser password (Peter E)
-Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
-Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
-New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
-libpq non-blocking mode (Alfred Perlstein)
-Improve conversion of types in casts that don't specify a length
-New plperl internal programming language (Mark Hollomon)
-Allow COPY IN to read file that do not end with a newline (Tom)
-Indicate when long identifiers are truncated (Tom)
-Allow aggregates to use type equivalency (Peter E)
-Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
-       conversion functions (Karel Zak &lt;[email protected]&gt;)
-Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
-Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
-Add NUMERIC and int8 types to ODBC
-Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
-Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
-Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
-Enable backward sequential scan even after reaching EOF (Hiroshi)
-Add btree indexing of boolean values, &gt;= and &lt;= (Don Baccus)
-Print current line number when COPY FROM fails (Massimo)
-Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
-Add DEC as synonym for DECIMAL (Thomas)
-Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
-Implement SQL92 column aliases (aka correlation names) (Thomas)
-Implement SQL92 join syntax (Thomas)
-Make INTERVAL reserved word allowed as a column identifier (Thomas)
-Implement REINDEX command (Hiroshi)
-Accept ALL in aggregate function SUM(ALL col) (Tom)
-Prevent GROUP BY from using column aliases (Tom)
-New psql \encoding option (Tatsuo)
-Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
-Allow negation of a negative number in all cases
-Add ecpg descriptors (Christof, Michael)
-Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
-Allow casts with length, like foo::char(8)
-New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
-Add support for SJIS user defined characters (Tatsuo)
-Larger views/rules supported
-Make libpq's PQconndefaults() thread-safe (Tom)
-Disable // as comment to be ANSI conforming, should use -- (Tom)
-Allow column aliases on views CREATE VIEW name (collist)
-Fixes for views with subqueries (Tom)
-Allow UPDATE table SET fld = (SELECT ...) (Tom)
-SET command options no longer require quotes
-Update pgaccess to 0.98.6
-New SET SEED command
-New pg_options.sample file
-New SET FSYNC command (Massimo)
-Allow pg_descriptions when creating tables
-Allow pg_descriptions when creating types, columns, and functions
-Allow psql \copy to allow delimiters (Peter E)
-Allow psql to print nulls as distinct from "" [null] (Peter E)
-
-Types
------
-Many array fixes (Tom)
-Allow bare column names to be subscripted as arrays (Tom)
-Improve type casting of int and float constants (Tom)
-Cleanups for int8 inputs, range checking, and type conversion (Tom)
-Fix for SELECT timespan('21:11:26'::time) (Tom)
-netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
-Add btree index on NUMERIC (Jan)
-Perl fix for large objects containing NUL characters (Douglas Thomson)
-ODBC fix for large objects (free)
-Fix indexing of cidr data type
-Fix for Ethernet MAC addresses (macaddr type) comparisons
-Fix for date/time types when overflows happened in computations (Tom)
-Allow array on int8 (Peter E)
-Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
-Allow NUMERIC arrays
-Fix bugs in NUMERIC ceil() and floor() functions (Tom)
-Make char_length()/octet_length including trailing blanks (Tom)
-Made abstime/reltime use int4 instead of time_t (Peter E)
-New lztext data type for compressed text fields
-Revise code to handle coercion of int and float constants (Tom)
-Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
-NUMERIC now accepts scientific notation (Tom)
-NUMERIC to int4 rounds (Tom)
-Convert float4/8 to NUMERIC properly (Tom)
-Allow type conversion with NUMERIC (Thomas)
-Make ISO date style (2000-02-16 09:33) the default (Thomas)
-Add NATIONAL CHAR [ VARYING ] (Thomas)
-Allow NUMERIC round and trunc to accept negative scales (Tom)
-New TIME WITH TIME ZONE type (Thomas)
-Add MAX()/MIN() on time type (Thomas)
-Add abs(), mod(), fac() for int8 (Thomas)
-Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
-Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
-Add exp() and ln() for NUMERIC type
-Rename NUMERIC power() to pow() (Thomas)
-Improved TRANSLATE() function (Edwin Ramirez, Tom)
-Allow X=-Y operators  (Tom)
-Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
-Allow LOCALE to use indexes in regular expression searches (Tom)
-Allow creation of functional indexes to use default types
-
-Performance
------------
-Prevent exponential space consumption with many AND's and OR's (Tom)
-Collect attribute selectivity values for system columns (Tom)
-Reduce memory usage of aggregates (Tom)
-Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
-Fix r-tree index optimizer selectivity (Thomas)
-Improve optimizer selectivity computations and functions (Tom)
-Optimize btree searching for cases where many equal keys exist (Tom)
-Enable fast LIKE index processing only if index present (Tom)
-Re-use free space on index pages with duplicates (Tom)
-Improve hash join processing (Tom)
-Prevent descending sort if result is already sorted(Hiroshi)
-Allow commuting of index scan query qualifications (Tom)
-Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
-Allocate large memory requests in fix-sized chunks for performance (Tom)
-Fix vacuum's performance by reducing memory allocation requests (Tom)
-Implement constant-expression simplification (Bernard Frankpitt, Tom)
-Use secondary columns to be used to determine start of index scan (Hiroshi)
-Prevent quadruple use of disk space when doing internal sorting (Tom)
-Faster sorting by calling fewer functions (Tom)
-Create system indexes to match all system caches (Bruce, Hiroshi)
-Make system caches use system indexes (Bruce)
-Make all system indexes unique (Bruce)
-Improve pg_statistics management for VACUUM speed improvement (Tom)
-Flush backend cache less frequently (Tom, Hiroshi)
-COPY now reuses previous memory allocation, improving performance (Tom)
-Improve optimization cost estimation (Tom)
-Improve optimizer estimate of range queries x &gt; lowbound AND x &lt; highbound (Tom)
-Use DNF instead of CNF where appropriate (Tom, Taral)
-Further cleanup for OR-of-AND WHERE-clauses (Tom)
-Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
-Smarter optimizer computations for random index page access (Tom)
-New SET variable to control optimizer costs (Tom)
-Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
-Reduce optimizer internal housekeeping of join paths for speedup (Tom)
-Major subquery speedup (Tom)
-Fewer fsync writes when fsync is not disabled (Tom)
-Improved LIKE optimizer estimates (Tom)
-Prevent fsync in SELECT-only queries (Vadim)
-Make index creation use psort code, because it is now faster (Tom)
-Allow creation of sort temp tables &gt; 1 Gig
-
-Source Tree Changes
--------------------
-Fix for linux PPC compile
-New generic expression-tree-walker subroutine (Tom)
-Change form() to varargform() to prevent portability problems
-Improved range checking for large integers on Alphas
-Clean up #include in /include directory (Bruce)
-Add scripts for checking includes (Bruce)
-Remove un-needed #include's from *.c files (Bruce)
-Change #include's to use &lt;&gt; and "" as appropriate (Bruce)
-Enable Windows compilation of libpq
-Alpha spinlock fix from Uncle George <email>[email protected]</email>
-Overhaul of optimizer data structures (Tom)
-Fix to cygipc library (Yutaka Tanida)
-Allow pgsql to work on newer Cygwin snapshots (Dan)
-New catalog version number (Tom)
-Add Linux ARM
-Rename heap_replace to heap_update
-Update for QNX (Dr. Andreas Kardos)
-New platform-specific regression handling (Tom)
-Rename oid8 -&gt; oidvector and int28 -&gt; int2vector (Bruce)
-Included all yacc and lex files into the distribution (Peter E.)
-Remove lextest, no longer needed (Peter E)
-Fix for libpq and psql on Windows (Magnus)
-Internally change datetime and timespan into timestamp and interval (Thomas)
-Fix for plpgsql on BSD/OS
-Add SQL_ASCII test case to the regression test (Tatsuo)
-configure --with-mb now deprecated (Tatsuo)
-NT fixes
-NetBSD fixes (Johnny C. Lam <email>[email protected]</email>)
-Fixes for Alpha compiles
-New multibyte encodings
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
- <sect1 id="release-6-5-3">
-  <title>Release 6.5.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1999-10-13</simpara>
-  </note>
-
-  <para>
-   This is basically a cleanup release for 6.5.2.  We have added a new
-   <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 6.5.3</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    6.5.*.
-   </para>
-  </sect2>
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Updated version of pgaccess 0.98
-NT-specific patch
-Fix dumping rules on inherited tables
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
- <sect1 id="release-6-5-2">
-  <title>Release 6.5.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1999-09-15</simpara>
-  </note>
-
-  <para>
-   This is basically a cleanup release for 6.5.1.  We have fixed a variety of
-   problems reported by 6.5.1 users.
-  </para>
-
-
-  <sect2>
-   <title>Migration to Version 6.5.2</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    6.5.*.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-subselect+CASE fixes(Tom)
-Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
-Fixes for CASE in WHERE join clauses(Tom)
-Fix BTScan abort(Tom)
-Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
-Improve it so that it checks for multicolumn constraints(Thomas)
-Fix for Windows making problem with MB enabled(Hiroki Kataoka)
-Allow BSD yacc and bison to compile pl code(Bruce)
-Fix SET NAMES working
-int8 fixes(Thomas)
-Fix vacuum's memory consumption(Hiroshi,Tatsuo)
-Reduce the total memory consumption of vacuum(Tom)
-Fix for timestamp(datetime)
-Rule deparsing bugfixes(Tom)
-Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
-This is to re-use space on index pages freed by vacuum(Vadim)
-document -x for pg_dump(Bruce)
-Fix for unary operators in rule deparser(Tom)
-Comment out FileUnlink of excess segments during mdtruncate()(Tom)
-IRIX linking fix from Yu Cao &gt;[email protected]&lt;
-Repair logic error in LIKE: should not return LIKE_ABORT
-  when reach end of pattern before end of text(Tom)
-Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
-Updated version of pgaccess 0.98
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
- <sect1 id="release-6-5-1">
-  <title>Release 6.5.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1999-07-15</simpara>
-  </note>
-
-  <para>
-   This is basically a cleanup release for 6.5.  We have fixed a variety of
-   problems reported by 6.5 users.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 6.5.1</title>
-
-   <para>
-    A dump/restore is <emphasis>not</emphasis> required for those running
-    6.5.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Add NT README file
-Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
-Remove QUERY_LIMIT, use SELECT...LIMIT
-Fix for EXPLAIN on inheritance(Tom)
-Patch to allow vacuum on multisegment tables(Hiroshi)
-R-Tree optimizer selectivity fix(Tom)
-ACL file descriptor leak fix(Atsushi Ogawa)
-New expression subtree code(Tom)
-Avoid disk writes for read-only transactions(Vadim)
-Fix for removal of temp tables if last transaction was aborted(Bruce)
-Fix to prevent too large row from being created(Bruce)
-plpgsql fixes
-Allow port numbers 32k - 64k(Bruce)
-Add ^ precedence(Bruce)
-Rename sort files called pg_temp to pg_sorttemp(Bruce)
-Fix for microseconds in time values(Tom)
-Tutorial source cleanup
-New linux_m68k port
-Fix for sorting of NULL's in some cases(Tom)
-Shared library dependencies fixed (Tom)
-Fixed glitches affecting GROUP BY in subselects(Tom)
-Fix some compiler warnings (Tomoaki Nishiyama)
-Add Win1250 (Czech) support (Pavel Behal)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
- <sect1 id="release-6-5">
-  <title>Release 6.5</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1999-06-09</simpara>
-  </note>
-
-  <para>
-   This release marks a major step in the development team's mastery of the source
-   code we inherited from Berkeley.  You will see we are now easily adding
-   major features, thanks to the increasing size and experience of our
-   world-wide development team.
-  </para>
-
-  <para>
-   Here is a brief summary of the more notable changes:
-
-   <variablelist>
-    <varlistentry>
-     <term>
-      Multiversion concurrency control(MVCC)
-     </term>
-     <listitem>
-      <para>
-       This removes our old table-level locking, and replaces it with
-       a locking system that is superior to most commercial database
-       systems.  In a traditional system, each row that is modified
-       is locked until committed, preventing reads by other users.
-       MVCC uses the natural multiversion nature of
-       <productname>PostgreSQL</productname> to allow readers to
-       continue reading consistent data during writer activity.
-       Writers continue to use the compact pg_log transaction system.
-       This is all performed without having to allocate a lock for
-       every row like traditional database systems.  So, basically,
-       we no longer are restricted by simple table-level locking; we
-       have something better than row-level locking.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Hot backups from <application>pg_dump</application>
-     </term>
-     <listitem>
-      <para>
-       <application>pg_dump</application> takes advantage of the new
-       MVCC features to give a consistent database dump/backup while
-       the database stays online and available for queries.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Numeric data type
-     </term>
-     <listitem>
-      <para>
-       We now have a true numeric data type, with
-       user-specified precision.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Temporary tables
-     </term>
-     <listitem>
-      <para>
-       Temporary tables are guaranteed to have unique names
-       within a database session, and are destroyed on session exit.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      New SQL features
-     </term>
-     <listitem>
-      <para>
-       We now have CASE, INTERSECT, and EXCEPT statement
-       support.  We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
-       SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Speedups
-     </term>
-     <listitem>
-      <para>
-       We continue to speed up <productname>PostgreSQL</productname>,
-       thanks to the variety of talents within our team.  We have
-       sped up memory allocation, optimization, table joins, and row
-       transfer routines.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Ports
-     </term>
-     <listitem>
-      <para>
-       We continue to expand our port list, this time including
-       <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Interfaces
-     </term>
-     <listitem>
-      <para>
-       Most interfaces have new versions, and existing functionality
-       has been improved.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>
-      Documentation
-     </term>
-     <listitem>
-      <para>
-       New and updated material is present throughout the
-       documentation. New <acronym>FAQ</acronym>s have been
-       contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
-       The <citetitle>Tutorial</citetitle> has introductory information
-       on <acronym>SQL</acronym> from Stefan Simkovics.
-       For the <citetitle>User's Guide</citetitle>, there are
-       reference pages covering the postmaster and more utility
-       programs, and a new appendix
-       contains details on date/time behavior.
-       The <citetitle>Administrator's Guide</citetitle> has a new
-       chapter on troubleshooting from Tom Lane.
-       And the <citetitle>Programmer's Guide</citetitle> has a
-       description of query processing, also from Stefan, and details
-       on obtaining the <productname>PostgreSQL</productname> source
-       tree via anonymous <productname>CVS</productname> and
-       <productname>CVSup</productname>.
-      </para>
-     </listitem>
-    </varlistentry>
-   </variablelist>
-  </para>
-
-  <sect2>
-   <title>Migration to Version 6.5</title>
-
-   <para>
-    A dump/restore using <application>pg_dump</application>
-    is required for those wishing to migrate data from any
-    previous release of <productname>PostgreSQL</productname>.
-    <application>pg_upgrade</application> can <emphasis>not</emphasis>
-    be used to upgrade to this release because the on-disk structure
-    of the tables has changed compared to previous releases.
-   </para>
-
-   <para>
-    The new Multiversion Concurrency Control (MVCC) features can
-    give somewhat different behaviors in multiuser
-    environments. <emphasis>Read and understand the following section
-     to ensure that your existing applications will give you the
-     behavior you need.</emphasis>
-   </para>
-
-   <sect3>
-    <title>Multiversion Concurrency Control</title>
-
-    <para>
-     Because readers in 6.5 don't lock data, regardless of transaction
-     isolation level, data read by one transaction can be overwritten by
-     another. In other words, if a row is returned by
-     <command>SELECT</command> it doesn't mean that this row really exists
-     at the time it is returned (i.e. sometime after the statement or
-     transaction began) nor that the row is protected from being deleted or
-     updated by concurrent transactions before the current transaction does
-     a commit or rollback.
-    </para>
-
-    <para>
-     To ensure the actual existence of a row and protect it against
-     concurrent updates one must use <command>SELECT FOR UPDATE</command> or
-     an appropriate <command>LOCK TABLE</command> statement. This should be
-     taken into account when porting applications from previous releases of
-     <productname>PostgreSQL</productname> and other environments.
-    </para>
-
-    <para>
-     Keep the above in mind if you are using
-     <filename>contrib/refint.*</filename> triggers for
-     referential integrity. Additional techniques are required now. One way is
-     to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
-     command if a transaction is going to update/delete a primary key and
-     use <command>LOCK parent_table IN SHARE MODE</command> command if a
-     transaction is going to update/insert a foreign key.
-
-     <note>
-      <para>
-       Note that if you run a transaction in SERIALIZABLE mode then you must
-       execute the <command>LOCK</command> commands above before execution of any
-       <acronym>DML</acronym> statement
-       (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
-       transaction.
-      </para>
-     </note>
-    </para>
-
-    <para>
-     These inconveniences will disappear in the future
-     when the ability to read dirty
-     (uncommitted) data (regardless of isolation level) and true referential
-     integrity will be implemented.
-    </para>
-   </sect3>
-   </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-Fix text&lt;-&gt;float8 and text&lt;-&gt;float4 conversion functions(Thomas)
-Fix for creating tables with mixed-case constraints(Billy)
-Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
-Fix bug in pg_dump -z
-Memory overrun cleanups(Tatsuo)
-Fix for lo_import crash(Tatsuo)
-Adjust handling of data type names to suppress double quotes(Thomas)
-Use type coercion for matching columns and DEFAULT(Thomas)
-Fix deadlock so it only checks once after one second of sleep(Bruce)
-Fixes for aggregates and PL/pgsql(Hiroshi)
-Fix for subquery crash(Vadim)
-Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
-Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
-Fix for pg_dump -d or -D and  quote special characters in INSERT
-Repair serious problems with dynahash(Tom)
-Fix INET/CIDR portability problems
-Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
-Fix executor so mergejoin of different column types works(Tom)
-Fix for Alpha OR selectivity bug
-Fix OR index selectivity problem(Bruce)
-Fix so \d shows proper length for char()/varchar()(Ryan)
-Fix tutorial code(Clark)
-Improve destroyuser checking(Oliver)
-Fix for Kerberos(Rodney McDuff)
-Fix for dropping database while dirty buffers(Bruce)
-Fix so sequence nextval() can be case-sensitive(Bruce)
-Fix !!= operator
-Drop buffers before destroying database files(Bruce)
-Fix case where executor evaluates functions twice(Tatsuo)
-Allow sequence nextval actions to be case-sensitive(Bruce)
-Fix optimizer indexing not working for negative numbers(Bruce)
-Fix for memory leak in executor with fjIsNull
-Fix for aggregate memory leaks(Erik Riedel)
-Allow user name containing a dash to grant privileges
-Cleanup of NULL in inet types
-Clean up system table bugs(Tom)
-Fix problems of PAGER and \? command(Masaaki Sakaida)
-Reduce default multisegment file size limit to 1GB(Peter)
-Fix for dumping of CREATE OPERATOR(Tom)
-Fix for backward scanning of cursors(Hiroshi Inoue)
-Fix for COPY FROM STDIN when using \i(Tom)
-Fix for subselect is compared inside an expression(Jan)
-Fix handling of error reporting while returning rows(Tom)
-Fix problems with reference to array types(Tom,Jan)
-Prevent UPDATE SET oid(Jan)
-Fix pg_dump so -t option can handle case-sensitive tablenames
-Fixes for GROUP BY in special cases(Tom, Jan)
-Fix for memory leak in failed queries(Tom)
-DEFAULT now supports mixed-case identifiers(Tom)
-Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
-Disable use of pg_dump with both -o and -d options(Bruce)
-Allow pg_dump to properly dump group privileges(Bruce)
-Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
-Fix for computations in views(Jan)
-Fix for aggregates on array indexes(Tom)
-Fix for DEFAULT handles single quotes in value requiring too many quotes
-Fix security problem with non-super users importing/exporting large objects(Tom)
-Rollback of transaction that creates table cleaned up properly(Tom)
-Fix to allow long table and column names to generate proper serial names(Tom)
-
-Enhancements
-------------
-Add "vacuumdb" utility
-Speed up libpq by allocating memory better(Tom)
-EXPLAIN all indexes used(Tom)
-Implement CASE, COALESCE, NULLIF  expression(Thomas)
-New pg_dump table output format(Constantin)
-Add string min()/max() functions(Thomas)
-Extend new type coercion techniques to aggregates(Thomas)
-New moddatetime contrib(Terry)
-Update to pgaccess 0.96(Constantin)
-Add routines for single-byte "char" type(Thomas)
-Improved substr() function(Thomas)
-Improved multibyte handling(Tatsuo)
-Multiversion concurrency control/MVCC(Vadim)
-New Serialized mode(Vadim)
-Fix for tables over 2gigs(Peter)
-New SET TRANSACTION ISOLATION LEVEL(Vadim)
-New LOCK TABLE IN ... MODE(Vadim)
-Update ODBC driver(Byron)
-New NUMERIC data type(Jan)
-New SELECT FOR UPDATE(Vadim)
-Handle "NaN" and "Infinity" for input values(Jan)
-Improved date/year handling(Thomas)
-Improved handling of backend connections(Magnus)
-New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
-New TCL_ARRAYS option(Massimo)
-New INTERSECT and EXCEPT(Stefan)
-New pg_index.indisprimary for primary key tracking(D'Arcy)
-New pg_dump option to allow dropping of tables before creation(Brook)
-Speedup of row output routines(Tom)
-New READ COMMITTED isolation level(Vadim)
-New TEMP tables/indexes(Bruce)
-Prevent sorting if result is already sorted(Jan)
-New memory allocation optimization(Jan)
-Allow psql to do \p\g(Bruce)
-Allow multiple rule actions(Jan)
-Added LIMIT/OFFSET functionality(Jan)
-Improve optimizer when joining a large number of tables(Bruce)
-New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
-New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
-Improved int8 support(Ryan Bradetich, Thomas, Tom)
-New routines to convert between int8 and text/varchar types(Thomas)
-New bushy plans, where meta-tables are joined(Bruce)
-Enable right-hand queries by default(Bruce)
-Allow reliable maximum number of backends to be set at configure time
-     (--with-maxbackends and postmaster switch (-N backends))(Tom)
-GEQO default now 10 tables because of optimizer speedups(Tom)
-Allow NULL=Var for MS-SQL portability(Michael, Bruce)
-Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
-Allow psql \d on a view show query(Ryan)
-Speedup for LIKE(Bruce)
-Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
-JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
-Make % operator have precedence like /(Bruce)
-Add new postgres -O option to allow system table structure changes(Bruce)
-Update contrib/pginterface/findoidjoins script(Tom)
-Major speedup in vacuum of deleted rows with indexes(Vadim)
-Allow non-SQL functions to run different versions based on arguments(Tom)
-Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
-Add version number in start-up banners for psql(Masaaki Sakaida)
-New contrib/vacuumlo removes large objects not referenced(Peter)
-New initialization for table sizes so non-vacuumed tables perform better(Tom)
-Improve error messages when a connection is rejected(Tom)
-Support for arrays of char() and varchar() fields(Massimo)
-Overhaul of hash code to increase reliability and performance(Tom)
-Update to PyGreSQL 2.4(D'Arcy)
-Changed debug options so -d4 and -d5 produce different node displays(Jan)
-New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
-Better optimization statistics for system table access(Tom)
-Better handling of non-default block sizes(Massimo)
-Improve GEQO optimizer memory consumption(Tom)
-UNION now supports ORDER BY of columns not in target list(Jan)
-Major libpq++ improvements(Vince Vielhaber)
-pg_dump now uses -z(ACL's) as default(Bruce)
-backend cache, memory speedups(Tom)
-have pg_dump do everything in one snapshot transaction(Vadim)
-fix for large object memory leakage, fix for pg_dumping(Tom)
-INET type now respects netmask for comparisons
-Make VACUUM ANALYZE only use a readlock(Vadim)
-Allow VIEWs on UNIONS(Jan)
-pg_dump now can generate consistent snapshots on active databases(Vadim)
-
-Source Tree Changes
--------------------
-Improve port matching(Tom)
-Portability fixes for SunOS
-Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
-New port to Cobalt Qube(Mips) running Linux(Tatsuo)
-Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
-Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
-Port to NetBSD/macppc(Toshimi Aoki)
-Fix for tcl/tk configuration(Vince)
-Removed CURRENT key word for rule queries(Jan)
-NT dynamic loading now works(Daniel Horak)
-Add ARM32 support(Andrew McMurry)
-Better support for HP-UX 11 and UnixWare
-Improve file handling to be more uniform, prevent file descriptor leak(Tom)
-New install commands for plpgsql(Jan)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-
-<sect1 id="release-6-4-2">
-<title>Release 6.4.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1998-12-20</simpara>
-  </note>
-
-<para>
-The 6.4.1 release was improperly packaged.  This also has one additional
-bug fix.
-</para>
-
-
-<sect2>
-<title>Migration to Version 6.4.2</title>
-
-<para>
-A dump/restore is <emphasis>not</emphasis> required for those running
-6.4.*.
-</para>
-</sect2>
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Fix for datetime constant problem on some platforms(Thomas)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-
-
-<sect1 id="release-6-4-1">
-<title>Release 6.4.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1998-12-18</simpara>
-  </note>
-
-<para>
-This is basically a cleanup release for 6.4.  We have fixed a variety of
-problems reported by 6.4 users.
-</para>
-
-
-<sect2>
-<title>Migration to Version 6.4.1</title>
-
-<para>
-A dump/restore is <emphasis>not</emphasis> required for those running
-6.4.
-</para>
-</sect2>
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Add pg_dump -N flag to force double quotes around identifiers.  This is
-       the default(Thomas)
-Fix for NOT in where clause causing crash(Bruce)
-EXPLAIN VERBOSE coredump fix(Vadim)
-Fix shared-library problems on Linux
-Fix test for table existence to allow mixed-case and whitespace in
-       the table name(Thomas)
-Fix a couple of pg_dump bugs
-Configure matches template/.similar entries better(Tom)
-Change builtin function names from SPI_* to spi_*
-OR WHERE clause fix(Vadim)
-Fixes for mixed-case table names(Billy)
-contrib/linux/postgres.init.csh/sh fix(Thomas)
-libpq memory overrun fix
-SunOS fixes(Tom)
-Change exp() behavior to generate error on underflow(Thomas)
-pg_dump fixes for memory leak, inheritance constraints, layout change
-update pgaccess to 0.93
-Fix prototype for 64-bit platforms
-Multibyte fixes(Tatsuo)
-New ecpg man page
-Fix memory overruns(Tatsuo)
-Fix for lo_import() crash(Bruce)
-Better search for install program(Tom)
-Timezone fixes(Tom)
-HP-UX fixes(Tom)
-Use implicit type coercion for matching DEFAULT values(Thomas)
-Add routines to help with single-byte (internal) character type(Thomas)
-Compilation of libpq for Windows fixes(Magnus)
-Upgrade to PyGreSQL 2.2(D'Arcy)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-
-
-<sect1 id="release-6-4">
-<title>Release 6.4</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1998-10-30</simpara>
-  </note>
-
-<para>
-There are <emphasis>many</emphasis> new features and improvements in this release.
-Thanks to our developers and maintainers, nearly every aspect of the system
-has received some attention since the previous release.
-Here is a brief, incomplete summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Views and rules are now functional thanks to extensive new code in the
-rewrite rules system from Jan Wieck. He also wrote a chapter on it
-for the <citetitle>Programmer's Guide</citetitle>.
-</para>
-</listitem>
-<listitem>
-<para>
-Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
-original <application>PL/pgTCL</application> procedural language he contributed last release.
-</para>
-</listitem>
-
-<listitem>
-<para>
-We have optional multiple-byte character set support from Tatsuo Ishii
-to complement our existing locale support.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Client/server communications has been cleaned up, with better support for
-asynchronous messages and interrupts thanks to Tom Lane.
-</para>
-</listitem>
-
-<listitem>
-<para>
-The parser will now perform automatic type coercion to match arguments
-to available operators and functions, and to match columns and expressions
-with target columns. This uses a generic mechanism which supports
-the type extensibility features of <productname>PostgreSQL</productname>.
-There is a new chapter in the <citetitle>User's Guide</citetitle>
-which covers this topic.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Three new data types have been added.
-Two types, <type>inet</type> and <type>cidr</type>, support various forms
-of IP network, subnet, and machine addressing. There is now an 8-byte integer
-type available on some platforms. See the chapter on data types
-in the <citetitle>User's Guide</citetitle> for details.
-A fourth type, <type>serial</type>, is now supported by the parser as an
-amalgam of the <type>int4</type> type, a sequence, and a unique index.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Several more <acronym>SQL92</acronym>-compatible syntax features have been
-added, including <command>INSERT DEFAULT VALUES</command>
-</para>
-</listitem>
-
-<listitem>
-<para>
-The automatic configuration and installation system has received some
-attention, and should be more robust for more platforms than it has ever
-been.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-
-<sect2>
-<title>Migration to Version 6.4</title>
-
-<para>
-A dump/restore using <application>pg_dump</application>
-or <application>pg_dumpall</application>
-is required for those wishing to migrate data from any
-previous release of <productname>PostgreSQL</productname>.
-</para>
-</sect2>
-
-  <sect2>
-<title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
-Remove char2-16 data types, use char/varchar(Darren)
-Pqfn not handles a NOTICE message(Anders)
-Reduced busywaiting overhead for spinlocks with many backends (dg)
-Stuck spinlock detection (dg)
-Fix up "ISO-style" timespan decoding and encoding(Thomas)
-Fix problem with table drop after rollback of transaction(Vadim)
-Change error message and remove non-functional update message(Vadim)
-Fix for COPY array checking
-Fix for SELECT 1 UNION SELECT NULL
-Fix for buffer leaks in large object calls(Pascal)
-Change owner from oid to int4 type(Bruce)
-Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
-Fix for shared invalidation cache overflow(Massimo)
-Prevent file descriptor leaks in failed COPY's(Bruce)
-Fix memory leak in libpgtcl's pg_select(Constantin)
-Fix problems with username/passwords over 8 characters(Tom)
-Fix problems with handling of asynchronous NOTIFY in backend(Tom)
-Fix of many bad system table entries(Tom)
-
-Enhancements
-------------
-Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
-Show the index used in an EXPLAIN(Zeugswetter)
-EXPLAIN  invokes  rule system and shows plan(s) for rewritten queries(Jan)
-Multibyte awareness of many data types and functions, via configure(Tatsuo)
-New configure --with-mb option(Tatsuo)
-New initdb --pgencoding option(Tatsuo)
-New createdb -E multibyte option(Tatsuo)
-Select version(); now returns PostgreSQL version(Jeroen)
-libpq now allows asynchronous clients(Tom)
-Allow cancel from client of backend query(Tom)
-psql now cancels query with Control-C(Tom)
-libpq users need not issue dummy queries to get NOTIFY messages(Tom)
-NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
-PGresult struct now includes associated error message, if any(Tom)
-Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
-Add routines to convert between varchar and bpchar(Thomas)
-Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
-Add bit flags to support timezonehour and minute in data retrieval(Thomas)
-Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
-Fixes for unary minus parsing with leading spaces(Thomas)
-Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
-Check for and properly ignore FOREIGN KEY column constraints(Thomas)
-Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
-Enable HAVING clause but no fixes elsewhere yet.
-Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
-Save string type if specified for DEFAULT clause handling(Thomas)
-Coerce operations involving different data types(Thomas)
-Allow some index use for columns of different types(Thomas)
-Add capabilities for automatic type conversion(Thomas)
-Cleanups for large objects, so file is truncated on open(Peter)
-Readline cleanups(Tom)
-Allow psql  \f \ to make spaces as delimiter(Bruce)
-Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
-Msql compatibility library in /contrib(Aldrin)
-Remove the requirement that ORDER/GROUP BY clause identifiers be
-included in the target list(David)
-Convert columns to match columns in UNION clauses(Thomas)
-Remove fork()/exec() and only do fork()(Bruce)
-Jdbc cleanups(Peter)
-Show backend status on ps command line(only works on some platforms)(Bruce)
-Pg_hba.conf now has a sameuser option in the database field
-Make lo_unlink take oid param, not int4
-New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce)
-Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
-libpgtcl cleanups(Tom)
-Add -error option to libpgtcl's pg_result command(Tom)
-New locale patch, see docs/README/locale(Oleg)
-Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
-New contrib/lo code for large object orphan removal(Peter)
-New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
-feature, see /doc/README.mb(Tatsuo)
-contrib/noupdate code to revoke update permission on a column
-libpq can now be compiled on Windows(Magnus)
-Add PQsetdbLogin() in libpq
-New 8-byte integer type, checked by configure for OS support(Thomas)
-Better support for quoted table/column names(Thomas)
-Surround table and column names with double-quotes in pg_dump(Thomas)
-PQreset() now works with passwords(Tom)
-Handle case of GROUP BY target list column number out of range(David)
-Allow UNION in subselects
-Add auto-size to screen to \d? commands(Bruce)
-Use UNION to show all \d? results in one query(Bruce)
-Add \d? field search feature(Bruce)
-Pg_dump issues fewer \connect requests(Tom)
-Make pg_dump -z flag work better, document it in manual page(Tom)
-Add HAVING clause with full support for subselects and unions(Stephan)
-Full text indexing routines in contrib/fulltextindex(Maarten)
-Transaction ids now stored in shared memory(Vadim)
-New PGCLIENTENCODING when issuing COPY command(Tatsuo)
-Support for SQL92 syntax "SET NAMES"(Tatsuo)
-Support for LATIN2-5(Tatsuo)
-Add UNICODE regression test case(Tatsuo)
-Lock manager cleanup, new locking modes for LLL(Vadim)
-Allow index use with OR clauses(Bruce)
-Allows "SELECT NULL ORDER BY 1;"
-Explain VERBOSE prints the plan, and now pretty-prints the plan to
-the postmaster log file(Bruce)
-Add indexes display to \d command(Bruce)
-Allow GROUP BY on functions(David)
-New pg_class.relkind for large objects(Bruce)
-New way to send libpq NOTICE messages to a different location(Tom)
-New \w write command to psql(Bruce)
-New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
-Allow binary-compatible indexes to be considered when checking for valid
-Indexes for restriction clauses containing a constant(Thomas)
-New ISBN/ISSN code in /contrib/isbn_issn
-Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
-New rewrite system fixes many problems with rules and views(Jan)
-       * Rules on relations work
-       * Event qualifications on insert/update/delete work
-       * New OLD variable to reference CURRENT, CURRENT will be remove in future
-       * Update rules can reference NEW and OLD in rule qualifications/actions
-       * Insert/update/delete rules on views work
-       * Multiple rule actions are now supported, surrounded by parentheses
-       * Regular users can create views/rules on tables they have RULE permits
-       * Rules and views inherit the privileges of the creator
-       * No rules at the column level
-       * No UPDATE NEW/OLD rules
-       * New pg_tables, pg_indexes, pg_rules and pg_views system views
-       * Only a single action on SELECT rules
-       * Total rewrite overhaul, perhaps for 6.5
-       * handle subselects
-       * handle aggregates on views
-       * handle insert into select from view works
-System indexes are now multikey(Bruce)
-Oidint2, oidint4, and oidname types are removed(Bruce)
-Use system cache for more system table lookups(Bruce)
-New backend programming language PL/pgSQL in backend/pl(Jan)
-New SERIAL data type, auto-creates sequence/index(Thomas)
-Enable assert checking without a recompile(Massimo)
-User lock enhancements(Massimo)
-New setval() command to set sequence value(Massimo)
-Auto-remove unix socket file on start-up if no postmaster running(Massimo)
-Conditional trace package(Massimo)
-New UNLISTEN command(Massimo)
-psql and libpq now compile under Windows using win32.mak(Magnus)
-Lo_read no longer stores trailing NULL(Bruce)
-Identifiers are now truncated to 31 characters internally(Bruce)
-Createuser options now available on the command line
-Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
-Prevent file descriptor leaf from failed COPY(Bruce)
-New pg_upgrade command(Bruce)
-Updated /contrib directories(Massimo)
-New CREATE TABLE DEFAULT VALUES statement available(Thomas)
-New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
-New DECLARE and FETCH feature(Thomas)
-libpq's internal structures now not exported(Tom)
-Allow up to 8 key indexes(Bruce)
-Remove ARCHIVE key word, that is no longer used(Thomas)
-pg_dump -n flag to suppress quotes around indentifiers
-disable system columns for views(Jan)
-new INET and CIDR types for network addresses(TomH, Paul)
-no more double quotes in psql output
-pg_dump now dumps views(Terry)
-new SET QUERY_LIMIT(Tatsuo,Jan)
-
-Source Tree Changes
--------------------
-/contrib cleanup(Jun)
-Inline some small functions called for every row(Bruce)
-Alpha/linux fixes
-HP-UX cleanups(Tom)
-Multibyte regression tests(Soonmyung.)
-Remove --disabled options from configure
-Define PGDOC to use POSTGRESDIR by default
-Make regression optional
-Remove extra braces code to pgindent(Bruce)
-Add bsdi shared library support(Bruce)
-New --without-CXX support configure option(Brook)
-New FAQ_CVS
-Update backend flowchart in tools/backend(Bruce)
-Change atttypmod from int16 to int32(Bruce, Tom)
-Getrusage() fix for platforms that do not have it(Tom)
-Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
-NS32K platform fixes(Phil Nelson, John Buller)
-SCO 7/UnixWare 2.x fixes(Billy,others)
-Sparc/Solaris 2.5 fixes(Ryan)
-Pgbuiltin.3 is obsolete, move to doc files(Thomas)
-Even more documentation(Thomas)
-Nextstep support(Jacek)
-Aix support(David)
-pginterface manual page(Bruce)
-shared libraries all have version numbers
-merged all OS-specific shared library defines into one file
-smarter TCL/TK configuration checking(Billy)
-smarter perl configuration(Brook)
-configure uses supplied install-sh if no install script found(Tom)
-new Makefile.shlib for shared library configuration(Tom)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-3-2">
-<title>Release 6.3.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1998-04-07</simpara>
-  </note>
-
-<para>
-This is a bug-fix release for 6.3.x.
-Refer to the release notes for version 6.3 for a more complete summary of new features.
-</para>
-<para>
-Summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Repairs automatic configuration support for some platforms, including Linux,
-from breakage inadvertently introduced in version 6.3.1.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-<para>
-A dump/restore is NOT required for those running 6.3 or 6.3.1.  A
-<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
-This last step should be performed while the postmaster is not running.
-You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
-</para>
-<para>
-For upgrades from pre-6.3 installations,
-refer to the installation and migration instructions for version 6.3.
-</para>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
-Manual page improvements(Bruce)
-BETWEEN and LIKE fix(Thomas)
-fix for psql \connect used by pg_dump(Oliver Elphick)
-New odbc driver
-pgaccess, version 0.86
-qsort removed, now uses libc version, cleanups(Jeroen)
-fix for buffer over-runs detected(Maurice Gittens)
-fix for buffer overrun in libpgtcl(Randy Kunkee)
-fix for UNION with DISTINCT or ORDER BY(Bruce)
-gettimeofday configure check(Doug Winterburn)
-Fix "indexes not used" bug(Vadim)
-docs additions(Thomas)
-Fix for backend memory leak(Bruce)
-libreadline cleanup(Erwan MAS)
-Remove DISTDIR(Bruce)
-Makefile dependency cleanup(Jeroen van Vianen)
-ASSERT fixes(Bruce)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
- <sect1 id="release-6-3-1">
-  <title>Release 6.3.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1998-03-23</simpara>
-  </note>
-
-  <para>
-   Summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Additional support for multibyte character sets.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Repair byte ordering for mixed-endian clients and servers.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Minor updates to allowed SQL syntax.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Improvements to the configuration autodetection for installation.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-<para>
-A dump/restore is NOT required for those running 6.3.  A
-<literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
-This last step should be performed while the postmaster is not running.
-You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
-</para>
-<para>
-For upgrades from pre-6.3 installations,
-refer to the installation and migration instructions for version 6.3.
-</para>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-ecpg cleanup/fixes, now version 1.1(Michael Meskes)
-pg_user cleanup(Bruce)
-large object fix for pg_dump and tclsh (alvin)
-LIKE fix for multiple adjacent underscores
-fix for redefining builtin functions(Thomas)
-ultrix4 cleanup
-upgrade to pg_access 0.83
-updated CLUSTER manual page
-multibyte character set support, see doc/README.mb(Tatsuo)
-configure --with-pgport fix
-pg_ident fix
-big-endian fix for backend communications(Kataoka)
-SUBSTR() and substring() fix(Jan)
-several jdbc fixes(Peter)
-libpgtcl improvements, see libptcl/README(Randy Kunkee)
-Fix for "Datasize = 0" error(Vadim)
-Prevent \do from wrapping(Bruce)
-Remove duplicate Russian character set entries
-Sunos4 cleanup
-Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
-CREATE SEQUENCE options to allow a negative integer(Thomas)
-Add "PASSWORD" as an allowed column identifier(Thomas)
-Add checks for UNION target fields(Bruce)
-Fix Alpha port(Dwayne Bailey)
-Fix for text arrays containing quotes(Doug Gibson)
-Solaris compile fix(Albert Chin-A-Young)
-Better identify tcl and tk libs and includes(Bruce)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
- <sect1 id="release-6-3">
-  <title>Release 6.3</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1998-03-01</simpara>
-  </note>
-
-  <para>
-   There are <emphasis>many</emphasis> new features and improvements in this release.
-   Here is a brief, incomplete summary:
-
-   <itemizedlist>
-    <listitem>
-     <para>
-      Many new SQL features, including
-      full <acronym>SQL92</acronym> subselect capability
-      (everything is here but target-list subselects).
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Support for client-side environment variables to specify time zone and date style.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Socket interface for client/server connection. This is the default now
-      so you might need to start <application>postmaster</application> with the
-      <option>-i</option> flag.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Better password authorization mechanisms. Default table privileges have changed.
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Old-style <firstterm>time travel</firstterm>
-      has been removed. Performance has been improved.
-     </para>
-    </listitem>
-   </itemizedlist>
-  </para>
-
-  <note>
-   <para>
-    Bruce Momjian wrote the following notes to introduce the new release.
-   </para>
-  </note>
-
-  <para>
-   There are some general 6.3 issues that I want to mention.  These are
-   only the big items that cannot be described in one sentence.  A review
-   of the detailed changes list is still needed.
-  </para>
-  <para>
-   First, we now have subselects.  Now that we have them, I would like to
-   mention that without subselects, SQL is a very limited language.
-   Subselects are a major feature, and you should review your code for
-   places where subselects provide a better solution for your queries.  I
-   think you will find that there are more uses for subselects than you might
-   think.  Vadim has put us on the big SQL map with subselects, and fully
-   functional ones too.  The only thing you cannot do with subselects is to
-   use them in the target list.
-  </para>
-  <para>
-   Second, 6.3 uses Unix domain sockets rather than TCP/IP by default.  To
-   enable connections from other machines, you have to use the new
-   postmaster -i option, and of course edit <filename>pg_hba.conf</filename>.  Also, for this
-   reason, the format of <filename>pg_hba.conf</filename> has changed.
-  </para>
-  <para>
-   Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
-   <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
-   any columns after the first column of this type.  <type>char()</type> used to also
-   have this access penalty, but it no longer does.  This might suggest that
-   you redesign some of your tables, especially if you have short character
-   columns that you have defined as <type>varchar()</type> or <type>text</type>.  This and other
-   changes make 6.3 even faster than earlier releases.
-  </para>
-  <para>
-   We now have passwords definable independent of any Unix file.  There are
-   new SQL USER commands.
-   See the <citetitle>Administrator's Guide</citetitle> for more
-   information.  There is a new table, pg_shadow, which is used to store
-   user information and user passwords, and it by default only SELECT-able
-   by the <systemitem>postgres</systemitem> super-user.  pg_user is now a view of pg_shadow, and is
-   SELECT-able by PUBLIC.  You should keep using pg_user in your
-   application without changes.
-  </para>
-  <para>
-   User-created tables now no longer have SELECT privilege to PUBLIC by
-   default.  This was done because the ANSI standard requires it.  You can
-   of course GRANT any privileges you want after the table is created.
-   System tables continue to be SELECT-able by PUBLIC.
-  </para>
-  <para>
-   We also have real deadlock detection code.  No more sixty-second
-   timeouts.  And the new locking code implements a <acronym>FIFO</acronym> better, so there
-   should be less resource starvation during heavy use.
-  </para>
-  <para>
-   Many complaints have been made about inadequate documentation in previous
-   releases.  Thomas has put much effort into many new manuals for this
-   release.  Check out the doc/ directory.
-  </para>
-  <para>
-   For performance reasons, time travel is gone, but can be implemented
-   using triggers (see <filename>pgsql/contrib/spi/README</filename>).  Please check out the new
-   \d command for types, operators, etc.  Also, views have their own
-   privileges now, not based on the underlying tables, so privileges on
-   them have to be set separately.  Check <filename>/pgsql/interfaces</filename> for some new
-   ways to talk to <productname>PostgreSQL</productname>.
-  </para>
-  <para>
-   This is the first release that really required an explanation for
-   existing users.  In many ways, this was necessary because the new
-   release removes many limitations, and the work-arounds people were using
-   are no longer needed.
-  </para>
-
-  <sect2>
-   <title>Migration to Version 6.3</title>
-
-   <para>
-    A dump/restore using <application>pg_dump</application>
-    or <application>pg_dumpall</application>
-    is required for those wishing to migrate data from any
-    previous release of <productname>PostgreSQL</productname>.
-   </para>
-  </sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-Fix binary cursors broken by MOVE implementation(Vadim)
-Fix for tcl library crash(Jan)
-Fix for array handling, from Gerhard Hintermayer
-Fix acl error, and remove duplicate pqtrace(Bruce)
-Fix psql \e for empty file(Bruce)
-Fix for textcat on varchar() fields(Bruce)
-Fix for DBT Sendproc (Zeugswetter Andres)
-Fix vacuum analyze syntax problem(Bruce)
-Fix for international identifiers(Tatsuo)
-Fix aggregates on inherited tables(Bruce)
-Fix substr() for out-of-bounds data
-Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
-Fix notty output to show status result.  -q option still turns it off(Bruce)
-Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
-Fix cluster(Bruce)
-Fix for PQtrace start/stop several times(Bruce)
-Fix a variety of locking problems like newer lock waiters getting
-       lock before older waiters, and having readlock people not share
-       locks if a writer is waiting for a lock, and waiting writers not
-       getting priority over waiting readers(Bruce)
-Fix crashes in psql when executing queries from external files(James)
-Fix problem with multiple order by columns, with the first one having
-       NULL values(Jeroen)
-Use correct hash table support functions for float8 and int4(Thomas)
-Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
-Change precedence for boolean operators to match expected behavior(Thomas)
-Generate elog(ERROR) on over-large integer(Bruce)
-Allow multiple-argument functions in constraint clauses(Thomas)
-Check boolean input literals for 'true','false','yes','no','1','0'
-       and throw elog(ERROR) if unrecognized(Thomas)
-Major large objects fix
-Fix for GROUP BY showing duplicates(Vadim)
-Fix for index scans in MergeJoin(Vadim)
-
-Enhancements
-------------
-Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
-New User Manual(Thomas, others)
-Speedup by inlining some frequently-called functions
-Real deadlock detection, no more timeouts(Bruce)
-Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
-       CURRENT_USER(Thomas)
-Modify constraint syntax to be SQL92-compliant(Thomas)
-Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
-Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
-Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
-Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
-Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
-Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
-Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
-Allow SQL92 delimited identifiers(Thomas)
-Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
-Support SQL92 syntax for type coercion of literal strings
-       (e.g. "DATETIME 'now'")(Thomas)
-Add conversions for int2, int4, and OID types to and from text(Thomas)
-Use shared lock when building indexes(Vadim)
-Free memory allocated for an user query inside transaction block after
-       this query is done, was turned off in &lt;= 6.2.1(Vadim)
-New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
-New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
-Rename pg_dump -H option to -h(Bruce)
-Add Java support for passwords, European dates(Peter)
-Use indexes for LIKE and ~, !~ operations(Bruce)
-Add hash functions for datetime and timespan(Thomas)
-Time Travel removed(Vadim, Bruce)
-Add paging for \d and \z, and fix \i(Bruce)
-Add Unix domain socket support to backend and to frontend library(Goran)
-Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
-Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
-Augment support for SQL92 SET TIME ZONE...(Thomas)
-SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
-Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
-Enable SET TIME ZONE using TZ environment variable(Thomas)
-Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
-Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
-       frontend library initialization environment variables(Thomas)
-Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
-Add pg_description table for info on tables, columns, operators, types, and
-       aggregates(Bruce)
-Increase 16 char limit on system table/index names to 32 characters(Bruce)
-Rename system indexes(Bruce)
-Add 'GERMAN' option to SET DATESTYLE(Thomas)
-Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
-Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
-Validate numeric input more carefully for delta times(Thomas)
-Implement day of year as possible input to date_part()(Thomas)
-Define timespan_finite() and text_timespan() functions(Thomas)
-Remove archive stuff(Bruce)
-Allow for a pg_password authentication database that is separate from
-       the system password file(Todd)
-Dump ACLs, GRANT, REVOKE privileges(Matt)
-Define text, varchar, and bpchar string length functions(Thomas)
-Fix Query handling for inheritance, and cost computations(Bruce)
-Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
-Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
-Implement UNIONs for SELECT(Bruce)
-Add UNION, GROUP, DISTINCT to INSERT(Bruce)
-varchar() stores only necessary bytes on disk(Bruce)
-Fix for BLOBs(Peter)
-Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
-Remove unused "option" from PQconnectdb()
-New LOCK command and lock manual page describing deadlocks(Bruce)
-Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
-Enhance psql \z to show sequences(Bruce)
-Show NOT NULL and DEFAULT in psql \d table(Bruce)
-New psql .psqlrc file start-up(Andrew)
-Modify sample start-up script in contrib/linux to show syslog(Thomas)
-New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
-Unix system time conversions with date/time types in contrib/unixdate(Thomas)
-Update of contrib stuff(Massimo)
-Add Unix socket support to DBD::Pg(Goran)
-New python interface (PyGreSQL 2.0)(D'Arcy)
-New frontend/backend protocol has a version number, network byte order(Phil)
-Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
-CHAR() now faster access than VARCHAR() or TEXT
-ecpg embedded SQL preprocessor
-Reduce system column overhead(Vadmin)
-Remove pg_time table(Vadim)
-Add pg_type attribute to identify types that need length (bpchar, varchar)
-Add report of offending line when COPY command fails
-Allow VIEW privileges to be set separately from the underlying tables.
-       For security, use GRANT/REVOKE on views as appropriate(Jan)
-Tables now have no default GRANT SELECT TO PUBLIC.  You must
-       explicitly grant such privileges.
-Clean up tutorial examples(Darren)
-
-Source Tree Changes
--------------------
-Add new html development tools, and flow chart in /tools/backend
-Fix for SCO compiles
-Stratus computer port Robert Gillies
-Added support for shlib for BSD44_derived &amp; i386_solaris
-Make configure more automated(Brook)
-Add script to check regression test results
-Break parser functions into smaller files, group together(Bruce)
-Rename heap_create to heap_create_and_catalog, rename heap_creatr
-       to heap_create()(Bruce)
-Sparc/Linux patch for locking(TomS)
-Remove PORTNAME and reorganize port-specific stuff(Marc)
-Add optimizer README file(Bruce)
-Remove some recursion in optimizer and clean up some code there(Bruce)
-Fix for NetBSD locking(Henry)
-Fix for libptcl make(Tatsuo)
-AIX patch(Darren)
-Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
-       function calls to istrue() or isfalse() to allow optimization(Thomas)
-Various fixes NetBSD/Sparc related(TomH)
-Alpha linux locking(Travis,Ryan)
-Change elog(WARN) to elog(ERROR)(Bruce)
-FAQ for FreeBSD(Marc)
-Bring in the PostODBC source tree as part of our standard distribution(Marc)
-A minor patch for HP/UX 10 vs 9(Stan)
-New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
-UnixWare patches(Billy)
-New i386 'lock' for spinlock asm(Billy)
-Support for multiplexed backends is removed
-Start an OpenBSD port
-Start an AUX port
-Start a Cygnus port
-Add string functions to regression suite(Thomas)
-Expand a few function names formerly truncated to 16 characters(Thomas)
-Remove un-needed malloc() calls and replace with palloc()(Bruce)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-2-1">
-<title>Release 6.2.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1997-10-17</simpara>
-  </note>
-
-<para>
-6.2.1 is a bug-fix and usability release on 6.2.
-</para>
-<para>
-Summary:
-
-<itemizedlist>
-<listitem>
-<para>
-Allow strings to span lines, per <acronym>SQL92</acronym>.
-</para>
-</listitem>
-
-<listitem>
-<para>
-Include example trigger function for inserting user names on table updates.
-</para>
-</listitem>
-
-</itemizedlist>
-</para>
-<para>
-This is a minor bug-fix release on 6.2.
-For upgrades from pre-6.2 systems, a full dump/reload is required.
-Refer to the 6.2 release notes for instructions.
-</para>
-
-<sect2>
-<title>Migration from version 6.2 to version 6.2.1</title>
-
-<para>
-This is a minor bug-fix release. A dump/reload is not required from version 6.2,
-but is required from any release prior to 6.2.
-</para>
-<para>
-In upgrading from version 6.2, if you choose to dump/reload you will find that
-avg(money) is now calculated correctly. All other bug fixes take effect
-upon updating the executables.
-</para>
-<para>
-Another way to avoid dump/reload is to use the following SQL command
-from <command>psql</command> to update the existing system table:
-
-<programlisting>
- update pg_aggregate set aggfinalfn = 'cash_div_flt8'
-  where aggname = 'avg' and aggbasetype = 790;
-</programlisting>
-</para>
-<para>
-This will need to be done to every existing database, including template1.
-</para>
-</sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Allow TIME and TYPE column names(Thomas)
-Allow larger range of true/false as boolean values(Thomas)
-Support output of "now" and "current"(Thomas)
-Handle DEFAULT with INSERT of NULL properly(Vadim)
-Fix for relation reference counts problem in buffer manager(Vadim)
-Allow strings to span lines, like ANSI(Thomas)
-Fix for backward cursor with ORDER BY(Vadim)
-Fix avg(cash) computation(Thomas)
-Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
-Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
-Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-<sect1 id="release-6-2">
-<title>Release 6.2</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1997-10-02</simpara>
-  </note>
-
-<para>
-A dump/restore is required for those wishing to migrate data from
-previous releases of <productname>PostgreSQL</productname>.
-</para>
-
-<sect2>
-<title>Migration from version 6.1 to version 6.2</title>
-
-<para>
-This migration requires a complete dump of the 6.1 database and a
-restore of the database in 6.2.
-</para>
-<para>
-Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
-to dump the 6.1 database.
-</para>
-</sect2>
-
-<sect2>
-<title>Migration from version 1.<replaceable>x</> to version 6.2</title>
-
-<para>
-Those migrating from earlier 1.* releases should first upgrade to 1.09
-because the COPY output format was improved from the 1.02 release.
-</para>
-</sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
-Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
-        from Solaris(Diab Jerius)
-Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
-Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
-Catch non-functional delete attempts(Vadim)
-Change time function names to be more consistent(Michael Reifenberg)
-Check for zero divides(Michael Reifenberg)
-Fix very old bug which made rows changed/inserted by a command
-       visible to the command itself (so we had multiple update of
-       updated rows, etc.)(Vadim)
-Fix for SELECT null, 'fail' FROM pg_am (Patrick)
-SELECT NULL as EMPTY_FIELD now allowed(Patrick)
-Remove un-needed signal stuff from contrib/pginterface
-Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
-Fix time_cmp function (Vadim)
-Fix handling of functions with non-attribute first argument in
-       WHERE clauses (Vadim)
-Fix GROUP BY when order of entries is different from order
-       in target list (Vadim)
-Fix pg_dump for aggregates without sfunc1 (Vadim)
-
-Enhancements
-------------
-Default genetic optimizer GEQO parameter is now 8(Bruce)
-Allow use parameters in target list having aggregates in functions(Vadim)
-Added JDBC driver as an interface(Adrian &amp; Peter)
-pg_password utility
-Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
-Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
-SPI (Server Programming Interface) allows execution of queries inside
-       C-functions (Vadim)
-NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
-Include reserved words for string handling, outer joins, and unions(Thomas)
-Implement extended comments ("/* ... */") using exclusive states(Thomas)
-Add "//" single-line comments(Bruce)
-Remove some restrictions on characters in operator names(Thomas)
-DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim &amp; Thomas)
-Add text concatenation operator and function (SQL92)(Thomas)
-Support WITH TIME ZONE syntax (SQL92)(Thomas)
-Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
-Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
-       and CHARACTER VARYING (SQL92)(Thomas)
-Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
-Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
-Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
-Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
-Add more reserved words, mostly for SQL92 compliance(Thomas)
-Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
-Add center() routines for lseg, path, polygon(Thomas)
-Add distance() routines for circle-polygon, polygon-polygon(Thomas)
-Check explicitly for points and polygons contained within polygons
-       using an axis-crossing algorithm(Thomas)
-Add routine to convert circle-box(Thomas)
-Merge conflicting operators for different geometric data types(Thomas)
-Replace distance operator "&lt;===&gt;" with "&lt;-&gt;"(Thomas)
-Replace "above" operator "!^" with "&gt;^" and "below" operator "!|" with "&lt;^"(Thomas)
-Add routines for text trimming on both ends, substring, and string position(Thomas)
-Added conversion routines circle(box) and poly(circle)(Thomas)
-Allow internal sorts to be stored in memory rather than in files(Bruce &amp; Vadim)
-Allow functions and operators on internally-identical types to succeed(Bruce)
-Speed up backend start-up after profiling analysis(Bruce)
-Inline frequently called functions for performance(Bruce)
-Reduce open() calls(Bruce)
-psql:  Add PAGER for \h and \?,\C fix
-Fix for psql pager when no tty(Bruce)
-New entab utility(Bruce)
-General trigger functions for referential integrity (Vadim)
-General trigger functions for time travel (Vadim)
-General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
-MOVE implementation (Vadim)
-
-Source Tree Changes
--------------------
-HP-UX 10 patches (Vladimir Turin)
-Added SCO support, (Daniel Harris)
-MkLinux patches (Tatsuo Ishii)
-Change geometric box terminology from "length" to "width"(Thomas)
-Deprecate temporary unstored slope fields in geometric code(Thomas)
-Remove restart instructions from INSTALL(Bruce)
-Look in /usr/ucb first for install(Bruce)
-Fix c++ copy example code(Thomas)
-Add -o to psql manual page(Bruce)
-Prevent relname unallocated string length from being copied into database(Bruce)
-Cleanup for NAMEDATALEN use(Bruce)
-Fix pg_proc names over 15 chars in output(Bruce)
-Add strNcpy() function(Bruce)
-remove some (void) casts that are unnecessary(Bruce)
-new interfaces directory(Marc)
-Replace fopen() calls with calls to fd.c functions(Bruce)
-Make functions static where possible(Bruce)
-enclose unused functions in #ifdef NOT_USED(Bruce)
-Remove call to difftime() in timestamp support to fix SunOS(Bruce &amp; Thomas)
-Changes for Digital Unix
-Portability fix for pg_dumpall(Bruce)
-Rename pg_attribute.attnvals to attdispersion(Bruce)
-"intro/unix" manual page now "pgintro"(Bruce)
-"built-in" manual page now "pgbuiltin"(Bruce)
-"drop" manual page now "drop_table"(Bruce)
-Add "create_trigger", "drop_trigger" manual pages(Thomas)
-Add constraints regression test(Vadim &amp; Thomas)
-Add comments syntax regression test(Thomas)
-Add PGINDENT and support program(Bruce)
-Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
-Files moved to /src/tools directory(Bruce)
-SPI and Trigger programming guides (Vadim &amp; D'Arcy)
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-1-1">
-<title>Release 6.1.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1997-07-22</simpara>
-  </note>
-
-<sect2>
-<title>Migration from version 6.1 to version 6.1.1</title>
-
-<para>
-This is a minor bug-fix release. A dump/reload is not required from version 6.1,
-but is required from any release prior to 6.1.
-Refer to the release notes for 6.1 for more details.
-</para>
-</sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-fix for SET with options (Thomas)
-allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
-new psql \connect option allows changing usernames without changing databases
-fix for initdb --debug option(Yoshihiko Ichikawa))
-lextest cleanup(Bruce)
-hash fixes(Vadim)
-fix date/time month boundary arithmetic(Thomas)
-fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
-timestamp overhauled to use standard functions(Thomas)
-other code cleanup in date/time routines(Thomas)
-psql's \d now case-insensitive(Bruce)
-psql's backslash commands can now have trailing semicolon(Bruce)
-fix memory leak in psql when using \g(Bruce)
-major fix for endian handling of communication to server(Thomas, Tatsuo)
-Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
-allow underscores in usernames(Bruce)
-pg_dumpall now returns proper status, portability fix(Bruce)
-    </programlisting>
-   </para>
-  </sect2>
- </sect1>
-
-<sect1 id="release-6-1">
-<title>Release 6.1</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1997-06-08</simpara>
-  </note>
-
-<para>
- The regression tests have been adapted and extensively modified for the
- 6.1 release of <productname>PostgreSQL</productname>.
-</para>
-
-<para>
- Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
- the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
- have had their output formats made consistent across the data types.
- The polygon output in misc.out has only been spot-checked for correctness
- relative to the original regression output.
-</para>
-
-<para>
- <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
-optimizer which uses <firstterm>genetic</firstterm>
- algorithms. These algorithms introduce a random behavior in the ordering
- of query results when the query contains multiple qualifiers or multiple
- tables (giving the optimizer a choice on order of evaluation). Several
- regression tests have been modified to explicitly order the results, and
- hence are insensitive to optimizer choices. A few regression tests are
- for data types which are inherently unordered (e.g. points and time
- intervals) and tests involving those types are explicitly bracketed with
- <command>set geqo to 'off'</command> and <command>reset geqo</command>.
-</para>
-
-<para>
- The interpretation of array specifiers (the curly braces around atomic
- values) appears to have changed sometime after the original regression
- tests were generated. The current <filename>./expected/*.out</filename> files reflect this
- new interpretation, which might not be correct!
-</para>
-
-<para>
- The float8 regression test fails on at least some platforms. This is due
- to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
- mechanisms used for overflow and underflow conditions.
-</para>
-
-<para>
- The <quote>random</> results in the random test should cause the
- <quote>random</quote> test to be <quote>failed</quote>, since the
- regression tests are evaluated using a simple diff. However,
- <quote>random</> does not seem to produce random results on my test
- machine (Linux/<application>gcc</>/i686).
-</para>
-
-<sect2>
-<title>Migration to Version 6.1</title>
-
-<para>
-This migration requires a complete dump of the 6.0 database and a
-restore of the database in 6.1.
-</para>
-<para>
-Those migrating from earlier 1.* releases should first upgrade to 1.09
-because the COPY output format was improved from the 1.02 release.
-</para>
-</sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-packet length checking in library routines
-lock manager priority patch
-check for under/over flow of float8(Bruce)
-multitable join fix(Vadim)
-SIGPIPE crash fix(Darren)
-large object fixes(Sven)
-allow btree indexes to handle NULLs(Vadim)
-timezone fixes(D'Arcy)
-select SUM(x) can return NULL on no rows(Thomas)
-internal optimizer, executor bug fixes(Vadim)
-fix problem where inner loop in &lt; or &lt;= has no rows(Vadim)
-prevent re-commuting join index clauses(Vadim)
-fix join clauses for multiple tables(Vadim)
-fix hash, hashjoin for arrays(Vadim)
-fix btree for abstime type(Vadim)
-large object fixes(Raymond)
-fix buffer leak in hash indexes (Vadim)
-fix rtree for use in inner scan (Vadim)
-fix gist for use in inner scan, cleanups (Vadim, Andrea)
-avoid unnecessary local buffers allocation (Vadim, Massimo)
-fix local buffers leak in transaction aborts (Vadim)
-fix file manager memmory leaks, cleanups (Vadim, Massimo)
-fix storage manager memmory leaks (Vadim)
-fix btree duplicates handling (Vadim)
-fix deleted rows reincarnation caused by vacuum (Vadim)
-fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
-many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
-
-Enhancements
-------------
-attribute optimization statistics(Bruce)
-much faster new btree bulk load code(Paul)
-BTREE UNIQUE added to bulk load code(Vadim)
-new lock debug code(Massimo)
-massive changes to libpg++(Leo)
-new GEQO optimizer speeds table multitable optimization(Martin)
-new WARN message for non-unique insert into unique key(Marc)
-update x=-3, no spaces, now valid(Bruce)
-remove case-sensitive identifier handling(Bruce,Thomas,Dan)
-debug backend now pretty-prints tree(Darren)
-new Oracle character functions(Edmund)
-new plaintext password functions(Dan)
-no such class or insufficient privilege changed to distinct messages(Dan)
-new ANSI timestamp function(Dan)
-new ANSI Time and Date types (Thomas)
-move large chunks of data in backend(Martin)
-multicolumn btree indexes(Vadim)
-new SET var TO value command(Martin)
-update transaction status on reads(Dan)
-new locale settings for character types(Oleg)
-new SEQUENCE serial number generator(Vadim)
-GROUP BY function now possible(Vadim)
-re-organize regression test(Thomas,Marc)
-new optimizer operation weights(Vadim)
-new psql \z grant/permit option(Marc)
-new MONEY data type(D'Arcy,Thomas)
-tcp socket communication speed improved(Vadim)
-new VACUUM option for attribute statistics, and for certain columns (Vadim)
-many geometric type improvements(Thomas,Keith)
-additional regression tests(Thomas)
-new datestyle variable(Thomas,Vadim,Martin)
-more comparison operators for sorting types(Thomas)
-new conversion functions(Thomas)
-new more compact btree format(Vadim)
-allow pg_dumpall to preserve database ownership(Bruce)
-new SET GEQO=# and R_PLANS variable(Vadim)
-old (!GEQO) optimizer can use right-sided plans (Vadim)
-typechecking improvement in SQL parser(Bruce)
-new SET, SHOW, RESET commands(Thomas,Vadim)
-new \connect database USER option
-new destroydb -i option (Igor)
-new \dt and \di psql commands (Darren)
-SELECT "\n" now escapes newline (A. Duursma)
-new geometry conversion functions from old format (Thomas)
-
-Source tree changes
--------------------
-new configuration script(Marc)
-readline configuration option added(Marc)
-OS-specific configuration options removed(Marc)
-new OS-specific template files(Marc)
-no more need to edit Makefile.global(Marc)
-re-arrange include files(Marc)
-nextstep patches (Gregor Hoffleit)
-removed Windows-specific code(Bruce)
-removed postmaster -e option, now only postgres -e option (Bruce)
-merge duplicate library code in front/backends(Martin)
-now works with eBones, international Kerberos(Jun)
-more shared library support
-c++ include file cleanup(Bruce)
-warn about buggy flex(Bruce)
-DG/UX, Ultrix, IRIX, AIX portability fixes
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-6-0">
-<title>Release 6.0</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1997-01-29</simpara>
-  </note>
-
-<para>
-A dump/restore is required for those wishing to migrate data from
-previous releases of <productname>PostgreSQL</productname>.
-</para>
-
-<sect2>
-<title>Migration from version 1.09 to version 6.0</title>
-
-<para>
-This migration requires a complete dump of the 1.09 database and a
-restore of the database in 6.0.
-</para>
-</sect2>
-
-<sect2>
-<title>Migration from pre-1.09 to version 6.0</title>
-
-<para>
-Those migrating from earlier 1.* releases should first upgrade to 1.09
-because the COPY output format was improved from the 1.02 release.
-</para>
-</sect2>
-
-  <sect2>
-   <title>Changes</title>
-
-   <para>
-    <programlisting>
-Bug Fixes
----------
-ALTER TABLE bug - running postgres process needs to re-read table definition
-Allow vacuum to be run on one table or entire database(Bruce)
-Array fixes
-Fix array over-runs of memory writes(Kurt)
-Fix elusive btree range/non-range bug(Dan)
-Fix for hash indexes on some types like time and date
-Fix for pg_log size explosion
-Fix permissions on lo_export()(Bruce)
-Fix uninitialized reads of memory(Kurt)
-Fixed ALTER TABLE ... char(3) bug(Bruce)
-Fixed a few small memory leaks
-Fixed EXPLAIN handling of options and changed full_path option name
-Fixed output of group acl privileges
-Memory leaks (hunt and destroy with tools like Purify(Kurt)
-Minor improvements to rules system
-NOTIFY fixes
-New asserts for run-checking
-Overhauled parser/analyze code to properly report errors and increase speed
-Pg_dump -d now handles NULL's properly(Bruce)
-Prevent SELECT NULL from crashing server (Bruce)
-Properly report errors when INSERT ... SELECT columns did not match
-Properly report errors when insert column names were not correct
-psql \g filename now works(Bruce)
-psql fixed problem with multiple statements on one line with multiple outputs
-Removed duplicate system OIDs
-SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
-Several fixes for queries that crashed the backend
-Starting quote in insert string errors(Bruce)
-Submitting an empty query now returns empty status, not just " " query(Bruce)
-
-Enhancements
-------------
-Add EXPLAIN manual page(Bruce)
-Add UNIQUE index capability(Dan)
-Add hostname/user level access control rather than just hostname and user
-Add synonym of != for &lt;&gt;(Bruce)
-Allow "select oid,* from table"
-Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
-Allow COPY from the frontend(Bryan)
-Allow GROUP BY to use alias column name(Bruce)
-Allow actual compression, not just reuse on the same page(Vadim)
-Allow installation-configuration option to auto-add all local users(Bryan)
-Allow libpq to distinguish between text value '' and null(Bruce)
-Allow non-postgres users with createdb privs to destroydb's
-Allow restriction on who can create C functions(Bryan)
-Allow restriction on who can do backend COPY(Bryan)
-Can shrink tables, pg_time and pg_log(Vadim &amp; Erich)
-Change debug level 2 to print queries only, changed debug heading layout(Bruce)
-Change default decimal constant representation from float4 to float8(Bruce)
-European date format now set when postmaster is started
-Execute lowercase function names if not found with exact case
-Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
-Gist now included in the distribution(Marc)
-Idend authentication of local users(Bryan)
-Implement BETWEEN qualifier(Bruce)
-Implement IN qualifier(Bruce)
-libpq has PQgetisnull()(Bruce)
-libpq++ improvements
-New options to initdb(Bryan)
-Pg_dump allow dump of OIDs(Bruce)
-Pg_dump create indexes after tables are loaded for speed(Bruce)
-Pg_dumpall dumps all databases, and the user table
-Pginterface additions for NULL values(Bruce)
-Prevent postmaster from being run as root
-psql \h and \? is now readable(Bruce)
-psql allow backslashed, semicolons anywhere on the line(Bruce)
-psql changed command prompt for lines in query or in quotes(Bruce)
-psql char(3) now displays as (bp)char in \d output(Bruce)
-psql return code now more accurate(Bryan?)
-psql updated help syntax(Bruce)
-Re-visit and fix vacuum(Vadim)
-Reduce size of regression diffs, remove timezone name difference(Bruce)
-Remove compile-time parameters to enable binary distributions(Bryan)
-Reverse meaning of HBA masks(Bryan)
-Secure Authentication of local users(Bryan)
-Speed up vacuum(Vadim)
-Vacuum now had VERBOSE option(Bruce)
-
-Source tree changes
--------------------
-All functions now have prototypes that are compared against the calls
-Allow asserts to be disabled easily from Makefile.global(Bruce)
-Change oid constants used in code to #define names
-Decoupled sparc and solaris defines(Kurt)
-Gcc -Wall compiles cleanly with warnings only from unfixable constructs
-Major include file reorganization/reduction(Marc)
-Make now stops on compile failure(Bryan)
-Makefile restructuring(Bryan, Marc)
-Merge bsdi_2_1 to bsdi(Bruce)
-Monitor program removed
-Name change from Postgres95 to PostgreSQL
-New config.h file(Marc, Bryan)
-PG_VERSION now set to 6.0 and used by postmaster
-Portability additions, including Ultrix, DG/UX, AIX, and Solaris
-Reduced the number of #define's, centralized #define's
-Remove duplicate OIDS in system tables(Dan)
-Remove duplicate system catalog info or report mismatches(Dan)
-Removed many os-specific #define's
-Restructured object file generation/location(Bryan, Marc)
-Restructured port-specific file locations(Bryan, Marc)
-Unused/uninitialized variables corrected
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-1-09">
-<title>Release 1.09</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1996-11-04</simpara>
-  </note>
-
-<para>
-Sorry, we didn't keep track of changes from 1.02 to 1.09.  Some of
-the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
-releases.
-</para>
-</sect1>
-
-<sect1 id="release-1-02">
-<title>Release 1.02</title>
-
-  <note>
-  <title>Release date</title>
-  <simpara>1996-08-01</simpara>
-  </note>
-
-<sect2>
-<title>Migration from version 1.02 to version 1.02.1</title>
-
-<para>
-Here is a new migration file for 1.02.1.  It includes the 'copy' change
-and a script to convert old <acronym>ASCII</acronym> files.
-</para>
-<note>
-<para>
-The following notes are for the benefit of users who want to migrate
-databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
-</para>
-<para>
-If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
-to migrate old databases, you do not need to read any further.
-</para>
-</note>
-
-<para>
-In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
-version 1.02.1, the following steps are required:
-</para>
-<procedure>
-<step>
-<para>
-Start up a new 1.02.1 postmaster
-</para>
-</step>
-<step>
-<para>
-Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
-  databases.  This is done by running the new 1.02.1 server against
-  your own 1.01 or 1.02 database and applying the queries attached at
-  the end of the file.   This can be done easily through <command>psql</>.  If your
-  1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
-  from the end of this file and saved them in <filename>addfunc.sql</filename>:
-<programlisting>
-       % psql testdb -f addfunc.sql
-</programlisting>
-
-Those upgrading 1.02 databases will get a warning when executing the
-last two statements in the file because they are already present in 1.02.  This is
-not a cause for concern.
-</para>
-</step>
-</procedure>
-</sect2>
-
-<sect2>
-<title>Dump/Reload Procedure</title>
-
-<para>
-If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
-stdout</literal> generated with a previous version, you will need to run the
-attached <command>sed</command> script on the ASCII file before loading it into the
-database.  The old format used '.' as end-of-data, while '\.' is now the
-end-of-data marker.  Also, empty strings are now loaded in as '' rather
-than NULL. See the copy manual page for full details.
-
-<programlisting>
-       sed 's/^\.$/\\./g' &lt;in_file &gt;out_file
-</programlisting>
-</para>
-<para>
-If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
-end-of-data character, and hence no conversion necessary.
-
-<programlisting>
--- following lines added by agc to reflect the case-insensitive
--- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
-create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
-create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
-create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
-create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
-</programlisting>
-</para>
-</sect2>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Source code maintenance and development
- * worldwide team of volunteers
- * the source tree now in CVS at ftp.ki.net
-
-Enhancements
- * psql (and underlying libpq library) now has many more options for
-   formatting output, including HTML
- * pg_dump now output the schema and/or the data, with many fixes to
-   enhance completeness.
- * psql used in place of monitor in administration shell scripts.
-   monitor to be deprecated in next release.
- * date/time functions enhanced
- * NULL insert/update/comparison fixed/enhanced
- * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
-
-Bug Fixes (almost too numerous to mention)
- * indexes
- * storage management
- * check for NULL pointer before dereferencing
- * Makefile fixes
-
-New Ports
- * added SolarisX86 port
- * added BSD/OS 2.1 port
- * added DG/UX port
-</programlisting>
-</para>
-<!--
-Contributors (apologies to any missed)
- * Kurt J. Lidl &lt;[email protected]&gt;
-        (missed in first run, but no less important)
- * Erich Stamberger &lt;[email protected]&gt;
- * Jason Wright &lt;[email protected]&gt;
- * Cees de Groot &lt;[email protected]&gt;
- * [email protected] (Michael Siebenborn (6929))
- * Brian E. Gallew &lt;[email protected]&gt;
- * Vadim B. Mikheev &lt;[email protected]&gt;
- * Adam Sussman &lt;[email protected]&gt;
- * Chris Dunlop &lt;[email protected]&gt;
- * Marc G. Fournier &lt;[email protected]&gt;
- * Dan McGuirk &lt;[email protected]&gt;
- * Dr_George_D_Detlefsen &lt;[email protected]&gt;
- * Erich Stamberger &lt;[email protected]&gt;
- * Massimo Dal Zotto &lt;[email protected]&gt;
- * Randy Kunkee &lt;[email protected]&gt;
- * Rick Weldon &lt;[email protected]&gt;
- * Thomas van Reimersdahl &lt;[email protected]&gt;
- * david bennett &lt;[email protected]&gt;
- * Julian Assange &lt;[email protected]&gt;
- * Bruce Momjian &lt;[email protected]&gt;
- * Paul "Shag" Walmsley &lt;[email protected]&gt;
- * "Alistair G. Crooks" &lt;[email protected]&gt;
+  The reason for splitting the release notes this way is so that appropriate
+  subsets can easily be copied into back branches.
 -->
-</sect2>
-</sect1>
-
-<sect1 id="release-1-01">
-<title>Release 1.01</title>
-
-   <note>
-   <title>Release date</title>
-   <simpara>1996-02-23</simpara>
-   </note>
-
-
-<sect2>
-<title>Migration from version 1.0 to version 1.01</title>
-
-<para>
-The following notes are for the benefit of users who want to migrate
-databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
-</para>
-<para>
-If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
-to migrate old databases, you do not need to read any further.
-</para>
-<para>
-In order to <productname>Postgres95</> version 1.01 with databases created with
-<productname>Postgres95</> version 1.0, the following steps are required:
-</para>
-<procedure>
-<step>
-<para>
-Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
-   and <symbol>OIDNAMELEN</symbol> to 20.
-</para>
-</step>
-<step>
-<para>
-Decide whether you want to use Host based authentication.
-</para>
-<substeps>
-<step>
-<para>
-If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
-   directory (typically the value of your <envar>$PGDATA</envar>).  <filename>src/libpq/pg_hba</filename>
-   shows an example syntax.
-</para>
-</step>
-<step>
-<para>
-If you do not want host-based authentication, you can comment out
-   the line:
-<programlisting>
-        HBA = 1
-</programlisting>
-   in <filename>src/Makefile.global</filename>
-</para>
-<para>
-   Note that host-based authentication is turned on by default, and if
-   you do not take steps A or B above, the out-of-the-box 1.01 will
-   not allow you to connect to 1.0 databases.
-</para>
-</step>
-</substeps>
-</step>
-
-<step>
-<para>
-Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
-</para>
-</step>
-<step>
-<para>
-Before doing anything else, terminate your 1.0 postmaster, and
-   backup your existing <envar>$PGDATA</envar> directory.
-</para>
-</step>
-<step>
-<para>
-Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
-   path up so that 1.01 binaries are being used.
-</para>
-</step>
-<step>
-<para>
-Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
-</para>
-</step>
-<step>
-<para>
-Start up a new 1.01 postmaster
-</para>
-</step>
-<step>
-<para>
-Add the new built-in functions and operators of 1.01 to 1.0
-   databases.  This is done by running the new 1.01 server against
-   your own 1.0 database and applying the queries attached and saving
-   in the file 1.0_to_1.01.sql.   This can be done easily through <command>psql</command>.
-   If your 1.0 database is name <literal>testdb</literal>:
-
-<programlisting>
-        % psql testdb -f 1.0_to_1.01.sql
-</programlisting>
-
-and then execute the following commands (cut and paste from here):
-
-<programlisting>
--- add builtin functions that are new to 1.01
-
-create function int4eqoid (int4, oid) returns bool as 'foo'
-language 'internal';
-create function oideqint4 (oid, int4) returns bool as 'foo'
-language 'internal';
-create function char2icregexeq (char2, text) returns bool as 'foo'
-language 'internal';
-create function char2icregexne (char2, text) returns bool as 'foo'
-language 'internal';
-create function char4icregexeq (char4, text) returns bool as 'foo'
-language 'internal';
-create function char4icregexne (char4, text) returns bool as 'foo'
-language 'internal';
-create function char8icregexeq (char8, text) returns bool as 'foo'
-language 'internal';
-create function char8icregexne (char8, text) returns bool as 'foo'
-language 'internal';
-create function char16icregexeq (char16, text) returns bool as 'foo'
-language 'internal';
-create function char16icregexne (char16, text) returns bool as 'foo'
-language 'internal';
-create function texticregexeq (text, text) returns bool as 'foo'
-language 'internal';
-create function texticregexne (text, text) returns bool as 'foo'
-language 'internal';
-
--- add builtin functions that are new to 1.01
-
-create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
-create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
-create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
-create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
-create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
-create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
-create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
-create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
-create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
-create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
-create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
-create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
-</programlisting>
-</para>
-</step>
-</procedure>
-</sect2>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Incompatibilities:
- * 1.01 is backwards compatible with 1.0 database provided the user
-   follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
-   If those steps are not taken, 1.01 is not compatible with 1.0 database.
-
-Enhancements:
- * added PQdisplayTuples() to libpq and changed monitor and psql to use it
- * added NeXT port (requires SysVIPC implementation)
- * added CAST .. AS ... syntax
- * added ASC and DESC key words
- * added 'internal' as a possible language for CREATE FUNCTION
-   internal functions are C functions which have been statically linked
-   into the postgres backend.
- * a new type "name" has been added for system identifiers (table names,
-   attribute names, etc.)  This replaces the old char16 type.   The
-   of name is set by the NAMEDATALEN #define in src/Makefile.global
- * a readable reference manual that describes the query language.
- * added host-based access control.  A configuration file ($PGDATA/pg_hba)
-   is used to hold the configuration data.  If host-based access control
-   is not desired, comment out HBA=1 in src/Makefile.global.
- * changed regex handling to be uniform use of Henry Spencer's regex code
-   regardless of platform.  The regex code is included in the distribution
- * added functions and operators for case-insensitive regular expressions.
-   The operators are ~* and !~*.
- * pg_dump uses COPY instead of SELECT loop for better performance
-
-Bug fixes:
- * fixed an optimizer bug that was causing core dumps when
-   functions calls were used in comparisons in the WHERE clause
- * changed all uses of getuid to geteuid so that effective uids are used
- * psql now returns non-zero status on errors when using -c
- * applied public patches 1-14
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-1-0">
-<title>Release 1.0</title>
-
-   <note>
-   <title>Release date</title>
-   <simpara>1995-09-05</simpara>
-   </note>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Copyright change:
- * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
-   and modifiable for any purpose.  Please read the COPYRIGHT file.
-   Thanks to Professor Michael Stonebraker for making this possible.
-
-Incompatibilities:
- *  date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
-   EUROPEAN STYLE).  This follows SQL-92 specs.
- *  "delimiters" is now a key word
-
-Enhancements:
- *  sql LIKE syntax has been added
- *  copy command now takes an optional USING DELIMITER specification.
-   delimiters can be any single-character string.
- *  IRIX 5.3 port has been added.
-   Thanks to Paul Walmsley and others.
- *  updated pg_dump to work with new libpq
- *  \d has been added psql
-   Thanks to Keith Parks
- *  regexp performance for architectures that use POSIX regex has been
-   improved due to caching of precompiled patterns.
-   Thanks to Alistair Crooks
- *  a new version of libpq++
-   Thanks to William Wanders
-
-Bug fixes:
- *  arbitrary userids can be specified in the createuser script
- *  \c to connect to other databases in psql now works.
- *  bad pg_proc entry for float4inc() is fixed
- *  users with usecreatedb field set can now create databases without
-   having to be usesuper
- *  remove access control entries when the entry no longer has any
-   privileges
- *  fixed non-portable datetimes implementation
- *  added kerberos flags to the src/backend/Makefile
- *  libpq now works with kerberos
- *  typographic errors in the user manual have been corrected.
- *  btrees with multiple index never worked, now we tell you they don't
-   work when you try to use them
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-0-03">
-<title><productname>Postgres95</productname> Release 0.03</title>
-
-   <note>
-   <title>Release date</title>
-   <simpara>1995-07-21</simpara>
-   </note>
-
-<sect2>
-<title>Changes</title>
-<para>
-<programlisting>
-Incompatible changes:
- * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
-   (due to system catalog changes and indexing structure changes).
- * double-quote (") is deprecated as a quoting character for string literals;
-   you need to convert them to single quotes ('). <!-- " -->
- * name of aggregates (eg. int4sum) are renamed in accordance with the
-   SQL standard (eg. sum).
- * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
- * float literals (eg. 3.14) are now of type float4 (instead of float8 in
-   previous releases); you might have to do typecasting if you depend on it
-   being of type float8.  If you neglect to do the typecasting and you assign
-   a float literal to a field of type float8, you might get incorrect values
-   stored!
- * LIBPQ has been totally revamped so that frontend applications
-   can connect to multiple backends
- * the usesysid field in pg_user has been changed from int2 to int4 to
-   allow wider range of Unix user ids.
- * the netbsd/freebsd/bsd o/s ports have been consolidated into a
-   single BSD44_derived port.  (thanks to Alistair Crooks)
-
-SQL standard-compliance (the following details changes that makes postgres95
-more compliant to the SQL-92 standard):
- * the following SQL types are now built-in: smallint, int(eger), float, real,
-   char(N), varchar(N), date and time.
-
-   The following are aliases to existing postgres types:
-                smallint -&gt; int2
-                integer, int -&gt; int4
-                float, real  -&gt; float4
-   char(N) and varchar(N) are implemented as truncated text types. In
-   addition, char(N) does blank-padding.
- * single-quote (') is used for quoting string literals; '' (in addition to
-   \') is supported as means of inserting a single quote in a string
- * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
-   (Also, aggregates can now be overloaded, i.e. you can define your
-   own MAX aggregate to take in a user-defined type.)
- * CHANGE ACL removed. GRANT/REVOKE syntax added.
-   - Privileges can be given to a group using the "GROUP" key word.
-        For example:
-                GRANT SELECT ON foobar TO GROUP my_group;
-        The key word 'PUBLIC' is also supported to mean all users.
-
-        Privileges can only be granted or revoked to one user or group
-        at a time.
-
-        "WITH GRANT OPTION" is not supported.  Only class owners can change
-        access control
-   - The default access control is to grant users readonly access.
-     You must explicitly grant insert/update access to users.  To change
-     this, modify the line in
-                src/backend/utils/acl.h
-     that defines ACL_WORLD_DEFAULT
-
-Bug fixes:
- * the bug where aggregates of empty tables were not run has been fixed. Now,
-   aggregates run on empty tables will return the initial conditions of the
-   aggregates. Thus, COUNT of an empty  table will now properly return 0.
-   MAX/MIN of an empty table will return a row of value NULL.
- * allow the use of \; inside the monitor
- * the LISTEN/NOTIFY asynchronous notification mechanism now work
- * NOTIFY in rule action bodies now work
- * hash indexes work, and access methods in general should perform better.
-   creation of large btree indexes should be much faster.  (thanks to Paul
-   Aoki)
-
-Other changes and enhancements:
- * addition of an EXPLAIN statement used for explaining the query execution
-   plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
-   the query).
- * WARN and NOTICE messages no longer have timestamps on them. To turn on
-   timestamps of error messages, uncomment the line in
-   src/backend/utils/elog.h:
-        /* define ELOG_TIMESTAMPS */
- * On an access control violation, the message
-        "Either no such class or insufficient privilege"
-   will be given.  This is the same message that is returned when
-   a class is not found.  This dissuades non-privileged users from
-   guessing the existence of privileged classes.
- * some additional system catalog changes have been made that are not
-   visible to the user.
-
-libpgtcl changes:
- * The -oid option has been added to the "pg_result" tcl command.
-   pg_result -oid returns oid of the last row inserted.   If the
-   last command was not an INSERT, then pg_result -oid returns "".
- * the large object interface is available as pg_lo* tcl commands:
-   pg_lo_open, pg_lo_close, pg_lo_creat, etc.
-
-Portability enhancements and New Ports:
- * flex/lex problems have been cleared up.  Now, you should be able to use
-   flex instead of lex on any platforms.  We no longer make assumptions of
-   what lexer you use based on the platform you use.
- * The Linux-ELF port is now supported.  Various configuration have been
-   tested:  The following configuration is known to work:
-        kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
-   with everything in ELF format,
-
-New utilities:
- * ipcclean added to the distribution
-   ipcclean usually does not need to be run, but if your backend crashes
-   and leaves shared memory segments hanging around, ipcclean will
-   clean them up for you.
-
-New documentation:
- * the user manual has been revised and libpq documentation added.
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-0-02">
-<title><productname>Postgres95</productname> Release 0.02</title>
-
-   <note>
-   <title>Release date</title>
-   <simpara>1995-05-25</simpara>
-   </note>
-
-<sect2>
-<title>Changes</title>
-
-<para>
-<programlisting>
-Incompatible changes:
- * The SQL statement for creating a database is 'CREATE DATABASE' instead
-   of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
-   of 'DESTROYDB'. However, the names of the executables 'createdb' and
-   'destroydb' remain the same.
-
-New tools:
- * pgperl - a Perl (4.036) interface to Postgres95
- * pg_dump - a utility for dumping out a postgres database into a
-        script file containing query commands. The script files are in a ASCII
-        format and can be used to reconstruct the database, even on other
-        machines and other architectures. (Also good for converting
-        a Postgres 4.2 database to Postgres95 database.)
-
-The following ports have been incorporated into postgres95-beta-0.02:
- * the NetBSD port by Alistair Crooks
- * the AIX port by Mike Tung
- * the Windows NT port by Jon Forrest (more stuff but not done yet)
- * the Linux ELF port by Brian Gallew
-
-The following bugs have been fixed in postgres95-beta-0.02:
- * new lines not escaped in COPY OUT and problem with COPY OUT when first
-   attribute is a '.'
- * cannot type return to use the default user id in createuser
- * SELECT DISTINCT on big tables crashes
- * Linux installation problems
- * monitor doesn't allow use of 'localhost' as PGHOST
- * psql core dumps when doing \c or \l
- * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
- * libpgtcl has a hard-wired default port number
- * SELECT DISTINCT INTO TABLE hangs
- * CREATE TYPE doesn't accept 'variable' as the internallength
- * wrong result using more than 1 aggregate in a SELECT
-</programlisting>
-</para>
-</sect2>
-</sect1>
-
-<sect1 id="release-0-01">
-<title><productname>Postgres95</productname> Release 0.01</title>
-
-   <note>
-   <title>Release date</title>
-   <simpara>1995-05-01</simpara>
-   </note>
-
-<para>
-Initial release.
-</para>
-</sect1>
-
-<![IGNORE[
-  <sect1 id="timing-results">
-   <title>Timing Results</title>
-
-   <para>
-    These timing results are from running the regression test with the commands
-
-    <programlisting>
-% cd src/test/regress
-% make all
-% time make runtest
-    </programlisting>
-   </para>
-   <para>
-    Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
-    to run, presumably due to the scheduling vagaries of multitasking systems.
-   </para>
-
-   <sect2>
-    <title>Version 6.5</title>
-
-    <para>
-     As has been the case for previous releases, timing between
-     releases is not directly comparable since new regression tests
-     have been added. In general, 6.5 is faster than previous
-     releases.
-    </para>
-
-    <para>
-     Timing with <function>fsync()</function> disabled:
-
-     <programlisting>
-  Time   System
-  02:00  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
-  04:38  Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
-     </programlisting>
-    </para>
-
-    <para>
-     Timing with <function>fsync()</function> enabled:
-
-     <programlisting>
-  Time   System
-  04:21  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
-     </programlisting>
-
-     For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
-     disks leads to a 50% improvement in speed on the regression test.
-    </para>
-   </sect2>
-
-<sect2>
-<title>Version 6.4beta</title>
-
-<para>
-The times for this release are not directly comparable to those for previous releases
-since some additional regression tests have been included.
-In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
-</para>
-<para>
-<programlisting>
-  Time   System
-  02:26  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
-</programlisting>
-</para>
-</sect2>
-
-<sect2>
-<title>Version 6.3</title>
-
-<para>
-The times for this release are not directly comparable to those for previous releases
-since some additional regression tests have been included and some obsolete tests involving
-time travel have been removed.
-In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
-</para>
-<para>
-<programlisting>
-  Time   System
-  02:30  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
-  04:12  Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
-</programlisting>
-</para>
-</sect2>
-
-<sect2>
-<title>Version 6.1</title>
+&release-7.4;
+&release-old;
 
-<para>
-<programlisting>
-  Time   System
-  06:12  Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
-  12:06  P-100, 48MB, Linux 2.0.29, gcc
-  39:58  Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
-</programlisting>
-</para>
-</sect2>
-</sect1>
-]]>
 </appendix>