chore(tradein/db): снести DEPRECATED-колонку listings.ceiling_height #2799

Merged
bot-backend merged 1 commit from chore/2699-drop-ceiling-height into main 2026-08-09 17:51:16 +00:00

1 commit

Author SHA1 Message Date
a74d10ad23 chore(tradein/db): снести DEPRECATED-колонку listings.ceiling_height
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 3m54s
Хвост #2699. Миграция 238 свела высоту потолков к канону ceiling_height_m и
намеренно оставила старую колонку: «сначала прод должен подтвердить, что
колонку никто не пишет и не читает». Подтверждение получено.

Критерий «писателей нет» был записан ДО работы: count(ceiling_height) обязан
остаться 8552. Прод: 8552 07.08 (сразу после 238), 8552 09.08 16:54 UTC,
8552 в 16:57. Двое суток без единой записи.

Контроль, что замер не мёртвый (иначе «ничего не изменилось» одинаково
выглядит и при остановленном скрейпинге): за те же 2.5 минуты между двумя
замерами count(ceiling_height_m) вырос 16133 → 16147, а last_seen_at строк с
непустым ceiling_height обновлялся в минуту замера. UPDATE по этим самым
строкам идут прямо сейчас и сносимую колонку не трогают.

Потребители сверены на origin/main (не в рабочей копии): обращений к КОЛОНКЕ
не осталось. В выдаче grep только имена полей датаклассов enrichment'ов,
имя бинд-параметра `:ceiling_height`, который присваивается ceiling_height_m
(yandex/detail.py:600), комментарии с историей и тесты, утверждающие
отсутствие колонки в SQL писателей. Фронтовых вхождений нет.

Зависимости в схеме проверены на проде, все нули: pg_depend по атрибуту,
вьюхи/матвьюхи, индексы, CHECK, функции, тела обоих триггеров listings,
publication column lists, foreign tables в gendesign-БД. CASCADE не нужен и
не добавлен — в этом продукте DROP ... CASCADE уже терял гранты FDW-юзеру.

Потери данных нет: строк «ceiling_height есть, канона нет» — 0; заполнены обе
у 8552 строк, расхождений 0.

lock_timeout обязателен и здесь дороже, чем у 250: удержание ACCESS EXCLUSIVE
дёшево (DROP COLUMN не переписывает heap, только attisdropped в каталоге — в
listings уже 4 таких пенька), но ожидание идёт по таблице в 19 GB, по которой
постоянно пишет скрейпинг.

Обе миграции прогнаны на одноразовом PostgreSQL 16.4 (postgis/postgis:16-3.4,
--network none) на минимальном слепке схемы: применяются, идемпотентны при
повторном прогоне, дубль индекса снят, колонка снята, ceiling_height_m и оба
COMMENT на месте.

Refs #2699
2026-08-09 22:16:28 +05:00