Без дополнительных исследований я предлагаю следующий запрос
SELECT n.nspname as "Schema",
c.relname as "Name",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','S','')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
Это запрос, который psql использует для отображения содержимого команды \d
. Если результат этого запроса ничего не значит, то база данных не имеет таблиц, представлений, ... Я предполагаю, что пустая база данных является признаком вновь созданной базы данных. Обратите внимание, что результат запроса выше исключает pg_catalog
, поэтому изменения в настройках и т.п. не будут возвращены.