diff --git a/doc/src/sgml/release-17.sgml b/doc/src/sgml/release-17.sgml index 0eb57c63fdd..00dc7573d7b 100644 --- a/doc/src/sgml/release-17.sgml +++ b/doc/src/sgml/release-17.sgml @@ -23,10 +23,11 @@ - However, if you have detached partitions from a partitioned table that - has a foreign-key reference to another partitioned table, you may have - catalog and/or data corruption to repair, as detailed in the first - changelog entry below. + However, if you have ever detached a partition from a partitioned + table that has a foreign-key reference to another partitioned table, + and not dropped the former partition, then you may have catalog and/or + data corruption to repair, as detailed in the first changelog entry + below. @@ -87,7 +88,29 @@ Branch: REL_15_STABLE [1b216fcef] 2024-10-30 10:54:03 +0100 - XXX need to provide a query for finding faulty constraints + This query can be used to identify broken constraints and construct + the commands needed to recreate them: + +SELECT conrelid::pg_catalog.regclass AS "constrained table", + conname AS constraint, + confrelid::pg_catalog.regclass AS "references", + pg_catalog.format('ALTER TABLE %s DROP CONSTRAINT %I;', + conrelid::pg_catalog.regclass, conname) AS "drop", + pg_catalog.format('ALTER TABLE %s ADD CONSTRAINT %I %s;', + conrelid::pg_catalog.regclass, conname, + pg_catalog.pg_get_constraintdef(oid)) AS "add" +FROM pg_catalog.pg_constraint c +WHERE contype = 'f' AND conparentid = 0 AND + (SELECT count(*) FROM pg_catalog.pg_constraint c2 + WHERE c2.conparentid = c.oid) <> + (SELECT count(*) FROM pg_catalog.pg_inherits i + WHERE (i.inhparent = c.conrelid OR i.inhparent = c.confrelid) AND + EXISTS (SELECT 1 FROM pg_catalog.pg_partitioned_table + WHERE partrelid = i.inhparent)); + + Since it is possible that one or more of the ADD + CONSTRAINT steps will fail, you should save the query's + output in a file and then attempt to perform each step. @@ -124,60 +147,6 @@ Branch: REL_17_STABLE [8148e7124] 2024-11-06 14:44:35 -0800 - - Avoid possible crashes and could not open relation - errors in queries on a partitioned table occurring concurrently with - a DETACH CONCURRENTLY and immediate drop of a - partition (Álvaro Herrera, Kuntal Gosh) - § - § - - - - - - - Disallow ALTER TABLE ATTACH PARTITION if the - table to be attached has a foreign key referencing the partitioned - table (Álvaro Herrera) - § - - - - This arrangement is not supported, and other ways of creating it - already fail. - - - - - - - Fix performance regressions involving flattening of subqueries - underneath outer joins that are later reduced to plain joins - (Tom Lane) - § - - - - v16 failed to optimize some queries as well as prior versions had, - because of overoptimistic simplification of query-pullup logic. - - - - - - - Allow cancellation of the second stage of index build for large hash - indexes (Pavel Borisov) - § - - - - - - - Fix checking of key uniqueness in JSON object constructors - (Junwang Zhao, Tomas Vondra) - § - - - - When building an object larger than a kilobyte, it was possible to - accept invalid input that includes duplicate object keys, or to - falsely report that duplicate keys are present. - - - - - - - Report the active query ID for statistics purposes at the start of - processing of Bind and Execute protocol messages (Sami Imseih) - § - - - - This allows more of the work done in extended query protocol to be - attributed to the correct query. - - - - - - - Guard against stack overflow in libxml2 - with too-deeply-nested XML input (Tom Lane, with hat tip to Nick - Wellnhofer) - § - - - - Use xmlXPathCtxtCompile() rather - than xmlXPathCompile(), because the latter - fails to protect itself against recursion-to-stack-overflow - in libxml2 releases before 2.13.4. - - - - - - - Fix some whitespace issues in the result - of XMLSERIALIZE(... INDENT) (Jim Jones) - § - - - - Fix failure to indent nodes separated by whitespace, and ensure that - a trailing newline is not added. - - - - - - - Do not ignore a concurrent REINDEX CONCURRENTLY - that is working on an index with predicates or expressions (Michail - Nikolaev) - § - - - - Normally, REINDEX CONCURRENTLY does not need to - wait for other REINDEX CONCURRENTLY operations on - other tables. However, this optimization is not applied if the - other REINDEX CONCURRENTLY is processing an index - with predicates or expressions, on the chance that such expressions - contain user-defined code that accesses other tables. Careless - coding created a race condition such that that rule was not applied - uniformly, possibly allowing inconsistent behavior. - - - - - - - Fix mis-deparsing of ORDER BY lists when there is - a name conflict (Tom Lane) - § - - - - If an ORDER BY item in SELECT - is a bare identifier, the parser first seeks it as an output column - name of the SELECT, for SQL92 compatibility. - However, ruleutils.c expects the SQL99 interpretation where such a - name is an input column name. So it was possible to produce an - incorrect display of a view in the (rather ill-advised) case where - some other column is renamed in the SELECT output - list to match an input column used in ORDER BY. - Fix by table-qualifying such names in the dumped view text. - - - - - - - Fix failed to find plan for subquery/CTE errors - in EXPLAIN (Richard Guo, Tom Lane) - § - § - - - - This case arose while trying to print references to fields of a - RECORD-type output of a subquery when the subquery has been - optimized out of the plan altogether (which is possible at least in - the case that it has a constant-false WHERE - condition). Nothing remains in the plan to identify the original - field names, so fall back to - printing fN for - the N'th record column. (That's actually - the right thing anyway, if the record output arose from - a ROW() constructor.) - - - - - - - Disallow a USING clause when altering the type of - a generated column (Peter Eisentraut) - § - - - - A generated column already has an expression specifying the column - contents, so including USING doesn't make sense. - - - - - - - Fix incorrect output of the pg_stat_io view - on 32-bit machines (Bertrand Drouvot) - § - - - - The stats_reset timestamp column - contained garbage on such hardware. - - - - - - - Prevent mis-encoding of trailing junk after numeric - literal error messages (Karina Litskevich) - § - - - - We do not allow identifiers to appear immediately following numeric - literals (there must be some whitespace between). If a multibyte - character immediately followed a numeric literal, the syntax error - message about it included only the first byte of that character, - causing bad-encoding problems both in the report to the client and - in the postmaster log file. - - - - - - - In a logical replication apply worker, ensure that origin progress - is not advanced during an error or apply worker shutdown (Hayato - Kuroda, Shveta Malik) - § - - - - This avoids possible loss of a transaction, since once the origin - progress point is advanced the source server won't send that data - again. - - - - - - - Re-disable sending of stateless (TLSv1.2) session tickets - (Daniel Gustafsson) - § - - - - A previous change to prevent sending of stateful (TLSv1.3) session - tickets accidentally re-enabled sending of stateless ones. Thus, - while we intended to prevent clients from thinking that TLS session - resumption is supported, some still did. - - - - - - - Avoid wrong tuple length failure when dropping a - database with many ACL (permission) entries (Ayush Tiwari) - § - § - - - - - - - Allow adjusting the session_authorization - and role settings in parallel workers (Tom Lane) - § - - - - Our code intends to allow modifiable server settings to be set by - function SET clauses, but not otherwise within a - parallel worker. SET clauses failed for these - two settings, though. - - - - - - - Fix cache lookup failed for function errors in edge - cases in PL/pgSQL's CALL (Tom Lane) - § - - - - - - - Fix thread safety of our fallback (non-OpenSSL) MD5 implementation - on big-endian hardware (Heikki Linnakangas) - § - - - - Thread safety is not currently a concern in the server, but it is - for libpq. - - - - - - - Avoid use of pnstrdup() - in ecpglib (Jacob Champion) - § - - - - That function will call exit() on - out-of-memory, which is undesirable in a library. The calling code - already handles allocation failures properly. - - - - - - - Fix memory leak in psql during repeated - use of \bind (Michael Paquier) - § - - - - - - - Fix pg_dump's handling of identity - sequences that have persistence different from their owning table's - persistence (Tom Lane) - § - - - - Since v15, it's been possible to set an identity sequence to be - LOGGED when its owning table is UNLOGGED or vice versa. - However, pg_dump's method for recreating - that situation failed in binary-upgrade mode, - causing pg_upgrade to fail when such - sequences are present. Fix by introducing a new option - for ADD/ALTER COLUMN GENERATED AS IDENTITY to - allow the sequence's persistence to be set correctly at creation. - Note that this means a dump from a database containing such a - sequence will only load into a server of this minor version or - newer. - - - - - @@ -1396,67 +882,6 @@ Branch: REL_17_STABLE [0d635b615] 2024-11-04 10:04:26 -0500 - - Include the source timeline history - in pg_rewind's debug output - (Heikki Linnakangas) - § - - - - This was the intention to begin with, but a coding error caused the - source history to always print as empty. - - - - - - - Fix misbehavior with junction points on Windows, particularly - in pg_rewind (Alexandra Wang) - - - - This entailed back-patching previous fixes by Thomas Munro, Peter - Eisentraut, Alexander Lakhin, and Juan José Santamaría Flecha. - Those changes were originally not back-patched out of caution, but - they have been in use in later branches for long enough to deem - them safe. - - - - - - - Allow inspection of sequence relations in relevant functions - of contrib/pageinspect - and contrib/pgstattuple (Nathan Bossart, Ayush - Vatsa) - § - § - - - - This had been allowed in the past, but it got broken during the - introduction of non-default access methods for tables. - - - - - - - Prevent nothing provides - perl(PostgreSQL::Test::Utils) failures while building RPM - packages of PostgreSQL (Noah Misch) - - - - - - - Fix building with Strawberry Perl on Windows (Andrew Dunstan) - § - - - - - - - Prevent missing declaration for inet_pton compiler - warning or error when building with MinGW (Thomas Munro, Andrew - Dunstan) - - - - -