SELECT
current_database() AS DATABASE_NAME,
nc.nspname AS table_schema,
c.relname AS table_name,
u.usename AS table_owner,
CASE
WHEN (nc.nspname ~~ like_escape('pg!_temp!_%', '!')) THEN 'LOCAL TEMPORARY'
WHEN (c.relkind = 'r') THEN 'TABLE'
WHEN (c.relkind = 'v') THEN 'VIEW'
ELSE NULL::text
END AS table_type
FROM
pg_namespace nc,
pg_class c,
pg_user u
WHERE
(
(
(c.relnamespace = nc.oid)
AND
(u.usesysid = c.relowner)
)
AND
(
(c.relkind = 'r')
OR
(c.relkind = 'v')
)
)
AND c.relname =
SELECT
c.relname AS table_name,
a.attname AS name,
CASE
WHEN (co.conkey IS NULL) THEN 'false'
WHEN (a.attnum = ANY (co.conkey)) THEN 'true'
ELSE 'false'
END as primaryKey,
CASE
WHEN ad.adsrc LIKE 'nextval(%' THEN 'true'
ELSE 'false'
END as identity,
CASE
WHEN (a.attnotnull OR ((t.typtype = 'd') AND t.typnotnull)) THEN 'false'
ELSE 'true'
END AS nullable,
CASE
WHEN (t.typtype = 'd') THEN CASE
WHEN ((bt.typelem <> 0) AND (bt.typlen = -1)) THEN 'ARRAY'
WHEN (nbt.nspname = 'pg_catalog') THEN format_type(t.typbasetype, NULL)
ELSE 'USER-DEFINED'
END
ELSE CASE
WHEN ((t.typelem <> (0)::oid) AND (t.typlen = -1)) THEN 'ARRAY'
WHEN (nt.nspname = 'pg_catalog') THEN format_type(a.atttypid, NULL)
ELSE 'USER-DEFINED'
END
END AS dbDataType,
information_schema._pg_char_max_length(information_schema._pg_truetypid(a.*, t.*), information_schema._pg_truetypmod(a.*, t.*)) AS length,
ad.adsrc AS default
FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON ((a.attrelid = ad.adrelid) AND (a.attnum = ad.adnum))),
pg_class c LEFT JOIN pg_constraint co ON ((c.oid = co.conrelid) AND (co.contype = 'p')),
pg_namespace nc,
(
(
pg_type t
JOIN
pg_namespace nt
ON (t.typnamespace = nt.oid)
)
LEFT JOIN
(
pg_type bt
JOIN
pg_namespace nbt
ON (bt.typnamespace = nbt.oid)
)
ON (
(
(t.typtype = 'd')
AND
(t.typbasetype = bt.oid)
)
)
)
WHERE
(
(
(
(
(
(
(a.attrelid = c.oid)
AND
(a.atttypid = t.oid)
)
AND
(nc.oid = c.relnamespace)
)
AND
(a.attnum > 0)
)
AND
(NOT a.attisdropped)
)
AND
(
(c.relkind = 'r'::"char")
OR
(c.relkind = 'v'::"char")
)
)
)
AND
c.relname =
order by a.attnum