E.3. Postgres Pro Shardman 17.6.1 #

Дата выпуска: 2025-11-17

Этот выпуск основан на Postgres Pro Shardman 17.5.1 и PostgreSQL 17.6. Он также наследует часть возможностей и исправлений Postgres Pro Enterprise 17.6.1. Все новые возможности, появившиеся в PostgreSQL 17.6, можно найти в разделе Замечания к выпуску PostgreSQL 17. Ниже перечислены значимые отличия этой версии от Postgres Pro Shardman 17.5.1.

E.3.1. Ядро и расширения #

  • Добавлена оптимизация выбора быстрого пути для работы с данными, расположенными в одной секции. Добавлена поддержка команд SELECT,UPDATE, DELETE и подготовленных операторов в Silk. Оптимизацию нельзя использовать, если значение параметра конфигурации extra_float_digits меньше 0. Значение по умолчанию — off.

  • Добавлена функция public.list_always_shippable() для postgres_fdw, которая выводит список проталкиваемых процедур.

  • Добавлена поддержка чтения метаданных Postgres Pro Shardman в pgpro_controldata.

  • Добавлено отображение статистики по размеру компонентов отправленных с узла сообщений MT_SPI (в байтах) через представление shardman.pg_stat_silk_msg_components.

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

  • Добавлена возможность применять политику защиты на уровне строк (RLS) для глобальных и сегментированных таблиц.

  • Добавлена поддержка расширенных парольных политик и глобальных профилей с помощью параметров конфигурации shardman.extended_password_policies и shardman.extended_password_policies_skip_users. Они задают системных пользователей, для которых не происходит обмена информацией по событиям авторизации между узлами кластера Postgres Pro Shardman, а также которых нельзя блокировать. Однако они могут авторизовываться на резервном сервере Postgres Pro Shardman.

  • Добавлена поддержка разрешения нескольких адресов при конфигурировании стороннего сервера для работы Silk.

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

  • Ограничена возможность редактирования параметра конфигурации shardman.sync_schema, теперь это могут делать только суперпользователи.

  • Обеспечена поддержка SSL для Silk.

  • Обновлено семейство функций shardman.try_advisory_xact_lock*(), теперь они возвращают значение false в случаях, когда раньше выдавали ошибку.

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

  • Обновлена поддерживаемая версия pgpro_pwr до 4.0.

  • Обновлена поддерживаемая версия amcheck до 1.4.

  • Обновлена поддерживаемая версия aqo до 3.1.

  • Поддерживаемая версия dblink обновлена до версии 1.2.

  • Обновлена поддерживаемая версия pg_proaudit до 2.0.

  • Обновлена поддерживаемая версия pgpro_stats до 1.9-sdm4.

  • Обновлена поддерживаемая версия pg_filedump до 18.0.

  • Обновлена поддерживаемая версия pgpro_controldata до 18.1.

  • Обновлена поддерживаемая версия postgres_fdw до 1.4.

  • Обновлена поддерживаемая версия ptrack до 2.5.

Улучшения и исправления, унаследованные от Postgres Pro Enterprise 17.6.1:

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

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

  • Улучшена производительность за счёт уменьшения количества запросов на блокировку таблиц pg_attribute и pg_statistic при выполнении запросов с большим количеством отношений, которые отсутствуют в кеше системы. Может быть полезно в некоторых вариантах использования для 1C.

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

  • Обновлены CREATE DATABASE, createdb и initdb. Теперь если значение lc_collate по умолчанию используется для icu_locale или --icu-locale, выводится информационное сообщение.

  • Оптимизировано поведение при работе с функцией COALESCE. Теперь функция заменяется одним аргументом, если остальные аргументы оказываются null. Это позволяет улучшить оценку избирательности для условий запросов и создавать более эффективные планы выполнения запросов.

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

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

    • Расширена диагностическая информация, которую параметр конфигурации crash_info_dump позволяет записать в случае сбоя сервера. По умолчанию теперь поддерживается запись общей информации об ошибке (сигнале), а для Linux x64 также дамп информации о состоянии процессора и байтов рядом с RIP (return instruction pointer, указатель возврата инструкции). Всё это обеспечивает лучшую диагностику, в частности, для сигналов SIGILL (недопустимая инструкция). Также был изменён способ дампа стека в случае сбоев для Linux x64. Кроме того, memory_context удалён из списка источников дампа по умолчанию, чтобы избежать сбоев, которые могут возникнуть при записи диагностической информации.

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

    • Улучшены операции со сжатыми табличными пространствами на архитектурах s390/s390x.

    • Улучшена оценка коэффициента сжатия таблиц с помощью функции cfs_estimate(relation). Обратите внимание, что функцию cfs_estimate(relation) следует использовать только после контрольной точки, чтобы избежать некорректных оценок.

    • Отключено усечение для сжатых отношений в ходе операций очистки.

    • Прекращена поддержка шифрования для CFS, включая параметр конфигурации cfs_encryption.

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

  • Устранено возможное условие гонки в процессе walreceiver.

  • Устранена проблема при обработке очереди LISTEN/NOTIFY, из-за которой нельзя было получить статус транзакции. Ранее процедура VACUUM FREEZE могла увеличить значение datfrozenxid слишком сильно.

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

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

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

    • Для поддержки запросов, которые используют временные таблицы вместе с постоянными таблицами, в представление aqo_data добавлено поле tmpoids и в функцию aqo_data_update добавлен параметр tmpoids.

    • Устранено условие гонки при вызове функции aqo_cleanup из разных сеансов.

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

    • Устранена проблема с обучением на узлах, работа на которых прекращается досрочно. Теперь aqo обучается на таких узлах с минимальным значением reliability, только если фактическое число строк превышает ожидаемое число строк. В остальных случаях механизм обучения отключён.

  • Реализована возможность настраивать LDAP-аутентификацию для pgbouncer с помощью PAM (Pluggable Authentication Modules, подключаемые модули аутентификации). За дополнительной информацией обратитесь к разделу Настройка LDAP-аутентификации для pgbouncer.

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

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

    • Скорректирован вывод pg_proaudit. Теперь поля xid и vxid не отображаются, если имеют нулевое значение.

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

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

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

  • Модуль pg_query_state обновлён до версии 1.2, в которую добавлены функции pg_progress_bar и pg_progress_bar_visual, позволяющие отслеживать текущий прогресс выполнения запросов.

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

E.3.2. Утилиты управления #

  • Добавлена поддержка защищённого режима управляющего канала biha.

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

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

  • Добавлены новые параметры конфигурации для работы с точками синхронизации: syncpointInterval, который задаёт частоту создания точки синхронизации (в секундах), syncpointEnabled, который включает monitor для периодического создания точек синхронизации, и syncpointLimit, который задаёт число последних хранимых точек синхронизации.

  • Добавлена возможность выполнять команды вне блока транзакции с помощью параметра --no-transaction команды shardmanctl forall.

  • Добавлена возможность просмотра информации о сегментированных и глобальных таблицах с помощью конечной точки /shardmand/v1/tables в shardmand.

  • Добавлена возможность запуска кластера с аутентификацией по SSL-сертификатам.

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

  • Добавлена возможность определения переменной, которая используется в пользовательском скрипте, с помощью параметра shardmanctl bench run -D.

  • Изменён алгоритм обновления конфигурации BiHA. Теперь узел-последователь и рефери ждут обновления конфигурации на лидере и только потом обновляют её у себя. Это позволяет снизить значение параметра max_wal_senders.

  • Отменено цветовое оформление уровня журналирования при выполнении команды shardmanctl.

  • Гарантирована согласованность данных при формировании списка пользователей.

  • Улучшена информативность вывода команды shardmanctl config update в случае ошибки.

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

  • Снято ограничение на снижение чувствительных параметров спецификации: max_connections, max_prepared_transactions и max_worker_processes. Ранее это приводило к проблемам при откате конфигурации.

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

  • Изменено поведение keeper, теперь соединения удерживаются вместо закрытия.

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

  • Обновлена команда shardmanctl config update, которая теперь может изменять параметр certVersion.

  • Обновлены права роли администратора, который теперь может изменять параметр shardman.sync_schema.

  • Обновлена версия клиента etcd до 3.6.4.

  • Исправлена логика «умного» восстановления схемы shardman: теперь команда shardmanctl schema restore --smart корректно проверяет и восстанавливает все недостающие расширения PostgreSQL.

  • Изменено поведение системы при запуске команды shardmanctl probackup backup. При создании резервной копии добавлено ожидание готовности лидеров и резервов во избежание перехода лидеров в состояние RO при работе команды.

  • Исправлена ошибка уровня PANIC при работе команды shardmanctl set.

  • Исправлена ошибка, которая ранее приводила к сбою режима referee_with_wal при запуске кластера Postgres Pro Shardman с табличными пространствами.

  • Исправлены уязвимости BDU:2025-02344 и GHSA-fv92-fjc5-jj9h.

  • Исправлена уязвимость GO-2025-3770.

  • Исправлена ошибка, которая в редких случаях ранее приводила к сбою команды shardmanctl status.

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

  • Исправлено поведение, ранее приводившее к ошибке репликации, если совпадали пользовательские пароли для пользователей BiHA и postgres.

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

  • Устранён сбой рефери при изменении следующих параметров: max_connections, max_wal_senders shared_buffers, max_prepared_transactions и max_worker_processes.

  • Исправлена ошибка восстановления расширений, теперь восстанавливаются все расширения, а не только Postgres Pro Shardman.

  • Исправлена ошибка, из-за которой появлялось сообщение PANIC во время процесса перебалансировки.

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

  • Исправлено отображение индикаторов прогресса при восстановлении из резервной копии.

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

  • Исправлена ошибка запуска системы при включённом svt5.