Per code review audit (May 14): файл без transaction wrapper — backfill CTE INSERTs + view recreations executed как individual auto-commit statements. Mid-file crash → orphan rows в complexes/complex_sources с no rollback path. ## Fix `BEGIN;` после header comments (line 31, перед section 1). `COMMIT;` в конце файла после последнего COMMENT ON VIEW. Wraps все 6 секций atomically: 1-2: CREATE TABLE + CREATE INDEX для complexes + complex_sources 3-5: 3 backfill CTE INSERTs с ON CONFLICT DO NOTHING 6: DROP VIEW IF EXISTS + CREATE VIEW + COMMENT для v_complex_full ## No CONCURRENTLY split needed Проверил — все 10 indexes используют plain `CREATE INDEX IF NOT EXISTS` без CONCURRENTLY keyword. Безопасно обернуть в одну tx. ## Idempotency preserved Все existing guards остаются: - CREATE TABLE/INDEX IF NOT EXISTS - ON CONFLICT (source, source_id) DO NOTHING - DROP VIEW IF EXISTS Re-running file двукратно — safe. ## Vault `fixes/Migration_73_Complexes_Atomic_May14.md` — created (status: resolved). |
||
|---|---|---|
| .. | ||
| sql | ||
| playwright_state.json | ||