Дозакрыты находки ревью по слиянию сущностей
- Правило покрытия получило второй разряд (условный, как у точек), запрет вырождения формы и счёт содержательных элементов ряда: скелет из скаляров и ряд из null больше не затирают маршрут. Победитель внутри доставки стал функцией множества версий — общим помощником с точками, — а провенанс поднимается и при совпавшем хеше, иначе отложенная доставка возвращала витрину к прежнему содержимому. - Одно поле не того типа больше не уносит сущность, а пропуски видны в учётной записи доставки (миграция 00008, NULL = «не измерялось»); каноническая форма считается один раз и вне транзакции; откат бинаря поверх новой схемы отказывает на старте; текст ошибки разбора не несёт значений из тела. - Ревью кода профилем deep (девять проходов) нашло две регрессии и обе закрыты: безусловный второй разряд запирал законный досчёт навсегда, а выбор победителя был квадратичен по числу присланных версий одного ключа.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
-- +goose Up
|
||||
-- Сколько сущностей с собственным `id` разбор этой доставки пропустил: без
|
||||
-- `id`, с непомерно длинным `id`, с неразбираемой меткой времени или не
|
||||
-- разобравшихся как объект.
|
||||
--
|
||||
-- Заводится не ради отчётности. Ретеншен сырого архива решает «что потеряется,
|
||||
-- если тело удалить», ПО БАЗЕ, и до этой колонки получал ответ «терять нечего»
|
||||
-- ровно там, где потеряна тренировка с маршрутом: сущность в витрину не попала,
|
||||
-- список непокрытых секций пуст, статус `parsed`. Лог здесь не годится — он
|
||||
-- ротируется, а решение об удалении тела необратимо.
|
||||
--
|
||||
-- БЕЗ DEFAULT намеренно: NULL означает «этот разбор пропусков не считал», и это
|
||||
-- НЕ то же, что ноль. Подстановка нуля объявила бы весь исторический журнал
|
||||
-- проверенным — то самое ложное «терять нечего», ради которого колонка и
|
||||
-- заводится, только теперь с видом измерения. Читатель, принимающий по
|
||||
-- счётчику необратимое решение, обязан трактовать NULL как «не удалять».
|
||||
--
|
||||
-- Data-миграции при этом нет, и это сказано числом: прогон всех 118 тел живого
|
||||
-- архива через разбор даёт `noID=0 noTime=0 malformed=0`, то есть корпус
|
||||
-- пропусков не производил и пересворачивать нечего. «Ничего не потерял по
|
||||
-- замеру» и «проверено этим разбором» — разные утверждения, поэтому колонка
|
||||
-- всё равно остаётся NULL до первой пересвёртки.
|
||||
--
|
||||
-- Статус разбора от пропуска сущности не зависит: `partial` определён списком
|
||||
-- непокрытых секций, и второй источник истины для него завёл бы расхождение
|
||||
-- читателей, которое учёт частичного разбора запрещает явно.
|
||||
ALTER TABLE delivery ADD COLUMN skipped_entities INTEGER;
|
||||
|
||||
-- +goose Down
|
||||
ALTER TABLE delivery DROP COLUMN skipped_entities;
|
||||
Reference in New Issue
Block a user