diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index 95a6bfe037f..981993e70e3 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -1,6 +1,1205 @@ + + Release 14.5 + + + Release date: + 2022-08-11 + + + + This release contains a variety of fixes from 14.4. + For information about new features in major release 14, see + . + + + + Migration to Version 14.5 + + + A dump/restore is not required for those running 14.X. + + + + However, if you are upgrading from a version earlier than 14.4, + see . + + + + + Changes + + + + + + + Fix replay of CREATE DATABASE WAL + records on standby servers + (Kyotaro Horiguchi, Asim R Praveen, Paul Guo) + + + + Standby servers may encounter missing tablespace directories + when replaying database-creation WAL records. Prior to this + patch, a standby would fail to recover in such a case; + however, such directories could be legitimately missing. + Create the tablespace (as a plain directory), then check that it + has been dropped again once replay reaches a consistent state. + + + + + + + Support in place tablespaces + (Thomas Munro, Michael Paquier, Álvaro Herrera) + + + + Normally a Postgres tablespace is a symbolic link to a directory on + some other filesystem. This change allows it to just be a plain + directory. While this has no use for separating tables onto + different filesystems, it is a convenient setup for testing. + Moreover, it is necessary to support the CREATE + DATABASE replay fix, which transiently creates a missing + tablespace as an in place tablespace. + + + + + + + Fix permissions checks in CREATE INDEX (Nathan + Bossart, Noah Misch) + + + + The fix for CVE-2022-1552 caused CREATE INDEX to + apply the table owner's permissions while performing lookups of + operator classes and other objects, where formerly the calling + user's permissions were used. This broke dump/restore scenarios, + because pg_dump issues CREATE + INDEX before re-granting permissions. + + + + + + + In extended query protocol, force an immediate commit + after CREATE DATABASE and other commands that + can't run in a transaction block (Tom Lane) + + + + If the client does not send a Sync message immediately after such a + command, but instead sends another command, any failure in that + command would lead to rolling back the preceding command, typically + leaving inconsistent state on-disk (such as a missing or extra + database directory). The mechanisms intended to prevent that + situation turn out to work for multiple commands in a simple-Query + message, but not for a series of extended-protocol messages. To + prevent inconsistency without breaking use-cases that work today, + force an implicit commit after such commands. + + + + + + + Fix race condition when checking transaction visibility (Simon Riggs) + + + + TransactionIdIsInProgress could + report false before the subject transaction is + considered visible, leading to various misbehaviors. The race + condition window is normally very narrow, but use of synchronous + replication makes it much wider, because the wait for a synchronous + replica happens in that window. + + + + + + + Fix queries in which a whole-row variable references + the result of a function that returns a domain over composite type + (Tom Lane) + + + + + + + Fix variable not found in subplan target list planner + error when pulling up a sub-SELECT that's + referenced in a GROUPING function (Richard Guo) + + + + + + + Fix incorrect plans when sorting by an expression that contains a + non-top-level set-returning function (Richard Guo, Tom Lane) + + + + + + + Fix incorrect permissions-checking code for extended statistics + (Richard Guo) + + + + If there are extended statistics on a table that the user has only + partial SELECT permissions on, some queries would + fail with unrecognized node type errors. + + + + + + + Fix extended statistics machinery to handle MCV-type statistics on + boolean-valued expressions (Tom Lane) + + + + Statistics collection worked fine, but a query containing such an + expression in WHERE would fail + with unknown clause type. + + + + + + + Avoid planner core dump with constant + = ANY(array) clauses when + there are MCV-type extended statistics on + the array variable (Tom Lane) + + + + + + + Fix ALTER TABLE ... ENABLE/DISABLE TRIGGER to + handle recursion correctly for triggers on partitioned tables + (Álvaro Herrera, Amit Langote) + + + + In certain cases, a trigger does not exist failure + would occur because the command would try to adjust the trigger on a + child partition that doesn't have it. + + + + + + + Allow cancellation of ANALYZE while it is + computing extended statistics (Tom Lane, Justin Pryzby) + + + + In some scenarios with high statistics targets, it was possible to + spend many seconds in an un-cancellable sort operation. + + + + + + + Improve syntax error messages for type jsonpath + (Andrew Dunstan) + + + + + + + Prevent pg_stat_get_subscription() from + possibly returning an extra row containing garbage values + (Kuntal Ghosh) + + + + + + + Ensure that pg_stop_backup() cleans up session + state properly (Fujii Masao) + + + + This omission could lead to assertion failures or crashes later in + the session. + + + + + + + Fix trim_array() to handle a zero-dimensional + array argument sanely (Martin Kalcher) + + + + + + + Fix join alias matching in FOR [KEY] UPDATE/SHARE + clauses (Dean Rasheed) + + + + In corner cases, a misleading error could be reported. + + + + + + + Avoid crashing if too many column aliases are attached to + an XMLTABLE or JSON_TABLE + construct (Álvaro Herrera) + + + + + + + Reject ROW() expressions and functions + in FROM that have too many columns (Tom Lane) + + + + Cases with more than about 1600 columns are unsupported, and + have always failed at execution. However, it emerges that some + earlier code could be driven to assertion failures or crashes by + queries with more than 32K columns. Add a parse-time check to + prevent that. + + + + + + + When decompiling a view or rule, show a SELECT + output column's AS "?column?" alias clause + if it could be referenced elsewhere (Tom Lane) + + + + Previously, this auto-generated alias was always hidden; but there + are corner cases where doing so results in a non-restorable view or + rule definition. + + + + + + + Fix dumping of a view using a function in FROM + that returns a composite type, when column(s) of the composite type + have been dropped since the view was made (Tom Lane) + + + + This oversight could lead to dump/reload + or pg_upgrade failures, as the dumped + view would have too many column aliases for the function. + + + + + + + Report implicitly-created operator families to event triggers + (Masahiko Sawada) + + + + If CREATE OPERATOR CLASS results in the implicit + creation of an operator family, that object was not reported to + event triggers that should capture such events. + + + + + + + Fix control file updates made when a restartpoint is running during + promotion of a standby server (Kyotaro Horiguchi) + + + + Previously, when the restartpoint completed it could incorrectly + update the last-checkpoint fields of the control file, potentially + leading to PANIC and failure to restart if the server crashes before + the next normal checkpoint completes. + + + + + + + Prevent triggering of + standby's wal_receiver_timeout during logical + replication of large transactions (Wang Wei, Amit Kapila) + + + + If a large transaction on the primary server sends no data to the + standby (perhaps because no table it changes is published), it was + possible for the standby to timeout. Fix that by ensuring we send + keepalive messages periodically in such situations. + + + + + + + Disallow nested backup operations in logical replication walsenders + (Fujii Masao) + + + + + + + Fix memory leak in logical replication subscribers (Hou Zhijie) + + + + + + + Fix logical replication's checking of replica identity when the + target table is partitioned (Shi Yu, Hou Zhijie) + + + + The replica identity columns have to be re-identified for the child + partition. + + + + + + + Fix failures to update cached schema data in a logical replication + subscriber after a schema change on the publisher (Shi Yu, Hou + Zhijie) + + + + + + + Ignore heap-rewrite temporary tables for materialized views in + logical replication (Euler Taveira) + + + + A FOR ALL TABLES publication will try to publish + temporary tables if left to its own devices. There is a heuristic + to suppress these, but it failed to cover internal temporary tables + created while rewriting a materialized view. This created a risk of + logical replication target relation ... does not + exist failures during REFRESH MATERIALIZED + VIEW. + + + + + + + Prevent open-file leak when reading an invalid timezone abbreviation + file (Kyotaro Horiguchi) + + + + Such cases could result in harmless warning messages. + + + + + + + Allow custom server parameters to have short descriptions that are + NULL (Steve Chavez) + + + + Previously, although extensions could choose to create such + settings, some code paths would crash while processing them. + + + + + + + Fix WAL consistency checking logic to correctly + handle BRIN_EVACUATE_PAGE flags (Haiyang Wang) + + + + + + + Fix erroneous assertion checks in shared hashtable management + (Thomas Munro) + + + + + + + Avoid assertion failure + when min_dynamic_shared_memory is set to a + non-default value (Thomas Munro) + + + + + + + Arrange to clean up after commit-time errors + within SPI_commit(), rather than expecting + callers to do that (Peter Eisentraut, Tom Lane) + + + + Proper cleanup is complicated and requires use of low-level + facilities, so it's not surprising that no known caller got it + right. This led to misbehaviors when a PL procedure + issued COMMIT but a failure occurred (such as a + deferred constraint check). To improve matters, + redefine SPI_commit() as starting a new + transaction, so that it becomes equivalent + to SPI_commit_and_chain() except that you get + default transaction characteristics instead of preserving the prior + transaction's characteristics. To make this somewhat transparent + API-wise, redefine SPI_start_transaction() as a + no-op. All known callers of SPI_commit() + immediately call SPI_start_transaction(), so + they will not notice any change. Similar remarks apply + to SPI_rollback(). + + + + Also fix PL/Python, which omitted any handling of such errors at all, + resulting in jumping out of the Python interpreter. This is + reported to crash Python 3.11. Older Python releases leak some + memory but seem okay with it otherwise. + + + + + + + Remove misguided SSL key file ownership check + in libpq (Tom Lane) + + + + In the previous minor releases, we copied the server's permission + checking rules for SSL private key files into libpq. But we should + not have also copied the server's file-ownership check. While that + works in normal use-cases, it can result in an unexpected failure + for clients running as root, and perhaps in other cases. + + + + + + + Improve libpq's handling of idle states + in pipeline mode (Álvaro Herrera, Kyotaro Horiguchi) + + + + This fixes message type 0x33 arrived from server while + idle warnings, as well as possible loss of end-of-query NULL + results from PQgetResult(). + + + + + + + Ensure ecpg reports server connection loss + sanely (Tom Lane) + + + + Misprocessing of a libpq-generated error result, such as a report of + lost connection, would lead to printing (null) + instead of a useful error message; or in older releases it would + lead to a crash. + + + + + + + Avoid core dump in ecpglib with + unexpected orders of operations (Tom Lane) + + + + Certain operations such as EXEC SQL PREPARE would + crash (rather than reporting an error as expected) if called before + establishing any database connection. + + + + + + + In ecpglib, avoid + redundant newlocale() calls (Noah Misch) + + + + Allocate a C locale object once per process when first connecting, + rather than creating and freeing locale objects once per query. + This mitigates a libc memory leak on AIX, and may offer some + performance benefit everywhere. + + + + + + + In psql's \watch + command, echo a newline after cancellation with control-C + (Pavel Stehule) + + + + This prevents libedit (and possibly also libreadline) from becoming + confused about which column the cursor is in. + + + + + + + Fix pg_upgrade to detect non-upgradable + usages of functions taking anyarray (Justin Pryzby) + + + + Version 14 changed some built-in functions to take + type anycompatiblearray instead + of anyarray. While this is mostly transparent, + user-defined aggregates and operators built atop these functions + have to be declared with exactly matching types. The presence of an + object referencing the old signature will + cause pg_upgrade to fail, so change it to + detect and report such cases before beginning the upgrade. + + + + + + + Fix possible report of wrong error condition + after clone() failure + in pg_upgrade + with option (Justin Pryzby) + + + + + + + Fix contrib/pg_stat_statements to avoid + problems with very large query-text files on 32-bit platforms + (Tom Lane) + + + + + + + In contrib/postgres_fdw, prevent batch + insertion when there are WITH CHECK OPTION + constraints (Etsuro Fujita) + + + + Such constraints cannot be checked properly if more than one row is + inserted at a time. + + + + + + + Fix contrib/postgres_fdw to detect failure to + send an asynchronous data fetch query (Fujii Masao) + + + + + + + Ensure that contrib/postgres_fdw sends + constants of regconfig and other reg* + types with proper schema qualification (Tom Lane) + + + + + + + Block signals while allocating dynamic shared memory on Linux + (Thomas Munro) + + + + This avoids problems when a signal + interrupts posix_fallocate(). + + + + + + + Detect unexpected EEXIST error + from shm_open() (Thomas Munro) + + + + This avoids a possible crash on Solaris. + + + + + + + Avoid using signalfd() + on illumos systems (Thomas Munro) + + + + This appears to trigger hangs and kernel panics, so avoid the + function until a fix is available. + + + + + + + Adjust PL/Perl test case so it will work under Perl 5.36 + (Dagfinn Ilmari MannsÃ¥ker) + + + + + + + Avoid incorrectly using an + out-of-date libldap_r library when + multiple OpenLDAP installations are + present while building PostgreSQL + (Tom Lane) + + + + + + + + Release 14.4