E.1. Postgres Pro Enterprise 17.7.1 #

Дата выпуска: 2025-12-23

E.1.1. Обзор #

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

  • Улучшен механизм поиска схожих строк типов mchar и mvarchar с использованием оператора LIKE. Оптимизированное сравнение без учёта регистра значительно ускоряет поиск. Может быть полезно для 1C.

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

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

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

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

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

  • В выходные файлы crash_info добавлена информация о внутренних обработчиках сигналов.

  • Ограничено максимальное количество присваиваемых идентификаторов транзакций, теперь оно равняется 263. Кроме того, при достижении порогового значения в 10 миллионов XID теперь выводится предупреждение. При достижении максимального количества XID новые транзакции перестают запускаться, но запросы только на чтение продолжают выполняться.

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

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

    • Устранена проблема CFS со сжатием файлов отношений, в которых OID превышал значение INT32_MAX. Проблема возникала при переносе таблиц в табличное пространство CFS.

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

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

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

  • Добавлены новые значения переменной окружения PGPRO_TUNE, используемой initdb.

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

  • Добавлена утилита ldap2pg, которая автоматизирует процесс создания, изменения и удаления ролей и пользователей Postgres Pro из корпоративного каталога.

  • Добавлено расширение pg_trgm_mchar, которое обеспечивает быстрый поиск cхожих строк типов mchar и mvarchar на основе триграмм. Это расширение также обеспечивает поддержку GIN-индексов для типов mchar и mvarchar. Может быть полезно для 1C.

  • Добавлено расширение pgpro_planner, которое предоставляет преобразования и оптимизации запросов для создания эффективных планов выполнения запросов и повышения производительности.

  • Добавлено расширение pgpro_cpumeter, которое предоставляет доступ к новой системной функции мониторинга использования процессора. Функция pgpro_cpumeter непрерывно собирает и записывает информацию о ядрах процессора, используемых процессами сервера Postgres Pro.

  • Расширение apache_age обновлено до версии 1.5.2.

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

    • Улучшен механизм обучения aqo на подзапросах.

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

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

    • Устранена проблема потери лидера при неинкрементальном обновлении BiHA-кластера с Postgres Pro Enterprise версии 17.4 или ниже до 17.6.

    • Устранена ошибка, которая возникала, когда значение MIN параметра конфигурации synchronous_standby_names было выше 0, а текущее число синхронных реплик превышало значение число_синхронных. Это могло вызвать зависание транзакций в случае зависания репликации.

    • Устранена ошибка, при которой функции biha.add_to_ssn, biha.remove_from_ssn и biha.set_ssn меняли список синхронных ведомых в параметре synchronous_standby_names только на лидере.

    • Устранена ошибка, при которой выполнение команды bihactl init --convert завершалось с ошибкой, если в экземпляре Postgres Pro Enterprise был настроен pg_proaudit.

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

    • Устранены утечки памяти, вызванные некорректной обработкой ошибок.

    • Устранены лишние проверки при выделении памяти.

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

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

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

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

  • Обновлён модуль pageinspect. В новой версии исправлена ошибка функции page_header, которая выводила некорректную информацию для страниц double xmax и некоторых страниц индексов. В частности, была перепутана последовательность столбцов, и значение prune_xid выводилось в столбце xid_base. Теперь информация выводится корректно.

  • Утилита pg_filedump обновлена до версии 18.0.

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

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

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

  • Расширение pg_portal_modify обновлено до версии 0.3.6.

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

    • Добавлена поддержка регистрации следующих типов событий: ANALYZE, DISCARD ALL, DISCARD PLANS, DISCARD SEQUENCES, DISCARD TEMP (для временных таблиц), CHECKPOINT, FETCH и MOVE.

    • Добавлен новый класс событий MISC. Этот класс позволяет регистрировать все события (включая перечисленные выше), не относящиеся к другим классам.

    • Добавлен новый метод регистрации событий безопасности. Теперь события безопасности в формате CEF можно не только записывать в отдельный файл, но и передавать в syslog.

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

    • Исправлена проблема, из-за которой pg_proaudit не регистрировал события безопасности в файл CEF.

    • Исправлена проблема, из-за которой расширение pg_proaudit не регистрировало события для команды INSERT после CREATE в анонимных блоках кода (команда DO) и хранимых процедурах/функциях.

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

  • Приложение pg_probackup обновлено до версии 2.8.11 Enterprise, в которой добавлена новая функциональность, улучшена производительность и исправлены некоторые ошибки:

    • Обеспечена поддержка Postgres Pro Enterprise 18.

    • Обеспечена поддержка прозрачного защитного преобразования данных (TDE). Теперь в выводе версии pg_probackup отображается отметка о поддержке TDE.

    • Добавлено сохранение хоста, с которого была выполнена резервная копия, в backup.control и его отображение в выводе команды show.

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

    • Для операций archive-push и archive-get в удалённом режиме добавлено игнорирование сигналов SIGQUIT для предотвращения дампа памяти вспомогательных программ при остановке сервера.

    • Добавлена проверка соответствия номера порта в PGDATA и в параметре --pgport. Также добавлен флаг --force, чтобы выполнять резервное копирование, даже если эти значения не совпадают.

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

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

    • Исправлен конфликт идентификаторов для параметра --wal-tree путём добавления проверки уникальности.

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

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

  • Расширение pgpro_autopart обновлено до версии 1.1, в которой исправлена работа функции ap_enable_automatic_partition_creation. Вызов этой функции завершался ошибкой, если имя столбца таблицы совпадало с ключевым словом SQL. В этой версии также обеспечена совместимость с расширением pgpro_gbtree.

  • Обновлён плагин pgpro_bindump. В новой версии исправлена проверка уровня сжатия. Ранее применялся одинаковый диапазон уровней сжатия независимо от выбранного алгоритма.

  • Утилита pgpro_controldata обновлена до версии 18.1.0.

  • Утилита pgpro_datactl обновлена до версии 1.2.

  • Обновлено расширение pgpro_gbtree. В новой версии включены исправления, которые обеспечили совместимость глобальных индексов с логической репликацией и расширением pgpro_autopart.

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

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

    • Улучшена стабильность режима auto_approve_plans для перепланирования запросов в реальном времени с включённым параметром pgpro_multiplan.auto_capturing.

    • Добавлена новая функция pgpro_multiplan_remove_template, которая удаляет указанный план с типом template из постоянного хранилища pgpro_multiplan.

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

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

    • Изменена логика указания значений параметра pgpro_multiplan.wildcards. Теперь этот параметр принимает одно регулярное выражение вместо списка из нескольких выражений, разделённых запятыми.

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

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

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

    • Улучшено отслеживание времени функцией take_sample.

    • Добавлена поддержка pgpro_stats 1.10.

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

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

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

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

    • Реализовано автоматическое аннулирование кеша на уровне кластера с помощью файлов WAL. Оно может быть включено при помощи параметров pgpro_result_cache.consistent и pgpro_result_cache.wal.

    • Добавлена возможность задавать параметр pgpro_result_cache.max_memory_size во время выполнения при помощи команды ALTER SYSTEM.

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

    • Добавлены два необязательных аргумента limit и offset в указание result_cache. Эти аргументы позволяют ограничивать количество строк, возвращаемых из кешированных наборов результатов, и пропускать определённые строки перед возвращением результата.

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

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

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

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

    • В представления pgpro_stats_statements и pgpro_stats_totals включены новые поля, добавленные в pg_stats_statements в Postgres Pro 18. Также были обновлены соответствующие функции.

    • Добавлена функция pgpro_stats_statements_filtered, которая фильтрует статистику, аналогичную доступной в представлении pgpro_stats_statements по одному или нескольким полям: userid, dbid, queryid и planid. Вызов этой функции работает быстрее, чем запрос к представлению pgpro_stats_statements с указанием соответствующих значений этих полей.

    • Улучшено поведение pgpro_stats аналогично pg_stat_statements. Включены следующие изменения:

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

      • Возможность параметризации списков констант.

    • Устранена проблема, которая могла возникать, когда в pgpro_stats дополнительные метрики изменялись «на лету». Теперь при каждом изменении дополнительных метрик требуется перезапуск сервера.

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

    • Обеспечена совместимость с механизмом CFS (сжатой файловой системой). pgpro_tde теперь поддерживает защитное преобразование сжатых блоков данных. Однако обратите внимание, что в настоящее время pg_rewind не может использоваться в табличных пространствах, которые одновременно и преобразованы, и сжаты.

    • Оптимизировали процесс обработки записей WAL для повышения производительности.

  • Пакет pgpro-orautl обновлён до версии 2.1.

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

  • Расширение pldebugger обновлено до версии 1.1.6.

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

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

  • Обновлено расширение proxima. Добавлены следующие возможности, усовершенствования и исправления:

    • Реализован алгоритм распределения нагрузки weighted-round-robin (взвешенный циклический алгоритм), а также параметр конфигурации proxima.load_balancer_node_weight для настройки весов узлов.

    • Реализован алгоритм распределения нагрузки least-connections (алгоритм с наименьшим количеством соединений).

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

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

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

    • Реализован ряд внутренних исправлений и оптимизаций для улучшения производительности и надёжности расширения proxima.

    • Устранена ошибка, при которой было невозможно прервать динамический выделенный сеанс, установленный командой SET TRANSACTION.

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

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

  • Расширение tds_fdw обновлено до версии 2.0.5.

  • Обновлено расширение utl_mail, чтобы устранить проблему с некорректной обработкой некоторых форматов адресов электронной почты. Теперь ряд основных форматов, включая root@localhost, обрабатывается корректно.

  • Отключён online_analyze. Не рекомендуется использовать этот модуль с современными версиями . Однако при необходимости его можно включить.

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

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

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

Важно

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

  • Чтобы обновить до Postgres Pro Enterprise 17.7 многоузловой кластер, где используется расширение pgpro_multiplan вместе с proxima, примите во внимание рекомендации по миграции для proxima.

Чтобы обновить Postgres Pro Enterprise с версии 16.X на версию 17.X вместе с расширением citus 13.0, обратитесь к инструкциям по обновлению.

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