E.1. Postgres Pro Enterprise 16.15.1 #

Дата: 2026-09-10

E.1.1. Обзор #

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

  • Стабилизирована функциональность параллельной автоочистки, управление которой осуществляется при помощи параметров parallel_autovacuum_workers и max_parallel_autovacuum_workers. Эта функциональность больше не считается экспериментальной. Кроме того, значение параметра конфигурации max_parallel_autovacuum_workers теперь можно изменить без перезапуска сервера.

  • Добавлена возможность оптимизатора преобразовывать конструкции EXISTS в соединения SEMI JOIN между объектами основных запросов и соответствующих подзапросов, если для параметра enable_extra_transformations установлено значение on.

  • Улучшена функциональность оптимизатора по определению уникальности соединений для соединений с подзапросами. Это позволяет выбирать более эффективные узлы планов. Это может быть полезно для 1C, в частности для запросов с использованием «среза последних».

  • Улучшен механизм расчёта избирательности соединения при наличии подзапроса с предложениями DISTINCT или GROUP BY, если при этом все поля в них используются в условиях соединения между подзапросом и другими объектами основного запроса. Эта функциональность управляется параметром enable_compound_index_stats и включена по умолчанию. Это может быть полезно для 1C, в частности для запросов с использованием «среза последних».

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

  • Добавлен параметр конфигурации enable_oracle_package_emulator, управляющий доступностью пакетов, которые обеспечивают совместимость с Oracle для PL/pgSQL.

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

  • Добавлен параметр конфигурации wal_sender_shutdown_timeout для ограничения времени ожидания синхронизации реплики при отключении. По умолчанию передатчики продолжают бесконечно ждать синхронизации.

  • Переработаны функции pg_stats_vacuum_tables, pg_stats_vacuum_indexes и pg_stats_vacuum_database, предоставляющие статистику очистки. Ранее, когда статистика не была найдена для указанного отношения или базы данных, эти функции могли возвращать NULL вместо пустого результата. Кроме того, исправлено некорректное включение статистики кластера в результаты запроса по конкретной базе данных, а также добавлен вывод ошибки при использовании некорректных входных аргументов.

  • Добавлены следующие изменения в реализацию автоподготовки:

    • Оптимизирована автоподготовка для запросов с большим количеством параметров.

    • Исправлена ошибка с неправильным вычислением предела памяти для автоподготовки.

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

    • Добавлена поддержка подтранзакций в системном каталоге в оперативной памяти для временных объектов.

    • Исправлена проблема, при которой временный каталог некорректно кешировал метаданные расширения multimaster.

  • Улучшено сообщение об ошибке команды CREATE OR REPLACE PACKAGE, возникающее при попытке изменить тип внутри пакета. Теперь сообщение содержит имя типа и список зависимых объектов.

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

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

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

    • Исправлена проблема, при которой после pg_upgrade оставались потерянные (orphaned) файлы *.cfm, принадлежавшие пустым сегментам отношений. Эти файлы вызывали предупреждения «CFS failed to read map file» (CFS не удалось прочитать файл отображения) и могли мешать работе сборщика мусора, увеличивая использование дискового пространства.

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

  • Исправлена проблема с автономными транзакциями, из-за которой после выполнения команды CREATE INDEX или REINDEX CONCURRENTLY могли создаваться некорректные индексы. Теперь при выполнении этих команд Postgres Pro ожидает окончания автономной транзакции и всех её родительских транзакций.

  • Устранено чрезмерное потребление памяти, которое могло возникать в подтранзакциях при работе с расширением in_memory.

  • Возвращена ванильная реализация параметра конфигурации hba_file, поскольку предыдущее исправление мешало работе Patroni и приводило к сбоям при запуске сервера.

  • Унаследовано исправление PostgreSQL, которое предотвращает опустошение буфера CLOG, ещё необходимого для обработки непрочитанных сообщений NOTIFY. Это исправление позволяет избежать ошибок «could not access status of transaction» (не удалось получить статус транзакции), когда обслуживающий процесс задерживается с обработкой сообщений NOTIFY.

  • Уменьшено количество сообщений аннулирования кеша, отправляемых при создании и удалении временных объектов при включённом параметре skip_temp_rel_lock. Это повышает производительность в системах, которые активно используют с временными объектами, например, в 1C.

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

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

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

  • Расширение hypopg обновлено до версии 1.4.3.

  • Приложение mamonsu обновлено до версии 3.5.17.

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

    • Реализована возможность пропускать репликацию DDL-команд, относящихся к временным объектам. Временные объекты не реплицируются на другие узлы, что ускоряет работу с временными объектами. Новая логика доступна в протоколе репликации DDL версии 2. Переключиться на новую версию можно с помощью нового параметра конфигурации multimaster.ddl_replication_protocol_version. Используйте протокол версии 2 только после обновления multimaster до последней версии на всех узлах кластера.

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

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

  • Утилита pgbouncer_exporter обновлена до версии 0.12.1.

  • Доработано расширение pgpro_application_info. Исправлена ошибка, возникавшая при чтении имён модулей и действий из-за некорректной обработки слишком длинных имён в кодировке UTF-8. Теперь эти значения обрабатываются корректно.

  • Расширение pg_proaudit обновлено до версии 2.1, в которой были исправлены некоторые ошибки и появились новые возможности:

    • Добавлен параметр exclude_role_name в функции pg_proaudit_set_rule(), pg_proaudit_remove_rule() и pg_proaudit_reload(), позволяющий исключить определённые роли из журнала аудита. Это полезно для фильтрации действий технических ролей, которые в противном случае сделали бы журнал аудита избыточно подробным.

    • Добавлен параметр конфигурации pg_proaudit.csv_split_messages, определяющий, записываются ли события безопасности в выводе CSV и syslog в одну строку или в несколько. Если параметр выключен, каждое событие безопасности записывается в одну строку, что упрощает анализ и разбор журнала аудита.

    • Устранена проблема с некорректно читаемыми символами в записях журнала в форматах CSV, CEF и syslog при использовании базы данных с кодировкой, отличной от UTF-8. Теперь все строковые поля в выводе журнала преобразуются в UTF-8 независимо от кодировки базы данных.

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

    • Добавлена поддержка многопоточности для команды delete с помощью параметра j/--threads. Удаление резервных копий согласно политике хранения и очистка WAL-архива теперь выполняются параллельно.

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

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

    • Исправлена обработка некорректных XML-ответов S3, устранено аварийное завершение на пустых документах и утечка памяти.

    • Оптимизирована проверка порта Postgres Pro. Вместо чтения из postgresql.conf и postgresql.auto.conf, которые могут содержать устаревшую информацию, порт теперь читается из файла postmaster.pid запущенного сервера. Если порт экземпляра не совпадает с конфигурацией, pg_probackup выдаёт предупреждение.

    • Исправлено аварийное завершение команд checkdb и catchup, которое могло происходить при указании экземпляра без задания пути к каталогу резервных копий через параметр -B/--backup-path или переменную окружения BACKUP_PATH. Теперь выводится понятное сообщение об ошибке.

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

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

    • Устранено потенциальное разыменование нулевого указателя с помощью добавления обработки нехватки памяти при разборе имени точки восстановления в WAL.

    • В справку команды catchup добавлен параметр --write-rate-limit. В описаниях других команд аргумент этого параметра, baudrate, переименован в bitrate.

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

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

    • Исправлены сбои резервного копирования, которые возникали, если файл исчезал между сканированием каталога и попыткой обращения к нему, например, если он был удалён Postgres Pro.

    • Исправлена проблема с резервным копированием в режиме PTRACK. Ранее возникала ошибка, если ptrack не был добавлен в shared_preload_libraries, а параметр ptrack.map_size был установлен в ненулевое значение.

    • Исправлена проблема, которая проявлялась в виде ошибки «could not stat file» (не удалось получить информацию о файле) и могла приводить к аварийному завершению процессов резервного копирования или восстановления. Временные файлы, создаваемые сборщиком мусора CFS, теперь пропускаются во время этих операций.

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

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

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

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

    • Исправлена ошибка, из-за которой параметризованный запрос не мог быть зарегистрирован в режиме baseline.

    • Исправлена ошибка, которая могла приводить к сбою сервера после изменения типа плана на baseline. Теперь функция pgpro_multiplan_set_plan_type не принимает значение baseline для параметра plan_type.

    • Исправлена ошибка, которая могла приводить к сбою сервера при использовании команды EXPLAIN с параметром GENERIC_PLAN в запросах, которыми управляет pgpro_multiplan. Теперь эта команда работает правильно.

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

    • Исправлена ошибка, которая могла возникать после удаления объекта, на который ссылается существующий зарегистрированный запрос. Теперь pgpro_multiplan аннулирует зарегистрированный запрос при любом выполнении команды DROP и выводит соответствующее сообщение.

    • Исправлена ошибка сегментации, которая могла возникнуть при использовании переменных PL/pgSQL в качестве параметров запросов, которыми управляет pgpro_multiplan.

  • Модуль pgpro_pwr обновлён до версии 4.15, которая содержит усовершенствования и исправления. Основные изменения перечислены ниже:

    • Обеспечена поддержка статистик ядра PostgreSQL 19.

    • Добавлена поддержка pg_stat_statements 1.13.

    • Добавлена поддержка pg_stat_kcache 2.3.2.

    • В отчёт добавлены новые разделы и поля.

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

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

    • Запрещено задавать отрицательные значения для аргументов OFFSET и LIMIT указания result_cache. Ранее указание отрицательных значений приводило к игнорированию обоих аргументов с предупреждениями. Теперь такие значения считаются ошибками.

    • Исправлена ошибка, которая могла возникать при использовании pgpro_result_cache для запросов с переменными PL/pgSQL в качестве параметров.

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

  • Расширение pgpro_scheduler обновлено до версии 2.14. Устранена проблема с функциями clean_log() и clean_at_jobs_done(): они завершались ошибкой при вызове после выполнения SET ROLE для суперпользователя. Была удалена лишняя проверка session_user, поэтому теперь функции работают корректно.

  • Утилита pgpro_scout обновлена до версии 1.0.4.

  • Приложение pgpro_stats обновлено до версии 1.11, в которой были исправлены некоторые ошибки и появились новые возможности:

    • Добавлен параметр конфигурации pgpro_stats.enable_warnings, который выводит в поле plan представления pgpro_stats_statements предупреждение, если план был выполнен с отсечением секций.

    • Устранена проблема нормализации планов, которая могла возникать для запросов, выполняемых с помощью команды EXPLAIN EXECUTE: добавлен обработчик для сохранения необходимой для нормализации планов информации. Теперь чувствительная информация не раскрывается в планах запросов в представлениях pgpro_stats и отчётах pgpro_pwr.

  • Утилита pgpro_validate обновлена до версии 1.2.0, в которой добавлена новая функциональность и исправлены некоторые ошибки:

    • Добавлен флаг --list-cfm-orphans для команды database_files, позволяющий обнаруживать и выводить список потерянных файлов отображения CFS.

    • Устранены уязвимости SQL-инъекций при генерации запросов.

    • Исправлена проблема экранирования, которая приводила к ошибкам «relation does not exist» (отношение не существует) при выполнении команды molotilka для таблиц в схемах, имена которых содержат заглавные буквы или специальные символы.

    • Устранены ложные предупреждения «no matching entry in pg_attribute table» (отсутствует соответствующая запись в таблице pg_attribute) для строк системного каталога pg_shdepend, объекты которых принадлежат другим базам данных кластера.

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

  • Расширение pg_wait_sampling обновлено до версии 1.1.1. Это обновление расширяет функциональность статистики событий ожидания, которая ранее была доступна только в pgpro_stats, а также включает следующие улучшения и исправления ошибок:

    • Добавлены параметры конфигурации pg_wait_sampling.history_dimensions и pg_wait_sampling.profile_dimensions, позволяющие настраивать набор измерений, сохраняемых в истории и профиле.

    • Расширены представления pg_wait_sampling_current, pg_wait_sampling_history и pg_wait_sampling_profile с помощью дополнительных измерений событий ожидания.

    • Добавлено представление pg_wait_sampling_statements, которое предоставляет статистику событий ожидания, сгруппированную по идентификаторам запросов и планов.

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

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

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

  • Расширение plpgsql_check обновлено до версии 2.10.3.

  • Доработан модуль rum. Исправлена ошибка, которая могла приводить к сбою при сканировании индекса RUM и параллельном выполнении команды VACUUM, при котором с листовой страницы дерева идентификаторов удалялись все элементы.

E.1.2. Миграция на версию 16.15.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.

FAQ