pub const COLUMNS: &str = "\
SELECT c.relname AS table_name, \
a.attname AS column_name, \
format_type(a.atttypid, a.atttypmod) AS sql_type, \
NOT a.attnotnull AS nullable, \
pg_get_expr(d.adbin, d.adrelid) AS default_value, \
(a.attidentity <> '' OR pg_get_expr(d.adbin, d.adrelid) LIKE 'nextval%') AS auto_increment \
FROM pg_attribute a \
JOIN pg_class c ON c.oid = a.attrelid \
JOIN pg_namespace n ON n.oid = c.relnamespace \
LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum \
WHERE n.nspname = $1 AND c.relkind = 'r' AND a.attnum > 0 AND NOT a.attisdropped \
ORDER BY c.relname, a.attnum";
pub const PRIMARY_KEYS: &str = "\
SELECT c.relname AS table_name, a.attname AS column_name, \
array_position(i.indkey, a.attnum) AS position \
FROM pg_index i \
JOIN pg_class c ON c.oid = i.indrelid \
JOIN pg_namespace n ON n.oid = c.relnamespace \
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) \
WHERE n.nspname = $1 AND i.indisprimary \
ORDER BY c.relname, position";