E.28. Выпуск 14.4

Дата выпуска: 2022-06-16

В этот выпуск вошли различные исправления, внесённые после версии 14.3. За информацией о нововведениях версии 14 обратитесь к Разделу E.32.

E.28.1. Миграция на версию 14.4

Если используется версия 14.X, выгрузка/восстановление базы не требуется.

Однако если у вас есть индексы, созданные в неблокирующем режиме версией 14, их нужно переиндексировать после обновления. Об этом рассказывается в первом пункте списка изменений.

Если вы обновляете сервер с более ранней версии, чем 14.3, см. также Раздел E.29.

E.28.2. Изменения

  • Предотвращение возможности повреждения индексов, созданных или перестроенных с указанием CONCURRENTLY (Альваро Эррера)

    Вследствие оптимизации, добавленной в версии 14, команды CREATE INDEX ... CONCURRENTLY и REINDEX ... CONCURRENTLY иногда пропускали и не индексировали строки, изменяемые во время построения индекса. Эту оптимизацию решено было убрать. После установления данного обновления рекомендуется перестроить все индексы, которые были получены с указанием CONCURRENTLY. (Также их можно просто перестроить без указания CONCURRENTLY.)

  • Улучшение устойчивости узла Memoize при использовании недетерминированной функции равенства (Дэвид Роули)

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

  • Исправление ошибочной оценки стоимости для узлов Memoize (Дэвид Роули)

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

  • Исправление запросов, в которых переменная «вся строка» ссылается на результат функции, возвращающей домен поверх составного типа (Том Лейн)

  • Устранение ошибки планировщика «variable not found in subplan target list» (переменная не найдена в целевом списке подплана) при подтягивании наверх вложенного SELECT, задействованного в аргументе функции GROUPING (Ричард Гуо)

  • Исключение возможности получения от функции pg_stat_get_subscription() дополнительной строки с «мусорными» значениями (Кунтал Гхош)

  • Исправление проверки входных данных в COPY FROM для случаев, когда кодировка базы данных — SQL_ASCII, а клиент использует многобайтную кодировку (Хейкки Линнакангас)

    Вследствие устранённой теперь ошибки могли выдаваться ложные сообщения о неправильной кодировке входных данных.

  • Устранение сбоя при использовании в конструкции XMLTABLE или JSON_TABLE слишком большого числа псевдонимов столбцов (Альваро Эррера)

  • Отображение столбцов SELECT, выводимых в выдаваемом определении правила или представления, с предложением AS "?column?", если могут существовать внешние ссылки на них (Том Лейн)

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

  • Передача информации о неявном создании семейств операторов событийным триггерам (Масахико Савада)

    Если при выполнении CREATE OPERATOR CLASS неявно создавалось семейство операторов, событийные триггеры не замечали создание этого объекта.

  • Корректировка изменения управляющего файла при выполнении процедуры точки перезапуска во время повышения ведомого сервера (Кётаро Хоригути)

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

  • Предотвращение срабатывания тайм-аута wal_receiver_timeout на ведомом сервере в процессе логической репликации больших транзакций (Вэй Ван, Амит Капила)

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

  • Предотвращение утечки открытого дескриптора при чтении неправильного файла с сокращёнными обозначениями часовых поясов (Кётаро Хоригути)

    В таких случаях могли выдаваться некритичные предупреждения.

  • Обеспечение поддержки дополнительных серверных параметров, для которых в качестве короткого описания задано NULL (Стив Чавес)

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

  • Удаление в libpq ненужной проверки владельца файла SSL-ключа (Том Лейн)

    В предыдущих корректирующих выпусках мы скопировали правила проверки разрешений для файла закрытого ключа SSL, принятые на стороне сервера, в libpq. Однако проверку владения этого файла копировать не следовало. Хотя она работала в обычных ситуациях, она мешала запустить клиентское приложение от имени root, и, возможно, в других случаях.

  • Обеспечение вывода вменяемого сообщения при потере подключения к серверу в ecpg (Том Лейн)

    Вследствие неправильной обработки ошибки, сформированной libpq, например при потере подключения, вместо полезного сообщения могла выдаваться строка «(null)», а в старых версиях мог произойти сбой.

  • Предотвращение сбоя при потере подключения к серверу в pg_amcheck (Том Лейн)

    Вследствие неправильной обработки ошибки, сформированной libpq, например при потере подключения, мог произойти сбой.

  • Корректировка теста PL/Perl для обеспечения совместимости с Perl 5.36 (Дагфинн Ильмари Маннсакер)

  • Недопущение ошибочного использования устаревшей библиотеки libldap_r в случае, когда при сборке PostgreSQL обнаруживается несколько инсталляций OpenLDAP (Том Лейн)