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.179.
A dump/restore is not required for those running 8.4.X.
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.
RESET ROLE and
RESET SESSION AUTHORIZATION inside
security-definer functions (Tom, Heikki)
This covers a case that was missed in the previous patch that
SET ROLE and
SET SESSION AUTHORIZATION inside security-definer
functions. (See CVE-2007-6600)
LOAD of an already-loaded
loadable module into a no-op (Tom)
LOAD would attempt to
unload and re-load the module, but this is unsafe and not all that
Make window function
ORDER BY items always be
interpreted as simple expressions (Tom)
In 8.4.0 these lists were parsed following the rules used for
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
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
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
GROUP BY queries (Tom)
to_char(..., 'TH') as an
uppercase ordinal suffix with
It was previously handled as
Include the fractional part in the result of
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 ' 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
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
empty (Jeff Davis)
Fix several errors in pg_dump's
--binary-upgrade mode (Bruce, Tom)
pg_dump --binary-upgrade is used by
xslt_process() to properly handle the maximum
number of parameters (twenty) (Tom)
Improve robustness of libpq's
code to recover from errors during
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.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.