Release date: 2008-09-22
This release contains a variety of fixes from 8.3.3. For information about new features in the 8.3 major release, see Section E.203.
A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, see Section E.202.
Fix bug in btree WAL recovery code (Heikki)
Recovery failed if the WAL ended partway through a page split operation.
Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
This error created a risk of corruption in system catalogs that
are consulted by
VACUUM: dead tuple
versions might be removed too soon. The impact of this on actual
database operations would be minimal, since the system doesn't
follow MVCC rules while examining catalogs, but it might result in
transiently wrong output from pg_dump or other client programs.
Fix potential miscalculation of
This error may explain some recent reports of failure to remove
Fix incorrect HOT updates after
pg_class is reindexed (Tom)
REINDEX TABLE pg_class was
followed in the same session by an
TABLE RENAME or
ALTER TABLE SET
Fix missed “combo cid” case (Karl Schnaitter)
This error made rows incorrectly invisible to a transaction in which they had been deleted by multiple subtransactions that all aborted.
Prevent autovacuum from crashing if the table it's currently checking is deleted at just the wrong time (Alvaro)
Widen local lock counters from 32 to 64 bits (Tom)
This responds to reports that the counters could overflow in sufficiently long transactions, leading to unexpected “lock is already held” errors.
Fix possible duplicate output of tuples during a GiST index scan (Teodor)
Regenerate foreign key checking queries from scratch when either table is modified (Tom)
Previously, 8.3 would attempt to replan the query, but would work from previously generated query text. This led to failures if a table or column was renamed.
Fix missed permissions checks when a view contains a simple
UNION ALL construct (Heikki)
Permissions for the referenced tables were checked properly, but not permissions for the view itself.
Add checks in executor startup to ensure that the tuples
produced by an
UPDATE will match the target table's current
This situation is believed to be impossible in 8.3, but it can happen in prior releases, so a check seems prudent.
Fix possible repeated drops during
This would typically result in strange errors such as “cache lookup failed for relation NNN”.
Fix several memory leaks in XML operations (Kris Jurka, Tom)
xmlserialize() to raise error
properly for unacceptable target data type (Tom)
Fix a couple of places that mis-handled multibyte characters in text search configuration file parsing (Tom)
Certain characters occurring in configuration files would always cause “invalid byte sequence for encoding” failures.
Provide file name and line number location for all errors reported in text search configuration files (Tom)
AT TIME ZONE to first try to
interpret its timezone argument as a timezone abbreviation, and
only try it as a full timezone name if that fails, rather than the
other way around as formerly (Tom)
The timestamp input functions have always resolved ambiguous
zone names in this order. Making
ZONE do so as well improves consistency, and fixes a
compatibility bug introduced in 8.1: in ambiguous cases we now
behave the same as 8.0 and before did, since in the older versions
AT TIME ZONE accepted only abbreviations.
Fix datetime input functions to correctly detect integer overflow when running on a 64-bit platform (Tom)
Prevent integer overflows during units conversion when displaying a configuration parameter that has units (Tom)
Improve performance of writing very long log messages to syslog (Tom)
Allow spaces in the suffix part of an LDAP URL in
Fix bug in backwards scanning of a cursor on a
SELECT DISTINCT ON query (Tom)
Fix planner bug that could improperly push down
IS NULL tests below an outer join (Tom)
This was triggered by occurrence of
NULL tests for the same relation in all arms of an upper
Fix planner bug with nested sub-select expressions (Tom)
If the outer sub-select has no direct dependency on the parent query, but the inner one does, the outer value might not get recalculated for new parent query rows.
Fix planner to estimate that
BY expressions yielding boolean results always result in two
groups, regardless of the expressions' contents (Tom)
This is very substantially more accurate than the regular
GROUP BY estimate for certain boolean
Fix PL/pgSQL to not fail when a
loop's target variable is a record containing composite-type fields
Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful about the encoding of data sent to or from Tcl (Tom)
Improve performance of
PQescapeBytea() (Rudolf Leitgeb)
On Windows, work around a Microsoft bug by preventing libpq from trying to send more than 64kB per system call (Magnus)
Fix ecpg to handle variables
SET commands (Michael)
Improve pg_dump and pg_restore's error reporting after failure to send a SQL command (Tom)
Fix pg_ctl to properly preserve
postmaster command-line arguments across a
Fix erroneous WAL file cutoff point calculation in pg_standby (Simon)
Update time zone data files to tzdata release 2008f (for DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco, Pakistan, Palestine, and Paraguay)
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.