-- Партиции rosreestr_deals на Q2–Q4 2026 (#2998). -- -- Почему это понадобилось. Схема 01_schema_rosreestr_deals.sql создавала партиции -- списком «2024 Q3 — 2026 Q1» — дальше этого горизонта таблица ничего не знала, и -- никакой механизм новые партиции не создаёт. Q2 2026 опубликован Росреестром -- 10.07, poll заметил его 14.08, а загрузка упёрлась бы в -- ERROR: no partition of relation "rosreestr_deals" found for row -- DETAIL: Partition key of the failing row contains (period_start_date) = (2026-04-01) -- — ровно это и случилось при первой попытке загрузить 21.08. То есть даже оператор, -- запустив 02_load_all_quarters.sh по подсказке poll, получил бы отказ. -- -- Создаём с запасом на три квартала вперёд, чтобы каждый новый квартал не начинался -- с этой же ошибки. Q1 2027 и далее — следующая такая же миграция (или автосоздание, -- если до него дойдут руки; пока его нет нигде — проверено grep'ом по app/ и data/sql/). -- -- Индексы НЕ перечисляем: партиции наследуют четыре индекса родителя автоматически -- (проверено по rosreestr_deals_2026q1: pkey(id, period_start_date), doc_type partial, -- realestate_type_code, (region_code, quarter_cad_number)). -- -- Range FROM inclusive, TO exclusive — [start_q, start_next_q). Идемпотентно. SET LOCAL lock_timeout = '5s'; CREATE TABLE IF NOT EXISTS rosreestr_deals_2026q2 PARTITION OF rosreestr_deals FOR VALUES FROM ('2026-04-01') TO ('2026-07-01'); CREATE TABLE IF NOT EXISTS rosreestr_deals_2026q3 PARTITION OF rosreestr_deals FOR VALUES FROM ('2026-07-01') TO ('2026-10-01'); CREATE TABLE IF NOT EXISTS rosreestr_deals_2026q4 PARTITION OF rosreestr_deals FOR VALUES FROM ('2026-10-01') TO ('2027-01-01');