35 lines
2.9 KiB
SQL
35 lines
2.9 KiB
SQL
\set ON_ERROR_STOP on
|
|||
|
|
BEGIN ISOLATION LEVEL REPEATABLE READ READ ONLY;
|
||
|
|
SET LOCAL statement_timeout='30s';
|
||
|
|
SET LOCAL lock_timeout='5s';
|
||
|
|
SET LOCAL timezone='UTC';
|
||
|
|
SET LOCAL search_path=pg_catalog,sys_catalog,public,iotlocks;
|
||
|
|
SELECT current_database() IN ('railwaysystem_fusion_qa_20261013','railwaysystem_fusion_restore_round5v4','railwaysystem_fusion_recovery_round5v4') AS allowed_database
|
||
|
|
\gset
|
||
|
|
\if :allowed_database
|
||
|
|
\else
|
||
|
|
\echo REFUSING_UNAPPROVED_DATABASE
|
||
|
|
\quit 3
|
||
|
|
\endif
|
||
|
|
SELECT 'IDENTITY',current_database(),current_user,version();
|
||
|
|
SELECT 'SCHEMA',nspname FROM pg_namespace WHERE nspname IN ('public','iotlocks') ORDER BY nspname;
|
||
|
|
SELECT 'TABLE',schemaname,tablename FROM pg_tables WHERE schemaname IN ('public','iotlocks') ORDER BY schemaname,tablename;
|
||
|
|
SELECT format('SELECT %L,count(*),md5(coalesce(string_agg(row_to_json(t)::text,%L ORDER BY row_to_json(t)::text),%L)) FROM %I.%I t;',concat('DATA:',schemaname,'.',tablename),'','',schemaname,tablename)
|
||
|
|
FROM pg_tables WHERE schemaname IN ('public','iotlocks') ORDER BY schemaname,tablename
|
||
|
|
\gexec
|
||
|
|
SELECT 'LEGACY_DATA:lock_auth',count(*),md5(coalesce(string_agg((to_jsonb(t)-ARRAY['execution_mode','environment_id','intent_key','intent_version','execution_state','intent_action','intent_at'])::text,'' ORDER BY auth_id),'')) FROM iotlocks.lock_auth t;
|
||
|
|
SELECT 'LEGACY_DATA:lock_command',count(*),md5(coalesce(string_agg((to_jsonb(t)-ARRAY['execution_mode','environment_id','intent_key','intent_version','execution_state','intent_action','intent_at','device_sn','attempt_started_at'])::text,'' ORDER BY command_id),'')) FROM iotlocks.lock_command t;
|
||
|
|
SELECT 'COLUMN',table_schema,table_name,column_name,ordinal_position,data_type,is_nullable,coalesce(column_default,''),coalesce(character_maximum_length::text,'')
|
||
|
|
FROM information_schema.columns WHERE table_schema IN ('public','iotlocks') ORDER BY table_schema,table_name,ordinal_position;
|
||
|
|
SELECT 'INDEX',schemaname,tablename,indexname,indexdef FROM pg_indexes WHERE schemaname IN ('public','iotlocks') ORDER BY schemaname,tablename,indexname;
|
||
|
|
SELECT 'CONSTRAINT',n.nspname,t.relname,c.conname,c.contype,pg_get_constraintdef(c.oid)
|
||
|
|
FROM pg_constraint c JOIN pg_class t ON c.conrelid=t.oid JOIN pg_namespace n ON n.oid=t.relnamespace
|
||
|
|
WHERE n.nspname IN ('public','iotlocks') ORDER BY n.nspname,t.relname,c.conname;
|
||
|
|
SELECT 'TRIGGER',n.nspname,t.relname,g.tgname,pg_get_triggerdef(g.oid)
|
||
|
|
FROM pg_trigger g JOIN pg_class t ON t.oid=g.tgrelid JOIN pg_namespace n ON n.oid=t.relnamespace
|
||
|
|
WHERE n.nspname IN ('public','iotlocks') AND NOT g.tgisinternal ORDER BY n.nspname,t.relname,g.tgname;
|
||
|
|
SELECT 'SEQUENCE',schemaname,sequencename,start_value,min_value,max_value,increment_by,cycle,cache_size,last_value
|
||
|
|
FROM pg_sequences WHERE schemaname IN ('public','iotlocks') ORDER BY schemaname,sequencename;
|
||
|
|
SELECT 'EXTENSION',extname,extversion FROM pg_extension ORDER BY extname;
|
||
|
|
SELECT 'OWNER',schemaname,tablename,tableowner FROM pg_tables WHERE schemaname IN ('public','iotlocks') ORDER BY schemaname,tablename;
|
||
|
|
ROLLBACK;
|