From 0563b4c0c3b7cc2323cfb63e11d723764e2d5f7d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 16 May 2015 18:09:39 -0400 Subject: [PATCH] First-draft release notes for 9.4.2 et al. As usual, the release notes for older branches will be made by cutting these down, but put them up for community review first. --- doc/src/sgml/release-9.4.sgml | 1199 +++++++++++++++++++++++++++++++++ 1 file changed, 1199 insertions(+) diff --git a/doc/src/sgml/release-9.4.sgml b/doc/src/sgml/release-9.4.sgml index 3e15bb6cad..c3d5ae7e87 100644 --- a/doc/src/sgml/release-9.4.sgml +++ b/doc/src/sgml/release-9.4.sgml @@ -1,6 +1,1205 @@ + + Release 9.4.2 + + + Release Date + 2015-05-21 + + + + This release contains a variety of fixes from 9.4.1. + For information about new features in the 9.4 major release, see + . + + + + Migration to Version 9.4.2 + + + A dump/restore is not required for those running 9.4.X. + + + + However, if you use contrib/citext's + regexp_matches() functions, see the changelog entry below + about that. + + + + Also, if you are upgrading from a version earlier than 9.4.1, + see . + + + + + Changes + + + + + + + + Protect against wraparound of multixact member IDs + (Álvaro Herrera, Robert Haas, Thomas Munro) + + + + Under certain usage patterns, the existing defenses against this might + be insufficient, allowing pg_multixact/members files to be + removed too early, resulting in data loss. + The fix for this includes modifying the server to fail transactions + that would result in overwriting old multixact member ID data, and + improving autovacuum to ensure it will act proactively to prevent + multixact member ID wraparound, as it does for transaction ID + wraparound. + + + + + + + + Fix incorrect declaration of contrib/citext's + regexp_matches() functions (Tom Lane) + + + + These functions should return setof text[], like the core + functions they are wrappers for; but they were incorrectly declared as + returning just text[]. This mistake had two results: first, + if there was no match you got a scalar null result, whereas what you + should get is an empty set (zero rows). Second, the g flag + was effectively ignored, since you would get only one result array even + if there were multiple matches. + + + + While the latter behavior is clearly a bug, there might be applications + depending on the former behavior; therefore the function declarations + will not be changed by default until PostgreSQL 9.5. + In pre-9.5 branches, the old behavior exists in version 1.0 of + the citext extension, while we have provided corrected + declarations in version 1.1 (which is not installed by + default). To adopt the fix in pre-9.5 branches, execute + ALTER EXTENSION citext UPDATE TO '1.1' in each database in + which citext is installed. (You can also update + back to 1.0 if you need to undo that.) Beware that either update + direction will require dropping and recreating any views or rules that + use citext's regexp_matches() functions. + + + + + + + + Render infinite dates and timestamps as infinity when + converting to json, rather than throwing an error + (Andrew Dunstan) + + + + + + + + Fix json/jsonb's populate_record() + and to_record() functions to handle empty input properly + (Andrew Dunstan) + + + + + + + + Fix incorrect checking of deferred exclusion constraints after a HOT + update (Tom Lane) + + + + If a new row that potentially violates a deferred exclusion constraint + is HOT-updated (that is, no indexed columns change and the row can be + stored back onto the same table page) later in the same transaction, + the exclusion constraint would be reported as violated when the check + finally occurred, even if the row(s) the new row originally conflicted + with had been deleted. + + + + + + + + Fix behavior when changing foreign key constraint deferrability status + with ALTER TABLE ... ALTER CONSTRAINT (Tom Lane) + + + + Operations later in the same session or concurrent sessions might not + honor the status change promptly. + + + + + + + + Fix planning of star-schema-style queries (Tom Lane) + + + + Sometimes, efficient scanning of a large table requires that index + parameters be provided from more than one other table (commonly, + dimension tables whose keys are needed to index a large fact table). + The planner should be able to find such plans, but an overly + restrictive search heuristic prevented it. + + + + + + + + Prevent improper reordering of antijoins (NOT EXISTS joins) versus + other outer joins (Tom Lane) + + + + This oversight in the planner has been observed to cause could + not find RelOptInfo for given relids errors, but it seems possible + that sometimes an incorrect query plan might get past that consistency + check and result in silently-wrong query output. + + + + + + + + Fix incorrect matching of subexpressions in outer-join plan nodes + (Tom Lane) + + + + Previously, if textually identical non-strict subexpressions were used + both above and below an outer join, the planner might try to re-use + the value computed below the join, which would be incorrect because the + executor would force the value to NULL in case of an unmatched outer row. + + + + + + + + Fix GEQO planner to cope with failure of its join order heuristic + (Tom Lane) + + + + This oversight has been seen to lead to failed to join all + relations together errors in queries involving LATERAL, + and that might happen in other cases as well. + + + + + + + + Ensure that row locking occurs properly when the target of + an UPDATE or DELETE is a security-barrier view + (Stephen Frost) + + + + + + + + Use a file opened for read/write when syncing replication slot data + during database startup (Andres Freund) + + + + On some platforms, the previous coding could result in errors like + could not fsync file "pg_replslot/...": Bad file descriptor. + + + + + + + + Fix possible deadlock at startup + when max_prepared_transactions is too small + (Heikki Linnakangas) + + + + + + + + Don't archive useless preallocated WAL files after a timeline switch + (Heikki Linnakangas) + + + + + + + + Recursively fsync() the data directory after a crash + (Abhijit Menon-Sen, Robert Haas) + + + + This ensures consistency if another crash occurs shortly later. (The + second crash would have to be a system-level crash, not just a database + crash, for there to be a problem.) + + + + + + + + Fix autovacuum launcher's possible failure to shut down, if an error + occurs after it receives SIGTERM (Álvaro Herrera) + + + + + + + + Fix failure to handle invalidation messages for system catalogs + early in session startup (Tom Lane) + + + + This oversight could result in failures in sessions that start + concurrently with a VACUUM FULL on a system catalog. + + + + + + + + Fix crash in BackendIdGetTransactionIds() when trying + to get status for a backend process that just exited (Tom Lane) + + + + + + + + Cope with unexpected signals in LockBufferForCleanup() + (Andres Freund) + + + + This oversight could result in spurious errors about multiple + backends attempting to wait for pincount 1. + + + + + + + + Fix crash when doing COPY IN to a table with check + constraints that contain whole-row references (Tom Lane) + + + + The known failure case only crashes in 9.4 and up, but there is very + similar code in 9.3 and 9.2, so back-patch those branches as well. + + + + + + + + Avoid waiting for WAL flush or synchronous replication during commit of + a transaction that was read-only so far as the user is concerned + (Andres Freund) + + + + Previously, a delay could occur at commit in transactions that had + written WAL due to HOT page pruning, leading to undesirable effects + such as sessions getting stuck at startup if all synchronous replicas + are down. Sessions have also been observed to get stuck in catchup + interrupt processing when using synchronous replication; this will fix + that problem as well. + + + + + + + + Avoid busy-waiting with short recovery_min_apply_delay + values (Andres Freund) + + + + + + + + Fix crash when manipulating hash indexes on temporary tables + (Heikki Linnakangas) + + + + This fault was introduced in the previous set of minor releases + as a byproduct of a race-condition fix. + + + + + + + + Fix possible failure during hash index bucket split, if other processes + are modifying the index concurrently (Tom Lane) + + + + + + + + Fix memory leaks in GIN index vacuum (Heikki Linnakangas) + + + + + + + + Check for interrupts while analyzing index expressions (Jeff Janes) + + + + ANALYZE executes index expressions many times; if there are + slow functions in such an expression, it's desirable to be able to + cancel the ANALYZE before that loop finishes. + + + + + + + + Ensure tableoid of a foreign table is reported + correctly when a READ COMMITTED recheck occurs after + locking rows in SELECT FOR UPDATE, UPDATE, + or DELETE (Etsuro Fujita) + + + + + + + + Improve object description strings for foreign-server user mappings + (Álvaro Herrera) + + + + Add the name of the target server, since otherwise it's ambiguous. + + + + + + + + Include the schema name in object identity strings for conversions + (Álvaro Herrera) + + + + + + + + Recommend setting include_realm to 1 when using + Kerberos/GSSAPI/SSPI authentication (Stephen Frost) + + + + Without this, identically-named users from different realms cannot be + distinguished. For the moment this is only a documentation change, but + it will become the default setting in PostgreSQL 9.5. + + + + + + + + Remove code for matching IPv4 pg_hba.conf entries to + IPv4-in-IPv6 addresses (Tom Lane) + + + + This hack was added in 2003 in response to a report that some Linux + kernels of the time would report IPv4 connections as having + IPv4-in-IPv6 addresses. However, the logic was accidentally broken in + 9.0. The lack of any field complaints since then shows that it's not + needed anymore. Now we have reports that the broken code causes + crashes on some systems, so let's just remove it rather than fix it. + (Had we chosen to fix it, that would make for a subtle and potentially + security-sensitive change in the effective meaning of + IPv4 pg_hba.conf entries, which does not seem like a good + thing to do in minor releases.) + + + + + + + + Fix status reporting for terminated background workers that were never + actually started (Robert Haas) + + + + + + + + After a database crash, don't restart background workers that are + marked BGW_NEVER_RESTART (Amit Khandekar) + + + + + + + + Report WAL flush, not insert, position in IDENTIFY_SYSTEM + replication command (Heikki Linnakangas) + + + + This avoids a possible startup failure + in pg_receivexlog. + + + + + + + + While shutting down service on Windows, periodically send status + updates to the Service Control Manager to prevent it from killing the + service too soon; and ensure that pg_ctl will wait for + shutdown (Krystian Bigaj) + + + + + + + + Guard against network deadlock when using libpq's + non-blocking mode (Heikki Linnakangas) + + + + When sending large volumes of data, it's important to drain the input + buffer every so often, in case the server has sent enough response data + to cause it to block on output. (A typical scenario is that the server + is sending a stream of NOTICE messages during COPY FROM + STDIN.) This worked properly in the normal blocking mode, but not + so much in non-blocking mode. We've modified libpq + to opportunistically drain input when it can, but a full defense + against this problem requires application cooperation: the application + should watch for socket read-ready as well as write-ready conditions, + and be sure to call PQconsumeInput() upon read-ready. + + + + + + + + In libpq, fix misparsing of empty values in URI + connection strings (Thomas Fanghaenel) + + + + + + + + Fix array handling in ecpg (Michael Meskes) + + + + + + + + Fix psql to sanely handle URIs and conninfo strings as + the first parameter to \connect + (David Fetter, Andrew Dunstan, Álvaro Herrera) + + + + This syntax has been accepted (but undocumented) for a long time, but + previously some parameters might be taken from the old connection + instead of the given string, which was agreed to be undesirable. + + + + + + + + Suppress incorrect complaints from psql on some + platforms that it failed to write ~/.psql_history at exit + (Tom Lane) + + + + This misbehavior was caused by a workaround for a bug in very old + (pre-2006) versions of libedit. We fixed it by + removing the workaround, which will cause a similar failure to appear + for anyone still using such versions of libedit. + Recommendation: upgrade that library, or use libreadline. + + + + + + + + Fix pg_dump's rule for deciding which casts are + system-provided casts that should not be dumped (Tom Lane) + + + + + + + + In pg_dump, fix failure to honor -Z + compression level option together with -Fd + (Michael Paquier) + + + + + + + + Make pg_dump consider foreign key relationships + between extension configuration tables while choosing dump order + (Gilles Darold, Michael Paquier, Stephen Frost) + + + + This oversight could result in producing dumps that fail to reload + because foreign key constraints are transiently violated. + + + + + + + + Avoid possible pg_dump failure when concurrent sessions + are creating and dropping temporary functions (Tom Lane) + + + + + + + + Fix dumping of views that are just VALUES(...) but have + column aliases (Tom Lane) + + + + + + + + Ensure that a view's replication identity is correctly set + to nothing during dump/restore (Marko Tiikkaja) + + + + Previously, if the view was involved in a circular dependency, + it might wind up with an incorrect replication identity property. + + + + + + + + In pg_upgrade, force timeline 1 in the new cluster + (Bruce Momjian) + + + + This avoids a scenario in which a server previously promoted from + standby status couldn't be upgraded because of a missing WAL history + file. + + + + + + + + In pg_upgrade, check for improperly non-connectable + databases before proceeding + (Bruce Momjian) + + + + + + + + In pg_upgrade, quote directory paths + properly in the generated delete_old_cluster script + (Bruce Momjian) + + + + + + + + In pg_upgrade, preserve database-level freezing info + properly + (Bruce Momjian) + + + + This oversight could cause missing-clog-file errors for tables within + the postgres and template1 databases. + + + + + + + + Run pg_upgrade and pg_resetxlog with + restricted privileges on Windows, so that they don't fail when run by + an administrator (Muhammad Asif Naeem) + + + + + + + + Improve handling of readdir() failures when scanning + directories in initdb and pg_basebackup + (Marco Nenciarini) + + + + + + + + Fix failure in pg_receivexlog (Andres Freund) + + + + A patch merge mistake in 9.2.10 led to could not create archive + status file errors. + + + + + + + + Fix slow sorting algorithm in contrib/intarray (Tom Lane) + + + + + + + + Fix compile failure on Sparc V8 machines (Rob Rowan) + + + + + + + + Silence some build warnings on OS X (Tom Lane) + + + + + + + + Update time zone data files to tzdata release 2015d + for DST law changes in Egypt, Mongolia, and Palestine, plus historical + changes in Canada and Chile. Also adopt revised zone abbreviations for + the America/Adak zone (HST/HDT not HAST/HADT). + + + + + + + + Release 9.4.1