mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 01:12:56 +03:00
35 lines
1.7 KiB
MySQL
35 lines
1.7 KiB
MySQL
|
CREATE OR REPLACE VIEW hdb_catalog.hdb_column AS
|
||
|
WITH primary_key_references AS (
|
||
|
SELECT fkey.table_schema AS src_table_schema
|
||
|
, fkey.table_name AS src_table_name
|
||
|
, fkey.columns->>0 AS src_column_name
|
||
|
, json_agg(json_build_object(
|
||
|
'schema', fkey.ref_table_table_schema,
|
||
|
'name', fkey.ref_table
|
||
|
)) AS ref_tables
|
||
|
FROM hdb_catalog.hdb_foreign_key_constraint AS fkey
|
||
|
JOIN hdb_catalog.hdb_primary_key AS pkey
|
||
|
ON pkey.table_schema = fkey.ref_table_table_schema
|
||
|
AND pkey.table_name = fkey.ref_table
|
||
|
AND pkey.columns::jsonb = fkey.ref_columns::jsonb
|
||
|
WHERE json_array_length(fkey.columns) = 1
|
||
|
GROUP BY fkey.table_schema
|
||
|
, fkey.table_name
|
||
|
, fkey.columns->>0)
|
||
|
SELECT columns.table_schema
|
||
|
, columns.table_name
|
||
|
, columns.column_name AS name
|
||
|
, columns.udt_name AS type
|
||
|
, columns.is_nullable
|
||
|
, columns.ordinal_position
|
||
|
, coalesce(pkey_refs.ref_tables, '[]') AS primary_key_references
|
||
|
, col_description(pg_class.oid, columns.ordinal_position) AS description
|
||
|
FROM information_schema.columns
|
||
|
JOIN pg_class ON pg_class.relname = columns.table_name
|
||
|
JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
|
||
|
AND pg_namespace.nspname = columns.table_schema
|
||
|
LEFT JOIN primary_key_references AS pkey_refs
|
||
|
ON columns.table_schema = pkey_refs.src_table_schema
|
||
|
AND columns.table_name = pkey_refs.src_table_name
|
||
|
AND columns.column_name = pkey_refs.src_column_name;
|