E.1. Postgres Pro Enterprise 16.14.1 #

E.1.1. Обзор
E.1.2. Миграция на версию 16.14.1

Дата: 2026-06-09

E.1.1. Обзор #

Этот выпуск основан на PostgreSQL 16.14 и Postgres Pro Enterprise 16.13.1. Все изменения, унаследованные от PostgreSQL 16.14, описаны в Замечаниях к выпуску PostgreSQL 16.14. По сравнению с Postgres Pro Enterprise 16.13.1 эта версия также содержит следующие изменения:

  • Реализована возможность для планировщика запросов переносить условия соединения (join predicate pushdown) внешнего запроса в подзапросы, что позволяет выбирать более эффективные пути соединения в планах запросов и улучшать их производительность. Оптимизацию можно включить с помощью нового параметра конфигурации enable_join_predicate_pushdown. Она может быть полезна для нагрузок типа 1C.

  • Добавлен параметр конфигурации log_parameter_types, который включает или отключает отображение типа данных для каждого значения привязанных SQL-параметров подготовленного запроса в сообщениях журнала. Например, [integer] $1 = '42'.

  • Оптимизирован механизм расчёта избирательности соединения для работы с большими списками часто встречаемых значений (MCV). Его алгоритмическая сложность была квадратичной и приводила к снижению производительности при работе с высокими значениями ориентира статистики по столбцам таблиц. Эта оптимизация может быть полезна для нагрузок типа 1C.

  • Обеспечена совместимость системного каталога в оперативной памяти и механизма параллельного выполнения запросов для временных таблиц. Такая совместимость полезна для 1C.

  • Оптимизировано использование буферов разделяемой памяти временными таблицами. Теперь записи системных каталогов pg_statistic, pg_index и pg_depend, относящиеся к временным таблицам, хранятся в системном каталоге в оперативной памяти.

    Кроме того, при использовании такого каталога теперь никакие постоянные объекты не могут зависеть от временных объектов. Например, создание постоянной таблицы со столбцом временного типа более не допускается, как и любые другие зависимости между постоянными и временными метаданными. Ранее такие зависимости были разрешены.

    Функциональность системного каталога в оперативной памяти может быть полезна для 1C.

  • Оптимизирован механизм расчёта избирательности для планировщика запросов с функциональностью, включаемой параметром конфигурации planner_upper_limit_estimation. Эта оптимизация может быть полезна для 1C.

  • Реализован запрет на изменение параметра конфигурации hba_file в сертифицированной редакции Postgres Pro Enterprise. Для повышения уровня безопасности также рекомендуется использовать pg_integrity_check, который автоматически проверяет целостность критически важных файлов перед запуском сервера.

  • В выходные файлы crash_info добавлены идентификаторы сборок исполняемых файлов и разделяемых библиотек.

  • Улучшена производительность повышения резервного сервера до главного за счёт корректного учёта всех изменений в блоках карты свободного пространства на резервном сервере во время операций записи. Ранее вытеснение страниц из буфера могло приводить к несогласованности карты свободного пространства в процессе повышения при определённых нагрузках, что вызывало замедление резервного сервера после повышения, не приводя к ошибкам.

  • Реализована возможность кеширования дескрипторов файлов для каталогов в PGDATA и обновлены системные вызовы open и stat для использования этих кешированных дескрипторов для снижения нагрузки на процессор при планировании SQL‑запросов.

  • Исправлена ошибка, из-за которой выгрузка данных при помощи утилиты pg_dump завершалась сбоем по причине зависимости от пользовательских типов данных. Ошибка проявлялась при использовании параметра --transfer-dir.

  • Исправлена ошибка, которая могла возникать при использовании автоподготовки для запросов, содержащих указания. Теперь автоподготовка пропускает такие запросы, что позволяет использовать её параллельно с pg_hint_plan и pgpro_result_cache.

  • Исправлена проблема, из-за которой расширение pg_pathman с включённым параметром pg_pathman.enable_partitionrouter могло завершаться с ошибкой при попытке выполнить команду UPDATE ... FROM с использованием общих табличных выражений.

  • Исправлена ошибка при восстановлении кластера с помощью pg_dump/pg_dumpall. Ранее pg_dump/pg_dumpall могли генерировать некорректную команду CREATE DATABASE с дублирующимся параметром провайдер_локали. Теперь этот параметр создаётся только один раз, что позволяет избежать ошибок при восстановлении и обновлении.

  • Исправлена ошибка с оценкой количества строк соединения, когда для параметра enable_compound_index_stats установлено значение on.

  • Исправлены ложно положительные срабатывания проверки, включаемой параметром wal_consistency_checking.

  • Устранена утечка памяти, которая могла возникать во время обработки предложения EXCEPTION при выполнении автономной транзакции пользовательским кодом на PL/pgSQL.

  • Исправлена оценка памяти для хеш-соединений: теперь учитывается память, используемая пакетами. Ранее эта память не учитывалась в общем потреблении памяти. Кроме того, в хеш-соединениях добавлена балансировка размера хеш-таблицы в памяти в зависимости от количества пакетов, что предотвращает чрезмерное использование дискового пространства.

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

  • Реализованы следующие исправления и усовершенствования для CFS:

    • Добавлена поддержка индексов и TOAST-таблиц при вычислении их уровня сжатия с помощью функции cfs_estimate.

    • Улучшены сообщения об ошибках для повреждённых блоков CFS. Теперь эти сообщения включают код выхода и сообщение об ошибке от соответствующей библиотеки сжатия.

    • Устранена проблема, которая при включённой CFS могла замедлить выполнение запроса DROP DATABASE. Причина заключалась в неправильной обработке системных прерываний, пока команда ожидала возможности взять блокировку файла cfs_gc_lock_file.

  • Удалена функциональность оптимизатора для добавления узлов плана Index Only Scan ниже узлов Append, которые генерируются для предложений OR, если для параметра enable_appendorpath установлено значение on. Эта функциональность могла приводить к некорректным планам выполнения запросов и полученным данным.

  • Добавлена утилита pgbouncer_exporter, экспортирующая метрики Prometheus для pgbouncer.

  • Добавлена утилита pgpro_validate для проверки целостности данных экземпляра Postgres Pro.

  • Модуль aqo обновлён до версии 2.3. Включены следующие усовершенствования и исправления:

    • Добавлена новая функция aqo_storage_usage, которая позволяет получить текущий и максимальный размеры хранилища aqo и выделенной динамической разделяемой памяти.

    • Оптимизирована внутренняя структура хранилища aqo_data, а также улучшены механизмы для выделения динамической разделяемой памяти и использования блокировок при работе с данными этого хранилища. Эти улучшения позволили исправить ошибку с обновлением хранилища aqo_data, которая была вызвана исключительными блокировками на нижележащей хеш-таблице и приводила к постоянному росту сеансов в состоянии idle in transaction (простаивает в транзакции) и нестабильной работе aqo.

    • Исправлена ошибка сегментации, которая могла возникать после прерывания вложенной автономной транзакции, для которой использовался модуль aqo. Теперь aqo проверяет уровень вложенности автономных транзакций и не очищает свой локальный кеш при прерывании вложенных транзакций.

  • Драйвер ODBC обновлён до версии 18.00.0001.

  • Модуль orafce обновлён до версии 4.16.5.

  • Исправлена проблема, из-за которой модуль pg_query_state мог зависать в ожидании ответа от обслуживающего процесса, выполняющего исследуемый запрос.

  • Обновлено расширение pg_proaudit. Включены следующие исправления и усовершенствования:

    • Добавлен параметр конфигурации pg_proaudit.log_file_mode, который устанавливает права доступа к новым файлам журнала событий, создаваемым pg_proaudit. Обратите внимание, что владелец сервера всегда имеет доступ к этим файлам, независимо от значения этого параметра.

    • Добавлено новое поле для всех типов событий, записываемых в файлы CSV и syslog: IP-адрес источника события. Ранее это поле отображалось только для событий AUTHENTICATE в формате CEF.

    • Расширено действие параметра конфигурации pg_proaudit.log_rows, который включает или отключает регистрацию количества строк, затронутых SQL-командой. Теперь количество затронутых строк записывается для всех форматов регистрируемых событий.

    • Добавлена проверка уникального идентификатора события (UUID) для предотвращения неправильного обращения к памяти.

    • Исправлена ошибка, из‑за которой поле dst событий, регистрируемых в формате CEF, заполнялось неправильно.

    • Исправлена проблема с избыточным использованием памяти при обработке событий DISCONNECT. Ранее хеш‑таблица, размер которой был пропорционален значению max_connections, приводила к избыточному потреблению памяти при больших значениях этого параметра. Теперь данные хранятся более эффективно.

    • Исправлена ошибка анализатора запросов в pg_proaudit. Ранее некоторые символы не экранировались при записи событий в формате CEF. Теперь символы экранируются корректно в соответствии со спецификацией CEF.

  • Приложение pg_probackup обновлено до версии 2.8.14 Enterprise, которая включает следующие улучшения и исправления:

    • Добавлена поддержка абсолютных путей в параметре --wal-file-path.

    • Исправлено инкрементальное резервное копирование в режиме PAGE с параметром --stream. Теперь при таком сочетании параметров WAL-файлы корректно сохраняются и внутри резервной копии, и в отдельном архиве.

  • Обновлён модуль pgpro_bindump. Включены следующие улучшения и исправления:

    • Добавлена поддержка параметра --exclude-path для исключения определённых файлов или каталогов из резервного копирования в режиме PRO.

    • Оптимизирована производительность резервного копирования за счёт исключения временных файлов процесса postmaster.

    • Исправлено некорректное имя пакета в сообщении об ошибке, возникавшей при неудачной загрузке библиотеки libpb3_encoder.so модулем pgpro_bindump. Теперь в сообщении корректно рекомендуется установить пакет libpb3-encoder вместо ошибочного libpgprobackup3.

    • Устранена проблема блокировки сборщика мусора (GC) CFS процессом резервного копирования, что могло приводить к блокировкам записи при длительном создании резервной копии. Теперь оба процесса блокируют только конкретные файлы данных на короткое время, избегая взаимной блокировки.

  • Утилита pgpro_datactl обновлена до версии 1.5 для исправления ошибки сжатия несжатых табличных пространств. Ранее сжатие не выполнялось, если размер какого-либо блока превышал значение параметра BLCKSZ.

  • Расширение pgpro_multiplan обновлено до версии 1.6. Включены следующие усовершенствования и исправления:

    • Реализована возможность восстановления разрешённых планов и планов с шаблонами из резервных копий планов. Для этого функция pgpro_multiplan_restore теперь принимает значения baseline и template для аргумента plan_type, а также содержит новый аргумент wildcards для планов с шаблонами. Также в эту функцию добавлены следующие аргументы: sample_string для указания запроса с константами и status для использования в будущем.

    • Реализована возможность добавлять планы в список разрешённых с помощью функций pgpro_multiplan_register_query и pgpro_multiplan_freeze. Последняя функция теперь может принимать значение baseline для аргумента plan_type.

    • Реализована возможность для pgpro_multiplan автоматически регистрировать выполняемые подготовленные операторы, когда для параметра pgpro_multiplan.auto_tracking установлено значение on.

    • Добавлены новые функции pgpro_multiplan_enable, pgpro_multiplan_enable_baseline и pgpro_multiplan_enable_template, которые позволяют включать и отключать определённые существующие планы.

    • Переименованы следующие функции:

    • Удалены поля constants и prep_consts из представления pgpro_multiplan_captured_queries. Эти поля были избыточными, поскольку константы запроса содержатся в значении поля sample_string.

    • Исправлена ошибка, которая могла приводить к сбою проверочных утверждений при попытке повторно заморозить один и тот же план.

    • Исправлена ошибка, которая могла приводить к сбою проверочных утверждений при попытке зарегистрировать запрос с правилом DO NOTHING.

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

    • Исправлена ошибка сегментации, которая могла возникать при попытке зарегистрировать запрос с общим табличным выражением (CTE) или INSERT ... SELECT.

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

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

    • Исправлена ошибка с некорректной проверкой значения table_hash для планов с шаблонами, что могло приводить к применению этих планов для неподходящих запросов.

  • Расширение pgpro_planner обновлено до версии 1.2 для исправления ошибки, которая могла приводить к определённым проблемам в работе расширения, если модуль aqo был загружен раньше этого расширения.

  • Модуль pgpro_pwr обновлён до версии 4.13, в которой добавлена поддержка статистики Postgres Pro Shardman, общей для кластера. Она также содержит некоторые улучшения и исправления.

  • Обновлено расширение pgpro_result_cache. Включены следующие исправления:

    • Исправлена ошибка с выделением памяти, которая могла возникать в pgpro_result_cache с включённым параметром pgpro_result_cache.consistent при выполнении очень большого количества запросов в одной транзакции.

    • Исправлена ошибка, которая могла возникать при использовании указания result_cache с аргументами offset и limit, если размер возвращаемого набора результатов превышал предел pgpro_result_cache.max_entry_size.

  • Расширение pgpro_scheduler обновлено до версии 2.13.0, в которую включены следующие усовершенствования и исправления:

    • Улучшен механизм журналирования. Сообщения в журнале стали более единообразными и информативными. Теперь при запуске фонового процесса cron job executor рабочий процесс database manager записывает в журнал сообщение, содержащее идентификатор (PID) этого процесса. Это упрощает отслеживание активности рабочих процессов и сопоставление записей в журнале.

    • Исправлена ошибка в функции schedule.get_self_id(), которая возвращала неверный идентификатор для заданий cron. Теперь schedule.get_self_id() работает корректно как в заданиях по расписанию, так и в разовых заданиях, возвращая правильный идентификатор.

    • Исправлена ошибка деактивации задания cron с установленным next_time_statement. Ранее, если деактивация происходила во время выполнения такого задания, оно могло всё равно оставаться активным. Теперь задание деактивируется сразу, независимо от состояния выполнения.

  • Обновлён модуль pgpro_sfile. Устранена утечка файлового дескриптора в случае ошибок.

  • Обновлено расширение pgpro_stats. Включены следующие исправления:

    • Исправлено чрезмерное потребление памяти запросом, использовавшим pgpro_stats с установленным pgpro_stats.track = all. При этом значении функция, которая присваивает идентификаторы планов, вызывалась многократно и накопленная память освобождалась неоптимально.

    • Обновлены код автоподготовки и расширение pgpro_stats, чтобы исправить проблемы, которые могли возникнуть с нормализацией автоподготовленного запроса в pgpro_stats. Теперь для корректной нормализации запросов в процессе автоподготовки кешированный план сохраняется вместе с некоторой дополнительной информацией, которая передаётся pgpro_stats во время выполнения запроса.

  • Обновлена утилита pgpro_tune. Включены следующие усовершенствования:

    • Улучшен вывод утилиты, который теперь включает использованный пресет и отображает корректный формат даты и времени применения параметров конфигурации.

    • Обновлены пресеты для улучшения производительности Postgres Pro.

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

  • Обновлён модуль pg_variables для поддержки Postgres Pro/ PostgreSQL 18.

  • Расширение pgvector обновлено до версии 0.8.2.

  • Обновлён модуль rum. Улучшена производительность поиска по индексу RUM при помощи операторов индекса <=| и |=>, если для параметра хранения индекса order_by_attach задано значение true.

E.1.2. Миграция на версию 16.14.1 #

Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.

Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версии 16.13 или ниже до Postgres Pro Enterprise версии 16.14, обратитесь к инструкциям по обновлению и миграции BiHA.

Чтобы обновить расширение citus с версии 12.1 до версии 13.0, обратитесь к инструкциям по обновлению.

Версия ABI может измениться в корректирующем выпуске Postgres Pro. В таком случае при попытке запустить расширение возникает ошибка ABI mismatch (Несоответствие ABI), поэтому обязательно установите новую версию расширения, поставляемую с новым выпуском Postgres Pro, или перекомпилируйте стороннее расширение, чтобы использовать его с текущей версией Postgres Pro.

При обновлении отказоустойчивого кластера с Postgres Pro Enterprise версии 16.3.x или ниже сначала отключите автоматическое аварийное переключение узлов, если оно было включено, и обновите все резервные серверы, затем обновите ведущий сервер, повысьте резервный сервер до ведущего и перезапустите бывший ведущий сервер (возможно, с использованием pg_rewind).

Если вы создаёте резервные копии с помощью pg_probackup и ранее обновили его до версии 2.8.0 Enterprise или 2.8.1 Enterprise, обязательно обновите его до версии 2.8.2 Enterprise или выше и сделайте полную резервную копию базы данных после обновления, поскольку резервные копии, созданные с использованием этих версий, могут быть повреждены. Чтобы проверить, повреждены ли резервные копии, созданные с помощью версий 2.8.0 или 2.8.1, можно использовать версию 2.8.2.

Для перехода с PostgreSQL, а также с выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям по миграции на версию 16.