mirror of
https://github.com/xataio/pgroll.git
synced 2024-09-11 13:55:28 +03:00
Fix primary keys retrieval query (#198)
The previous query had some issues when used under clusters with many schema objects, this one improves query performance
This commit is contained in:
parent
c029d5eff2
commit
954746bac0
@ -143,20 +143,20 @@ BEGIN
|
||||
) c
|
||||
),
|
||||
'primaryKey', (
|
||||
SELECT json_agg(kcu.column_name) AS primary_key_columns
|
||||
FROM information_schema.table_constraints AS tc
|
||||
JOIN information_schema.key_column_usage AS kcu
|
||||
ON tc.constraint_name = kcu.constraint_name
|
||||
WHERE tc.table_name = t.relname
|
||||
AND tc.table_schema = schemaname
|
||||
AND tc.constraint_type = 'PRIMARY KEY'
|
||||
SELECT json_agg(pg_attribute.attname) AS primary_key_columns
|
||||
FROM pg_index, pg_attribute
|
||||
WHERE
|
||||
indrelid = t.oid AND
|
||||
nspname = schemaname AND
|
||||
pg_attribute.attrelid = t.oid AND
|
||||
pg_attribute.attnum = any(pg_index.indkey)
|
||||
AND indisprimary
|
||||
),
|
||||
'indexes', (
|
||||
SELECT json_object_agg(pi.indexrelid::regclass, json_build_object(
|
||||
'name', pi.indexrelid::regclass
|
||||
))
|
||||
FROM pg_index pi
|
||||
INNER JOIN pg_class pgc ON pi.indexrelid = pgc.oid
|
||||
WHERE pi.indrelid = t.oid::regclass
|
||||
)
|
||||
)) FROM pg_class AS t
|
||||
|
Loading…
Reference in New Issue
Block a user