E.1. Postgres Pro Shardman 17.9.2 #

Дата выпуска: 2026-04-06

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

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

Отличия этой версии от Postgres Pro Shardman 17.7.1:

  • Прекращена поддержка Debian 11.

  • Исправлена ошибка обновления сторонних серверов после восстановления из резервной копии.

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

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

  • Реализована возможность для оптимизатора упрощать конструкции NOT NOT выражение до выражение в связанных подзапросах, тем самым позволяя «подтягивать» эти подзапросы в основной план запроса и улучшать производительность.

  • Добавлена возможность для оптимизатора преобразовывать связанные подзапросы с выражением равенства в связанные подзапросы IN, если для параметра enable_extra_transformations установлено значение on. Это позволяет оптимизатору «подтягивать» получившиеся подзапросы и улучшать производительность.

  • Добавлена новая возможность планировщика запросов преобразовывать предложения OR в запросы UNION ALL. Такие преобразования могут значительно повысить производительность и особенно полезны для запросов, обращающихся к нескольким таблицам. Чтобы включить эту функциональность, используйте новый параметр конфигурации enable_orunion_transformation.

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

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

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

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

  • Оптимизирована производительность заморозки кортежей на странице.

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

    • Изменён формат имени выходных файлов crash_info, в котором теперь указывается дата и время с точностью до микросекунд.

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

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

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

    • Изменено поведение функции cfs_compression_ratio. Теперь эта функция возвращает значение NaN для несжатых отношений.

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

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

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

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

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

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

  • Исправлена ошибка, из-за которой процесс автоматической очистки зацикливался на одних базах данных и не очищал другие. Это происходило из-за «мягких» ограничений автоочистки, которые могли задаваться параметрами конфигурации vacuum_freeze_table_age и vacuum_multixact_freeze_table_age. Эти ограничения были удалены. Они больше не нужны, поскольку значения параметров autovacuum_freeze_max_age и autovacuum_multixact_freeze_max_age теперь можно изменить без перезагрузки сервера.

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

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

  • Добавлена поддержка SUSE Linux Enterprise Server (SLES) 16.

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

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

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

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

    • Добавлены контроль целостности и проверка параметра recovery-target-name в архиве WAL при выполнении восстановления. Теперь предотвращаются ситуации, когда кластер Postgres Pro Shardman не может запуститься из-за недостижимости целевой точки восстановления. Если именованная точка восстановления была создана до последней резервной копии, процесс восстановления теперь корректно проверяет её существование.

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

    • Добавлена поддержка запросов с использованием модели virtual-hosted-style для S3-хранилищ, включая автоматическое определение virtual-hosted-style по формату hostname (если hostname начинается с имени бакета) и улучшенную совместимость с различными реализациями S3 API (AWS S3, SberCloud и другие). В virtual-hosted-style URL имя бакета включается в hostname, что исключает необходимость добавлять его к пути файла.

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

    • Улучшен механизм передачи статуса резервного копирования. Статус резервной копии теперь меняется на DONE до этапа проверки. Метаданные резервной копии записываются дважды: до проверки и по завершении резервного копирования. Команда show теперь отображает более точный статус резервной копии во время длительных проверок.

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

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

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

    • Восстановлена возможность агрегирования статистики по сеансам, которая ранее была удалена как неиспользуемая. Будет ли агрегироваться статистика по сеансам, определяет параметр конфигурации pgpro_stats.track_sessions.

    • Улучшено поведение функций трассировки сеансов. Теперь функции pgpro_stats_trace_insert и pgpro_stats_trace_update завершаются ошибкой, если в передаваемой последовательности пар ключ-значение какой-либо атрибут фильтра встречается несколько раз. Если функции pgpro_stats_trace_update передаётся неправильный аргумент, изменения фильтра более не происходят. Функция pgpro_stats_trace_show теперь возвращает в точности те значения атрибутов explain*, которые были заданы для фильтра.

    • Добавлено исправление, благодаря которому удаётся избежать сбоя, если две или более константы имеют одно и то же расположение в тексте SQL-оператора.

  • Исправлена ошибка, которая могла приводить к сбою операций, пытающихся вытеснить буфер из кеша temp_buffers, при этом выводилось сообщение «block N of table_name is still referenced» (на блок N имя_таблицы всё ещё есть ссылка).

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

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

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

Отличия этой версии от Postgres Pro Shardman 17.7.1:

  • Добавлена новая метрика shared_xmin_raw в представление shardman.pg_stat_csn, которая отображает старейший XID, исключая влияние от горизонта идентификаторов транзакций каталога.

  • Добавлен параметр --for-upgrade для команды shardmanctl restart. Также добавлен параметр --with-restart для команды shardmanctl upgrade.

  • Усилена защита словарей Postgres Pro Shardman от повреждений злонамеренными пользователями.

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

  • Версия etcd обновлена до 3.6.8 и исправлена соответствующая ошибка в случаях, когда узел etcd не возвращал версию.

  • Исправлена ошибка выполнения команды shardmanctl shard rm при нестандартных портах экземпляра.

  • Исправлена ошибка вывода статусов при недоступности BiHA. Также исправлена ошибка выполнения команды shardmanctl replicas reinit для узлов в состоянии BiHA NODE_ERROR.

  • Исправлены следующие уязвимости: CVE-2025-61724, CVE-2025-58187, CVE-2025-47912, CVE-2025-58183, CVE-2025-61723, CVE-2025-58186, CVE-2025-58185, CVE-2025-58188, CVE-2025-61725, CVE-2025-61727, CVE-2025-61729, CVE-2025-61726, CVE-2025-68121, CVE-2026-33186.

  • Включены следующие исправления для checkup manager:

    • Исправлена ошибка выполнения команды shardmanctl schema verify --filter sequences, которая ранее не определяла несоответствия в последовательностях.

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

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