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