awx/tools/scripts/ig-hotfix/foreignkeys.sql
Jeff Bradberry ad9d5904d8 Adjusted foreignkeys.sql for correctness
Some relationships known to be handled by the special mapping sql file
were being caught as false positives.
2024-06-10 16:36:22 -04:00

39 lines
1.5 KiB
SQL

DO $$
DECLARE
-- add table names here when they get excluded from main / included in topology dump
topology text[] := ARRAY['main_instance', 'main_instancegroup', 'main_instancegroup_instances'];
-- add table names here when they are handled by the special-case mapping
mapping text[] := ARRAY['main_organizationinstancegroupmembership', 'main_unifiedjobtemplateinstancegroupmembership', 'main_inventoryinstancegroupmembership'];
BEGIN
CREATE TABLE tmp_fk_from AS (
SELECT DISTINCT
tc.table_name,
ccu.table_name AS foreign_table_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE tc.constraint_type = 'FOREIGN KEY'
AND tc.table_name = ANY (topology)
AND NOT ccu.table_name = ANY (topology || mapping)
);
CREATE TABLE tmp_fk_into AS (
SELECT DISTINCT
tc.table_name,
ccu.table_name AS foreign_table_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE tc.constraint_type = 'FOREIGN KEY'
AND ccu.table_name = ANY (topology)
AND NOT tc.table_name = ANY (topology || mapping)
);
END $$;
SELECT * FROM tmp_fk_from;
SELECT * FROM tmp_fk_into;
DROP TABLE tmp_fk_from;
DROP TABLE tmp_fk_into;