diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml index b28295f616..3d866e8197 100644 --- a/doc/src/sgml/release-12.sgml +++ b/doc/src/sgml/release-12.sgml @@ -1,6 +1,800 @@ + + Release 12.10 + + + Release date: + 2022-02-10 + + + + This release contains a variety of fixes from 12.9. + For information about new features in major release 12, see + . + + + + Migration to Version 12.10 + + + A dump/restore is not required for those running 12.X. + + + + However, if you have applied REINDEX CONCURRENTLY + to a TOAST table's index, or observe failures to access TOAST datums, + see the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 12.9, + see . + + + + + Changes + + + + + + + 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 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. + + + + + + + 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 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. + + + + + + + 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. + + + + + + + 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. + This change allows ANALYZE to compute values for + statistics objects for partitioned tables. (But note that + autovacuum does not process partitioned tables as such, so you must + periodically issue manual ANALYZE on the + partitioned table if you want to maintain such statistics.) + + + + + + + Ignore extended statistics for inheritance trees (Justin Pryzby) + + + + Currently, extended statistics values are only computed locally for + each table, not for entire inheritance trees. However the values + were mistakenly consulted when planning queries across inheritance + trees, possibly resulting in worse-than-default estimates. + + + + + + + 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. + + + + + + + Avoid leaking memory during REASSIGN OWNED BY + operations that reassign ownership of many objects (Justin Pryzby) + + + + + + + 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. + + + + + + + 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. + + + + + + + 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 prevent confusion, the role name to be acted on is now + included in the password prompt. + + + + + + + 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 happened because + that's how the data was stored in the index. This fix changes the + code to store char(N) values + with the expected amount of space padding. + The behavior of such an 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. + + + + + + + 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. + + + + + + + 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 12.9