fix(tradein): 030 — UNIQUE constraint on avito_imv_evaluations.cache_key
Hotfix для unblock PR #452 (Stage 3 IMV estimator integration). Миграция 018 (Stage 1) создала только non-unique imv_cache_key_idx — но save_imv_evaluation использует ON CONFLICT (cache_key) DO UPDATE, что требует UNIQUE/exclusion constraint, иначе: ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification Этот PR: - DELETE дублей по cache_key (защитно, на свежей БД no-op) - CREATE UNIQUE INDEX IF NOT EXISTS imv_cache_key_uniq_idx ON avito_imv_evaluations(cache_key) Idempotent: повторный apply — NOTICE, без ошибок. Без CONCURRENTLY — таблица свежая (cache_key никогда не writev до PR #452). Reviewer: deep-code-reviewer on PR #452.
This commit is contained in:
parent
eb4764f75a
commit
1b6461eb15
1 changed files with 26 additions and 0 deletions
|
|
@ -0,0 +1,26 @@
|
|||
-- 030_avito_imv_cache_key_unique.sql
|
||||
-- Hotfix: добавить UNIQUE constraint на avito_imv_evaluations.cache_key
|
||||
--
|
||||
-- Stage 1 миграция 018 создала только non-unique `imv_cache_key_idx` —
|
||||
-- но `save_imv_evaluation` использует `ON CONFLICT (cache_key) DO UPDATE`,
|
||||
-- что требует UNIQUE/exclusion constraint, иначе runtime error:
|
||||
-- ERROR: there is no unique or exclusion constraint matching the ON CONFLICT specification
|
||||
--
|
||||
-- Закрывает blocker reviewer'а на PR #452 (Stage 3 IMV estimator integration).
|
||||
--
|
||||
-- Apply after: 018_avito_imv_evaluations.sql (Stage 1)
|
||||
-- Required by: estimator IMV cache save flow (Stage 3, PR #452)
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- Защитная очистка дубликатов по cache_key (если данные уже наливались).
|
||||
-- На свежей БД (cache_key никогда не writev до этого PR) — no-op.
|
||||
DELETE FROM avito_imv_evaluations a
|
||||
USING avito_imv_evaluations b
|
||||
WHERE a.id < b.id AND a.cache_key = b.cache_key;
|
||||
|
||||
-- Сам UNIQUE constraint через индекс (CONCURRENTLY не нужен — таблица свежая/пустая).
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS imv_cache_key_uniq_idx
|
||||
ON avito_imv_evaluations (cache_key);
|
||||
|
||||
COMMIT;
|
||||
Loading…
Add table
Reference in a new issue