mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Fix broken-FK-detection query in release notes
Commits53af9491a0
and2d5fe51405
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
This commit is contained in:
@ -2750,10 +2750,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) <>
|
||||
(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
|
||||
|
Reference in New Issue
Block a user