buster/api/migrations/2025-04-23-130230_backfill_.../down.sql

47 lines
1.7 KiB
PL/PgSQL

-- This file should undo anything in `up.sql`
DO $$
DECLARE
ds_id UUID;
schema_name TEXT;
drop_schema_sql TEXT;
trigger_name_insert TEXT;
trigger_name_update TEXT;
input_fn_name TEXT;
index_name_filter TEXT;
index_name_unique TEXT;
index_name_hnsw TEXT;
BEGIN
RAISE NOTICE 'Starting rollback of stored value schemas for existing data sources...';
FOR ds_id IN
SELECT id FROM public.data_sources WHERE deleted_at IS NULL -- Assuming we only created for non-deleted
LOOP
schema_name := format('ds_%s', replace(ds_id::text, '-', '_'));
RAISE NOTICE 'Processing data_source_id: %, Dropping schema: %', ds_id, schema_name;
-- Drop Schema (CASCADE will remove the table and index within it)
drop_schema_sql := format('DROP SCHEMA IF EXISTS %I CASCADE', schema_name);
RAISE NOTICE 'Executing: %', drop_schema_sql;
EXECUTE drop_schema_sql;
RAISE NOTICE 'Dropping HNSW index idx_embedding_hnsw_% on %.searchable_column_values', schema_name, schema_name;
EXECUTE format('DROP INDEX IF EXISTS %I.%I', schema_name, index_name_hnsw);
-- Drop the unique value index
index_name_unique := 'idx_unique_value_' || schema_name;
RAISE NOTICE 'Dropping unique value index % on %.searchable_column_values', index_name_unique, schema_name;
EXECUTE format('DROP INDEX IF EXISTS %I.%I', schema_name, index_name_unique);
RAISE NOTICE 'Finished rollback for schema: %', schema_name;
END LOOP;
RAISE NOTICE 'Finished rollback of stored value schemas.';
END;
$$ LANGUAGE plpgsql;
-- Note: Rolling back does not remove the 'halfvec' extension itself.
-- It only removes the schemas created by the corresponding up.sql.