WITH checks AS (SELECT dc.domain_schema, dc.domain_name, cc.check_clause, cc.constraint_name, d.data_type
FROM INFORMATION_SCHEMA.domains AS d INNER JOIN INFORMATION_SCHEMA.domain_constraints AS dc USING (domain_schema, domain_name)
INNER JOIN INFORMATION_SCHEMA.check_constraints AS cc USING (constraint_schema, constraint_name)
WHERE cc.check_clause NOT LIKE '%IS NOT NULL' AND
dc.domain_schema NOT IN (SELECT schema_name
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name<>'public' AND
schema_owner='postgres' AND schema_name IS NOT NULL))
SELECT domain_schema, domain_name, check_clause, constraint_name, data_type
FROM checks
WHERE NOT EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.tables AS t INNER JOIN INFORMATION_SCHEMA.columns AS c USING (table_schema, table_name)
WHERE
c.domain_schema=checks.domain_schema
AND c.domain_name=checks.domain_name
AND table_schema NOT IN (SELECT schema_name
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name<>'public' AND
schema_owner='postgres' AND schema_name IS NOT NULL))
ORDER BY domain_schema, domain_name, constraint_name;