Repository navigation
build: upgrade postgres to v4 - #254
Merged
Merged
Conversation
Что: драйвер postgres (postgres.js) ^3.4.9 -> ^4.1.0 в apps/dokploy и packages/server, корневой override >=3.4.9 <4.0.0 -> >=4.1.0 <5.0.0.
Зачем: через этот драйвер drizzle-orm ходит в базу самой панели, миграции и сброс базы. 4.0 переписал пул, соединение и протокол под тем же API; 4.1 добавил query_timeout, cancel_timeout и исправил зависания отменённых запросов, переподключение listen, чтение PGSSLMODE и sslrootcert из url, разбор FATAL-ошибок, а кэш подготовленных запросов больше не держит их строки и параметры.
Риски: главное изменение 4.0 - тип параметра выбирает сервер (infer: false), и drizzle подменяет внутренние parsers/serializers клиента для дат, JSON и интервалов. Проверено сравнением на настоящем Postgres 18 через drizzle 0.45.4 под Node 26 и Bun 1.4.4: вставка и выборка всех типов колонок схемы (boolean, integer, bigint, jsonb, json, text[], timestamp строкой и датой, date, interval, enum), условия по boolean, дате, enum и IN, update с датой и JSON, сырой sql, транзакция и откат - 19 из 19 одинаковы на 3.4.9 и 4.1.0, включая одинаковые ошибки. Форк сам вызывает только postgres(url, { idle_timeout | max }) и .end(); sql.array, ручные begin и reserve не используются. Пакет теперь только ESM; панель на Bun, Node 26 загружает его через require(esm).
Проверки на Linux: bun install, bun audit --audit-level=moderate, server:build и typecheck проходят; apps/dokploy/migration.ts под bun на чистом Postgres 18.6: все 219 миграций, 81 таблица, повторный запуск проходит; unit-тесты: 6238 прошли, 4 упали в трёх файлах, и каждый из них так же падает на базовой ветке без этого изменения.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем
postgres(postgres.js) — драйвер, через который drizzle-orm ходит в базу самой панели, а также миграции (apps/dokploy/migration.ts,server/db/migration.ts) и сброс базы. Форк сидел на 3.4.9, последняя версия 4.1.0.Что даёт новая версия:
query_timeoutиcancel_timeout, отменённый запрос больше не может зависнуть навсегда,listenпереподключается и после неудачной первой попытки.PGSSLMODEиsslrootcertиз url, а FATAL-ошибки от пулеров вроде PgBouncer теперь распознаются.Что изменилось
postgres^3.4.9→^4.1.0вapps/dokploy/package.jsonиpackages/server/package.json.>=3.4.9 <4.0.0→>=4.1.0 <5.0.0.postgres(url, { idle_timeout | max })и.end(), всё остальное идёт через drizzle-orm 0.45.4 (его peer-зависимостьpostgres >=3).sql.array(), убранный в 4.0, ручныеbeginиreserveфорк не использует.require(esm).Главный риск и как он проверен
В 4.0 тип каждого параметра выбирает сервер (
infer: false), а drizzle подменяет внутренниеparsersиserializersклиента для дат, JSON и интервалов. Поэтому я сравнил обе версии на настоящем Postgres 18.6 через drizzle 0.45.4, под Node 26 и под Bun 1.4.4:IN;updateс датой и JSON;sql;Все 19 проверок дали одинаковый результат на 3.4.9 и 4.1.0, включая одинаковые ошибки.
Проверки
Linux, Bun 1.4.4, Node 26.13.0:
bun install,bun audit --audit-level=moderate,bun run server:build,bun run typecheckпроходят.apps/dokploy/migration.tsпод bun на чистом Postgres 18.6: все 219 миграций, 81 таблица; повторный запуск тоже проходит.backup-files— таймаут под нагрузкой;acme-delete-signals;service-webhook-secret > Bitbucket— обращается к настоящему Bitbucket API.main-image-smokeв CI.Что проверить вручную на dev
🤖 Generated with Claude Code