PostgreSQL 18.6, 17.11, 16.15, 15.19, 14.24 и PostgreSQL 19 Beta 3

13 августа PostgreSQL Global Development Group выпустила обновления всех поддерживаемых веток PostgreSQL — 18.6, 17.11, 16.15, 15.19 и 14.24. Одновременно опубликована третья бета-версия будущего PostgreSQL 19. В совокупности обновление закрывает 28 уязвимостей и исправляет более 110 ошибок, обнаруженных за последние несколько месяцев.
Ветка PostgreSQL 18 сразу перешла с версии 18.4 на 18.6: PostgreSQL 18.5 не распространялся, поскольку после подготовки выпуска разработчики обнаружили регрессию. Обновление в пределах одной основной ветки не требует pg_upgrade или выгрузки и восстановления базы — достаточно остановить сервер, обновить бинарные файлы и запустить его снова. Для некоторых конфигураций после обновления, однако, потребуются дополнительные действия.
Среди основных исправлений:
-
Закрыты 28 уязвимостей, причём несколько получили оценку CVSS 8.8 и позволяют при определённых условиях добиться выполнения произвольного кода. В частности, исправлены переполнения буфера в
to_char(),plperlи обработке регулярных выражений, ошибки смешения типов в работе с курсорами и внутренними типами, а также SQL-инъекция при декомпиляции выраженийEXTRACT(). Полный перечень CVE опубликован в официальном анонсе. -
Для логического декодирования введён новый параметр
output_plugin_libraries, ограничивающий список библиотек, которые разрешено загружать в качестве output-плагинов. Ранее пользователь с правами репликации мог выбрать произвольную загружаемую библиотеку, что стало причиной CVE-2026–6471. По умолчанию разрешены только входящие в PostgreSQLpgoutputиtest_decoding; сторонние плагины после обновления потребуется явно добавить в конфигурацию. -
Исправлена серьёзная проблема в
pgcrypto: при использовании некоторых неподдерживаемых OpenSSL алгоритмов модуль мог не заметить ошибку шифрования и фактически сохранить данные в легко восстанавливаемом виде. Для извлечения уже затронутых данных добавлена опцияignore-cipher-failure, после чего разработчики рекомендуют повторно зашифровать их современным алгоритмом. Уязвимость получила идентификатор CVE-2026–14663. -
В
psqlисправлена обработка сценариев сCOPY ... FROM STDIN. Если командаCOPYзавершалась ошибкой ещё до начала передачи данных, последующие строки могли быть интерпретированы как командыpsqlили SQL. Ошибка зарегистрирована как CVE-2026–6464 и могла создавать условия для SQL-инъекции. -
Исправлены параллельные сборки GIN-индексов, которые могли записать в
pg_class.reltuplesнекорректное значение, включаяInfinityилиNaN. В результатеautovacuumиautoanalyzeмогли перестать обслуживать соответствующую таблицу. Разработчики рекомендуют после обновления проверитьreltuplesу таблиц с GIN-индексами и выполнитьANALYZE, если значение оказалось неверным. -
Исправлены ошибки расширения
btree_gist, включая неправильную обработкуNaNвfloat4/float8и сортировкуbit/bit varyingпри построении индекса. Индексыbtree_gistс такими типами после установки обновления может потребоваться перестроить. -
В
ltreeустранено целочисленное переполнение при сравнении значений с очень большим числом меток. Значения примерно с более чем 14 653 метками могли сравниваться неверно, что в отдельных случаях приводило к фактическому повреждению B-tree-индекса. Для затронутых индексов рекомендуетсяREINDEX. -
Исправлена partition pruning для таблиц с секционированием
RANGE: планировщик мог ошибочно исключитьDEFAULT-секцию и в результате вернуть не все строки. Также устранены проблемы с секционированными таблицами, содержащими внешние таблицы, и несколько ошибок вRETURNING OLD/NEW. -
Исправлено несколько ошибок планировщика, способных приводить к неверным результатам запросов. Они затрагивали, в частности, выражения
value IN (array)с потенциально пустым массивом и оконные функцииCOUNT()сEXCLUDEили безORDER BY. Улучшена производительность hash join с несколькими ключами соединения и большим количествомNULL. -
Устранена гонка при обнаружении конфликтов на уровне изоляции
SERIALIZABLE. При работе с изначально пустым B-tree-индексом конфликт иногда оставался незамеченным, позволяя двум конфликтующим транзакциям завершиться успешно и тем самым нарушая гарантии сериализуемости. -
Исправлено журналирование WAL при очистке битов в visibility map — ошибка могла приводить к некорректным инкрементальным резервным копиям и в некоторых случаях мешать восстановлению после частично записанной страницы. Также исправлено логическое декодирование пустых подготовленных транзакций.
-
В
libpq,pg_createsubscriber,pg_restore,REINDEX CONCURRENTLY,jsonpath, GiST/SP-GiST и ряде других компонентов устранены ошибки и зависания. Кроме того, PostgreSQL теперь можно собирать с OpenSSL 4. -
В комплект включена база часовых поясов tzdata 2026c, отражающая, среди прочего, переход канадской Альберты на постоянный UTC−06 с ноября 2026 года и Марокко на постоянный UTC+00 с 20 сентября 2026 года.
Отдельно разработчики предупредили об ошибке, затрагивающей PostgreSQL 14, 15 и 16: исправлена взаимная блокировка при воспроизведении WAL, созданного сервером с более старой минорной версией. Регрессия появилась в предыдущей серии обновлений и могла привести к зависанию standby-сервера, следующего за primary с более старым обновлением PostgreSQL.
PostgreSQL 19 Beta 3
Одновременно вышла PostgreSQL 19 Beta 3. Это тестовая версия будущей основной ветки, которую разработчики пока не рекомендуют использовать в производственных системах. Обновление с предыдущих beta-версий PostgreSQL 19 выполняется аналогично переходу между основными версиями — с помощью pg_upgrade либо pg_dump/pg_restore.
Основные изменения относительно Beta 2:
- отменено ранее добавленное
GROUP BY ALL; - исправлен ряд ошибок новой поддержки темпоральных таблиц с синтаксисом
FOR PORTION OF; - исправлена новая функция синхронизации последовательностей при логической репликации, включая гонку при
REFRESH SEQUENCES; - устранена ошибка
unexpected logical decoding status change, возникавшая при одновременном включении logical decoding; - исправлена обработка изменения владельца подписок;
- устранено получение неверных результатов в
postgres_fdwпри передаче на удалённый сервер сравнений массивов видаfield = ANY($1)с неявным преобразованием типа; - исправлено падение при проверке внешнего ключа, связанного с допускающим
NULLограничениемUNIQUE; - исправлен разбор числовых литералов с символами подчёркивания в
pg_plan_advice; - восстановлена пропущенная секция
FORMATпри обратном преобразованииJSON_ARRAY(query)в SQL.
Полный перечень возможностей будущей PostgreSQL 19 и изменений в тестовой ветке доступен в release notes PostgreSQL 19. Финальный выпуск PostgreSQL 19 запланирован на сентябрь 2026 года.
PostgreSQL распространяется под свободной лицензией PostgreSQL License. Поддержка PostgreSQL 14 подходит к концу: последние исправления для этой ветки планируется выпустить 12 ноября 2026 года, поэтому разработчики рекомендуют пользователям PostgreSQL 14 заранее запланировать переход на более новую поддерживаемую версию.
>>> Источник
