From bb003edbb7b1e8fb2ce488e2f047e5e1982b95fd Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 7 Nov 2021 14:21:50 -0500 Subject: [PATCH] Release notes for 14.1, 13.5, 12.9, 11.14, 10.19, 9.6.24. --- doc/src/sgml/release-14.sgml | 1012 +--------------------------------- 1 file changed, 22 insertions(+), 990 deletions(-) diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index 0b5ed12817..e2a70b5f83 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -177,48 +177,6 @@ Branch: REL9_6_STABLE [e428699cb] 2021-10-23 18:36:43 -0700 - - Fix float4 and float8 hash functions to - produce uniform results for NaNs (Tom Lane) - - - - Since PostgreSQL's floating-point types - deem all NaNs to be equal, it's important for the hash functions to - produce the same hash code for all bit-patterns that are NaNs - according to the IEEE 754 standard. This failed to happen before, - meaning that hash indexes and hash-based query plans might produce - incorrect results for non-canonical NaN values. - ('-NaN'::float8 is one way to produce such a - value on most machines.) It is advisable to reindex hash indexes - on floating-point columns, if there is any possibility that they - might contain such values. - - - - - - - Prevent data loss during crash recovery of CREATE - TABLESPACE, when wal_level - = minimal (Noah Misch) - - - - If the server crashed between CREATE TABLESPACE - and the next checkpoint, replay would fully remove the contents of - the new tablespace's directory, relying on subsequent WAL replay - to restore everything within that directory. This interacts badly - with optimizations that skip writing WAL (one example - is COPY into a just-created table). Such - optimizations are applied only when wal_level - is minimal, which is not the default in v10 and - later. - - - - - - - Ensure that the relation cache is invalidated for all partitions - of a partitioned table that is being added to or removed from a - publication (Hou Zhijie, Vignesh C) - - - - This oversight could lead to improper replication behavior until all - currently-existing sessions have exited. - - - - - - - Ensure that the relation cache is invalidated when creating or - dropping a FOR ALL TABLES publication - (Hou Zhijie, Vignesh C) - - - - This oversight could lead to improper replication behavior until all - currently-existing sessions have exited. - - - - - - - Don't discard a cast to the same type with unspecified type modifier - (Tom Lane) - - - - For example, if column f1 is of - type numeric(18,3), the parser used to simply - discard a cast like f1::numeric, on the grounds - that it would have no run-time effect. That's true, but the exposed - type of the expression should still be considered to be - plain numeric, - not numeric(18,3). This is important for - correctly resolving the type of larger constructs, such - as recursive UNIONs. - - - - - - - Disallow creating an ICU collation if the current database's - encoding won't support it (Tom Lane) - - - - Previously this was allowed, but then the collation could not be - referenced because of the way collation lookup works; you could not - use the collation, nor even drop it. - - - - - - - Avoid regular expression errors with capturing parentheses - inside {0} (Tom Lane) - - - - Regular expressions like (.){0}...\1 drew - invalid backreference number. Other regexp engines - such as Perl don't complain, though, and for that matter ours - doesn't either in some closely related cases. Worse, it could throw - an assertion failure instead. Fix it so that no error is thrown and - instead the back-reference is silently deemed to never match. - - - - - - - Prevent regular expression back-references from sometimes matching - when they shouldn't (Tom Lane) - - - - The regexp engine was careless about clearing match data - for capturing parentheses after rejecting a partial match. This - could allow a later back-reference to match in places where it - should fail for lack of a defined referent. - - - - - - - Fix regular expression performance bug with back-references inside - iteration nodes (Tom Lane) - - - - Incorrect back-tracking logic could result in exponential time spent - looking for a match. Fortunately the problem is masked in most - cases by other optimizations. - - - - - - - Fix incorrect results from AT TIME ZONE applied - to a time with time zone value (Tom Lane) - - - - The results were incorrect if the target time zone was specified by - a dynamic timezone abbreviation (that is, one that is defined as - equivalent to a full time zone name, rather than a fixed UTC offset). - - - - - - - Fix mistranslation of PlaceHolderVars to inheritance child relations - (Tom Lane) - - - - This error could result in assertion failures, or in mis-planning of - queries having partitioned or inherited tables on the nullable side - of an outer join. - - - - - + + Prevent wraparound of overflowed-subtransaction tracking on standby + servers (Kyotaro Horiguchi, Alexander Korotkov) + + + + This oversight could cause significant performance degradation + (manifesting as excessive SubtransSLRU traffic) on standby servers. + + + + + - - Disallow LISTEN in background workers (Tom Lane) - - - - There's no infrastructure to support this, so if someone did - it, it would only result in preventing cleanup of - the NOTIFY queue. - - - - - - - Send NOTIFY signals to other backends during - transaction commit, not in the server's idle loop (Artur Zakirov, - Tom Lane) - - - - This change allows notifications to be delivered immediately after - an intra-procedure COMMIT. It also allows - logical replication workers to send notifications. - - - - - @@ -786,261 +491,6 @@ Branch: REL_14_STABLE [2c25db32e] 2021-10-11 11:56:52 -0400 - - Refuse to rewind a cursor marked NO SCROLL - if it has been held over from a previous transaction due - to the WITH HOLD option (Tom Lane) - - - - We have long forbidden fetching backwards from a NO - SCROLL cursor, but for historical reasons the prohibition - didn't extend to cases in which we rewind the query altogether and - then re-fetch forwards. That exception leads to inconsistencies, - particularly for held-over cursors which may not have stored all the - data necessary to rewind. Disallow rewinding for non-scrollable - held-over cursors to block the worst inconsistencies. (v15 will - remove the exception altogether.) - - - - - - - Fix possible failure while saving a WITH HOLD - cursor at transaction end, if it had already been read to completion - (Tom Lane) - - - - - - - Fix detection of a relation that has grown to the maximum allowed - length (Tom Lane) - - - - An attempt to extend a table or index past the limit of 2^32-1 - blocks was rejected, but not soon enough to prevent inconsistent - internal state from being created. - - - - - - - Correctly track the presence of data-modifying CTEs when expanding - a DO INSTEAD rule (Greg Nancarrow, Tom Lane) - - - - The previous failure to do this could lead to problems such as - unsafely choosing a parallel plan. - - - - - - - Fix incorrect reporting of permissions failures on extended - statistics objects (Tomas Vondra) - - - - The code typically produced cache lookup error rather - than the intended message. - - - - - - - Fix incorrect snapshot handling in parallel workers (Greg Nancarrow) - - - - This oversight could lead to misbehavior in parallel queries if the - transaction isolation level is less than REPEATABLE - READ. - - - - - - - Fix logical decoding to correctly ignore toast-table changes for - transient tables (Bertrand Drouvot) - - - - Logical decoding normally ignores changes in transient tables such - as those created during an ALTER TABLE heap - rewrite. But that filtering wasn't applied to the associated toast - table if any, leading to possible errors when rewriting a table - that's being published. - - - - - - - Fix logical decoding's memory usage accounting to handle TOAST data - correctly (Bertrand Drouvot) - - - - - - - Ensure that walreceiver processes create all required archive - notification files before exiting (Fujii Masao) - - - - If a walreceiver exited exactly at a WAL segment boundary, it failed - to make a notification file for the last-received segment, thus - delaying archiving of that segment on the standby. - - - - - - - Fix computation of the WAL range to include in a backup manifest - when a timeline change is involved (Kyotaro Horiguchi) - - - - - - - Avoid trying to lock the OLD - and NEW pseudo-relations in a rule - that uses SELECT FOR UPDATE - (Masahiko Sawada, Tom Lane) - - - - - - - Fix parser's processing of aggregate FILTER - clauses (Tom Lane) - - - - If the FILTER expression is a plain boolean column, - the semantic level of the aggregate could be mis-determined, leading - to not-per-spec behavior. If the FILTER - expression is itself a boolean-returning aggregate, an error should - be thrown but was not, likely resulting in a crash at execution. - - - - - - - Prevent ALTER TYPE/DOMAIN/OPERATOR ... SET - from changing extension membership (Tom Lane) - - - - ALTER ... SET executed by an extension script - would cause the target object to become a member of the extension if - it was not already. In itself this isn't too troubling, since - there's little reason for an extension script to touch an object not - belonging to the extension. But ALTER TYPE SET - will recurse to dependent domains, thus causing them to also become - extension members. This causes unwanted side-effects from - extension upgrade scripts that use that command to adjust the - properties of a base type belonging to the extension. Fix by - redefining these ALTER cases to never change - extension membership. - - - - - - - Avoid trying to clean up LLVM state after an error within LLVM - (Andres Freund, Justin Pryzby) - - - - This prevents a likely crash during backend exit after a fatal LLVM - error. - - - - - - - Ensure that scans of SP-GiST indexes are counted in the statistics - views (Tom Lane) - - - - Incrementing the number-of-index-scans counter was overlooked in the - SP-GiST code, although per-tuple counters were advanced correctly. - - - - - - - Recalculate relevant wait intervals - if recovery_min_apply_delay is changed during - recovery (Soumyadeep Chakraborty, Ashwin Agrawal) - - - - - - - Fix infinite loop if a simplehash.h hash table - reaches 2^32 elements (Yura Sokolov) - - - - It seems unlikely that this bug has been hit in practice, as it - would require work_mem settings of hundreds of - gigabytes for existing uses of simplehash.h. - - - - - - - Reduce memory consumption during calculation of extended statistics - (Justin Pryzby, Tomas Vondra) - - - - - - - Fix missing libpq functions on AIX - (Tony Reix) - - - - Code reorganization led to the following documented functions not - being exported from libpq on AIX: - pg_encoding_to_char(), - pg_utf_mblen(), - pg_char_to_encoding(), - pg_valid_server_encoding(), and - pg_valid_server_encoding_id(). - Restore them to visibility. - - - - - - - Fix ecpg to recover correctly - after malloc() failure while establishing a - connection (Michael Paquier) - - - - - - - Fix misevaluation of stable functions called in the arguments of a - PL/pgSQL CALL statement (Tom Lane) - - - - They were being called with an out-of-date snapshot, so that they - would not see any database changes made since the start of the - session's top-level command. - - - - - - - Allow EXIT out of the outermost block in a - PL/pgSQL routine (Tom Lane) - - - - If the routine does not require an explicit RETURN, - this usage should be valid, but it was rejected. - - - - - - - Remove pg_ctl's hard-coded limits on the - total length of generated commands (Phil Krylov) - - - - For example, this removes a restriction on how many command-line - options can be passed through to the postmaster. Individual path - names that pg_ctl deals with, such as the - postmaster executable's name or the data directory name, are still - limited to MAXPGPATH bytes in most cases. - - - - - - - Improve pg_dump's performance by avoiding - making per-table queries for RLS policies, and by avoiding repetitive - calls to format_type() (Tom Lane) - - - - These changes provide only marginal improvement when dumping from a - local server, but a dump from a remote server can benefit - substantially due to fewer network round-trips. - - - - - - - Fix failure of contrib/btree_gin indexes - on "char" - (not char(n)) columns, - when an indexscan using the < - or <= operator is performed (Tom Lane) - - - - Such an indexscan failed to return all the entries it should. - - - - - - - Add spinlock support for the RISC-V architecture (Marek Szuba) - - - - This is essential for reasonable performance on that platform. - - - - - - - Support OpenSSL 3.0.0 - (Peter Eisentraut, Daniel Gustafsson, Michael Paquier) - - - - - - - Set correct type identifier on OpenSSL BIO (I/O abstraction) - objects created by PostgreSQL - (Itamar Gafni) - - - - This oversight probably only matters for code that is doing - tasks like auditing the OpenSSL installation. But it's - nominally a violation of the OpenSSL API, so fix it. - - - - - - - Fix our pkg-config files to again support static - linking of libpq (Peter Eisentraut) - - - - - - - Make pg_regexec() robust against an - out-of-range search_start parameter - (Tom Lane) - - - - Return REG_NOMATCH, instead of possibly crashing, - when search_start is past the end of the - string. This case is probably unreachable within - core PostgreSQL, but extensions might be - more careless about the parameter value. - - - - -