OSDN Git Service

Unify spelling of "canceled", "canceling", "cancellation"
[pg-rex/syncrep.git] / doc / src / sgml / release-8.4.sgml
index f6fa682..27e4e29 100644 (file)
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.5 2009/05/14 21:01:49 heikki Exp $ -->
+<!-- doc/src/sgml/release-8.4.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+ <sect1 id="release-8-4-8">
+  <title>Release 8.4.8</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2011-04-18</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.7.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.8</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+   </para>
+
+   <para>
+    However, if your installation was upgraded from a previous major
+    release by running <application>pg_upgrade</>, you should take
+    action to prevent possible data loss due to a now-fixed bug in
+    <application>pg_upgrade</>.  The recommended solution is to run
+    <command>VACUUM FREEZE</> on all TOAST tables.
+    More information is available at <ulink
+    url="http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix">
+    http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix</ulink>.
+   </para>
+
+   <para>
+    Also, if you are upgrading from a version earlier than 8.4.2,
+    see the release notes for 8.4.2.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Fix <application>pg_upgrade</>'s handling of TOAST tables
+      (Bruce Momjian)
+     </para>
+
+     <para>
+      The <structname>pg_class</>.<structfield>relfrozenxid</> value for
+      TOAST tables was not correctly copied into the new installation
+      during <application>pg_upgrade</>.  This could later result in
+      <literal>pg_clog</> files being discarded while they were still
+      needed to validate tuples in the TOAST tables, leading to
+      <quote>could not access status of transaction</> failures.
+     </para>
+
+     <para>
+      This error poses a significant risk of data loss for installations
+      that have been upgraded with <application>pg_upgrade</>.  This patch
+      corrects the problem for future uses of <application>pg_upgrade</>,
+      but does not in itself cure the issue in installations that have been
+      processed with a buggy version of <application>pg_upgrade</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Suppress incorrect <quote>PD_ALL_VISIBLE flag was incorrectly set</>
+      warning (Heikki Linnakangas)
+     </para>
+
+     <para>
+      <command>VACUUM</> would sometimes issue this warning in cases that
+      are actually valid.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Disallow including a composite type in itself (Tom Lane)
+     </para>
+
+     <para>
+      This prevents scenarios wherein the server could recurse infinitely
+      while processing the composite type.  While there are some possible
+      uses for such a structure, they don't seem compelling enough to
+      justify the effort required to make sure it always works safely.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid potential deadlock during catalog cache initialization
+      (Nikhil Sontakke)
+     </para>
+
+     <para>
+      In some cases the cache loading code would acquire share lock on a
+      system index before locking the index's catalog.  This could deadlock
+      against processes trying to acquire exclusive locks in the other,
+      more standard order.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
+      handling when there was a concurrent update to the target tuple
+      (Tom Lane)
+     </para>
+
+     <para>
+      This bug has been observed to result in intermittent <quote>cannot
+      extract system attribute from virtual tuple</> failures while trying to
+      do <literal>UPDATE RETURNING ctid</>.  There is a very small probability
+      of more serious errors, such as generating incorrect index entries for
+      the updated tuple.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Disallow <command>DROP TABLE</> when there are pending deferred trigger
+      events for the table (Tom Lane)
+     </para>
+
+     <para>
+      Formerly the <command>DROP</> would go through, leading to
+      <quote>could not open relation with OID nnn</> errors when the
+      triggers were eventually fired.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent crash triggered by constant-false WHERE conditions during
+      GEQO optimization (Tom Lane)
+     </para>
+
+     <para>
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve planner's handling of semi-join and anti-join cases
+      (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix selectivity estimation for text search to account for NULLs
+      (Jesper Krogh)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve PL/pgSQL's ability to handle row types with dropped columns
+      (Pavel Stehule)
+     </para>
+
+     <para>
+      This is a back-patch of fixes previously made in 9.0.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix PL/Python memory leak involving array slices (Daniel Popowich)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>pg_restore</> to cope with long lines (over 1KB) in
+      TOC files (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Put in more safeguards against crashing due to division-by-zero
+      with overly enthusiastic compiler optimization (Aurelien Jarno)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
+     </para>
+
+     <para>
+      There was a hard-wired assumption that this system function was not
+      available on MIPS hardware on these systems.  Use a compile-time test
+      instead, since more recent versions have it.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix compilation failures on HP-UX (Heikki Linnakangas)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix version-incompatibility problem with <application>libintl</> on
+      Windows (Hiroshi Inoue)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix usage of <application>xcopy</> in Windows build scripts to
+      work correctly under Windows 7 (Andrew Dunstan)
+     </para>
+
+     <para>
+      This affects the build scripts only, not installation or usage.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix path separator used by <application>pg_regress</> on Cygwin
+      (Andrew Dunstan)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2011f
+      for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
+      and Turkey; also historical corrections for South Australia, Alaska,
+      and Hawaii.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-7">
+  <title>Release 8.4.7</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2011-01-31</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.6.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.7</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+    However, if you are upgrading from a version earlier than 8.4.2,
+    see the release notes for 8.4.2.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Avoid failures when <command>EXPLAIN</> tries to display a simple-form
+      <literal>CASE</> expression (Tom Lane)
+     </para>
+
+     <para>
+      If the <literal>CASE</>'s test expression was a constant, the planner
+      could simplify the <literal>CASE</> into a form that confused the
+      expression-display code, resulting in <quote>unexpected CASE WHEN
+      clause</> errors.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix assignment to an array slice that is before the existing range
+      of subscripts (Tom Lane)
+     </para>
+
+     <para>
+      If there was a gap between the newly added subscripts and the first
+      pre-existing subscript, the code miscalculated how many entries needed
+      to be copied from the old array's null bitmap, potentially leading to
+      data corruption or crash.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid unexpected conversion overflow in planner for very distant date
+      values (Tom Lane)
+     </para>
+
+     <para>
+      The <type>date</> type supports a wider range of dates than can be
+      represented by the <type>timestamp</> types, but the planner assumed it
+      could always convert a date to timestamp with impunity.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>pg_restore</>'s text output for large objects (BLOBs)
+      when <varname>standard_conforming_strings</> is on (Tom Lane)
+     </para>
+
+     <para>
+      Although restoring directly to a database worked correctly, string
+      escaping was incorrect if <application>pg_restore</> was asked for
+      SQL text output and <varname>standard_conforming_strings</> had been
+      enabled in the source database.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix erroneous parsing of <type>tsquery</> values containing
+      <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
+     </para>
+
+     <para>
+      Queries containing this combination of operators were not executed
+      correctly.  The same error existed in <filename>contrib/intarray</>'s
+      <type>query_int</> type and <filename>contrib/ltree</>'s
+      <type>ltxtquery</> type.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix buffer overrun in <filename>contrib/intarray</>'s input function
+      for the <type>query_int</> type (Apple)
+     </para>
+
+     <para>
+      This bug is a security risk since the function's return address could
+      be overwritten.  Thanks to Apple Inc's security team for reporting this
+      issue and supplying the fix.  (CVE-2010-4015)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
+      (Alexander Korotkov)
+     </para>
+
+     <para>
+      This could result in considerable inefficiency, though not actually
+      incorrect answers, in a GiST index on a <type>seg</> column.
+      If you have such an index, consider <command>REINDEX</>ing it after
+      installing this update.  (This is identical to the bug that was fixed in
+      <filename>contrib/cube</> in the previous update.)
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-6">
+  <title>Release 8.4.6</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2010-12-16</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.5.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.6</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+    However, if you are upgrading from a version earlier than 8.4.2,
+    see the release notes for 8.4.2.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Force the default
+      <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
+      to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
+     </para>
+
+     <para>
+      The default on Linux has actually been <literal>fdatasync</> for many
+      years, but recent kernel changes caused <productname>PostgreSQL</> to
+      choose <literal>open_datasync</> instead.  This choice did not result
+      in any performance improvement, and caused outright failures on
+      certain filesystems, notably <literal>ext4</> with the
+      <literal>data=journal</> mount option.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
+     </para>
+
+     <para>
+      This could result in <quote>bad buffer id: 0</> failures or
+      corruption of index contents during replication.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix recovery from base backup when the starting checkpoint WAL record
+      is not in the same WAL segment as its redo point (Jeff Davis)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix persistent slowdown of autovacuum workers when multiple workers
+      remain active for a long time (Tom Lane)
+     </para>
+
+     <para>
+      The effective <varname>vacuum_cost_limit</> for an autovacuum worker
+      could drop to nearly zero if it processed enough tables, causing it
+      to run extremely slowly.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add support for detecting register-stack overrun on <literal>IA64</>
+      (Tom Lane)
+     </para>
+
+     <para>
+      The <literal>IA64</> architecture has two hardware stacks.  Full
+      prevention of stack-overrun failures requires checking both.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
+     </para>
+
+     <para>
+      Certain code paths could crash due to stack overflow given a
+      sufficiently complex query.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix detection of page splits in temporary GiST indexes (Heikki
+      Linnakangas)
+     </para>
+
+     <para>
+      It is possible to have a <quote>concurrent</> page split in a
+      temporary index, if for example there is an open cursor scanning the
+      index when an insertion is done.  GiST failed to detect this case and
+      hence could deliver wrong results when execution of the cursor
+      continued.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix error checking during early connection processing (Tom Lane)
+     </para>
+
+     <para>
+      The check for too many child processes was skipped in some cases,
+      possibly leading to postmaster crash when attempting to add the new
+      child process to fixed-size arrays.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve efficiency of window functions (Tom Lane)
+     </para>
+
+     <para>
+      Certain cases where a large number of tuples needed to be read in
+      advance, but <varname>work_mem</> was large enough to allow them all
+      to be held in memory, were unexpectedly slow.
+      <function>percent_rank()</>, <function>cume_dist()</> and
+      <function>ntile()</> in particular were subject to this problem.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid memory leakage while <command>ANALYZE</>'ing complex index
+      expressions (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure an index that uses a whole-row Var still depends on its table
+      (Tom Lane)
+     </para>
+
+     <para>
+      An index declared like <literal>create index i on t (foo(t.*))</>
+      would not automatically get dropped when its table was dropped.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
+      parameters (Tom Lane)
+     </para>
+
+     <para>
+      This avoids a possible crash due to loss of information about the
+      expected result rowtype.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
+      <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
+      <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
+     </para>
+
+     <para>
+      The planner would sometimes attempt to evaluate sub-expressions that
+      in fact could never be reached, possibly leading to unexpected errors.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix postmaster crash when connection acceptance
+      (<function>accept()</> or one of the calls made immediately after it)
+      fails, and the postmaster was compiled with GSSAPI support (Alexander
+      Chernikov)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix missed unlink of temporary files when <varname>log_temp_files</>
+      is active (Tom Lane)
+     </para>
+
+     <para>
+      If an error occurred while attempting to emit the log message, the
+      unlink was not done, resulting in accumulation of temp files.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
+     </para>
+
+     <para>
+      This avoids a failure when <varname>debug_print_parse</> is enabled
+      and certain types of query are executed.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect calculation of distance from a point to a horizontal
+      line segment (Tom Lane)
+     </para>
+
+     <para>
+      This bug affected several different geometric distance-measurement
+      operators.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect calculation of transaction status in
+      <application>ecpg</> (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
+      expressions to not fail in recursion or error-recovery cases (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>PL/Python</>'s handling of set-returning functions
+      (Jan Urbanski)
+     </para>
+
+     <para>
+      Attempts to call SPI functions within the iterator generating a set
+      result would fail.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
+      (Alexander Korotkov)
+     </para>
+
+     <para>
+      This could result in considerable inefficiency, though not actually
+      incorrect answers, in a GiST index on a <type>cube</> column.
+      If you have such an index, consider <command>REINDEX</>ing it after
+      installing this update.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Don't emit <quote>identifier will be truncated</> notices in
+      <filename>contrib/dblink</> except when creating new connections
+      (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix potential coredump on missing public key in
+      <filename>contrib/pgcrypto</> (Marti Raudsepp)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
+      (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2010o
+      for DST law changes in Fiji and Samoa;
+      also historical corrections for Hong Kong.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-5">
+  <title>Release 8.4.5</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2010-10-04</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.4.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.5</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+    However, if you are upgrading from a version earlier than 8.4.2,
+    see the release notes for 8.4.2.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Use a separate interpreter for each calling SQL userid in PL/Perl and
+      PL/Tcl (Tom Lane)
+     </para>
+
+     <para>
+      This change prevents security problems that can be caused by subverting
+      Perl or Tcl code that will be executed later in the same session under
+      another SQL user identity (for example, within a <literal>SECURITY
+      DEFINER</> function).  Most scripting languages offer numerous ways that
+      that might be done, such as redefining standard functions or operators
+      called by the target function.  Without this change, any SQL user with
+      Perl or Tcl language usage rights can do essentially anything with the
+      SQL privileges of the target function's owner.
+     </para>
+
+     <para>
+      The cost of this change is that intentional communication among Perl
+      and Tcl functions becomes more difficult.  To provide an escape hatch,
+      PL/PerlU and PL/TclU functions continue to use only one interpreter
+      per session.  This is not considered a security issue since all such
+      functions execute at the trust level of a database superuser already.
+     </para>
+
+     <para>
+      It is likely that third-party procedural languages that claim to offer
+      trusted execution have similar security issues.  We advise contacting
+      the authors of any PL you are depending on for security-critical
+      purposes.
+     </para>
+
+     <para>
+      Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent possible crashes in <function>pg_get_expr()</> by disallowing
+      it from being called with an argument that is not one of the system
+      catalog columns it's intended to be used with
+      (Heikki Linnakangas, Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
+      Windows (Magnus Hagander)
+     </para>
+
+     <para>
+      Under high load, Windows processes will sometimes fail at startup with
+      this error code.  Formerly the postmaster treated this as a panic
+      condition and restarted the whole database, but that seems to be
+      an overreaction.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect placement of placeholder evaluation (Tom Lane)
+     </para>
+
+     <para>
+      This bug could result in query outputs being non-null when they
+      should be null, in cases where the inner side of an outer join
+      is a sub-select with non-strict expressions in its output list.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible duplicate scans of <literal>UNION ALL</> member relations
+      (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
+     </para>
+
+     <para>
+      This occurred when a sub-select contains a join alias reference that
+      expands into an expression containing another sub-select.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix mishandling of whole-row Vars that reference a view or sub-select
+      and appear within a nested sub-select (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix mishandling of cross-type <literal>IN</> comparisons (Tom Lane)
+     </para>
+
+     <para>
+      This could result in failures if the planner tried to implement an
+      <literal>IN</> join with a sort-then-unique-then-plain-join plan.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix computation of <command>ANALYZE</> statistics for <type>tsvector</>
+      columns (Jan Urbanski)
+     </para>
+
+     <para>
+      The original coding could produce incorrect statistics, leading to
+      poor plan choices later.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve planner's estimate of memory used by <function>array_agg()</>,
+      <function>string_agg()</>, and similar aggregate functions
+      (Hitoshi Harada)
+     </para>
+
+     <para>
+      The previous drastic underestimate could lead to out-of-memory failures
+      due to inappropriate choice of a hash-aggregation plan.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix failure to mark cached plans as transient (Tom Lane)
+     </para>
+
+     <para>
+      If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
+      in progress for one of the referenced tables, it is supposed to be
+      re-planned once the index is ready for use.  This was not happening
+      reliably.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
+      and provide additional detail in the resulting error messages
+      (Tom Lane)
+     </para>
+
+     <para>
+      This should improve the system's robustness with corrupted indexes.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect search logic for partial-match queries with GIN indexes
+      (Tom Lane)
+     </para>
+
+     <para>
+      Cases involving AND/OR combination of several GIN index conditions
+      didn't always give the right answer, and were sometimes much slower
+      than necessary.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent show_session_authorization() from crashing within autovacuum
+      processes (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Defend against functions returning setof record where not all the
+      returned rows are actually of the same rowtype (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible corruption of pending trigger event lists during
+      subtransaction rollback (Tom Lane)
+     </para>
+
+     <para>
+      This could lead to a crash or incorrect firing of triggers.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible failure when hashing a pass-by-reference function result
+      (Tao Ma, Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve merge join's handling of NULLs in the join columns (Tom Lane)
+     </para>
+
+     <para>
+      A merge join can now stop entirely upon reaching the first NULL,
+      if the sort order is such that NULLs sort high.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Take care to fsync the contents of lockfiles (both
+      <filename>postmaster.pid</> and the socket lockfile) while writing them
+      (Tom Lane)
+     </para>
+
+     <para>
+      This omission could result in corrupted lockfile contents if the
+      machine crashes shortly after postmaster start.  That could in turn
+      prevent subsequent attempts to start the postmaster from succeeding,
+      until the lockfile is manually removed.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid recursion while assigning XIDs to heavily-nested
+      subtransactions (Andres Freund, Robert Haas)
+     </para>
+
+     <para>
+      The original coding could result in a crash if there was limited
+      stack space.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid holding open old WAL segments in the walwriter process
+      (Magnus Hagander, Heikki Linnakangas)
+     </para>
+
+     <para>
+      The previous coding would prevent removal of no-longer-needed segments.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
+      which could produce junk early in backend startup (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent misinterpretation of partially-specified relation options
+      for TOAST tables (Itagaki Takahiro)
+     </para>
+
+     <para>
+      In particular, <literal>fillfactor</> would be read as zero if any
+      other reloption had been set for the table, leading to serious bloat.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix inheritance count tracking in <command>ALTER TABLE ... ADD
+      CONSTRAINT</> (Robert Haas)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible data corruption in <command>ALTER TABLE ... SET
+      TABLESPACE</> when archiving is enabled (Jeff Davis)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
+      TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve <command>CREATE INDEX</>'s checking of whether proposed index
+      expressions are immutable (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <command>REASSIGN OWNED</> to handle operator classes and families
+      (Asko Tiidumaa)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible core dump when comparing two empty <type>tsquery</> values
+      (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
+      followed by <literal>_</> (Tom Lane)
+     </para>
+
+     <para>
+      We've fixed this before, but there were still some incorrectly-handled
+      cases.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
+     </para>
+
+     <para>
+      Input such as <literal>'J100000'::date</> worked before 8.4,
+      but was unintentionally broken by added error-checking.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix PL/pgSQL to throw an error, not crash, if a cursor is closed within
+      a <literal>FOR</> loop that is iterating over that cursor
+      (Heikki Linnakangas)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      In PL/Python, defend against null pointer results from
+      <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
+      (Peter Eisentraut)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      In <application>libpq</>, fix full SSL certificate verification for the
+      case where both <literal>host</> and <literal>hostaddr</> are specified
+      (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make psql recognize <command>DISCARD ALL</> as a command that should
+      not be encased in a transaction block in autocommit-off mode
+      (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix some issues in <application>pg_dump</>'s handling of SQL/MED objects
+      (Tom Lane)
+     </para>
+
+     <para>
+      Notably, <application>pg_dump</> would always fail if run by a
+      non-superuser, which was not intended.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve <application>pg_dump</> and <application>pg_restore</>'s
+      handling of non-seekable archive files (Tom Lane, Robert Haas)
+     </para>
+
+     <para>
+      This is important for proper functioning of parallel restore.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve parallel pg_restore's ability to cope with selective restore
+      (<literal>-L</> option) (Tom Lane)
+     </para>
+
+     <para>
+      The original code tended to fail if the <literal>-L</> file commanded
+      a non-default restore ordering.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>ecpg</> to process data from <literal>RETURNING</>
+      clauses correctly (Michael Meskes)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix some memory leaks in <application>ecpg</> (Zoltan Boszormenyi)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve <filename>contrib/dblink</>'s handling of tables containing
+      dropped columns (Tom Lane)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix connection leak after <quote>duplicate connection name</quote>
+      errors in <filename>contrib/dblink</> (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <filename>contrib/dblink</> to handle connection names longer than
+      62 bytes correctly (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <function>hstore(text, text)</>
+      function to <filename>contrib/hstore</> (Robert Haas)
+     </para>
+
+     <para>
+      This function is the recommended substitute for the now-deprecated
+      <literal>=&gt;</> operator.  It was back-patched so that future-proofed
+      code can be used with older server versions.  Note that the patch will
+      be effective only after <filename>contrib/hstore</> is installed or
+      reinstalled in a particular database.  Users might prefer to execute
+      the <command>CREATE FUNCTION</> command by hand, instead.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update build infrastructure and documentation to reflect the source code
+      repository's move from CVS to Git (Magnus Hagander and others)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2010l
+      for DST law changes in Egypt and Palestine; also historical corrections
+      for Finland.
+     </para>
+
+     <para>
+      This change also adds new names for two Micronesian timezones:
+      Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
+      abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
+      Pacific/Ponape.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
+      Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
+     </para>
+
+     <para>
+      Microsoft changed the DST behavior of this zone in the timezone update
+      from KB976098. Asia/Novosibirsk is a better match to its new behavior.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-4">
+  <title>Release 8.4.4</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2010-05-17</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.3.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.4</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+    However, if you are upgrading from a version earlier than 8.4.2,
+    see the release notes for 8.4.2.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Enforce restrictions in <literal>plperl</> using an opmask applied to
+      the whole interpreter, instead of using <filename>Safe.pm</>
+      (Tim Bunce, Andrew Dunstan)
+     </para>
+
+     <para>
+      Recent developments have convinced us that <filename>Safe.pm</> is too
+      insecure to rely on for making <literal>plperl</> trustable.  This
+      change removes use of <filename>Safe.pm</> altogether, in favor of using
+      a separate interpreter with an opcode mask that is always applied.
+      Pleasant side effects of the change include that it is now possible to
+      use Perl's <literal>strict</> pragma in a natural way in
+      <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
+      variables work as expected in sort routines, and that function
+      compilation is significantly faster.  (CVE-2010-1169)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent PL/Tcl from executing untrustworthy code from
+      <structname>pltcl_modules</> (Tom)
+     </para>
+
+     <para>
+      PL/Tcl's feature for autoloading Tcl code from a database table
+      could be exploited for trojan-horse attacks, because there was no
+      restriction on who could create or insert into that table.  This change
+      disables the feature unless <structname>pltcl_modules</> is owned by a
+      superuser.  (However, the permissions on the table are not checked, so
+      installations that really need a less-than-secure modules table can
+      still grant suitable privileges to trusted non-superusers.)  Also,
+      prevent loading code into the unrestricted <quote>normal</> Tcl
+      interpreter unless we are really going to execute a <literal>pltclu</>
+      function.  (CVE-2010-1170)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix data corruption during WAL replay of
+      <literal>ALTER ... SET TABLESPACE</> (Tom)
+     </para>
+
+     <para>
+      When <varname>archive_mode</> is on, <literal>ALTER ... SET TABLESPACE</>
+      generates a WAL record whose replay logic was incorrect.  It could write
+      the data to the wrong place, leading to possibly-unrecoverable data
+      corruption.  Data corruption would be observed on standby slaves, and
+      could occur on the master as well if a database crash and recovery
+      occurred after committing the <literal>ALTER</> and before the next
+      checkpoint.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crash if a cache reset message is received during
+      rebuild of a relcache entry (Heikki)
+     </para>
+
+     <para>
+      This error was introduced in 8.4.3 while fixing a related failure.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Apply per-function GUC settings while running the language validator
+      for the function (Itagaki Takahiro)
+     </para>
+
+     <para>
+      This avoids failures if the function's code is invalid without the
+      setting; an example is that SQL functions may not parse if the
+      <varname>search_path</> is not correct.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Do constraint exclusion for inherited <command>UPDATE</> and
+      <command>DELETE</> target tables when
+      <varname>constraint_exclusion</> = <literal>partition</> (Tom)
+     </para>
+
+     <para>
+      Due to an oversight, this setting previously only caused constraint
+      exclusion to be checked in <command>SELECT</> commands.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Do not allow an unprivileged user to reset superuser-only parameter
+      settings (Alvaro)
+     </para>
+
+     <para>
+      Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
+      ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
+      a database he owns, this would remove all special parameter settings
+      for the user or database, even ones that are only supposed to be
+      changeable by a superuser.  Now, the <command>ALTER</> will only
+      remove the parameters that the user has permission to change.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid possible crash during backend shutdown if shutdown occurs
+      when a <literal>CONTEXT</> addition would be made to log entries (Tom)
+     </para>
+
+     <para>
+      In some cases the context-printing function would fail because the
+      current transaction had already been rolled back when it came time
+      to print a log message.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix erroneous handling of <literal>%r</> parameter in
+      <varname>recovery_end_command</> (Heikki)
+     </para>
+
+     <para>
+      The value always came out zero.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure the archiver process responds to changes in
+      <varname>archive_command</> as soon as possible (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix pl/pgsql's <literal>CASE</> statement to not fail when the
+      case expression is a query that returns no rows (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update pl/perl's <filename>ppport.h</> for modern Perl versions
+      (Andrew)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Handle empty-string connect parameters properly in ecpg (Michael)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent infinite recursion in <application>psql</> when expanding
+      a variable that refers to itself (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>psql</>'s <literal>\copy</> to not add spaces around
+      a dot within <literal>\copy (select ...)</> (Tom)
+     </para>
+
+     <para>
+      Addition of spaces around the decimal point in a numeric literal would
+      result in a syntax error.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid formatting failure in <application>psql</> when running in a
+      locale context that doesn't match the <varname>client_encoding</>
+      (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
+      errors for unsatisfiable queries using <filename>contrib/intarray</>
+      operators (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
+      interrupts promptly (Tatsuhito Kasahara)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make server startup deal properly with the case that
+      <function>shmget()</> returns <literal>EINVAL</> for an existing
+      shared memory segment (Tom)
+     </para>
+
+     <para>
+      This behavior has been observed on BSD-derived kernels including OS X.
+      It resulted in an entirely-misleading startup failure complaining that
+      the shared memory request size was too large.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid possible crashes in syslogger process on Windows (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Deal more robustly with incomplete time zone information in the
+      Windows registry (Magnus)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update the set of known Windows time zone names (Magnus)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2010j
+      for DST law changes in Argentina, Australian Antarctic, Bangladesh,
+      Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
+      also historical corrections for Taiwan.
+     </para>
+
+     <para>
+      Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
+      timezone abbreviations.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-3">
+  <title>Release 8.4.3</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2010-03-15</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.2.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.3</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+    However, if you are upgrading from a version earlier than 8.4.2,
+    see the release notes for 8.4.2.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Add new configuration parameter <varname>ssl_renegotiation_limit</> to
+      control how often we do session key renegotiation for an SSL connection
+      (Magnus)
+     </para>
+
+     <para>
+      This can be set to zero to disable renegotiation completely, which may
+      be required if a broken SSL library is used.  In particular, some
+      vendors are shipping stopgap patches for CVE-2009-3555 that cause
+      renegotiation attempts to fail.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible deadlock during backend startup (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crashes due to not handling errors during relcache reload
+      cleanly (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crash due to use of dangling pointer to a cached plan
+      (Tatsuo)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crash due to overenthusiastic invalidation of cached
+      plan for <command>ROLLBACK</> (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crashes when trying to recover from a failure in
+      subtransaction start (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix server memory leak associated with use of savepoints and a client
+      encoding different from server's encoding (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
+      index page split (Yoichi Hirai)
+     </para>
+
+     <para>
+      This would result in index corruption, or even more likely an error
+      during WAL replay, if we were unlucky enough to crash during
+      end-of-recovery cleanup after having completed an incomplete GIST
+      insertion.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug in WAL redo cleanup method for GIN indexes (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect comparison of scan key in GIN index search (Teodor)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make <function>substring()</> for <type>bit</> types treat any negative
+      length as meaning <quote>all the rest of the string</> (Tom)
+     </para>
+
+     <para>
+      The previous coding treated only -1 that way, and would produce an
+      invalid result value for other negative values, possibly leading to
+      a crash (CVE-2010-0442).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix integer-to-bit-string conversions to handle the first fractional
+      byte correctly when the output bit width is wider than the given
+      integer by something other than a multiple of 8 bits (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix some cases of pathologically slow regular expression matching (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug occurring when trying to inline a SQL function that returns
+      a set of a composite type that contains dropped columns (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug with trying to update a field of an element of a
+      composite-type array column (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid failure when <command>EXPLAIN</> has to print a FieldStore or
+      assignment ArrayRef expression (Tom)
+     </para>
+
+     <para>
+      These cases can arise now that <command>EXPLAIN VERBOSE</> tries to
+      print plan node target lists.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid an unnecessary coercion failure in some cases where an undecorated
+      literal string appears in a subquery within
+      <command>UNION</>/<command>INTERSECT</>/<command>EXCEPT</> (Tom)
+     </para>
+
+     <para>
+      This fixes a regression for some cases that worked before 8.4.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid undesirable rowtype compatibility check failures in some cases
+      where a whole-row Var has a rowtype that contains dropped columns (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
+      report the next WAL segment's name when the end location is exactly at a
+      segment boundary (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Always pass the catalog ID to an option validator function specified in
+      <command>CREATE FOREIGN DATA WRAPPER</> (Martin Pihlak)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix some more cases of temporary-file leakage (Heikki)
+     </para>
+
+     <para>
+      This corrects a problem introduced in the previous minor release.
+      One case that failed is when a plpgsql function returning set is
+      called within another function's exception handler.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add support for doing <literal>FULL JOIN ON FALSE</> (Tom)
+     </para>
+
+     <para>
+      This prevents a regression from pre-8.4 releases for some queries that
+      can now be simplified to a constant-false join condition.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve constraint exclusion processing of boolean-variable cases,
+      in particular make it possible to exclude a partition that has a
+      <quote>bool_column = false</> constraint (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent treating an <literal>INOUT</> cast as representing binary
+      compatibility (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Include column name in the message when warning about inability to
+      grant or revoke column-level privileges (Stephen Frost)
+     </para>
+
+     <para>
+      This is more useful than before and helps to prevent confusion when
+      a <command>REVOKE</> generates multiple messages, which formerly
+      appeared to be duplicates.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      When reading <filename>pg_hba.conf</> and related files, do not treat
+      <literal>@something</> as a file inclusion request if the <literal>@</>
+      appears inside quote marks; also, never treat <literal>@</> by itself
+      as a file inclusion request (Tom)
+     </para>
+
+     <para>
+      This prevents erratic behavior if a role or database name starts with
+      <literal>@</>.  If you need to include a file whose path name
+      contains spaces, you can still do so, but you must write
+      <literal>@"/path to/file"</> rather than putting the quotes around
+      the whole construct.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent infinite loop on some platforms if a directory is named as
+      an inclusion target in <filename>pg_hba.conf</> and related files
+      (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible infinite loop if <function>SSL_read</> or
+      <function>SSL_write</> fails without setting <varname>errno</> (Tom)
+     </para>
+
+     <para>
+      This is reportedly possible with some Windows versions of
+      <application>openssl</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Disallow <acronym>GSSAPI</> authentication on local connections,
+      since it requires a hostname to function correctly (Magnus)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Protect <application>ecpg</> against applications freeing strings
+      unexpectedly (Michael)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make <application>ecpg</> report the proper SQLSTATE if the connection
+      disappears (Michael)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix translation of cell contents in <application>psql</> <literal>\d</>
+      output (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>psql</>'s <literal>numericlocale</> option to not
+      format strings it shouldn't in latex and troff output formats (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix a small per-query memory leak in <application>psql</> (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make <application>psql</> return the correct exit status (3) when
+      <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
+      both specified and an error occurs during the implied <command>COMMIT</>
+      (Bruce)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>pg_dump</>'s output of permissions for foreign servers
+      (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crash in parallel <application>pg_restore</> due to
+      out-of-range dependency IDs (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix plpgsql failure in one case where a composite column is set to NULL
+      (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible failure when calling PL/Perl functions from PL/PerlU
+      or vice versa (Tim Bunce)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Add <literal>volatile</> markings in PL/Python to avoid possible
+      compiler-specific misbehavior (Zdenek Kotala)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
+     </para>
+
+     <para>
+      The only known symptom of this oversight is that the Tcl
+      <literal>clock</> command misbehaves if using Tcl 8.5 or later.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent <function>ExecutorEnd</> from being run on portals created
+      within a failed transaction or subtransaction (Tom)
+     </para>
+
+     <para>
+      This is known to cause issues when using
+      <filename>contrib/auto_explain</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent crash in <filename>contrib/dblink</> when too many key
+      columns are specified to a <function>dblink_build_sql_*</> function
+      (Rushabh Lathia, Joe Conway)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
+      (Tom)
+     </para>
+
+     <para>
+      This case was formerly rejected as an error, but it's more convenient to
+      treat it the same as a zero-element array.  In particular this avoids
+      unnecessary failures when an <type>ltree</> operation is applied to the
+      result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
+      rows.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
+      memory management (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make building of <filename>contrib/xml2</> more robust on Windows
+      (Andrew)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix race condition in Windows signal handling (Radu Ilie)
+     </para>
+
+     <para>
+      One known symptom of this bug is that rows in <structname>pg_listener</>
+      could be dropped under heavy load.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make the configure script report failure if the C compiler does
+      not provide a working 64-bit integer datatype (Tom)
+     </para>
+
+     <para>
+      This case has been broken for some time, and no longer seems worth
+      supporting, so just reject it at configure time instead.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2010e
+      for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-2">
+  <title>Release 8.4.2</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2009-12-14</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.1.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.2</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+    However, if you have any hash indexes,
+    you should <command>REINDEX</> them after updating to 8.4.2,
+    to repair possible damage.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Protect against indirect security threats caused by index functions
+      changing session-local state (Gurjeet Singh, Tom)
+     </para>
+
+     <para>
+      This change prevents allegedly-immutable index functions from possibly
+      subverting a superuser's session (CVE-2009-4136).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Reject SSL certificates containing an embedded null byte in the common
+      name (CN) field (Magnus)
+     </para>
+
+     <para>
+      This prevents unintended matching of a certificate to a server or client
+      name during SSL validation (CVE-2009-4034).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix hash index corruption (Tom)
+     </para>
+
+     <para>
+      The 8.4 change that made hash indexes keep entries sorted by hash value
+      failed to update the bucket splitting and compaction routines to
+      preserve the ordering.  So application of either of those operations
+      could lead to permanent corruption of an index, in the sense that
+      searches might fail to find entries that are present.  To deal with
+      this, it is recommended to <literal>REINDEX</> any hash indexes you may
+      have after installing this update.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crash during backend-startup-time cache initialization (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid crash on empty thesaurus dictionary (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Prevent signals from interrupting <literal>VACUUM</> at unsafe times
+      (Alvaro)
+     </para>
+
+     <para>
+      This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
+      after it's already committed its tuple movements, as well as transient
+      errors if a plain <literal>VACUUM</> is interrupted after having
+      truncated the table.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible crash due to integer overflow in hash table size
+      calculation (Tom)
+     </para>
+
+     <para>
+      This could occur with extremely large planner estimates for the size of
+      a hashjoin's result.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix crash if a <literal>DROP</> is attempted on an internally-dependent
+      object (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
+      Mikkelson)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure that shared tuple-level locks held by prepared transactions are
+      not ignored (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix premature drop of temporary files used for a cursor that is accessed
+      within a subtransaction (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix memory leak in syslogger process when rotating to a new CSV logfile
+      (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix memory leak in postmaster when re-parsing <filename>pg_hba.conf</>
+      (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix Windows permission-downgrade logic (Jesse Morris)
+     </para>
+
+     <para>
+      This fixes some cases where the database failed to start on Windows,
+      often with misleading error messages such as <quote>could not locate
+      matching postgres executable</quote>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make <literal>FOR UPDATE/SHARE</> in the primary query not propagate
+      into <literal>WITH</> queries (Tom)
+     </para>
+
+     <para>
+      For example, in
+<programlisting>
+WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
+</programlisting>
+      the <literal>FOR UPDATE</> will now affect <literal>bar</> but not
+      <literal>foo</>.  This is more useful and consistent than the original
+      8.4 behavior, which tried to propagate <literal>FOR UPDATE</> into the
+      <literal>WITH</> query but always failed due to assorted implementation
+      restrictions.  It also follows the design rule that <literal>WITH</>
+      queries are executed as if independent of the main query.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug with a <literal>WITH RECURSIVE</> query immediately inside
+      another one (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix concurrency bug in hash indexes (Tom)
+     </para>
+
+     <para>
+      Concurrent insertions could cause index scans to transiently report
+      wrong results.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect logic for GiST index page splits, when the split depends
+      on a non-first column of the index (Paul Ramsey)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix wrong search results for a multi-column GIN index with
+      <literal>fastupdate</> enabled (Teodor)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bugs in WAL entry creation for GIN indexes (Tom)
+     </para>
+
+     <para>
+      These bugs were masked when <varname>full_page_writes</> was on, but
+      with it off a WAL replay failure was certain if a crash occurred before
+      the next checkpoint.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Don't error out if recycling or removing an old WAL file fails at the
+      end of checkpoint (Heikki)
+     </para>
+
+     <para>
+      It's better to treat the problem as non-fatal and allow the checkpoint
+      to complete.  Future checkpoints will retry the removal.  Such problems
+      are not expected in normal operation, but have been seen to be
+      caused by misdesigned Windows anti-virus and backup software.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure WAL files aren't repeatedly archived on Windows (Heikki)
+     </para>
+
+     <para>
+      This is another symptom that could happen if some other process
+      interfered with deletion of a no-longer-needed file.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix PAM password processing to be more robust (Tom)
+     </para>
+
+     <para>
+      The previous code is known to fail with the combination of the Linux
+      <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
+      domain controller.  It might have problems elsewhere too, since it was
+      making unjustified assumptions about what arguments the PAM stack would
+      pass to it.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
+      and SSPI authentication methods (Ian Turner)
+     </para>
+
+     <para>
+      While the old 2000-byte limit was more than enough for Unix Kerberos
+      implementations, tickets issued by Windows Domain Controllers can be
+      much larger.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure that domain constraints are enforced in constructs like
+      <literal>ARRAY[...]::domain</>, where the domain is over an array type
+      (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix foreign-key logic for some cases involving composite-type columns
+      as foreign keys (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure that a cursor's snapshot is not modified after it is created
+      (Alvaro)
+     </para>
+
+     <para>
+      This could lead to a cursor delivering wrong results if later operations
+      in the same transaction modify the data the cursor is supposed to return.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <literal>CREATE TABLE</> to properly merge default expressions
+      coming from different inheritance parent tables (Tom)
+     </para>
+
+     <para>
+      This used to work but was broken in 8.4.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Re-enable collection of access statistics for sequences (Akira Kurosawa)
+     </para>
+
+     <para>
+      This used to work but was broken in 8.3.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix processing of ownership dependencies during <literal>CREATE OR
+      REPLACE FUNCTION</> (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect handling of <literal>WHERE</>
+      <replaceable>x</>=<replaceable>x</> conditions (Tom)
+     </para>
+
+     <para>
+      In some cases these could get ignored as redundant, but they aren't
+      &mdash; they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix incorrect plan construction when using hash aggregation to implement
+      <literal>DISTINCT</> for textually identical volatile expressions (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</>
+      expression (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <function>ts_stat()</> to not fail on an empty <type>tsvector</>
+      value (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make text search parser accept underscores in XML attributes (Peter)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix encoding handling in <type>xml</> binary input (Heikki)
+     </para>
+
+     <para>
+      If the XML header doesn't specify an encoding, we now assume UTF-8 by
+      default; the previous handling was inconsistent.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
+      versa (Tom)
+     </para>
+
+     <para>
+      An error exit from the inner function could result in crashes due to
+      failure to re-select the correct Perl interpreter for the outer function.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix session-lifespan memory leak when a PL/Perl function is redefined
+      (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure that Perl arrays are properly converted to
+      <productname>PostgreSQL</> arrays when returned by a set-returning
+      PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
+     </para>
+
+     <para>
+      This worked correctly already for non-set-returning functions.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix rare crash in exception processing in PL/Python (Peter)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>ecpg</> problem with comments in <literal>DECLARE
+      CURSOR</> statements (Michael)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>ecpg</> to not treat recently-added keywords as
+      reserved words (Tom)
+     </para>
+
+     <para>
+      This affected the keywords <literal>CALLED</>, <literal>CATALOG</>,
+      <literal>DEFINER</>, <literal>ENUM</>, <literal>FOLLOWING</>,
+      <literal>INVOKER</>, <literal>OPTIONS</>, <literal>PARTITION</>,
+      <literal>PRECEDING</>, <literal>RANGE</>, <literal>SECURITY</>,
+      <literal>SERVER</>, <literal>UNBOUNDED</>, and <literal>WRAPPER</>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Re-allow regular expression special characters in <application>psql</>'s
+      <literal>\df</> function name parameter (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      In <filename>contrib/fuzzystrmatch</>, correct the calculation of
+      <function>levenshtein</> distances with non-default costs (Marcin Mank)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      In <filename>contrib/pg_standby</>, disable triggering failover with a
+      signal on Windows (Fujii Masao)
+     </para>
+
+     <para>
+      This never did anything useful, because Windows doesn't have Unix-style
+      signals, but recent changes made it actually crash.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Put <literal>FREEZE</> and <literal>VERBOSE</> options in the right
+      order in the <literal>VACUUM</> command that
+      <filename>contrib/vacuumdb</> produces (Heikki)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix possible leak of connections when <filename>contrib/dblink</>
+      encounters an error (Tatsuhito Kasahara)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure <application>psql</>'s flex module is compiled with the correct
+      system header definitions (Tom)
+     </para>
+
+     <para>
+      This fixes build failures on platforms where
+      <literal>--enable-largefile</> causes incompatible changes in the
+      generated code.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make the postmaster ignore any <literal>application_name</> parameter in
+      connection request packets, to improve compatibility with future libpq
+      versions (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update the timezone abbreviation files to match current reality (Joachim
+      Wieland)
+     </para>
+
+     <para>
+      This includes adding <literal>IDT</> to the default
+      timezone abbreviation set.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2009s
+      for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
+      Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
+      corrections for Hong Kong.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
+ <sect1 id="release-8-4-1">
+  <title>Release 8.4.1</title>
+
+  <note>
+  <title>Release Date</title>
+  <simpara>2009-09-09</simpara>
+  </note>
+
+  <para>
+   This release contains a variety of fixes from 8.4.
+   For information about new features in the 8.4 major release, see
+   <xref linkend="release-8-4">.
+  </para>
+
+  <sect2>
+   <title>Migration to Version 8.4.1</title>
+
+   <para>
+    A dump/restore is not required for those running 8.4.X.
+   </para>
+
+  </sect2>
+
+  <sect2>
+   <title>Changes</title>
+
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Fix WAL page header initialization at the end of archive recovery
+      (Heikki)
+     </para>
+
+     <para>
+      This could lead to failure to process the WAL in a subsequent
+      archive recovery.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <quote>cannot make new WAL entries during recovery</> error (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix problem that could make expired rows visible after a crash (Tom)
+     </para>
+
+     <para>
+      This bug involved a page status bit potentially not being set
+      correctly after a server crash.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Disallow <command>RESET ROLE</> and <command>RESET SESSION
+      AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
+     </para>
+
+     <para>
+      This covers a case that was missed in the previous patch that
+      disallowed <command>SET ROLE</> and <command>SET SESSION
+      AUTHORIZATION</> inside security-definer functions.
+      (See CVE-2007-6600)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make <command>LOAD</> of an already-loaded loadable module
+      into a no-op (Tom)
+     </para>
+
+     <para>
+      Formerly, <command>LOAD</> would attempt to unload and re-load the
+      module, but this is unsafe and not all that useful.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Make window function <literal>PARTITION BY</> and <literal>ORDER BY</>
+      items always be interpreted as simple expressions (Tom)
+     </para>
+
+     <para>
+      In 8.4.0 these lists were parsed following the rules used for
+      top-level <literal>GROUP BY</> and <literal>ORDER BY</> lists.
+      But this was not correct per the SQL standard, and it led to possible
+      circularity.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix several errors in planning of semi-joins (Tom)
+     </para>
+
+     <para>
+      These led to wrong query results in some cases where <literal>IN</>
+      or <literal>EXISTS</> was used together with another join.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix handling of whole-row references to subqueries that are within
+      an outer join (Tom)
+     </para>
+
+     <para>
+      An example is
+      <literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</>.
+      Here, <literal>ss.*</> would be treated as <literal>ROW(NULL,NULL,...)</>
+      for null-extended join rows, which is not the same as a simple NULL.
+      Now it is treated as a simple NULL.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
+     </para>
+
+     <para>
+      This bug led to the often-reported <quote>could not reattach
+      to shared memory</> error message.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix locale handling with plperl (Heikki)
+     </para>
+
+     <para>
+      This bug could cause the server's locale setting to change when a
+      plperl function is called, leading to data corruption.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix handling of reloptions to ensure setting one option doesn't
+      force default values for others (Itagaki Takahiro)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Ensure that a <quote>fast shutdown</> request will forcibly terminate
+      open sessions, even if a <quote>smart shutdown</> was already in progress
+      (Fujii Masao)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid memory leak for <function>array_agg()</> in <literal>GROUP BY</>
+      queries (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
+      suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
+     </para>
+
+     <para>
+      It was previously handled as <literal>'th'</> (lowercase).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Include the fractional part in the result of
+      <function>EXTRACT(second)</> and
+      <function>EXTRACT(milliseconds)</> for
+      <type>time</> and <type>time with time zone</> inputs (Tom)
+     </para>
+
+     <para>
+      This has always worked for floating-point datetime configurations,
+      but was broken in the integer datetime code.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
+      when <replaceable>x</> is more than 2 million and integer
+      datetimes are in use (Alex Hunsaker)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve performance when processing toasted values in index scans (Tom)
+     </para>
+
+     <para>
+      This is particularly useful for <ulink
+      url="http://postgis.refractions.net/">PostGIS</ulink>.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix a typo that disabled <varname>commit_delay</> (Jeff Janes)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Output early-startup messages to <filename>postmaster.log</> if the
+      server is started in silent mode (Tom)
+     </para>
+
+     <para>
+      Previously such error messages were discarded, leading to
+      difficulty in debugging.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Remove translated FAQs (Peter)
+     </para>
+
+     <para>
+      They are now on the <ulink
+      url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>.  The
+      main FAQ was moved to the wiki some time ago.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <application>pg_ctl</> to not go into an infinite loop if
+      <filename>postgresql.conf</> is empty (Jeff Davis)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix several errors in <application>pg_dump</>'s
+      <literal>--binary-upgrade</> mode (Bruce, Tom)
+     </para>
+
+     <para>
+      <literal>pg_dump --binary-upgrade</> is used by pg_migrator.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
+      properly handle the maximum number of parameters (twenty) (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Improve robustness of <application>libpq</>'s code to recover
+      from errors during <command>COPY FROM STDIN</> (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Avoid including conflicting readline and editline header files
+      when both libraries are installed (Zdenek Kotala)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Work around gcc bug that causes <quote>floating-point exception</>
+      instead of <quote>division by zero</> on some platforms (Tom)
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Update time zone data files to <application>tzdata</> release 2009l
+      for DST law changes in Bangladesh, Egypt, Mauritius.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+
+  </sect2>
+ </sect1>
+
  <sect1 id="release-8-4">
   <title>Release 8.4</title>
 
   <note>
-   <title>Release date</title>
-   <simpara>2009-??-??, ITEMS CURRENT AS OF 2009-05-11</simpara>
+   <title>Release Date</title>
+   <simpara>2009-07-01</simpara>
   </note>
 
   <sect2>
 
     <listitem>
      <para>
-      Common Table Expressions and Recursive Joins
+      Common Table Expressions and Recursive Queries
      </para>
     </listitem>
 
 
      <listitem>
       <para>
+       Rewrite memory management for <application>libxml</>-using functions
+       (Tom)
+      </para>
+
+      <para>
+       This change should avoid some compatibility problems with use of
+       <application>libxml</> in PL/Perl and other add-on code.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
        Adopt a faster algorithm for hash functions (Kenneth Marshall,
        based on work of Bob Jenkins)
       </para>
 
       <listitem>
        <para>
+        When archiving is enabled, rotate the last WAL segment at shutdown
+        so that all transactions can be archived immediately
+        (Guillaume Smet, Heikki)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
         Delay <quote>smart</> shutdown while a continuous archiving base backup
         is in progress (Laurenz Albe)
        </para>
       </para>
 
       <para>
-       In particular, this means that functions written in PL/PgSQL
+       In particular, this means that functions written in PL/pgSQL
        and other PL languages can now be called this way.
       </para>
      </listitem>
 
       <listitem>
        <para>
-        Make parsing of <type>interval</> literals more standard-compliant (Tom)
+        Make parsing of <type>interval</> literals more standard-compliant
+        (Tom, Ron Mayer)
        </para>
 
        <para>
 
       <listitem>
        <para>
+        Allow the second argument of <function>pg_get_expr()</> to be zero
+        when deparsing an expression that does not contain variables (Tom)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
         Modify <function>pg_relation_size()</> to use <literal>regclass</>
         (Heikki)
        </para>
       <listitem>
        <para>
         Fix the behavior of information schema columns
-        <literal>is_insertable_into</> and <literal>is_updatable</> to
+        <structfield>is_insertable_into</> and <structfield>is_updatable</> to
         be consistent (Peter)
        </para>
       </listitem>
 
       <listitem>
        <para>
+        Improve the behavior of information schema
+        <structfield>datetime_precision</> columns (Peter)
+       </para>
+
+       <para>
+        These columns now show zero for <type>date</> columns, and 6
+        (the default precision) for <type>time</>, <type>timestamp</>, and
+        <type>interval</> without a declared precision, rather than showing
+        null as formerly.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
         Convert remaining builtin set-returning functions to use
         <literal>OUT</> parameters (Jaime Casanova)
        </para>
     </sect4>
 
     <sect4>
-     <title>PL/PgSQL Server-Side Language</title>
+     <title>PL/pgSQL Server-Side Language</title>
      <itemizedlist>
 
       <listitem>
         Make processing of string literals and nested block comments
         match the main SQL parser's processing (Tom)
        </para>
+
+       <para>
+        In particular, the format string in <command>RAISE</> now works
+        the same as any other string literal, including being subject
+        to <varname>standard_conforming_strings</>.  This change also
+        fixes other cases in which valid commands would fail when
+        <varname>standard_conforming_strings</> is on.
+       </para>
       </listitem>
 
       <listitem>
        <para>
         Allow <application>pg_dump</>, <application>pg_dumpall</>, and
         <application>pg_restore</> to use a specified role (Benedek
-        László)
+        L&aacute;szl&oacute;)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Make Kerberos connections use the same method to determine the
-        username of the client as all other authentication methods (Magnus)
+        Do not rely on Kerberos tickets to determine the default database
+        username (Magnus)
        </para>
 
        <para>
-        Previously a special Kerberos-only API was used.
+        Previously, a Kerberos-capable build of libpq would use the
+        principal name from any available Kerberos ticket as default
+        database username, even if the connection wasn't using Kerberos
+        authentication.  This was deemed inconsistent and confusing.
+        The default username is now determined the same way with or
+        without Kerberos.  Note however that the database username must still
+        match the ticket when Kerberos authentication is used.
        </para>
       </listitem>
      </itemizedlist>
 
      <listitem>
       <para>
+       Enable <filename>contrib/dblink</> to use connection information
+       stored in the SQL/MED catalogs (Joe Conway)
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
        Improve <filename>contrib/dblink</>'s reporting of errors from
        the remote server (Joe Conway)
       </para>
 
      <listitem>
       <para>
+       Make <filename>contrib/dblink</> set <varname>client_encoding</>
+       to match the local database's encoding (Joe Conway)
+      </para>
+
+      <para>
+       This prevents encoding problems when communicating with a remote
+       database that uses a different encoding.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
        Make sure <filename>contrib/dblink</> uses a password supplied
        by the user, and not accidentally taken from the server's
        <filename>.pgpass</> file (Joe Conway)
 
      <listitem>
       <para>
-       Remove <filename>contrib/intarray</>'s definitions of the
-       <literal>&lt;@</> and <literal>@&gt;</> operators (Tom)
+       Make <filename>contrib/pg_standby</> recover all available WAL before
+       failover (Fujii Masao, Simon, Heikki)
       </para>
 
       <para>
-       This avoids confusion with the equivalent built-in operators.
-       If needed, the <filename>contrib/intarray</> implementations
-       are still available under their historical names <literal>@</>
-       and <literal>~</>.
+       To make this work safely, you now need to set the new
+       <literal>recovery_end_command</> option in <filename>recovery.conf</>
+       to clean up the trigger file after failover. <application>pg_standby</>
+       will no longer remove the trigger file itself.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Make <filename>contrib/pg_standby</> recover all available WAL before
-       failover (Fujii Masao, Simon, Heikki)
-      </para>
-
-      <para>
-       To make this safe, you now need to set the new
-       <literal>recovery_end_command</> option in <filename>recovery.conf</> to
-       clean up the trigger fail after failover.
+       <filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
+       because it is unsafe to use a symlink (Simon)
       </para>
      </listitem>