1.5.1
Fixed (#393)
- Опечатка в PG-миграции 108 (
108_usage_reasoning_tokens.up.sql:7):ALTER TABLE llm_request_log ADD COLUMN IF EXISTS ...вместоIF NOT EXISTS— невалидный синтаксис PostgreSQL (послеIFграмматика ждётNOT), из-за чего миграция физически не могла пройти ни на одном PG-инстансе. На прод-инстансе, обновлявшемся с v0.167.51 (схема 107) на v1.5.0, это обрушило миграции на старте: ошибкаsyntax error at or near "EXISTS" line 7, column 43(словоEXISTSв строке 7 начинается ровно с 43-й колонки). Миграция становится идемпотентной; правка уже shipped-файла безопасна — golang-migrate контрольные суммы не хранит, а примениться успешно она нигде не могла. runMigrationsPG-стора (postgres.go) больше не глотает ошибкуm.Up(): прежде WARN +m.Force(version)помечали упавшую миграцию применённой, и процесс поднимался со схемой, отставшей от кода, — каждый SELECT поagents/modelsпадал SQLSTATE 42703 (нет колонок 109–116),GET /api/v1/agentsотвечал 500 «failed to list agents», агент «пропадал». Теперь ошибка миграций фатальна для старта — как у SQLite-стора: инцидент виден сразу в journalctl, а не маскируется под работающий сервер. Восстановление пострадавшего инстанса (все миграции 108–116 идемпотентны): либо вручную добавить две колонки из 108 и перезапустить сервис (догонятся 109–116), либо после v1.5.1 выставитьschema_migrationsна 107 и обновиться штатно.- Регрессионный тест
TestPGMigrationsNoAddColumnIfExists(migrations_test.go): во всехpgmigrations/*.sqlзапрещён паттернADD COLUMN IF EXISTSбезNOT(ловит именно этот класс опечатки до попадания в PG-рантайм; корректноеIF NOT EXISTSи валидноеDROP COLUMN IF EXISTSне матчатся).