Release date: 2012-12-06
This release contains a variety of fixes from 8.4.14. For information about new features in the 8.4 major release, see Section E.169.
A dump/restore is not required for those running 8.4.X.
However, if you are upgrading from a version earlier than 8.4.10, see Section E.159.
      Fix multiple bugs associated with CREATE INDEX
      CONCURRENTLY (Andres Freund, Tom Lane)
     
      Fix CREATE INDEX CONCURRENTLY to use
      in-place updates when changing the state of an index's
      pg_index row.  This prevents race conditions that could
      cause concurrent sessions to miss updating the target index, thus
      resulting in corrupt concurrently-created indexes.
     
      Also, fix various other operations to ensure that they ignore
      invalid indexes resulting from a failed CREATE INDEX
      CONCURRENTLY command.  The most important of these is
      VACUUM, because an auto-vacuum could easily be launched
      on the table before corrective action can be taken to fix or remove
      the invalid index.
     
Avoid corruption of internal hash tables when out of memory (Hitoshi Harada)
Fix planning of non-strict equivalence clauses above outer joins (Tom Lane)
      The planner could derive incorrect constraints from a clause equating
      a non-strict construct to something else, for example
      WHERE COALESCE(foo, 0) = 0
      when foo is coming from the nullable side of an outer join.
     
Improve planner's ability to prove exclusion constraints from equivalence classes (Tom Lane)
Fix partial-row matching in hashed subplans to handle cross-type cases correctly (Tom Lane)
      This affects multicolumn NOT IN subplans, such as
      WHERE (a, b) NOT IN (SELECT x, y FROM ...)
      when for instance b and y are int4
      and int8 respectively.  This mistake led to wrong answers
      or crashes depending on the specific datatypes involved.
     
      Acquire buffer lock when re-fetching the old tuple for an
      AFTER ROW UPDATE/DELETE trigger (Andres Freund)
     
In very unusual circumstances, this oversight could result in passing incorrect data to the precheck logic for a foreign-key enforcement trigger. That could result in a crash, or in an incorrect decision about whether to fire the trigger.
      Fix ALTER COLUMN TYPE to handle inherited check
      constraints properly (Pavan Deolasee)
     
This worked correctly in pre-8.4 releases, and now works correctly in 8.4 and later.
      Fix REASSIGN OWNED to handle grants on tablespaces
      (Álvaro Herrera)
     
      Ignore incorrect pg_attribute entries for system
      columns for views (Tom Lane)
     
Views do not have any system columns. However, we forgot to remove such entries when converting a table to a view. That's fixed properly for 9.3 and later, but in previous branches we need to defend against existing mis-converted views.
      Fix rule printing to dump INSERT INTO  correctly (Tom Lane)
     table
      DEFAULT VALUES
      Guard against stack overflow when there are too many
      UNION/INTERSECT/EXCEPT clauses
      in a query (Tom Lane)
     
Prevent platform-dependent failures when dividing the minimum possible integer value by -1 (Xi Wang, Tom Lane)
Fix possible access past end of string in date parsing (Hitoshi Harada)
Produce an understandable error message if the length of the path name for a Unix-domain socket exceeds the platform-specific limit (Tom Lane, Andrew Dunstan)
Formerly, this would result in something quite unhelpful, such as “Non-recoverable failure in name resolution”.
Fix memory leaks when sending composite column values to the client (Tom Lane)
      Make pg_ctl more robust about reading the
      postmaster.pid file (Heikki Linnakangas)
     
Fix race conditions and possible file descriptor leakage.
      Fix possible crash in psql if incorrectly-encoded data
      is presented and the client_encoding setting is a
      client-only encoding, such as SJIS (Jiang Guiqing)
     
      Fix bugs in the restore.sql script emitted by
      pg_dump in tar output format (Tom Lane)
     
      The script would fail outright on tables whose names include
      upper-case characters.  Also, make the script capable of restoring
      data in --inserts mode as well as the regular COPY mode.
     
      Fix pg_restore to accept POSIX-conformant
      tar files (Brian Weaver, Tom Lane)
     
      The original coding of pg_dump's tar
      output mode produced files that are not fully conformant with the
      POSIX standard.  This has been corrected for version 9.3.  This
      patch updates previous branches so that they will accept both the
      incorrect and the corrected formats, in hopes of avoiding
      compatibility problems when 9.3 comes out.
     
      Fix pg_resetxlog to locate postmaster.pid
      correctly when given a relative path to the data directory (Tom Lane)
     
This mistake could lead to pg_resetxlog not noticing that there is an active postmaster using the data directory.
      Fix libpq's lo_import() and
      lo_export() functions to report file I/O errors properly
      (Tom Lane)
     
Fix ecpg's processing of nested structure pointer variables (Muhammad Usama)
      Make contrib/pageinspect's btree page inspection
      functions take buffer locks while examining pages (Tom Lane)
     
Fix pgxs support for building loadable modules on AIX (Tom Lane)
Building modules outside the original source tree didn't work on AIX.
Update time zone data files to tzdata release 2012j for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, and portions of Brazil.