mirror of
https://github.com/postgres/postgres.git
synced 2025-05-30 00:02:11 -04:00
By changing the parameter to regclass you can pass any parameter of the following types to it: text, oid, regclass; and there will be an automatic cast. More user freindly than accepting text.
92 lines
3.1 KiB
SQL
92 lines
3.1 KiB
SQL
-- ===============================================
|
|
-- 1. Verify TDE Tables Exist
|
|
-- ===============================================
|
|
SELECT table_name
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'public'
|
|
AND table_name IN ('tde_table', 'tde_child', 'audit_log', 'part_table', 'part1')
|
|
ORDER BY table_name;
|
|
|
|
-- ===============================================
|
|
-- 2. Verify Columns of Tables
|
|
-- ===============================================
|
|
SELECT column_name, data_type, table_name
|
|
FROM information_schema.columns
|
|
WHERE table_name IN ('tde_table', 'tde_child', 'audit_log', 'part_table', 'part1')
|
|
ORDER BY table_name, ordinal_position;
|
|
|
|
-- ===============================================
|
|
-- 3. Verify Constraints Exist
|
|
-- ===============================================
|
|
SELECT conname, conrelid::regclass, contype
|
|
FROM pg_constraint
|
|
WHERE connamespace = 'public'::regnamespace
|
|
AND conrelid::regclass::text IN ('tde_table', 'tde_child')
|
|
ORDER BY conrelid;
|
|
|
|
-- ===============================================
|
|
-- 4. Verify Index Exists
|
|
-- ===============================================
|
|
SELECT indexname, tablename
|
|
FROM pg_indexes
|
|
WHERE schemaname = 'public' AND tablename = 'tde_table';
|
|
|
|
-- ===============================================
|
|
-- 5. Verify Functions Exist
|
|
-- ===============================================
|
|
SELECT proname, prorettype::regtype
|
|
FROM pg_proc
|
|
JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid
|
|
WHERE nspname = 'public'
|
|
AND proname = 'get_tde_data';
|
|
|
|
-- ===============================================
|
|
-- 6. Verify Function Output
|
|
-- ===============================================
|
|
SELECT * FROM get_tde_data();
|
|
|
|
-- ===============================================
|
|
-- 7. Verify Partitioning
|
|
-- ===============================================
|
|
SELECT inhrelid::regclass AS partition_name, inhparent::regclass AS parent_table
|
|
FROM pg_inherits
|
|
WHERE inhparent::regclass::text = 'part_table'
|
|
ORDER BY inhparent;
|
|
|
|
-- ===============================================
|
|
-- 8. Verify Triggers Exist
|
|
-- ===============================================
|
|
SELECT tgname, relname
|
|
FROM pg_trigger
|
|
JOIN pg_class ON pg_trigger.tgrelid = pg_class.oid
|
|
WHERE NOT tgisinternal AND relname = 'tde_table';
|
|
|
|
-- ===============================================
|
|
-- 9. Verify Data Integrity
|
|
-- ===============================================
|
|
-- Check data counts
|
|
SELECT 'tde_table' AS table_name, COUNT(*) FROM tde_table
|
|
UNION ALL
|
|
SELECT 'tde_child', COUNT(*) FROM tde_child
|
|
UNION ALL
|
|
SELECT 'audit_log', COUNT(*) FROM audit_log
|
|
UNION ALL
|
|
SELECT 'part_table', COUNT(*) FROM part_table;
|
|
|
|
-- Ensure tde_child references valid parent_id
|
|
SELECT tde_child.id, tde_child.parent_id
|
|
FROM tde_child
|
|
LEFT JOIN tde_table ON tde_child.parent_id = tde_table.id
|
|
WHERE tde_table.id IS NULL;
|
|
|
|
-- ===============================================
|
|
-- 10. Verify tables are encrypted
|
|
-- ===============================================
|
|
-- Verify all tables exist and are encrypted
|
|
SELECT tablename, pg_tde_is_encrypted(tablename::regclass) AS is_encrypted
|
|
FROM pg_tables
|
|
WHERE schemaname = 'public'
|
|
AND tablename IN ('tde_table', 'tde_child', 'part1','part_table')
|
|
ORDER BY tablename;
|
|
|