refactor: Simplify tbl_pk_cols query
This commit is contained in:
committed by
Wolfgang Walther
parent
3daeec4e76
commit
5ea83de7ec
@@ -704,60 +704,25 @@ tablesSqlQuery =
|
|||||||
) AS enum_info ON info.udt_name = enum_info.n
|
) AS enum_info ON info.udt_name = enum_info.n
|
||||||
GROUP BY info.table_schema, info.table_name
|
GROUP BY info.table_schema, info.table_name
|
||||||
),
|
),
|
||||||
tbl_constraints AS (
|
|
||||||
SELECT
|
|
||||||
c.conname::name AS constraint_name,
|
|
||||||
nr.nspname::name AS table_schema,
|
|
||||||
r.relname::name AS table_name
|
|
||||||
FROM pg_constraint c
|
|
||||||
JOIN pg_class r ON c.conrelid = r.oid
|
|
||||||
JOIN pg_namespace nr ON nr.oid = r.relnamespace
|
|
||||||
WHERE
|
|
||||||
r.relkind IN ('r', 'p')
|
|
||||||
AND NOT pg_is_other_temp_schema(nr.oid)
|
|
||||||
AND c.contype = 'p'
|
|
||||||
),
|
|
||||||
key_col_usage AS (
|
|
||||||
SELECT
|
|
||||||
ss.conname::name AS constraint_name,
|
|
||||||
ss.nr_nspname::name AS table_schema,
|
|
||||||
ss.relname::name AS table_name,
|
|
||||||
a.attname::name AS column_name
|
|
||||||
FROM pg_attribute a
|
|
||||||
JOIN (
|
|
||||||
SELECT r.oid AS roid,
|
|
||||||
r.relname,
|
|
||||||
nr.nspname AS nr_nspname,
|
|
||||||
c.conname,
|
|
||||||
information_schema._pg_expandarray(c.conkey) AS x
|
|
||||||
FROM pg_namespace nr
|
|
||||||
JOIN pg_class r
|
|
||||||
ON nr.oid = r.relnamespace
|
|
||||||
JOIN pg_constraint c
|
|
||||||
ON r.oid = c.conrelid
|
|
||||||
WHERE
|
|
||||||
c.contype in ('p', 'u')
|
|
||||||
AND r.relkind IN ('r', 'p')
|
|
||||||
AND nr.oid NOT IN ('pg_catalog'::regnamespace, 'information_schema'::regnamespace)
|
|
||||||
AND NOT pg_is_other_temp_schema(nr.oid)
|
|
||||||
) ss ON a.attrelid = ss.roid AND a.attnum = (ss.x).x
|
|
||||||
WHERE
|
|
||||||
NOT a.attisdropped
|
|
||||||
),
|
|
||||||
tbl_pk_cols AS (
|
tbl_pk_cols AS (
|
||||||
SELECT
|
SELECT
|
||||||
key_col_usage.table_schema,
|
nr.nspname::name AS table_schema,
|
||||||
key_col_usage.table_name,
|
r.relname::name AS table_name,
|
||||||
array_agg(key_col_usage.column_name ORDER BY key_col_usage.column_name) as pk_cols
|
array_agg(a.attname ORDER BY a.attname) AS pk_cols
|
||||||
FROM
|
FROM pg_namespace nr
|
||||||
tbl_constraints
|
JOIN pg_class r
|
||||||
JOIN
|
ON nr.oid = r.relnamespace
|
||||||
key_col_usage
|
JOIN pg_constraint c
|
||||||
ON
|
ON r.oid = c.conrelid
|
||||||
key_col_usage.table_name = tbl_constraints.table_name AND
|
JOIN pg_attribute a
|
||||||
key_col_usage.table_schema = tbl_constraints.table_schema AND
|
ON a.attrelid = r.oid AND a.attnum = ANY (c.conkey)
|
||||||
key_col_usage.constraint_name = tbl_constraints.constraint_name
|
WHERE
|
||||||
GROUP BY key_col_usage.table_schema, key_col_usage.table_name
|
c.contype in ('p')
|
||||||
|
AND r.relkind IN ('r', 'p')
|
||||||
|
AND r.relnamespace NOT IN ('pg_catalog'::regnamespace, 'information_schema'::regnamespace)
|
||||||
|
AND NOT pg_is_other_temp_schema(r.relnamespace)
|
||||||
|
AND NOT a.attisdropped
|
||||||
|
GROUP BY table_schema, table_name
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
n.nspname AS table_schema,
|
n.nspname AS table_schema,
|
||||||
|
|||||||
Reference in New Issue
Block a user