Security Issues
---------------
Two security holes have been closed by this release:
CVE-2016-5423: certain nested CASE expressions can cause the server to crash.
CVE-2016-5424: database and role names with embedded special characters can allow code injection during administrative operations like pg_dumpall.
The fix for the second issue also adds an option, -reuse-previous, to psql's \connect command. pg_dumpall will also refuse to handle database and role names containing line breaks after the update. For more information on these issues and how they affect backwards-compatibility, see the Release Notes.
Bug Fixes and Improvements
--------------------------
This update also fixes a number of bugs reported in the last few months. Some of these issues affect only version 9.5, but many affect all supported versions:
Fix misbehaviors of IS NULL/IS NOT NULL with composite values
Fix three areas where INSERT ... ON CONFLICT failed to work properly with other SQL features.
Make INET and CIDR data types properly reject bad IPv6 values
Prevent crash in "point ## lseg" operator for NaN input
Avoid possible crash in pg_get_expr()
Fix several one-byte buffer over-reads in to_number()
Don't needlessly plan query if WITH NO DATA is specified
Avoid crash-unsafe state in expensive heap_update() paths
Fix hint bit update during WAL replay of row locking operations
Avoid unnecessary "could not serialize access" with FOR KEY SHARE
Avoid crash in postgres -C when the specified variable is a null string
Fix two issues with logical decoding and subtransactions
Ensure that backends see up-to-date statistics for shared catalogs
Prevent possible failure when vacuuming multixact IDs in an upgraded database
When a manual ANALYZE specifies columns, don't reset changes_since_analyze
Fix ANALYZE's overestimation of n_distinct for columns with nulls
Fix bug in b-tree mark/restore processing
Fix building of large (bigger than shared_buffers) hash indexes
Prevent infinite loop in GiST index build with NaN values
Fix possible crash during a nearest-neighbor indexscan
Fix "PANIC: failed to add BRIN tuple" error
Prevent possible crash during background worker shutdown
Many fixes for issues in parallel pg_dump and pg_restore
Make pg_basebackup accept -Z 0 as no compression
Make regression tests safe for Danish and Welsh locales
into the binary packages. Fixes problems with building software
manually against binary postgresql*-client packages built under an
unprivileged setup. Bump respective PKGREVISION.
See https://github.com/joyent/pkgsrc/issues/377
This release closes security hole CVE-2016-2193, where a query plan might get reused for more than one ROLE in the same session. This could cause the wrong set of Row Level Security (RLS) policies to be used for the query.
The update also fixes CVE-2016-3065, a server crash bug triggered by using pageinspect with BRIN index pages. Since an attacker might be able to expose a few bytes of server memory, this crash is being treated as a security issue.
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.
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
* Add materialized views
* Make simple views auto-updatable
* Add many features for the JSON data type, including operators and functions to extract elements from JSON values
* Implement SQL-standard LATERAL option for FROM-clause subqueries and function calls
* Allow foreign data wrappers to support writes (inserts/updates/deletes) on foreign tables
* Add a Postgres foreign data wrapper to allow access to other Postgres servers
* Add support for event triggers
* Add optional ability to checksum data pages and report corruption
* Prevent non-key-field row updates from blocking foreign key checks
* Greatly reduce System V shared memory requirements