postgres.git / summary / log / commit / refs

commit    7f4261d9da35b90d3feb85ea8ea2c7de18913483
Author:   Álvaro Herrera <alvherre@kurilemu.de>
Date:     Fri May 30 14:18:18 2025 +0000

    Fix broken-FK-detection query in release notes
    
    Commits 53af9491a043 and 2d5fe514052a fixed a number of problems with
    foreign keys that reference partitioned tables, and a query to detect
    already broken FKs was supplied with the release notes for 17.1, 16.5,
    15.9, 14.14, 13.17.  However, that query has a bug that causes it to
    wrongly report self-referential foreign keys even when they are correct,
    so if the user was to drop and rebuild the FKs as indicated, the query
    would continue to report them as needing to be repaired.  Here we fix
    the query to not have that problem.
    
    Reported-by: Paul Foerster <paul.foerster@gmail.com>
    Discussion: https://postgr.es/m/5456A1D0-CD47-4315-9C65-71B27E7A2906@gmail.com
    Backpatch-through: 13-17


doc/src/sgml/release-14.sgml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index 81080815885..f5ae250b9d3 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -2674,10 +2674,14 @@ 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) &lt;&gt; - (SELECT count(*) FROM pg_catalog.pg_inherits i + ((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)); + WHERE partrelid = i.inhparent)) + + CASE WHEN pg_catalog.pg_partition_root(conrelid) = confrelid THEN + (SELECT count(*) FROM pg_catalog.pg_partition_tree(confrelid) + WHERE level = 1) + ELSE 0 END); </programlisting> Since it is possible that one or more of the <literal>ADD CONSTRAINT</literal> steps will fail, you should save the query's [parent: 2cd2222ca5f4]