mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
cb003116a5
PL/pgSQL pre-validates column/table references in static SQL statements inside DO blocks before evaluating IF/RETURN guards. This caused migrations 0010-0061 to fail on fresh databases where the canonical schema uses `providers`/`provider_id` instead of `llm_providers`/ `llm_provider_id`. Wrap all SQL that references potentially non-existent old schema objects (llm_providers, llm_provider_id, tts_providers, tts_models, etc.) in EXECUTE strings so they are only parsed at runtime when actually reached.
19 lines
834 B
SQL
19 lines
834 B
SQL
-- 0013_model_id_unique_per_provider
|
|
-- Change model_id uniqueness from global to per provider.
|
|
-- NOTE: On fresh databases the canonical schema already has the correct constraint.
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'models_model_id_unique') THEN
|
|
ALTER TABLE models DROP CONSTRAINT models_model_id_unique;
|
|
END IF;
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'models_provider_model_id_unique')
|
|
AND NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'models_provider_id_model_id_unique') THEN
|
|
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'models' AND column_name = 'llm_provider_id') THEN
|
|
EXECUTE 'ALTER TABLE models ADD CONSTRAINT models_provider_model_id_unique UNIQUE (llm_provider_id, model_id)';
|
|
END IF;
|
|
END IF;
|
|
END
|
|
$$;
|