SummerProject2026/sql/00_read_only_connection_check.sql
2026-07-15 17:55:53 -06:00

40 lines
1.1 KiB
SQL

-- Run the whole file when connected to the countydata database.
-- The explicit read-only transaction protects against accidental writes.
BEGIN TRANSACTION READ ONLY;
SELECT
current_database() AS database_name,
current_user AS database_user,
current_setting('transaction_read_only') AS transaction_read_only,
version() AS postgres_version;
SELECT
ssl,
version AS tls_version,
cipher,
bits
FROM pg_stat_ssl
WHERE pid = pg_backend_pid();
SELECT
n.nspname AS schema_name,
c.relname AS relation_name,
CASE c.relkind
WHEN 'r' THEN 'table'
WHEN 'p' THEN 'partitioned table'
WHEN 'v' THEN 'view'
WHEN 'm' THEN 'materialized view'
WHEN 'f' THEN 'foreign table'
ELSE c.relkind::text
END AS relation_type,
COALESCE(s.n_live_tup, c.reltuples)::bigint AS estimated_rows
FROM pg_class AS c
JOIN pg_namespace AS n ON n.oid = c.relnamespace
LEFT JOIN pg_stat_user_tables AS s ON s.relid = c.oid
WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f')
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
AND n.nspname NOT LIKE 'pg_toast%'
ORDER BY n.nspname, c.relname;
ROLLBACK;