From ab22eea83169c8d0eb15050ce61cbe3d7dae4de6 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 4 Feb 2022 14:55:00 -0500 Subject: [PATCH] First-draft release notes for 14.2. 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-14.sgml | 1207 ++++++++++++++++++++++++++++++++++ 1 file changed, 1207 insertions(+) diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index 0c76ddd2c9..82f961d228 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -1,6 +1,1213 @@ + + Release 14.2 + + + Release date: + 2022-02-10 + + + + This release contains a variety of fixes from 14.1. + For information about new features in major release 14, see + . + + + + Migration to Version 14.2 + + + A dump/restore is not required for those running 14.X. + + + + However, some bugs have been found that may have resulted in + corrupted indexes, as explained in the first two changelog entries. + If any of those cases apply to you, it's recommended to reindex + possibly-affected indexes after updating. + + + + Also, if you are upgrading from a version earlier than 14.1, + see . + + + + + Changes + + + + + + + Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes + state to fully DEAD during page pruning (Andres Freund) + + + + This happens when the last transaction that could see + the tuple ends while the page is being pruned. It was then possible + to remove a tuple that is pointed to by a redirect item elsewhere on + the page. While that causes no immediate problem, when the item slot + is re-used by some new tuple, that tuple would be thought to be part + of the pre-existing HOT chain, creating a form of index corruption. + If this seems to have affected a table, REINDEX + should repair the damage. + + + + + + + Enforce standard locking protocol for TOAST table updates, to prevent + problems with REINDEX CONCURRENTLY (Michael Paquier) + + + + If applied to a TOAST table or TOAST table's index, REINDEX + CONCURRENTLY tended to produce a corrupted index. This + happened because sessions updating TOAST entries released + their ROW EXCLUSIVE locks immediately, rather + than holding them until transaction commit as all other updates do. + The fix is to make TOAST updates hold the table lock according to the + normal rule. Any existing corrupted indexes can be repaired by + reindexing again. + + + + + + + Fix crash in EvalPlanQual rechecks for tables with a mix of local + and foreign partitions (Etsuro Fujita) + + + + + + + Fix dangling pointer in COPY TO + (Bharath Rupireddy) + + + + This oversight could cause an incorrect error message or a crash + after an error in COPY. + + + + + + + Avoid null-pointer crash in ALTER STATISTICS + when the statistics object is dropped concurrently (Tomas Vondra) + + + + + + + Correctly handle alignment padding when extracting a range from a + multirange (Alexander Korotkov) + + + + This error could cause crashes when handling multiranges over + variable-length data types. + + + + + + + Fix over-optimistic use of hashing for + anonymous RECORD data types (Tom Lane) + + + + This prevents some cases of could not identify a hash + function for type record errors. + + + + + + + Fix incorrect plan creation for parallel single-child Append nodes + (David Rowley) + + + + In some cases the Append would be simplified away when it should not + be, leading to wrong query results (duplicated rows). + + + + + + + Fix index-only scan plans for cases where not all index columns can + be returned (Tom Lane) + + + + If an index has both returnable and non-returnable columns, and one + of the non-returnable columns is an expression using a table column + that appears in a returnable index column, then a query using that + expression could result in an index-only scan plan that attempts to + read the non-returnable column, instead of recomputing the + expression from the returnable column as intended. The + non-returnable column would read as NULL, resulting in wrong query + results. + + + + + + + Fix Memoize plan nodes to handle subplans that use parameters + coming from above the Memoize (David Rowley) + + + + + + + Fix Memoize plan nodes to work correctly with non-hashable join + operators (David Rowley) + + + + + + + Ensure that casting to an unspecified typmod generates a RelabelType + node rather than a length-coercion function call (Tom Lane) + + + + While the coercion function should do the right thing (nothing), + this translation is undesirably inefficient. + + + + + + + Fix checking of anycompatible-family data type matches + (Tom Lane) + + + + In some cases the parser would think that a function or operator + with anycompatible-family polymorphic parameters + matches a set of arguments that it really shouldn't match. In + reported cases, that led to matching more than one operator to a + call, leading to ambiguous-operator errors; but a failure later on + is also possible. + + + + + + + Fix WAL replay failure when database consistency is reached exactly + at a WAL page boundary (Álvaro Herrera) + + + + + + + Fix startup of a physical replica to tolerate transaction ID + wraparound (Abhijit Menon-Sen, Tomas Vondra) + + + + If a replica server is started while the set of active transactions + on the primary crosses a wraparound boundary (so that there are some + newer transactions with smaller XIDs than older ones), the replica + would fail with out-of-order XID insertion in + KnownAssignedXids. The replica would retry, but could never + get past that error. + + + + + + + In logical replication, avoid double transmission of a child table's + data (Hou Zhijie) + + + + If a publication includes both child and parent tables, and has + the publish_via_partition_root option set, + subscribers uselessly initiated synchronization on both child and + parent tables. Ensure that only the parent table is synchronized in + such cases. + + + + + + + Remove lexical limitations for SQL commands issued on a logical + replication connection (Tom Lane) + + + + The walsender process would fail for a SQL command containing an + unquoted semicolon, or with dollar-quoted literals containing odd + numbers of single or double quote marks, or when the SQL command + starts with a comment. Moreover, faulty error recovery could lead + to unexpected errors in later commands too. + + + + + + + Ensure that replication origin timestamp is set while replicating + a ROLLBACK PREPARED operation (Masahiko Sawada) + + + + + + + Fix possible loss of the commit timestamp for the last + subtransaction of a transaction (Alex Kingsborough, Kyotaro Horiguchi) + + + + + + + Be sure to fsync + the pg_logical/mappings subdirectory during + checkpoints (Nathan Bossart) + + + + On some filesystems this oversight could lead to losing logical + rewrite status files after a system crash. + + + + + + + Build extended statistics for partitioned tables (Justin Pryzby) + + + + A previous bug fix disabled building of extended statistics for + old-style inheritance trees, but it also prevented building them for + partitioned tables, which was an unnecessary restriction. + If you have created statistics objects for partitioned tables, you + may wish to explicitly ANALYZE those tables after + installing this update, rather than waiting for auto-analyze to do it. + + + + + + + Ignore extended statistics for inheritance trees (Justin Pryzby) + + + + A previous bug fix disabled building of extended statistics for + old-style inheritance trees, but any existing statistics data was + not removed, and that data would become more and more out-of-date + over time. Adjust the planner to ignore such data. Extended + statistics for the individual child tables are still built and used, + however. + + + + + + + Disallow altering data type of a partitioned table's columns when + the partitioned table's row type is used as a composite type + elsewhere (Tom Lane) + + + + This restriction has long existed for regular tables, but through an + oversight it was not checked for partitioned tables. + + + + + + + Disallow ALTER TABLE ... DROP NOT NULL for a + column that is part of a replica identity index (Haiying Tang, Hou + Zhijie) + + + + The same prohibition already existed for primary key indexes. + + + + + + + Correctly update cached table state during ALTER TABLE ADD + PRIMARY KEY USING INDEX (Hou Zhijie) + + + + Concurrent sessions failed to update their opinion of whether the + table has a primary key, possibly causing incorrect logical + replication behavior. + + + + + + + Correctly update cached table state when switching REPLICA + IDENTITY index (Tang Haiying, Hou Zhijie) + + + + Concurrent sessions failed to update their opinion of which index is + the replica identity one, possibly causing incorrect logical + replication behavior. + + + + + + + Fix failure of SP-GiST indexes when indexed column's data type is + binary-compatible with the declared input type of the operator class + (Tom Lane) + + + + Such cases should work, but failed with compress method must + be defined when leaf type is different from input type. + + + + + + + Allow parallel vacuuming and concurrent index building to be ignored + while computing oldest xmin (Masahiko Sawada) + + + + Non-parallelized instances of these operations were already ignored, + but the logic did not work for parallelized cases. Holding back the + xmin horizon has undesirable effects such as delaying vacuum + cleanup. + + + + + + + Fix memory leak when updating expression indexes (Peter Geoghegan) + + + + An UPDATE affecting many rows could consume + significant amounts of memory. + + + + + + + Avoid leaking memory during REASSIGN OWNED BY + operations that reassign ownership of many objects (Justin Pryzby) + + + + + + + Improve performance of walsenders sending logical changes by + avoiding unnecessary cache accesses (Hou Zhijie) + + + + + + + Fix display of cert authentication method's + options in pg_hba_file_rules view (Magnus + Hagander) + + + + The cert authentication method implies + clientcert=verify-full, but the + pg_hba_file_rules view incorrectly reported + clientcert=verify-ca. + + + + + + + Ensure that the session targeted + by pg_log_backend_memory_contexts() sends its + results only to the server's log (Fujii Masao) + + + + Previously, a sufficiently high setting + of client_min_messages could result in the log + message also being sent to the connected client. Since that client + hadn't requested it, that would be surprising (and possibly a wire + protocol violation). + + + + + + + Fix display of whole-row variables appearing + in INSERT ... VALUES rules (Tom Lane) + + + + A whole-row variable would be printed as var.*, + but that allows it to be expanded to individual columns when + the rule is reloaded, resulting in different semantics. + Attach an explicit cast to prevent that, as we do elsewhere. + + + + + + + When reverse-listing a SQL-standard function body, display function + parameters appropriately within INSERT ... SELECT + (Tom Lane) + + + + Previously, they'd come out + as $N even when the + parameter had a name. + + + + + + + Fix one-byte buffer overrun when applying Unicode string + normalization to an empty string (Michael Paquier) + + + + The practical impact of this is limited thanks to alignment + considerations; but in debug builds, a warning was raised. + + + + + + + Fix or remove some incorrect assertions (Simon Riggs, Michael + Paquier, Alexander Lakhin) + + + + These errors should affect only debug builds, not production. + + + + + + + Fix race condition that could lead to failure to localize error + messages that are reported early in multi-threaded use + of libpq + or ecpglib (Tom Lane) + + + + + + + Avoid calling strerror + from libpq's PQcancel + function (Tom Lane) + + + + PQcancel is supposed to be safe to call from a + signal handler, but strerror is not safe. The + faulty usage only occurred in the unlikely event of failure to + send the cancel message to the server, perhaps explaining the lack + of reports. + + + + + + + Make psql's \password + command default to setting the password + for CURRENT_USER, not the connection's original + user name (Tom Lane) + + + + This agrees with the documented behavior, and avoids probable + permissions failure if SET ROLE or SET + SESSION AUTHORIZATION has been done since the session began. + To reduce confusion, the role name to be acted on is now always + included in the password prompt. + + + + + + + Fix psql \d command's + query for identifying parent triggers (Justin Pryzby) + + + + The previous coding failed with more than one row returned by + a subquery used as an expression if a partition had triggers + and there were unrelated statement-level triggers of the same name + on some parent partitioned table. + + + + + + + Make psql's \d command + sort a table's extended statistics objects by name not OID (Justin + Pryzby) + + + + + + + Fix psql's tab-completion of label values + for enum types (Tom Lane) + + + + + + + Fix failures on Windows when using the terminal as data source + or destination (Dmitry Koval, Juan José Santamaría Flecha, Michael + Paquier) + + + + This affects psql's + \copy command, as well + as pg_recvlogical with + . + + + + + + + In psql and some other client programs, + avoid trying to invoke gettext() from a + control-C signal handler (Tom Lane) + + + + While no reported failures have been traced to this mistake, it seems + highly unlikely to be a safe thing to do. + + + + + + + Allow canceling the initial password prompt + in pg_receivewal + and pg_recvlogical (Tom Lane, Nathan + Bossart) + + + + Previously it was impossible to terminate these programs via control-C + while they were prompting for a password. + + + + + + + Fix pg_dump's dump ordering for + user-defined casts (Tom Lane) + + + + In rare cases, the output script might refer to a user-defined cast + before it had been created. + + + + + + + Fix pg_dump's + and modes to handle tables + containing both generated columns and dropped columns (Tom Lane) + + + + + + + Fix possible mis-reporting of errors + in pg_dump + and pg_basebackup (Tom Lane) + + + + The previous code failed to check for errors from some kernel calls, + and could report the wrong errno values in other cases. + + + + + + + Fix results of index-only scans + on contrib/btree_gist indexes + on char(N) columns (Tom Lane) + + + + Index-only scans returned column values with trailing spaces + removed, which is not the expected behavior. That happens because + that's how it's stored in the index. This fix changes the logic to + store char(N) values with + the expected amount of space padding. The behavior of the index + will not change immediately unless you REINDEX + it; otherwise space-stripped values will be gradually replaced over + time during updates. Queries that do not use index-only scan plans + will be unaffected in any case. + + + + + + + Fix edge cases in postgres_fdw's handling of + asynchronous queries (Etsuro Fujita) + + + + These errors could lead to crashes or incorrect results when + attempting to parallelize scans of foreign tables. + + + + + + + Change configure to use + Python's sysconfig module, rather than + the deprecated distutils module, to + determine how to build PL/Python (Peter Eisentraut, Tom Lane, Andres + Freund) + + + + With Python 3.10, this + avoids configure-time warnings + about distutils being deprecated and + scheduled for removal in Python 3.12. Presumably, once 3.12 is + out, configure --with-python would fail + altogether. This future-proofing does come at a + cost: sysconfig did not exist before + Python 2.7, nor before 3.2 in the Python 3 branch, so it is no + longer possible to build PL/Python against long-dead Python + versions. + + + + + + + Re-allow cross-compilation + without OpenSSL (Tom Lane) + + + + configure should assume + that /dev/urandom will be available on the + target system, but it failed instead. + + + + + + + Fix PL/Perl compile failure on Windows with Perl 5.28 and later + (Victor Wagner) + + + + + + + Fix PL/Python compile failure with Python 3.11 and later (Peter + Eisentraut) + + + + + + + Add support for building with Visual Studio 2022 (Hans Buschmann) + + + + + + + Allow the .bat wrapper scripts in our MSVC + build system to be called without first changing into their + directory (Anton Voloshin, Andrew Dunstan) + + + + + + + + Release 14.1