This release primarily fixes issues not successfully fixed in prior releases. It should be applied as soon as possible all users of major versions 9.3 and 9.4. Other users should apply at the next available downtime.
Crash Recovery Fixes:
Earlier update releases attempted to fix an issue in PostgreSQL 9.3 and 9.4 with "multixact wraparound", but failed to account for issues doing multixact cleanup during crash recovery. This could cause servers to be unable to restart after a crash. As such, all users of 9.3 and 9.4 should apply this update as soon as possible.
* File Permissions Fix
* Have pg_get_functiondef() show the LEAKPROOF property
* Make pushJsonbValue() function push jbvBinary type
* Allow building with threaded Python on OpenBSD
Security Fixes
* CVE-2015-0241 Buffer overruns in "to_char" functions.
* CVE-2015-0242 Buffer overrun in replacement printf family of functions.
* CVE-2015-0243 Memory errors in functions in the pgcrypto extension.
* CVE-2015-0244 An error in extended protocol message reading.
* CVE-2014-8161 Constraint violation errors can cause display of values in columns which the user would not normally have rights to see.
JSON and JSONB Unicode Escapes
Other Fixes and Improvements
* Cope with the non-ASCII Norwegian Windows locale name.
* Avoid data corruption when databases are moved to new tablespaces and back again.
* Ensure that UNLOGGED tables are correctly copied during ALTER DATABASE operations.
* Avoid deadlocks when locking recently modified rows.
* Fix two SELECT FOR UPDATE query issues.
* Prevent false negative for shortest-first regular expression matches.
* Fix false positives and negatives in tsquery contains operator.
* Fix namespace handling in xpath().
* Prevent row-producing functions from creating empty column names.
* Make autovacuum use per-table cost_limit and cost_delay settings.
* When autovacuum=off, limit autovacuum work to wraparound prevention only.
* Multiple fixes for logical decoding in 9.4.
* Fix transient errors on hot standby queries due to page replacement.
* Prevent duplicate WAL file archiving at end of recovery or standby promotion.
* Prevent deadlock in parallel restore of schema-only dump.
The data corruption issue in PostgreSQL 9.3 affects binary replication standbys, servers being recovered from point-in-time-recovery backup, and standalone servers which recover from a system crash. The bug causes unrecoverable index corruption during recovery due to incorrect replay of row locking operations. This can then cause query results to be inconsistent depending on whether or not an index is used, and eventually lead to primary key violations and similar issues. For this reason, users are encouraged to replace each of their standby databases with a new base backup after applying the update.
Other PostgreSQL 9.3-only fixes in this update include:
Make sure that statistics files for dropped databases get deleted
Allow materialized views to be referenced in UPDATE and DELETE queries
Add read-only data_checksum parameter
Prevent erroneous operator push-down in postgres_fdw
This release resolves some other issues in all versions of PostgreSQL, including:
Fix timing consistency issue with NOTIFY
Allow regular expression execution to be cancelled
Improve performance of index checks for newly added rows
Prevent premature walsender disconnection
Prevent memory errors on newer Windows versions
Update timezone files
This update fixes CVE-2014-0060, in which PostgreSQL did not properly enforce the WITH ADMIN OPTION permission for ROLE management.
This update also fixes some issues which affect binary replication and row locking, and can cause recoverable data corruption in some cases.
In addition to the above, the following issues are fixed in this release:
Fix WAL logging of visibility map change
Make sure that GIN indexes log all insertions
Get pause_at_recovery_target to pause at correct time
Ensure walreceiver sends hot-standby feedback messages on time
Prevent timeout interrupts from taking control away from mainline code
Eliminate several race conditions
Fix some broken HINTs in error messages
Prevent server lockup on SSL connection loss
Fix two Unicode handling issues
Prevent crash on certain subselect syntax
Prevent crash on select from zero column table
Fix two bugs with LATERAL
Fix issue with UNION ALL, partitioning, and updates
Ensure that ANALYZE understands domains over ranges
Eliminate permissions check when using default tablespace
Fix memory leakage in JSON functions
Allow extensions with event triggers
Distinguish numbers correctly in JSON output
Fix permissions for pg_start_backup() and pg_stop_backup()
Accept SHIFT_JIS as locale name
Fix .* expansion for SQL function variables
Prevent infinite loop on some COPY connection failures
Several fixes for client issues on Windows
Enable building PostgreSQL with Visual Studio 2013
Update time zone files for recent changes
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.
Guarantee transmission of all WAL files before replica failover
Prevent downcasing of non-ASCII identifiers
Fix several minor memory leaks
Correct overcommit behavior when using more than 24GB of work memory
Improve planner cost estimates for choosing generic plans
Fix estimates of NULL rows in boolean columns
Make UNION ALL and inheritance query plans recheck parameterized paths
Correct pg_dump bugs for foreign tables, views, and extensions
Prevent a parallel pg_restore failure on certain indexes
Make REINDEX revalidate constraints
Prevent two deadlock issues in SP-GIST and REINDEX CONCURRENTLY
Prevent GiST index lookup crash
Fix several regular expression failures
Allow ALTER DEFAULT PRIVILEGES to work on all schemas
Loosen restrictions on keywords
Allow various spellings of infinity
Expand ability to compare rows to records and arrays
Prevent psql client crash on bad PSQLRC file
Add spinlock support for ARM64
A major security issue fixed in this release, CVE-2013-1899, makes it possible for a connection request containing a database name that begins with "-" to be crafted that can damage or destroy files within a server's data directory. Anyone with access to the port the PostgreSQL server listens on can initiate this request.
Two lesser security fixes are also included in this release: CVE-2013-1900, wherein random numbers generated by contrib/pgcrypto functions may be easy for another database user to guess, and CVE-2013-1901, which mistakenly allows an unprivileged user to run commands that could interfere with in-progress backups. Finally, this release fixes two security issues with the graphical installers for Linux and Mac OS X: insecure passing of superuser passwords to a script, CVE-2013-1903 and the use of predictable filenames in /tmp CVE-2013-1902.
The security issue fixed in this release, CVE-2013-0255, allows a previously authenticated user to crash the server by calling an internal function with invalid arguments. This issue was discovered by independent security researcher Sumit Soni this week and reported via Secunia SVCRP, and we are grateful for their efforts in making PostgreSQL more secure.
Today's update also fixes a performance regression which caused a decrease in throughput when using dynamic queries in stored procedures in version 9.2. Applications which use PL/pgSQL's EXECUTE are strongly affected by this regression and should be updated. Additionally, we have fixed intermittent crashes caused by CREATE/DROP INDEX CONCURRENTLY, and multiple minor issues with replication.
This release is expected to be the final update for version 8.3, which is now End-of-Life (EOL). Users of version 8.3 should plan to upgrade to a later version of PostgreSQL immediately. For more information, see our Versioning Policy.
This update release also contains fixes for many minor issues discovered and patched by the PostgreSQL community in the last two months, including:
* Prevent unnecessary table scans during vacuuming
* Prevent spurious cached plan error in PL/pgSQL
* Allow sub-SELECTs to be subscripted
* Prevent DROP OWNED from dropping databases or tablespaces
* Make ECPG use translated messages
* Allow PL/Python to use multi-table trigger functions (again) in 9.1 and 9.2
* Fix several activity log management issues on Windows
* Prevent autovacuum file truncation from being cancelled by deadlock_timeout
* Make extensions build with the .exe suffix automatically on Windows
* Fix concurrency issues with CREATE/DROP DATABASE
* Reject out-of-range values in to_date() conversion function
* Revert cost estimation for large indexes back to pre-9.2 behavior
* Make pg_basebackup tolerate timeline switches
* Cleanup leftover temp table entries during crash recovery
* Prevent infinite loop when COPY inserts a large tuple into a table with a large fillfactor
* Prevent integer overflow in dynahash creation
* Make pg_upgrade work with INVALID indexes
* Fix bugs in TYPE privileges
* Allow Contrib installchecks to run in their own databases
* Many documentation updates
* Add new timezone "FET".
This update release also contains fixes for many minor issues discovered and patched by the PostgreSQL community in the last month, including several fixes which are specific to version 9.2. These include:
* Prevent psql crash due to incorrectly encoded input data
* Fix pg_regress gmake build issues
* Make sure correct directory is created for extensions
* Fix some issues with buffer locks and VACUUM
* Multiple fixes and improvements for pg_upgrade
* Fix bugs with end-of-recovery when failing over to a standby
* Avoid bogus "out-of-sequence timeline ID" errors in standby-mode
* Don't launch new child processes during shutdown
* Improve the ability of JOINs to use partial indexes
* Fix assorted integer overflow errors
* Eliminate memory leaks in record_out() and record_send()
* Skip searching for subtransaction logs at COMMIT
* Fix WaitLatch() timing issues
* Fix handling of inherited check constraints in ALTER COLUMN TYPE
* Make ALTER EXTENSION SET SCHEMA behave as documented
* Have SEQUENCE SET statements in the "data" section of sectional dumps
* Prevent parser from believing that VIEWs have system columns
* Fix --clean mode for pg_dump
* Prevent hash table corruption on out-of-memory
* Various query planner and executor fixes and improvements
* Multiple documentation updates
* DST updates for seven timezones
PostgreSQL 9.2 will ship with native JSON support, covering indexes, replication and performance improvements, and many more features. We are eagerly awaiting this release and will make it available in Early Access as soon as it’s released by the PostgreSQL community," said Ines Sombra, Lead Data Engineer, Engine Yard.