The PostgreSQL Global Development Group has released a critical update to all supported versions of the PostgreSQL database system, which includes minor versions 9.3.2, 9.2.6, 9.1.11, 9.0.15, and 8.4.19. This update fixes three serious data-loss bugs affecting replication and database maintenance. All users are urged to update their installations at the earliest opportunity.
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. More information about this issue is on its wiki page.
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.
Additional fixes included in this release, some of which only affect version 9.3, include:
- Prevent "lock already held" error.
- Resolve race conditions in timeout management, which could cause server lockup.
- Fix minor bugs with HOT updates and the Visibility Map.
- Prevent pg_multixact storage growth on standbys.
- Fix bug in GIN indexes which caused transient query failures.
- Remove issue which caused SP-GiST index creation to hang
- Fix assorted bugs in Materialized Views.
- Restore ability to use duplicate table aliases in complex queries.
- Fix two bugs in subquery optimization.
- Allow pg_receivexlog to resume streaming when more than 4GB of logs are generated.
- Prevent planner crash on whole-row references.
- Prevent premature deletion of temporary files.
- Patch multiple minor memory leaks.
- Suppress display of dropped columns for CHECK and NOT NULL constraint violations.
- Allow default and named arguments for window functions.
- Return a valid JSON value when converting an empty HStore string.
- Fix GMT timezone offset.
- Report out-of-disk-space error correctly during pg_upgrade.
- Time zone updates for several time zones.
Additional changes and details of some of the above issues can be found in the Release Notes.
As with other minor releases, users are not required to dump and reload their database or use pg_upgrade in order to apply this update release; you may simply shut down PostgreSQL and update its binaries. Users who have skipped multiple update releases may need to perform additional post-update steps; see the Release Notes for details.
* Release Notes
- Download PostgreSQL
- View Press Release
- Visit PostgreSQL