From 9a3cf3477617d8f4e296bc0b9f69d956dc601a74 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 4 Feb 2024 14:17:14 -0500 Subject: [PATCH] Release notes for 16.2, 15.6, 14.11, 13.14, 12.18. --- doc/src/sgml/release-15.sgml | 1301 ++++++++++++++++++++++++++++++++++ 1 file changed, 1301 insertions(+) diff --git a/doc/src/sgml/release-15.sgml b/doc/src/sgml/release-15.sgml index e9e5f56f8e..1f3f3aebac 100644 --- a/doc/src/sgml/release-15.sgml +++ b/doc/src/sgml/release-15.sgml @@ -1,6 +1,1307 @@ + + Release 15.6 + + + Release date: + 2024-02-08 + + + + This release contains a variety of fixes from 15.5. + For information about new features in major release 15, see + . + + + + Migration to Version 15.6 + + + A dump/restore is not required for those running 15.X. + + + + However, one bug was fixed that could have resulted in corruption of + GIN indexes during concurrent updates. If you suspect such + corruption, reindex affected indexes after installing this update. + + + + Also, if you are upgrading from a version earlier than 15.5, + see . + + + + + Changes + + + + + + + Fix memory leak when performing JIT inlining (Andres Freund, + Daniel Gustafsson) + + + + There have been multiple reports of backend processes suffering + out-of-memory conditions after sufficiently many JIT compilations. + This fix should resolve that. + + + + + + + When dequeueing from an LWLock, avoid needing to search the list of + waiting processes (Andres Freund) + + + + This fixes O(N^2) behavior when the list of waiters is long. In + some use-cases this results in substantial throughput improvements. + + + + + + + Avoid generating incorrect partitioned-join plans (Richard Guo) + + + + Some uncommon situations involving lateral references could create + incorrect plans. Affected queries could produce wrong answers, or + odd failures such as variable not found in subplan target + list, or executor crashes. + + + + + + + Fix incorrect wrapping of subquery output expressions in + PlaceHolderVars (Tom Lane) + + + + This fixes incorrect results when a subquery is underneath an outer + join and has an output column that laterally references something + outside the outer join's scope. The output column might not appear + as NULL when it should do so due to the action of the outer join. + + + + + + + Fix misprocessing of window function run conditions (Richard Guo) + + + + This oversight could lead to WindowFunc not found in subplan + target lists errors. + + + + + + + Skip inappropriate actions when MERGE causes a + cross-partition update (Dean Rasheed) + + + + When executing a MERGE UPDATE action on a + partitioned table, if the UPDATE is turned into + a DELETE and INSERT due to + changing a partition key column, skip firing AFTER + UPDATE ROW triggers, as well as other post-update actions + such as RLS checks. These actions would typically fail, which is + why a regular UPDATE doesn't do them in such + cases; MERGE shouldn't either. + + + + + + + Cope with BEFORE ROW DELETE triggers in + cross-partition MERGE updates (Dean Rasheed) + + + + If such a trigger attempted to prevent the update by returning + NULL, MERGE would suffer an error or assertion + failure. + + + + + + + Prevent access to a no-longer-pinned buffer in BEFORE ROW + UPDATE triggers (Alexander Lakhin, Tom Lane) + + + + If the tuple being updated had just been updated and moved to + another page by another session, there was a narrow window where + we would attempt to fetch data from the new tuple version without + any pin on its buffer. In principle this could result in garbage + data appearing in non-updated columns of the proposed new tuple. + The odds of problems in practice seem rather low, however. + + + + + + + Avoid requesting an oversize shared-memory area in parallel hash + join (Thomas Munro, Andrei Lepikhov, Alexander Korotkov) + + + + The limiting value was too large, allowing invalid DSA memory + alloc request size errors to occur with sufficiently large + expected hash table sizes. + + + + + + + Avoid assertion failures in heap_update() + and heap_delete() when a tuple to be updated by + a foreign-key enforcement trigger fails the extra visibility + crosscheck (Alexander Lakhin) + + + + This error had no impact in non-assert builds. + + + + + + + Fix possible failure during ALTER TABLE ADD + COLUMN on a complex inheritance tree (Tender Wang) + + + + If a grandchild table would inherit the new column via multiple + intermediate parents, the command failed with tuple already + updated by self. + + + + + + + Fix problems with duplicate token names in ALTER TEXT + SEARCH CONFIGURATION ... MAPPING commands (Tender Wang, + Michael Paquier) + + + + + + + Properly lock the associated table during DROP + STATISTICS (Tomas Vondra) + + + + Failure to acquire the lock could result in tuple + concurrently deleted errors if the DROP + executes concurrently with ANALYZE. + + + + + + + Fix function volatility checking for GENERATED + and DEFAULT expressions (Tom Lane) + + + + These places could fail to detect insertion of a volatile function + default-argument expression, or decide that a polymorphic function + is volatile although it is actually immutable on the datatype of + interest. This could lead to improperly rejecting or accepting + a GENERATED clause, or to mistakenly applying the + constant-default-value optimization in ALTER TABLE ADD + COLUMN. + + + + + + + Detect that a new catalog cache entry became stale while detoasting + its fields (Tom Lane) + + + + We expand any out-of-line fields in a catalog tuple before inserting + it into the catalog caches. That involves database access which + might cause invalidation of catalog cache entries — but the + new entry isn't in the cache yet, so we would miss noticing that it + should get invalidated. The result is a race condition in which an + already-stale cache entry could get made, and then persist + indefinitely. This would lead to hard-to-predict misbehavior. + Fix by rechecking the tuple's visibility after detoasting. + + + + + + + Fix edge-case integer overflow detection bug on some platforms (Dean + Rasheed) + + + + Computing 0 - INT64_MIN should result in an + overflow error, and did on most platforms. However, platforms with + neither integer overflow builtins nor 128-bit integers would fail to + spot the overflow, instead returning INT64_MIN. + + + + + + + Detect Julian-date overflow when adding or subtracting + an interval to/from a timestamp (Tom Lane) + + + + Some cases that should cause an out-of-range error produced an + incorrect result instead. + + + + + + + Add more checks for overflow in interval_mul() + and interval_div() (Dean Rasheed) + + + + Some cases that should cause an out-of-range error produced an + incorrect result instead. + + + + + + + Ensure cached statistics are discarded after a change + to stats_fetch_consistency (Shinya Kato) + + + + In some code paths, it was possible for stale statistics to be + returned. + + + + + + + Make the pg_file_settings view check + validity of unapplied values for settings + with backend + or superuser-backend context (Tom Lane) + + + + Invalid values were not noted in the view as intended. This escaped + detection because there are very few settings in these groups. + + + + + + + Match collation too when matching an existing index to a new + partitioned index (Peter Eisentraut) + + + + Previously we could accept an index that has a different collation + from the corresponding element of the partition key, possibly + leading to misbehavior. + + + + + + + Avoid failure if a child index is dropped concurrently + with REINDEX INDEX on a partitioned index + (Fei Changhong) + + + + + + + Fix insufficient locking when cleaning up an incomplete split of + a GIN index's internal page (Fei Changhong, Heikki Linnakangas) + + + + The code tried to do this with shared rather than exclusive lock on + the buffer. This could lead to index corruption if two processes + attempted the cleanup concurrently. + + + + + + + Avoid premature release of buffer pin in GIN index insertion + (Tom Lane) + + + + If an index root page split occurs concurrently with our own + insertion, the code could fail with buffer NNNN is not owned + by resource owner. + + + + + + + Avoid failure with partitioned SP-GiST indexes (Tom Lane) + + + + Trying to use an index of this kind could lead to No such + file or directory errors. + + + + + + + Fix ownership change reporting for large objects (Tom Lane) + + + + A no-op ALTER LARGE OBJECT OWNER command (that + is, one selecting the existing owner) passed the wrong class ID to + the PostAlterHook, probably confusing any + extension using that hook. + + + + + + + Fix reporting of I/O timing data in EXPLAIN + (BUFFERS) (Michael Paquier) + + + + The numbers labeled as shared/local actually refer + only to shared buffers, so change that label + to shared. + + + + + + + Ensure durability of CREATE DATABASE (Noah Misch) + + + + If an operating system crash occurred during or shortly + after CREATE DATABASE, recovery could fail, or + subsequent connections to the new database could fail. If a base + backup was taken in that window, similar problems could be observed + when trying to use the backup. The symptom would be that the + database directory, PG_VERSION file, or + pg_filenode.map file was missing or empty. + + + + + + + Add more LOG messages when starting and ending + recovery from a backup (Andres Freund) + + + + This change provides additional information in the postmaster log + that may be useful for diagnosing recovery problems. + + + + + + + Prevent standby servers from incorrectly processing dead index + tuples during subtransactions (Fei Changhong) + + + + The startedInRecovery flag was not + correctly set for a subtransaction. This affects only processing of + dead index tuples. It could allow a query in a subtransaction to + ignore index entries that it should return (if they are already dead + on the primary server, but not dead to the standby transaction), or + to prematurely mark index entries as dead that are not yet dead on + the primary. It is not clear that the latter case has any serious + consequences, but it's not the intended behavior. + + + + + + + Fix integer overflow hazard in checking whether a record will fit + into the WAL decoding buffer (Thomas Munro) + + + + This bug appears to be only latent except when running a + 32-bit PostgreSQL build on a 64-bit + platform. + + + + + + + Fix deadlock between a logical replication apply worker, its + tablesync worker, and a session process trying to alter the + subscription (Shlok Kyal) + + + + One edge of the deadlock loop did not involve a lock wait, so the + deadlock went undetected and would persist until manual + intervention. + + + + + + + Ensure that column default values are correctly transmitted by + the pgoutput logical replication plugin + (Nikhil Benesch) + + + + ALTER TABLE ADD COLUMN with a constant default + value for the new column avoids rewriting existing tuples, instead + expecting that reading code will insert the correct default into a + tuple that lacks that column. If replication was subsequently + initiated on the table, pgoutput would + transmit NULL instead of the correct default for such a column, + causing incorrect replication on the subscriber. + + + + + + + Fix failure of logical replication's initial sync for a table with + no columns (Vignesh C) + + + + This case generated an improperly-formatted COPY + command. + + + + + + + Prevent examining system catalogs with the wrong snapshot during + logical decoding (Fei Changhong) + + + + If decoding begins partway through a transaction that modifies + system catalogs, the decoder may not recognize that, causing it to + fail to treat that transaction as in-progress for catalog lookups. + This fix deals with the case that a top-level transaction is already + marked as containing catalog changes, but its subtransaction(s) are + not. + + + + + + + Return the correct status code when a new client disconnects without + responding to the server's password challenge (Liu Lang, Tom Lane) + + + + In some cases we'd treat this as a loggable error, which was not the + intention and tends to create log spam, since common clients + like psql frequently do this. It may + also confuse extensions that + use ClientAuthentication_hook. + + + + + + + Fix incompatibility with OpenSSL 3.2 + (Tristan Partin, Bo Andreson) + + + + Use the BIO app_data field for our private storage, + instead of assuming it's okay to use the data field. + This mistake didn't cause problems before, but with 3.2 it leads + to crashes and complaints about double frees. + + + + + + + Be more wary about OpenSSL not + setting errno on error (Tom Lane) + + + + If errno isn't set, assume the cause of the + reported failure is read EOF. This fixes rare cases of strange + error reports like could not accept SSL connection: + Success. + + + + + + + Fix file descriptor leakage when a foreign data + wrapper's ForeignAsyncRequest function fails + (Heikki Linnakangas) + + + + + + + Report ENOMEM errors from file-related system + calls as ERRCODE_OUT_OF_MEMORY, + not ERRCODE_INTERNAL_ERROR (Alexander Kuzmenkov) + + + + + + + In PL/pgSQL, support SQL commands that + are CREATE FUNCTION/CREATE + PROCEDURE with SQL-standard bodies (Tom Lane) + + + + Previously, such cases failed with parsing errors due to the + semicolon(s) appearing in the function body. + + + + + + + Fix libpq's + handling of errors in pipelines (Álvaro Herrera) + + + + The pipeline state could get out of sync if an error is returned + for reasons other than a query problem (for example, if the + connection is lost). Potentially this would lead to a busy-loop in + the calling application. + + + + + + + Make libpq's + PQsendFlushRequest() function flush the client + output buffer under the same rules as + other PQsend functions (Jelte Fennema-Nio) + + + + In pipeline mode, it may still be necessary to + call PQflush() as well; but this change removes + some inconsistency. + + + + + + + Avoid race condition when libpq + initializes OpenSSL support concurrently in two different threads + (Willi Mann, Michael Paquier) + + + + + + + Fix timing-dependent failure in GSSAPI data transmission (Tom Lane) + + + + When using GSSAPI encryption in non-blocking + mode, libpq sometimes failed + with GSSAPI caller failed to retransmit all data needing to + be retried. + + + + + + + In pg_dump, don't dump RLS policies or + security labels for extension member objects (Tom Lane, Jacob + Champion) + + + + Previously, commands would be included in the dump to set these + properties, which is really incorrect since they should be + considered as internal affairs of the extension. Moreover, the + restoring user might not have adequate privilege to set them, and + indeed the dumping user might not have enough privilege to dump them + (since dumping RLS policies requires acquiring lock on their table). + + + + + + + In pg_dump, don't dump an extended + statistics object if its underlying table isn't being dumped + (Rian McGuire, Tom Lane) + + + + This conforms to the behavior for other dependent objects such as + indexes. + + + + + + + Make it an error for a pgbench script to + end with an open pipeline (Anthonin Bonnefoy) + + + + Previously, pgbench would behave oddly if + a \startpipeline command lacked a + matching \endpipeline. This seems like a + scripting mistake rather than a case + that pgbench needs to handle nicely, so + throw an error. + + + + + + + In contrib/bloom, fix overly tight assertion + about false_positive_rate (Alexander Lakhin) + + + + + + + Fix crash in contrib/intarray if an array with + an element equal to INT_MAX is inserted into + a gist__int_ops index + (Alexander Lakhin, Tom Lane) + + + + + + + Report a better error + when contrib/pageinspect's + hash_bitmap_info() function is applied to a + partitioned hash index (Alexander Lakhin, Michael Paquier) + + + + + + + Report a better error + when contrib/pgstattuple's + pgstathashindex() function is applied to a + partitioned hash index (Alexander Lakhin) + + + + + + + On Windows, suppress autorun options when launching subprocesses + in pg_ctl + and pg_regress (Kyotaro Horiguchi) + + + + When launching a child process via cmd.exe, + pass the flag to prevent executing any autorun + commands specified in the registry. This avoids possibly-surprising + side effects. + + + + + + + Move is_valid_ascii() + from mb/pg_wchar.h + to utils/ascii.h (Jubilee Young) + + + + This change avoids the need to + include <simd.h> + in pg_wchar.h, which was causing problems for + some third-party code. + + + + + + + Fix compilation failures with libxml2 + version 2.12.0 and later (Tom Lane) + + + + + + + Fix compilation failure of WAL_DEBUG code on + Windows (Bharath Rupireddy) + + + + + + + Suppress compiler warnings from Python's header files + (Peter Eisentraut, Tom Lane) + + + + Our preferred compiler options provoke warnings about constructs + appearing in recent versions of Python's header files. When using + gcc, we can suppress these warnings with + a pragma. + + + + + + + Avoid deprecation warning when compiling with LLVM 18 (Thomas Munro) + + + + + + + Update time zone data files to tzdata + release 2024a for DST law changes in Greenland, Kazakhstan, and + Palestine, plus corrections for the Antarctic stations Casey and + Vostok. Also historical corrections for Vietnam, Toronto, and + Miquelon. + + + + + + + + Release 15.5