fix(sql): wrap 73_complexes_master.sql in BEGIN/COMMIT (atomic apply) (#125)
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). Co-authored-by: lekss361 <claudestars@proton.me>
This commit is contained in:
parent
a3e7d21e3a
commit
8a266502a1
1 changed files with 4 additions and 0 deletions
|
|
@ -27,6 +27,8 @@
|
|||
--
|
||||
-- Идемпотентно через ON CONFLICT.
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- ── 1. complexes (canonical master) ─────────────────────────────────────────
|
||||
|
||||
CREATE TABLE IF NOT EXISTS complexes (
|
||||
|
|
@ -316,3 +318,5 @@ SELECT
|
|||
COMMENT ON VIEW v_complex_with_objective IS
|
||||
'ЖК + агрегаты Objective per-flat: sold count/pct, средняя цена, '
|
||||
'диапазон reg_date. NULL во всех колонках = ЖК без Objective-источника.';
|
||||
|
||||
COMMIT;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue