The replication issue affects some users of PostgreSQL binary replication, and can cause minor data loss between the master and the standby. While not all users are affected, it is difficult to predict when the bug will occur, so we urge all users of replication and continuous backup (PITR) to update immediately. Additionally, users who had replication running under PostgreSQL minor versions 9.3.0, 9.3.1, 9.2.5, 9.1.10, or 9.0.14 should plan to take a fresh base backup of each standby after update, in order to ensure no prior data corruption already exists.
This release also fixes two timing issues with VACUUM, which can cause old, overwritten or deleted rows to re-appear at a later date under some circumstances. Users with very high transaction rates, particularly those who experience "transaction ID wraparound" every few weeks or less, are the most at risk for this issue. Those users should set vacuum_freeze_table_age to 0, and run a database-wide VACUUM after the update. The second of the two VACUUM issues affects only 9.3, making it expecially important for 9.3 users to update.
* Fix catalog cache invalidation after a "VACUUM FULL" or "CLUSTER"
on a system catalog
* Fix incorrect order of operations during sinval reset processing,
and ensure that TOAST OIDs are preserved in system catalogs
* Fix bugs in indexing of in-doubt HOT-updated tuples
* Fix multiple bugs in GiST index page split processing
* Fix possible buffer overrun in tsvector_concat()
* Fix crash in xml_recv when processing a "standalone" parameter
* Make pg_options_to_table return NULL for an option with no value
* Avoid possibly accessing off the end of memory in "ANALYZE" and in
SJIS-2004 encoding conversion
* Protect pg_stat_reset_shared() against NULL input
* Fix possible failure when a recovery conflict deadlock is detected
within a sub-transaction
* Avoid spurious conflicts while recycling btree index pages during
hot standby
* Shut down WAL receiver if it's still running at end of recovery
* Fix race condition in relcache init file invalidation
* Fix memory leak at end of a GiST index scan
* Fix memory leak when encoding conversion has to be done on incoming
command strings and "LISTEN" is active
* Fix incorrect memory accounting (leading to possible memory bloat)
in tuplestores supporting holdable cursors and plpgsql's RETURN
NEXT command
* Fix trigger WHEN conditions when both BEFORE and AFTER triggers exist
* more...
* Before exiting walreceiver, ensure all the received WAL is fsync'd to disk
* Avoid excess fsync activity in walreceiver
* Make "ALTER TABLE" revalidate uniqueness and exclusion constraints when needed
* Fix EvalPlanQual for "UPDATE" of an inheritance tree in which the tables are
not all alike
* Avoid failures when "EXPLAIN" tries to display a simple-form CASE expression
* Fix assignment to an array slice that is before the existing range of
subscripts
* Avoid unexpected conversion overflow in planner for very distant date values
* Fix PL/Python crash when an array contains null entries
* Remove ecpg's fixed length limit for constants defining an array dimension
* Fix erroneous parsing of tsquery values containing ... &
!(subexpression) | ...
* Fix buffer overrun in "contrib/intarray"'s input function for the query_int
type
* Fix bug in "contrib/seg"'s GiST picksplit algorithm
* Force the default wal_sync_method to be fdatasync on Linux
* Fix "too many KnownAssignedXids" error during Hot Standby replay
* Fix race condition in lock acquisition during Hot Standby
* Avoid unnecessary conflicts during Hot Standby
* Fix assorted bugs in WAL replay logic for GIN indexes
* Fix recovery from base backup when the starting checkpoint WAL
record is not in the same WAL segment as its redo point
* Fix corner-case bug when streaming replication is enabled
immediately after creating the master database cluster
* Fix persistent slowdown of autovacuum workers when multiple workers
remain active for a long time
* Fix long-term memory leak in autovacuum launcher
* Avoid failure when trying to report an impending transaction
wraparound condition from outside a transaction
* Add support for detecting register-stack overrun on IA64
* Add a check for stack overflow in copyObject()
* Fix detection of page splits in temporary GiST indexes
* Fix error checking during early connection processing
* Improve efficiency of window functions
* Avoid memory leakage while "ANALYZE"'ing complex index expressions
* Ensure an index that uses a whole-row Var still depends on its table
* Add missing support in "DROP OWNED BY" for removing foreign data
wrapper/server privileges belonging to a user
* Do not "inline" a SQL function with multiple OUT parameters
* Fix crash when inline-ing a set-returning function whose argument
list contains a reference to an inline-able user function
* Behave correctly if ORDER BY, LIMIT, FOR UPDATE, or WITH is
attached to the VALUES part of INSERT ... VALUES
* Make the OFF keyword unreserved
This prevents problems with using off as a variable name in
PL/pgSQL. That worked before 9.0, but was now broken because
PL/pgSQL now treats all core reserved words as reserved.
* Fix constant-folding of COALESCE() expressions
9.0 includes more major features than any release before it, including:
* Hot standby
* Streaming replication
* In-place upgrades
* 64-bit Windows builds
* Easy mass permissions management
* Anonymous blocks and named parameter calls for stored procedures
* New windowing functions and ordered aggregates
... and many more. For details on the over 200 additions and improvements in
this version, developed by over a hundred contributors, please see the release
notes.