From 176877f461a8b55e921f597fb217f6ab89ee019f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 2 May 2025 12:27:01 -0400 Subject: First-draft release notes for 17.5. As usual, the release notes for other branches will be made by cutting these down, but put them up for community review first. --- doc/src/sgml/release-17.sgml | 1250 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1250 insertions(+) diff --git a/doc/src/sgml/release-17.sgml b/doc/src/sgml/release-17.sgml index 2f1bed2e290..5f68e118760 100644 --- a/doc/src/sgml/release-17.sgml +++ b/doc/src/sgml/release-17.sgml @@ -1,6 +1,1256 @@ + + Release 17.5 + + + Release date: + 2025-05-08 + + + + This release contains a variety of fixes from 17.4. + For information about new features in major release 17, see + . + + + + Migration to Version 17.5 + + + A dump/restore is not required for those running 17.X. + + + + However, if you have any BRIN bloom indexes, it may be advisable to + reindex them after updating. See the first changelog entry below. + + + + Also, if you are upgrading from a version earlier than 17.1, + see . + + + + + Changes + + + + + + + Avoid data loss when merging compressed BRIN summaries + in brin_bloom_union() (Tomas Vondra) + + + + The code failed to account for decompression results not being + identical to the input objects, which would result in failure to add + some of the data to the merged summary, leading to missed rows in + index searches. + + + + This mistake was present back to v14 where BRIN bloom indexes were + introduced, but this code path was only rarely reached then. It's + substantially more likely to be hit in v17 because parallel index + builds now use the code. + + + + + + + Fix unexpected attribute has wrong type errors + in UPDATE, DELETE, + and MERGE queries that use whole-row table + references to views or functions in FROM + (Tom Lane) + + + + + + + Fix MERGE into a partitioned table + with DO NOTHING actions (Tender Wang) + + + + Some cases failed with unknown action in MERGE WHEN + clause errors. + + + + + + + Prevent failure in INSERT commands when the table + has a GENERATED column of a domain data type and + the domain's constraints disallow null values (Jian He) + + + + Constraint failure was reported even if the generation expression + produced a perfectly okay result. + + + + + + + Correctly process references to outer CTE names that appear within + a WITH clause attached to + an INSERT/UPDATE/DELETE/MERGE + command that's inside WITH (Tom Lane) + + + + The parser failed to detect disallowed recursion cases, nor did it + account for such references when sorting CTEs into a usable order. + + + + + + + Fix misprocessing of casts within the keys of JSON constructor + expressions (Amit Langote) + + + + + + + Don't try to parallelize array_agg() when the + argument is of an anonymous record type (Richard Guo, Tom Lane) + + + + The protocol for communicating with parallel workers doesn't support + identifying the concrete record type that a worker is returning. + + + + + + + Fix ARRAY(subquery) + and ARRAY[expression, ...] + constructs to produce sane results when the input is of + type int2vector or oidvector (Tom Lane) + + + + This patch restores the behavior that existed + before PostgreSQL 9.5: the result is of + type int2vector[] or oidvector[]. + + + + + + + Fix possible erroneous reports of invalid affixes while parsing + Ispell dictionaries (Jacob Brazeal) + + + + + + + Fix ALTER TABLE ADD COLUMN to correctly handle + the case of a domain type that has a default (Tom Lane, Tender Wang) + + + + If a domain type has a default, adding a column of that type (without + any explicit DEFAULT + clause) failed to install the domain's default + value in existing rows, instead leaving the new column null. + + + + + + + Repair misbehavior when there are duplicate column names in a + foreign key constraint's ON DELETE SET DEFAULT + or SET NULL action (Tom Lane) + + + + + + + Improve the error message for disallowed attempts to alter the + properties of a foreign key constraint (Álvaro Herrera) + + + + + + + Avoid error when resetting + the relhassubclass flag of a temporary + table that's marked ON COMMIT DELETE ROWS + (Noah Misch) + + + + + + + Add missing deparsing of the INDENT option + of XMLSERIALIZE() (Jim Jones) + + + + Previously, views or rules + using XMLSERIALIZE(... INDENT) were dumped + without the INDENT clause, causing incorrect + results after restore. + + + + + + + Avoid premature evaluation of the arguments of an aggregate function + that has both FILTER and ORDER + BY (or DISTINCT) options (David Rowley) + + + + If there is ORDER BY + or DISTINCT, we consider pre-sorting the + aggregate input values rather than doing the sort within the Agg + plan node. But this is problematic if the aggregate inputs include + expressions that could fail (for example, a division where some of + the input divisors could be zero) and there is + a FILTER clause that's meant to prevent such + failures. Pre-sorting would push the expression evaluations to + before the FILTER test, allowing the failures to + happen anyway. Avoid this by not pre-sorting if there's + a FILTER and the input expressions are anything + more complex than a simple Var or Const. + + + + + + + Fix erroneous deductions from column NOT NULL + constraints in the presence of outer joins (Richard Guo) + + + + In some cases the planner would discard an IS NOT + NULL query condition, even though the condition applies + after an outer join and thus is not redundant. + + + + + + + Avoid incorrect optimizations based on IS [NOT] + NULL tests that are applied to composite values + (Bruce Momjian) + + + + + + + Fix planner's failure to identify more than one hashable + ScalarArrayOpExpr subexpression within a top-level expression + (David Geier) + + + + This resulted in unnecessarily-inefficient execution of any + additional subexpressions that could have been processed with a hash + table (that is, IN, NOT IN, + or = ANY clauses with all-constant right-hand + sides). + + + + + + + Fix incorrect table size estimate with low fill factor (Tomas Vondra) + + + + When the planner estimates the number of rows in a + never-yet-analyzed table, it uses the table's fillfactor setting in + the estimation, but it neglected to clamp the result to at least one + row per page. A low fillfactor could thus result in an unreasonably + small estimate. + + + + + + + Disable skip fetch optimization in bitmap heap scan + (Matthias van de Meent) + + + + It turns out that this optimization can result in returning dead + tuples when a concurrent vacuum marks a page all-visible. + + + + + + + Fix performance issues in GIN index search startup when there are + many search keys (Tom Lane, Vinod Sridharan) + + + + An indexable clause with many keys (for example, jsonbcol + ?| array[...] with tens of thousands of array elements) + took O(N2) time to start up, and was + uncancelable for that interval too. + + + + + + + Detect missing support procedures in a BRIN index operator class, + and report an error instead of crashing (Álvaro Herrera) + + + + + + + Respond to interrupts (such as query cancel) while waiting for + asynchronous subplans of an Append plan node (Heikki Linnakangas) + + + + Previously, nothing would happen until one of the subplans becomes + ready. + + + + + + + Report the I/O statistics of active WAL senders more frequently + (Bertrand Drouvot) + + + + Previously, the pg_stat_io view failed to + accumulate I/O performed by a WAL sender until that process exited. + Now such I/O will be reported after at most one second's delay. + + + + + + + Fix race condition in handling + of synchronous_standby_names immediately after + startup (Melnikov Maksim, Michael Paquier) + + + + For a short period after system startup, backends might fail to wait + for synchronous commit even + though synchronous_standby_names is enabled. + + + + + + + Cope with possible intra-query changes + of io_combine_limit (Thomas Munro) + + + + + + + Avoid infinite loop if scram_iterations is set to + INT_MAX (Kevin K Biju) + + + + + + + Avoid possible crashes due to double transformation + of json_array()'s subquery (Tom Lane) + + + + + + + Fix pg_strtof() to not crash with null endptr + (Alexander Lakhin, Tom Lane) + + + + + + + Fix crash after out-of-memory in certain GUC assignments (Daniel + Gustafsson) + + + + + + + Avoid crash when a Snowball stemmer encounters an out-of-memory + condition (Maksim Korotkov) + + + + + + + Fix over-enthusiastic freeing of SpecialJoinInfo structs during + planning (Richard Guo) + + + + This led to crashes during planning if partitionwise joining is + enabled. + + + + + + + Skip WAL recycling and preallocation during archive recovery, to + avoid corruption of WAL files that were restored from the archive + (Noah Misch, Arun Thirupathi) + + + + This change back-patches v15-era fixes that were considered largely + cosmetic at the time, but turn out to prevent data corruption in the + wake of subsequent fixes. + + + + + + + Disallow copying of invalidated replication slots (Shlok Kyal) + + + + This prevents trouble when the invalid slot points to WAL that's + already been removed. + + + + + + + Disallow restoring logical replication slots on standby servers that + are not in hot-standby mode (Masahiko Sawada) + + + + This prevents a scenario where the slot could remain valid after + promotion even if wal_level is too low. + + + + + + + Prevent over-advancement of catalog xmin in fast + forward mode of logical decoding (Zhijie Hou) + + + + This mistake could allow deleted catalog entries to be vacuumed away + even though they were still potentially needed by the WAL-reading + process. + + + + + + + Avoid data loss when DDL operations that don't take a strong lock + affect tables that are being logically replicated (Shlok Kyal, + Hayato Kuroda) + + + + The catalog changes caused by the DDL command were not reflected + into WAL-decoding processes, allowing them to decode subsequent + changes using stale catalog data, probably resulting in data + corruption. + + + + + + + Prevent incorrect reset of replication origin when an apply worker + encounters an error but the error is caught and does not result in + worker exit (Hayato Kuroda) + + + + This mistake could allow duplicate data to be applied. + + + + + + + Fix crash in logical replication if the subscriber's partitioned + table has a BRIN index (Tom Lane) + + + + + + + Avoid duplicate snapshot creation in logical replication index + lookups (Heikki Linnakangas) + + + + + + + Improve detection of mixed-origin subscriptions + (Hou Zhijie, Shlok Kyal) + + + + Subscription creation gives a warning if a subscribed-to table is + also being followed through other publications, since that could + cause duplicate data to be received. This change improves that + logic to also detect cases where a partition parent or child table + is the one being followed through another publication. + + + + + + + Fix wrong checkpoint details in error message about incorrect + recovery timeline choice (David Steele) + + + + If the requested recovery timeline is not reachable, the reported + checkpoint and timeline should be the values read from the + backup_label, if there is one. This message previously reported + values from the control file, which is correct when recovering from + the control file without a backup_label, but not when there is a + backup_label. + + + + + + + Fix order of operations in smgropen() + (Andres Freund) + + + + Ensure that the SMgrRelation object is fully initialized before + calling the smgr_open callback, so that it can be cleaned up + properly if the callback fails. + + + + + + + Fix assertion failure in snapshot building (Masahiko Sawada) + + + + + + + Remove incorrect assertion + in pgstat_report_stat() (Michael Paquier) + + + + + + + Fix overly-strict assertion + in gistFindCorrectParent() (Heikki Linnakangas) + + + + + + + Avoid assertion failure in parallel vacuum + when maintenance_work_mem has a very small value + (Masahiko Sawada) + + + + + + + Fix rare assertion failure in standby servers when the primary is + restarted (Heikki Linnakangas) + + + + + + + In PL/pgSQL, avoid unexpected plan node type error + when a scrollable cursor is defined on a + simple SELECT expression + query (Andrei Lepikhov) + + + + + + + Don't try to drop individual index partitions + in pg_dump's + mode (Jian He) + + + + The server rejects such DROP commands. That has + no real consequences, since the partitions will go away anyway in + the subsequent DROPs of either their parent + tables or their partitioned index. However, the error reported for + the attempted drop causes problems when restoring + in mode. + + + + + + + In pg_dumpall, avoid emitting invalid + role GRANT commands + if pg_auth_members contains invalid role + OIDs (Tom Lane) + + + + Instead, print a warning and skip the entry. This copes better with + catalog corruption that has been seen to occur in back branches as a + result of race conditions between GRANT + and DROP ROLE. + + + + + + + In pg_amcheck + and pg_upgrade, use the correct function + to free allocations made by libpq + (Michael Paquier, Ranier Vilela) + + + + These oversights could result in crashes in certain Windows build + configurations, such as a debug build + of libpq used by a non-debug build of the + calling application. + + + + + + + Fix reindexdb's scheduling of parallel + reindex operations (Alexander Korotkov) + + + + The original coding failed to achieve the expected amount of + parallelism. + + + + + + + Allow contrib/dblink queries to be interrupted + by query cancel (Noah Misch) + + + + This change back-patches a v17-era fix. It prevents possible hangs + in CREATE DATABASE and DROP + DATABASE due to failure to detect deadlocks. + + + + + + + Avoid crashing with corrupt input data + in contrib/pageinspect's + heap_page_items() (Dmitry Kovalenko) + + + + + + + Prevent assertion failure + in contrib/pg_freespacemap's + pg_freespacemap() (Tender Wang) + + + + Applying pg_freespacemap() to a relation + lacking storage (such as a view) caused an assertion failure, + although there was no ill effect in non-assert builds. + Add an error check to reject that case. + + + + + + + In contrib/postgres_fdw, avoid pulling up + restriction conditions from subqueries (Alexander Pyhalov) + + + + This fix prevents rare cases of unexpected expression in + subquery output errors. + + + + + + + Fix build failure when an old version + of libpq_fe.h is present in system include + directories (Tom Lane) + + + + + + + Fix build failure on macOS 15.4 (Tom Lane, Peter Eisentraut) + + + + This macOS update broke our configuration probe + for strchrnul(). + + + + + + + Fix valgrind labeling of per-buffer data of read streams + (Thomas Munro) + + + + This affects no core code in released versions + of PostgreSQL, but an extension using the + per-buffer data feature might have encountered spurious failures + when being tested under valgrind. + + + + + + + Avoid valgrind complaints about string hashing code (John Naylor) + + + + + + + Update time zone data files to tzdata + release 2025b for DST law changes in Chile, plus historical + corrections for Iran (Tom Lane) + + + + There is a new time zone America/Coyhaique for Chile's Aysén Region, + to account for it changing to UTC-03 year-round and thus diverging + from America/Santiago. + + + + + + + + Release 17.4 -- cgit v1.2.3