E.112. Release 8.4.8

[Note]

Release Date

2011-04-18

This release contains a variety of fixes from 8.4.7. For information about new features in the 8.4 major release, see Section E.120, « Release 8.4 ».

E.112.1. Migration to Version 8.4.8

A dump/restore is not required for those running 8.4.X.

However, if your installation was upgraded from a previous major release by running pg_upgrade, you should take action to prevent possible data loss due to a now-fixed bug in pg_upgrade. The recommended solution is to run VACUUM FREEZE on all TOAST tables. More information is available at http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix.

Also, if you are upgrading from a version earlier than 8.4.2, see Section E.118, « Release 8.4.2 ».

E.112.2. Changes

  • Fix pg_upgrade's handling of TOAST tables (Bruce Momjian)

    The pg_class.relfrozenxid value for TOAST tables was not correctly copied into the new installation during pg_upgrade. This could later result in pg_clog files being discarded while they were still needed to validate tuples in the TOAST tables, leading to « could not access status of transaction » failures.

    This error poses a significant risk of data loss for installations that have been upgraded with pg_upgrade. This patch corrects the problem for future uses of pg_upgrade, but does not in itself cure the issue in installations that have been processed with a buggy version of pg_upgrade.

  • Suppress incorrect « PD_ALL_VISIBLE flag was incorrectly set » warning (Heikki Linnakangas)

    VACUUM would sometimes issue this warning in cases that are actually valid.

  • Disallow including a composite type in itself (Tom Lane)

    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.

  • Avoid potential deadlock during catalog cache initialization (Nikhil Sontakke)

    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.

  • Fix dangling-pointer problem in BEFORE ROW UPDATE trigger handling when there was a concurrent update to the target tuple (Tom Lane)

    This bug has been observed to result in intermittent « cannot extract system attribute from virtual tuple » failures while trying to do UPDATE RETURNING ctid. There is a very small probability of more serious errors, such as generating incorrect index entries for the updated tuple.

  • Disallow DROP TABLE when there are pending deferred trigger events for the table (Tom Lane)

    Formerly the DROP would go through, leading to « could not open relation with OID nnn » errors when the triggers were eventually fired.

  • Prevent crash triggered by constant-false WHERE conditions during GEQO optimization (Tom Lane)

  • Improve planner's handling of semi-join and anti-join cases (Tom Lane)

  • Fix selectivity estimation for text search to account for NULLs (Jesper Krogh)

  • Improve PL/pgSQL's ability to handle row types with dropped columns (Pavel Stehule)

    This is a back-patch of fixes previously made in 9.0.

  • Fix PL/Python memory leak involving array slices (Daniel Popowich)

  • Fix pg_restore to cope with long lines (over 1KB) in TOC files (Tom Lane)

  • Put in more safeguards against crashing due to division-by-zero with overly enthusiastic compiler optimization (Aurelien Jarno)

  • Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)

    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.

  • Fix compilation failures on HP-UX (Heikki Linnakangas)

  • Fix version-incompatibility problem with libintl on Windows (Hiroshi Inoue)

  • Fix usage of xcopy in Windows build scripts to work correctly under Windows 7 (Andrew Dunstan)

    This affects the build scripts only, not installation or usage.

  • Fix path separator used by pg_regress on Cygwin (Andrew Dunstan)

  • Update time zone data files to 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.