From e8c21223e758000be6040785f2cfd0916dc05e97 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 5 Feb 2023 16:22:32 -0500 Subject: [PATCH] Release notes for 15.2, 14.7, 13.10, 12.14, 11.19. --- doc/src/sgml/release-14.sgml | 1008 ++++++++++++++++++++++++++++++++++ 1 file changed, 1008 insertions(+) diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index 1b8092af96..f4d6d11ca4 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -1,6 +1,1014 @@ + + Release 14.7 + + + Release date: + 2023-02-09 + + + + This release contains a variety of fixes from 14.6. + For information about new features in major release 14, see + . + + + + Migration to Version 14.7 + + + 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 calculation of which GENERATED columns need + to be updated in child tables during an UPDATE on + a partitioned table or inheritance tree (Amit Langote, Tom Lane) + + + + This fixes failure to update GENERATED columns + that do not exist in the parent table, or that have different + dependencies than are in the parent column's generation expression. + + + + + + + Allow a WITH RECURSIVE ... CYCLE CTE + to access its output column (Tom Lane) + + + + A reference to the SET column from within the CTE + would fail with cache lookup failed for type 0. + + + + + + + Fix handling of pending inserts when doing a bulk insertion to a + foreign table (Etsuro Fujita) + + + + In some cases pending insertions were not flushed to the FDW soon + enough, leading to logical inconsistencies, for + example BEFORE ROW triggers not seeing rows they + should be able to see. + + + + + + + Allow REPLICA IDENTITY + to be set on an index that's not (yet) valid (Tom Lane) + + + + When pg_dump dumps a partitioned index + that's marked REPLICA IDENTITY, it generates a + command sequence that applies REPLICA IDENTITY + before the partitioned index has been marked valid, causing restore + to fail. There seems no very good reason to prohibit doing it in + that order, so allow it. The marking will have no effect anyway + until the index becomes valid. + + + + + + + Fix handling of DEFAULT markers in rules that + perform an INSERT from a + multi-row VALUES list (Dean Rasheed) + + + + In some cases a DEFAULT marker would not get + replaced with the proper default-value expression, leading to + an unrecognized node type error. + + + + + + + Reject uses of undefined variables in jsonpath + existence checks (Alexander Korotkov, David G. Johnston) + + + + While jsonpath match operators threw an error for an + undefined variable in the path pattern, the existence operators + silently treated it as a match. + + + + + + + Fix jsonb subscripting to cope with toasted subscript + values (Tom Lane, David G. Johnston) + + + + Using a text value fetched directly from a table as + a jsonb subscript was likely to fail. + Fetches would usually not find any matching element. + Assignments could store the value with a garbage key, + although keys long enough to cause that problem are probably rare in + the field. + + + + + + + Fix edge-case data corruption in parallel hash joins (Dmitry Astapov) + + + + If the final chunk of a large tuple being written out to a temporary + file was exactly 32760 bytes, it would be corrupted due to a + fencepost bug. The query would typically fail later with + corrupted-data symptoms. + + + + + + + Honor non-default settings + of checkpoint_completion_target + (Bharath Rupireddy) + + + + Internal state was not updated after a change + in checkpoint_completion_target, possibly + resulting in performing checkpoint I/O faster or slower than + desired, especially if that setting was changed on-the-fly. + + + + + + + Log the correct ending timestamp + in recovery_target_xid mode (Tom Lane) + + + + When ending recovery based on the recovery_target_xid + setting with recovery_target_inclusive + = off, we printed an incorrect timestamp (always + 2000-01-01) in the recovery stopping before + ... transaction log message. + + + + + + + Improve error reporting for some buffered file read failures + (Peter Eisentraut) + + + + Correctly report a short read, giving the numbers of bytes desired + and actually read, instead of reporting an irrelevant error code. + Most places got this right already, but some recently-written + replication logic did not. + + + + + + + In extended query protocol, avoid an immediate commit + after ANALYZE if we're running a pipeline + (Tom Lane) + + + + If there's not been an explicit BEGIN + TRANSACTION, ANALYZE would take it on + itself to commit, which should not happen within a pipelined series + of commands. + + + + + + + Reject cancel request packets having the wrong length + (Andrey Borodin) + + + + The server would process a cancel request even if its length word + was too small. This led to reading beyond the end of the allocated + buffer. In theory that could cause a segfault, but it seems quite + unlikely to happen in practice, since the buffer would have to be + very close to the end of memory. The more likely outcome was a bogus + log message about wrong backend PID or cancel code. Complain about + the wrong length, instead. + + + + + + + Add recursion and looping defenses in subquery pullup (Tom Lane) + + + + A contrived query can result in deep recursion and unreasonable + amounts of time spent trying to flatten subqueries. A proper fix + for that seems unduly invasive for a back-patch, but we can at least + add stack depth checks and an interrupt check to allow the query to + be cancelled. + + + + + + + Fix planner issues when combining Memoize nodes with partitionwise + joins or parameterized nestloops (Richard Guo) + + + + These errors could lead to not using Memoize in contexts where it + would be useful, or possibly to wrong query plans. + + + + + + + Fix partitionwise-join code to tolerate failure to produce a plan for + each partition (Tom Lane) + + + + This could result in could not devise a query plan for the + given query errors. + + + + + + + Limit the amount of cleanup work done + by get_actual_variable_range (Simon Riggs) + + + + Planner runs occurring just after deletion of a large number of + tuples appearing at the end of an index could expend significant + amounts of work setting the killed bits for those + index entries. Limit the amount of work done in any one query by + giving up on this process after examining 100 heap pages. All the + cleanup will still happen eventually, but without so large a + performance hiccup. + + + + + + + Fix under-parenthesized display of AT TIME ZONE + constructs (Tom Lane) + + + + This could result in dump/restore failures for rules or views in + which an argument of AT TIME ZONE is itself an + expression. + + + + + + + Prevent clobbering of cached parsetrees for utility statements in + SQL functions (Tom Lane, Daniel Gustafsson) + + + + If a SQL-language function executes the same utility command more + than once within a single calling query, it could crash or report + strange errors such as unrecognized node type. + + + + + + + Ensure that execution of full-text-search queries can be cancelled + while they are performing phrase matches (Tom Lane) + + + + + + + Fix memory leak in hashing strings with nondeterministic collations + (Jeff Davis) + + + + + + + Fix deadlock between DROP DATABASE and logical + replication worker process (Hou Zhijie) + + + + This was caused by an ill-advised choice to block interrupts while + creating a logical replication slot in the worker. In version 15 + that could lead to an undetected deadlock. In version 14, no + deadlock has been observed, but it's still a bad idea to block + interrupts while waiting for network I/O. + + + + + + + Clean up the libpq connection object + after a failed replication connection attempt (Andres Freund) + + + + The previous coding leaked the connection object. In background + code paths that's pretty harmless because the calling process will + give up and exit. But in commands such as CREATE + SUBSCRIPTION, such a failure resulted in a small + session-lifespan memory leak. + + + + + + + In hot-standby servers, reduce processing effort for tracking XIDs + known to be active on the primary (Simon Riggs, Michail Nikolaev) + + + + Insufficiently-aggressive cleanup of the KnownAssignedXids array + could lead to poor performance, particularly + when max_connections is set to a large value on + the standby. + + + + + + + Ignore invalidated logical-replication slots while determining + oldest catalog xmin (Sirisha Chamarthi) + + + + A replication slot could prevent cleanup of dead tuples in the + system catalogs even after it becomes invalidated due to + exceeding max_slot_wal_keep_size. Thus, failure + of a replication consumer could lead to indefinitely-large catalog + bloat. + + + + + + + In logical decoding, notify the remote node when a transaction is + detected to have crashed (Hou Zhijie) + + + + After a server restart, we'll re-stream the changes for transactions + occurring shortly before the restart. Some of these transactions + probably never completed; when we realize that one didn't we throw + away the relevant decoding state locally, but we neglected to tell + the subscriber about it. That led to the subscriber keeping useless + streaming files until it's next restarted. + + + + + + + Fix uninitialized-memory usage in logical decoding (Masahiko Sawada) + + + + In certain cases, resumption of logical decoding could try to re-use + XID data that had already been freed, leading to unpredictable + behavior. + + + + + + + Avoid rare failed to acquire cleanup lock panic + during WAL replay of hash-index page split operations (Robert Haas) + + + + + + + Advance a heap page's LSN when setting its all-visible bit during + WAL replay (Jeff Davis) + + + + Failure to do this left the page possibly different on standby + servers than the primary, and violated some other expectations about + when the LSN changes. This seems only a theoretical hazard so + far as PostgreSQL itself is concerned, + but it could upset third-party tools. + + + + + + + Prevent unsafe usage of a relation cache + entry's rd_smgr pointer (Amul Sul) + + + + Remove various assumptions that rd_smgr + would stay valid over a series of operations, by wrapping all uses + of it in a function that will recompute it if needed. This prevents + bugs occurring when an unexpected cache flush occurs partway through + such a series. + + + + + + + Fix int64_div_fast_to_numeric() to work for a + wider range of inputs (Dean Rasheed) + + + + This function misbehaved with some values of its second argument. + No such usages exist in core PostgreSQL, + but it's clearly a hazard for external modules, so repair. + + + + + + + Fix latent buffer-overrun problem in WaitEventSet + logic (Thomas Munro) + + + + The epoll-based + and kqueue-based implementations could ask the + kernel for too many events if the size of their internal buffer was + different from the size of the caller's output buffer. That case is + not known to occur in released PostgreSQL + versions, but this error is a hazard for external modules and future + bug fixes. + + + + + + + Avoid nominally-undefined behavior when accessing shared memory in + 32-bit builds (Andres Freund) + + + + clang's undefined-behavior sanitizer complained about use of a + pointer that was less aligned than it should be. It's very unlikely + that this would cause a problem in non-debug builds, but it's worth + fixing for testing purposes. + + + + + + + Fix assertion failure in BRIN minmax-multi opclasses (Tomas Vondra) + + + + The assertion was overly strict, so this mistake was harmless in + non-assert builds. + + + + + + + Remove faulty assertion in useless-RESULT-RTE optimization logic + (Tom Lane) + + + + + + + Fix copy-and-paste errors in cache-lookup-failure messages for ACL + checks (Justin Pryzby) + + + + In principle these errors should never be reached. But if they are, + some of them reported the wrong type of object. + + + + + + + In pg_dump, + avoid calling unsafe server functions before we have locks on the + tables to be examined (Tom Lane, Gilles Darold) + + + + pg_dump uses certain server functions + that can fail if examining a table that gets dropped concurrently. + Avoid this type of failure by ensuring that we obtain access share + lock before inquiring too deeply into a table's properties, and that + we don't apply such functions to tables we don't intend to dump at + all. + + + + + + + Fix psql's \sf + and \ef commands to handle SQL-language functions + that have SQL-standard function bodies (Tom Lane) + + + + These commands misidentified the start of the function body when it + used new-style syntax. + + + + + + + Fix tab completion of ALTER + FUNCTION/PROCEDURE/ROUTINE ... SET + SCHEMA (Dean Rasheed) + + + + + + + Fix contrib/seg to not crash or print garbage + if an input number has more than 127 digits (Tom Lane) + + + + + + + Fix build on Microsoft Visual Studio 2013 (Tom Lane) + + + + A previous patch supposed that all platforms of interest + have snprintf(), but MSVC 2013 isn't quite + there yet. Revert to using sprintf() on that + platform. + + + + + + + Fix compile failure in building PL/Perl with MSVC when using + Strawberry Perl (Andrew Dunstan) + + + + + + + Fix mismatch of PL/Perl built with MSVC versus a Perl library built + with gcc (Andrew Dunstan) + + + + Such combinations could previously fail with loadable library + and perl binaries are mismatched errors. + + + + + + + Suppress compiler warnings from Perl's header files (Andres Freund) + + + + Our preferred compiler options provoke warnings about constructs + appearing in recent versions of Perl's header files. When using + gcc, we can suppress these warnings with + a pragma. + + + + + + + Fix pg_waldump to build on compilers that + don't discard unused static-inline functions (Tom Lane) + + + + + + + Update time zone data files to tzdata + release 2022g for DST law changes in Greenland and Mexico, + plus historical corrections for northern Canada, Colombia, and + Singapore. + + + + Notably, a new timezone America/Ciudad_Juarez has been split off + from America/Ojinaga. + + + + + + + + Release 14.6