E.119. Release 8.4.1

[Note]

Release Date

2009-09-09

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

E.119.1. Migration to Version 8.4.1

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

E.119.2. Changes

  • Fix WAL page header initialization at the end of archive recovery (Heikki)

    This could lead to failure to process the WAL in a subsequent archive recovery.

  • Fix « cannot make new WAL entries during recovery » error (Tom)

  • Fix problem that could make expired rows visible after a crash (Tom)

    This bug involved a page status bit potentially not being set correctly after a server crash.

  • Disallow RESET ROLE and RESET SESSION AUTHORIZATION inside security-definer functions (Tom, Heikki)

    This covers a case that was missed in the previous patch that disallowed SET ROLE and SET SESSION AUTHORIZATION inside security-definer functions. (See CVE-2007-6600)

  • Make LOAD of an already-loaded loadable module into a no-op (Tom)

    Formerly, LOAD would attempt to unload and re-load the module, but this is unsafe and not all that useful.

  • Make window function PARTITION BY and ORDER BY items always be interpreted as simple expressions (Tom)

    In 8.4.0 these lists were parsed following the rules used for top-level GROUP BY and ORDER BY lists. But this was not correct per the SQL standard, and it led to possible circularity.

  • Fix several errors in planning of semi-joins (Tom)

    These led to wrong query results in some cases where IN or EXISTS was used together with another join.

  • Fix handling of whole-row references to subqueries that are within an outer join (Tom)

    An example is SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON .... Here, ss.* would be treated as 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.

  • Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)

    This bug led to the often-reported « could not reattach to shared memory » error message.

  • Fix locale handling with plperl (Heikki)

    This bug could cause the server's locale setting to change when a plperl function is called, leading to data corruption.

  • Fix handling of reloptions to ensure setting one option doesn't force default values for others (Itagaki Takahiro)

  • Ensure that a « fast shutdown » request will forcibly terminate open sessions, even if a « smart shutdown » was already in progress (Fujii Masao)

  • Avoid memory leak for array_agg() in GROUP BY queries (Tom)

  • Treat to_char(..., 'TH') as an uppercase ordinal suffix with 'HH'/'HH12' (Heikki)

    It was previously handled as 'th' (lowercase).

  • Include the fractional part in the result of EXTRACT(second) and EXTRACT(milliseconds) for time and time with time zone inputs (Tom)

    This has always worked for floating-point datetime configurations, but was broken in the integer datetime code.

  • Fix overflow for INTERVAL 'x ms' when x is more than 2 million and integer datetimes are in use (Alex Hunsaker)

  • Improve performance when processing toasted values in index scans (Tom)

    This is particularly useful for PostGIS.

  • Fix a typo that disabled commit_delay (Jeff Janes)

  • Output early-startup messages to postmaster.log if the server is started in silent mode (Tom)

    Previously such error messages were discarded, leading to difficulty in debugging.

  • Remove translated FAQs (Peter)

    They are now on the wiki. The main FAQ was moved to the wiki some time ago.

  • Fix pg_ctl to not go into an infinite loop if postgresql.conf is empty (Jeff Davis)

  • Fix several errors in pg_dump's --binary-upgrade mode (Bruce, Tom)

    pg_dump --binary-upgrade is used by pg_migrator.

  • Fix contrib/xml2's xslt_process() to properly handle the maximum number of parameters (twenty) (Tom)

  • Improve robustness of libpq's code to recover from errors during COPY FROM STDIN (Tom)

  • Avoid including conflicting readline and editline header files when both libraries are installed (Zdenek Kotala)

  • Work around gcc bug that causes « floating-point exception » instead of « division by zero » on some platforms (Tom)

  • Update time zone data files to tzdata release 2009l for DST law changes in Bangladesh, Egypt, Mauritius.