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

153 lines
6.1 KiB
PL/PgSQL

-- ============================================================================
-- LightRAG Multi-Tenant Schema Migration - ROLLBACK
-- Version: 2.0.0
-- Date: December 4, 2025
-- Purpose: Rollback the FK infrastructure migration
--
-- IMPORTANT: This will remove generated columns, triggers, and indexes.
-- The original workspace column and all data remain intact.
--
-- Usage:
-- PGPASSWORD=lightrag123 psql -h localhost -p 15432 -U lightrag -d lightrag_multitenant -f rollback_v2.0.0.sql
-- ============================================================================
BEGIN;
\echo '============================================'
\echo 'Starting Rollback of Migration 2.0.0'
\echo '============================================'
-- ============================================================================
-- STEP 1: Drop triggers
-- ============================================================================
DROP TRIGGER IF EXISTS trg_sync_tenant_doc_full ON lightrag_doc_full;
DROP TRIGGER IF EXISTS trg_sync_tenant_doc_chunks ON lightrag_doc_chunks;
DROP TRIGGER IF EXISTS trg_sync_tenant_doc_status ON lightrag_doc_status;
DROP TRIGGER IF EXISTS trg_sync_tenant_vdb_chunks ON lightrag_vdb_chunks;
DROP TRIGGER IF EXISTS trg_sync_tenant_vdb_entity ON lightrag_vdb_entity;
DROP TRIGGER IF EXISTS trg_sync_tenant_vdb_relation ON lightrag_vdb_relation;
DROP TRIGGER IF EXISTS trg_sync_tenant_full_entities ON lightrag_full_entities;
DROP TRIGGER IF EXISTS trg_sync_tenant_full_relations ON lightrag_full_relations;
DROP TRIGGER IF EXISTS trg_sync_tenant_llm_cache ON lightrag_llm_cache;
\echo 'Dropped all sync triggers'
-- ============================================================================
-- STEP 2: Drop trigger function
-- ============================================================================
DROP FUNCTION IF EXISTS sync_tenant_from_workspace();
\echo 'Dropped sync_tenant_from_workspace function'
-- ============================================================================
-- STEP 3: Drop indexes
-- ============================================================================
DROP INDEX IF EXISTS idx_lightrag_doc_full_tenant;
DROP INDEX IF EXISTS idx_lightrag_doc_full_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_doc_chunks_tenant;
DROP INDEX IF EXISTS idx_lightrag_doc_chunks_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_doc_status_tenant;
DROP INDEX IF EXISTS idx_lightrag_doc_status_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_vdb_chunks_tenant;
DROP INDEX IF EXISTS idx_lightrag_vdb_chunks_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_vdb_entity_tenant;
DROP INDEX IF EXISTS idx_lightrag_vdb_entity_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_vdb_relation_tenant;
DROP INDEX IF EXISTS idx_lightrag_vdb_relation_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_full_entities_tenant;
DROP INDEX IF EXISTS idx_lightrag_full_entities_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_full_relations_tenant;
DROP INDEX IF EXISTS idx_lightrag_full_relations_tenant_kb;
DROP INDEX IF EXISTS idx_lightrag_llm_cache_tenant;
DROP INDEX IF EXISTS idx_lightrag_llm_cache_tenant_kb;
\echo 'Dropped all tenant/kb indexes'
-- ============================================================================
-- STEP 4: Drop generated columns from all tables
-- ============================================================================
-- LIGHTRAG_DOC_FULL
ALTER TABLE lightrag_doc_full DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_doc_full DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_DOC_CHUNKS
ALTER TABLE lightrag_doc_chunks DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_doc_chunks DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_DOC_STATUS
ALTER TABLE lightrag_doc_status DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_doc_status DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_VDB_CHUNKS
ALTER TABLE lightrag_vdb_chunks DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_vdb_chunks DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_VDB_ENTITY
ALTER TABLE lightrag_vdb_entity DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_vdb_entity DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_VDB_RELATION
ALTER TABLE lightrag_vdb_relation DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_vdb_relation DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_FULL_ENTITIES
ALTER TABLE lightrag_full_entities DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_full_entities DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_FULL_RELATIONS
ALTER TABLE lightrag_full_relations DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_full_relations DROP COLUMN IF EXISTS kb_id;
-- LIGHTRAG_LLM_CACHE
ALTER TABLE lightrag_llm_cache DROP COLUMN IF EXISTS tenant_id;
ALTER TABLE lightrag_llm_cache DROP COLUMN IF EXISTS kb_id;
\echo 'Dropped all generated columns'
-- ============================================================================
-- STEP 5: Update migration status
-- ============================================================================
UPDATE schema_migrations
SET status = 'rolled_back', applied_at = NOW()
WHERE version = '2.0.0';
\echo 'Updated migration status to rolled_back'
COMMIT;
-- ============================================================================
-- STEP 6: Analyze tables
-- ============================================================================
ANALYZE lightrag_doc_full;
ANALYZE lightrag_doc_chunks;
ANALYZE lightrag_doc_status;
ANALYZE lightrag_vdb_chunks;
ANALYZE lightrag_vdb_entity;
ANALYZE lightrag_vdb_relation;
ANALYZE lightrag_full_entities;
ANALYZE lightrag_full_relations;
ANALYZE lightrag_llm_cache;
\echo ''
\echo '============================================'
\echo 'Rollback of Migration 2.0.0 Complete!'
\echo '============================================'
\echo ''
\echo 'The following were removed:'
\echo ' - Generated columns (tenant_id, kb_id) from all LIGHTRAG_* tables'
\echo ' - Indexes on tenant_id and kb_id columns'
\echo ' - Auto-sync triggers and function'
\echo ''
\echo 'The following remain intact:'
\echo ' - All original data in LIGHTRAG_* tables'
\echo ' - workspace column (unchanged)'
\echo ' - tenants and knowledge_bases tables'
\echo ''
\echo 'NOTE: Tenants/KBs that were auto-created are NOT deleted.'
\echo ' Delete them manually if needed.'