LightRAG/starter/migrations/003_drop_unused_tables.sql
2025-12-05 14:31:13 +08:00

63 lines
2.5 KiB
PL/PgSQL

-- ============================================================================
-- LightRAG Multi-Tenant Schema Migration - Drop Unused Tables
-- Version: 3.0.0
-- Date: December 4, 2025
-- Purpose: Remove empty "modern" tables that are not used by the storage engine
--
-- These tables were designed but never implemented in the storage engine.
-- All actual data storage uses LIGHTRAG_* tables with workspace column.
--
-- Usage:
-- PGPASSWORD=lightrag123 psql -h localhost -p 15432 -U lightrag -d lightrag_multitenant -f 003_drop_unused_tables.sql
-- ============================================================================
BEGIN;
-- Verify tables are empty (safety check)
DO $$
DECLARE
cnt INTEGER;
BEGIN
SELECT COUNT(*) INTO cnt FROM documents;
IF cnt > 0 THEN RAISE EXCEPTION 'documents table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM document_status;
IF cnt > 0 THEN RAISE EXCEPTION 'document_status table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM entities;
IF cnt > 0 THEN RAISE EXCEPTION 'entities table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM relations;
IF cnt > 0 THEN RAISE EXCEPTION 'relations table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM embeddings;
IF cnt > 0 THEN RAISE EXCEPTION 'embeddings table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM kv_storage;
IF cnt > 0 THEN RAISE EXCEPTION 'kv_storage table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM lightrag_tenants;
IF cnt > 0 THEN RAISE EXCEPTION 'lightrag_tenants table is not empty (% rows)', cnt; END IF;
SELECT COUNT(*) INTO cnt FROM lightrag_knowledge_bases;
IF cnt > 0 THEN RAISE EXCEPTION 'lightrag_knowledge_bases table is not empty (% rows)', cnt; END IF;
RAISE NOTICE 'All tables verified empty - safe to drop';
END $$;
-- Drop tables (in correct order due to FK dependencies)
DROP TABLE IF EXISTS embeddings CASCADE;
DROP TABLE IF EXISTS document_status CASCADE;
DROP TABLE IF EXISTS relations CASCADE;
DROP TABLE IF EXISTS entities CASCADE;
DROP TABLE IF EXISTS documents CASCADE;
DROP TABLE IF EXISTS kv_storage CASCADE;
DROP TABLE IF EXISTS lightrag_knowledge_bases CASCADE;
DROP TABLE IF EXISTS lightrag_tenants CASCADE;
-- Record migration
INSERT INTO schema_migrations (version, description, status, applied_at)
VALUES ('3.0.0', 'Drop unused modern tables', 'applied', NOW())
ON CONFLICT (version) DO UPDATE SET status = 'applied', applied_at = NOW();
COMMIT;