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.154.
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.
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 '
when x
ms'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.