PostgreSQL 19 перенесли на 19 ноября: какую роль в этом сыграло LLM-ревью

—

от автора

Релиз-команда PostgreSQL перенесла финальную версию PostgreSQL 19 на 19 ноября. До этого из ветки откатили от восьми до десяти заметных функций, и The Register связал происходящее с ревью кода через LLM. Ниже разобрано, что сказано в официальном объявлении, как ситуацию объясняет один из ведущих коммиттеров проекта и где цифры из пересказов разошлись с первоисточниками.

TL;DR

  • GA PostgreSQL 19 перенесён на 19 ноября. RC1 оставили на 15 октября, добавили RC2 на 12 ноября. Изначально релиз ждали в конце сентября или начале октября.

  • Официальная причина в письме релиз-команды — объём исправлений в ветках поддержки. Про ИИ и откаты функций в объявлении ни слова.

  • Связь с LLM-ревью проводит Питер Эйзентраут (EDB, коммиттер PostgreSQL). Инструменты быстро вытаскивают длинный хвост граничных ошибок, а на каждое исправление нужно время.

  • «Около 40 отчётов о дефектах», которые гуляют по пересказам, — образ из рассуждения Эйзентраута. Реального подсчёта найденных багов никто не публиковал.

  • «8–10 значимых функций» и «53 отката» от Snowflake измеряют разное. Вторая цифра считает все откаты с начала беты, в PostgreSQL 18 их было около 44.

  • SQL/PGQ, GROUP BY ALL, слияние и разделение партиций переезжают в PostgreSQL 20.

  • Snowflake сейчас называет безопасной целью для обновления PostgreSQL 18.

Что объявила релиз-команда PostgreSQL 10 октября

Письмо в рассылку pgsql-hackers отправил Джонатан Кац от имени релиз-команды. График выглядит так:

  • RC1 — 15 октября, без изменений;

  • RC2 — 12 ноября, в один день с плановым выпуском минорных обновлений;

  • GA — 19 ноября, через неделю после них.

RC2 понадобился, чтобы до финала прогнать исправления, накопившиеся в ветках поддержки. Отдельно Кац признаёт, что цикл вышел необычным:

«Мы понимаем, что этот цикл мажорного релиза получился нетипичным, но хотим и дальше выпускать стабильный и надёжный PostgreSQL, и принимали решения исходя из этой цели», — написал Джонатан Кац.

LLM в письме не упоминаются. Тезис «ИИ сдвинул релиз PostgreSQL» — интерпретация The Register, построенная на блоге Эйзентраута. Она правдоподобна, но формально перенос GA объяснён объёмом исправлений, а не ревью.

Откуда в пересказах взялись «сорок отчётов о дефектах»

Цифра 40 кочует по агрегаторам как число багов, найденных LLM в PostgreSQL 19. В первоисточнике это иллюстрация. 9 октября Эйзентраут опубликовал пост с названием «The reverts will continue until morale improves» и описал типичную ситуацию с функцией, которую прогнали через LLM-ревью:

«…и вот вы смотрите на список примерно из сорока отчётов о дефектах», — описал ситуацию Питер Эйзентраут.

Дальше он поясняет, что исправление каждого пункта может занимать пару строк кода, но у каждого есть фиксированная цена. Нужно разобраться, написать тест, получить ревью, закоммитить. Когда таких пунктов десятки, а бета подходит к концу, времени не хватает. Ни Эйзентраут, ни The Register, ни релиз-команда PostgreSQL общего числа найденных дефектов не называют.

53 отката и 8–10 функций — два разных счёта

Обе цифры звучат рядом, но измеряют разное.

Эйзентраут пишет про «примерно 8–10 значимых функций, в зависимости от того, как считать». Обычно в цикле PostgreSQL откатывают примерно одну такую функцию, так что разница на порядок.

Snowflake в материале от 16 сентября насчитала 53 отката с начала бета-тестирования PostgreSQL 19 против примерно 44 у PostgreSQL 18. Методику автор, Элизабет Гаррет Кристенсен, не раскрывает. Скорее всего, речь о revert-коммитах, а один откат функции может растянуться на несколько коммитов. Сравнение 53 и 44 само по себе драматичным не выглядит. Snowflake подчёркивает другое. В PostgreSQL 18 откаты в основном пришлись на первые недели беты, в PostgreSQL 19 многие случились поздно и, по формулировке Snowflake, после «глубоких ревью, сгенерированных ИИ».

Что откатили из PostgreSQL 19

Snowflake на 16 сентября перечисляет такие откаты:

  • SQL/PGQ, запросы к графам свойств;

  • ALTER TABLE MERGE/SPLIT PARTITION(S);

  • UPDATE/DELETE FOR PORTION OF;

  • GROUP BY ALL — из-за ошибки с ORDER BY, которая давала неверные результаты;

  • смена сжатия TOAST по умолчанию на lz4;

  • нетекстовые форматы вывода pg_dumpall;

  • каскадирование ON ERROR в JSON_TABLE;

  • быстрые значения по умолчанию для доменов с неволатильными ограничениями;

  • снимки логической репликации для отдельных баз;

  • вложенный трекинг запросов в pg_stat_statements;

  • онлайн-включение контрольных сумм данных.

Самая заметная потеря — SQL/PGQ, часть стандарта SQL с 2023 года. По данным The Register, Том Лейн предупреждал, что после выхода PostgreSQL 19 в этой функции всплывут баги, которые нельзя будет исправить до PostgreSQL 20. Случай с GROUP BY ALL показательнее для темы ревью. Неверный результат запроса без ошибки и предупреждения — тот класс дефектов, который в релизе обходится дороже всего.

Почему LLM-ревью ударило именно по этому циклу

Эйзентраут сам был автором или коммиттером части откатанных функций и прямо оговаривает, что излагает личное мнение. Его объяснение многофакторное, и LLM там только одна из причин:

  • Старый код под новой планкой. Многие функции написаны давно, когда LLM-ревью было заметно слабее. Инструменты подняли фактическую планку качества посреди цикла, и код, который раньше прошёл бы, перестал её проходить.

  • Хвост граничных случаев. Раньше такие ошибки находили годами и чинили в минорных релизах. LLM-ревью вытаскивает их сразу и пачкой.

  • «Vulnpocalypse». С апреля по август ключевые разработчики PostgreSQL были заняты исправлением уязвимостей, и на ревью и тестирование беты осталось меньше сил. Snowflake приводит масштаб: раньше на релиз приходилась пара CVE, августовский патч PostgreSQL 18 закрыл 28.

  • Комбинаторика. В PostgreSQL почти всё сочетается со всем — домены, партиции, представления, триггеры. Вручную такие сочетания не перебрать, и Эйзентраут предлагает делать LLM-фаззинг частью разработки функций.

  • Вайб-кодинг ни при чём. Код откатанных функций написан задолго до того, как такой подход стал возможен.

Есть и организационная сторона. В сообществе обсуждают возможность коммитить функции со статусом «экспериментальная» и дорабатывать их в основном дереве, но рабочего механизма пока нет. Официальной политики PostgreSQL по вкладу с помощью ИИ тоже нет, Snowflake пишет, что её ждут в ближайшее время.

Что остаётся в PostgreSQL 19 и что ждёт PostgreSQL 20

Релиз без SQL/PGQ всё равно содержательный. Эйзентраут и Snowflake называют:

  • REPACK CONCURRENTLY — освобождение места без блокировки таблицы, в отличие от VACUUM FULL;

  • логическую репликацию последовательностей — её тоже откатывали, но вернули;

  • pg_plan_advice, параллельный autovacuum, ON CONFLICT DO SELECT и IGNORE NULLS в оконных функциях.

Для PostgreSQL 20 картина поменялась. По данным The Register, следующую версию ждали как релиз в основном с исправлениями, теперь в неё переедут откатанные функции. Эйзентраут добавляет, что несколько функций для PostgreSQL 20 уже почти готовы.

Что отслеживать до 19 ноября и после

Главный тезис Эйзентраута проверяем на практике. Если LLM-ревью действительно вытащило граничные ошибки до релиза, первые минорные версии PostgreSQL 19 должны получиться спокойнее, чем у прошлых мажорных релизов. Перед переходом стоит смотреть на несколько вещей:

  • список изменений RC2 от 12 ноября относительно RC1 — по нему видно, сколько исправлений накопилось за месяц;

  • открытые пункты PostgreSQL 19 в вики проекта, которые релиз-команда закрывает перед GA;

  • совпадение планов миграции с итоговым составом релиза — SQL/PGQ, GROUP BY ALL и операции MERGE/SPLIT PARTITION в нём не будет;

  • минорное обновление PostgreSQL 18 от 12 ноября, если обновление на 19 решено отложить;

  • появление официальной политики PostgreSQL по ИИ-вкладу — от неё зависит, станет ли LLM-ревью штатной частью процесса.

Как, по-вашему, правильнее поступать с функцией, в которой LLM-ревью за месяц до релиза нашло десятки граничных ошибок, — откатывать её или выпускать с известными ограничениями?

Ссылки по теме

ссылка на оригинал статьи https://habr.com/ru/articles/1095950/