E.8. Выпуск 9.6.14

Дата выпуска: 2019-06-20

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

E.8.1. Миграция на версию 9.6.14

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

Однако если вы обновляете сервер с более ранней версии, чем 9.6.9, см. Раздел E.13.

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

  • Устранение сбоя команды ALTER TABLE ... ALTER COLUMN TYPE при наличии в таблице частичного ограничения-исключения (Том Лейн)

  • Ликвидация ошибки команды COMMENT при работе с комментариями ограничений доменов (Даниэль Густафссон, Микаэль Пакье)

  • Исправление ошибочного построения планов с узлами MergeAppend (Том Лейн)

    Следствием этого дефекта могли быть сообщения об ошибках «could not find pathkey item to sort» (не удалось найти элемент ключа для сортировки).

  • Исправление ошибочного вывода запросов с повторяющимися именами соединений (Филипп Дюбе)

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

  • Исправление некорректной оптимизации квантификаторов {1,1} в регулярных выражениях (Том Лейн)

    Такие квантификаторы считались бесполезными и оптимизировались. Хотя в документации говорится, что они задают «жадное» поведение (или «нежадное» в случае «нежадной» вариации {1,1}?) для подвыражения, к которому они относятся, фактически они не действовали. Ошибка могла проявляться только с подвыражениями, содержащими группирующие скобки или обратные ссылки.

  • Устранение возможности ошибок при инициализации данных pg_stat_activity для нового процесса (Том Лейн)

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

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

  • Недопущение обращений к базам данных для проверки параметров в процессах, не подключённых к определённой базе данных (Вигнеш Си, Андрес Фройнд)

    Некорректные обращения могли вызывать ошибки вида «cannot read pg_class without having selected a database» (невозможно прочитать pg_class, не выбрав базу данных).

  • Предупреждение возможного зависания в libpq при использовании SSL, когда объём данных в буфере очереди OpenSSL оказывается кратным 256 байтам (Дэвид Биндерман)

  • Улучшение обработки в initdb нескольких равнозначных названий часового пояса системы (Том Лейн, Эндрю Гирт)

    Теперь initdb будет анализировать символическую ссылку /etc/localtime, если она существует, чтобы выбрать из всех равнозначных названий часового пояса системы наиболее подходящее. Таким образом при наличии нескольких названий часового пояса initdb скорее всего выберет именно то название, которое ожидает пользователь. Если же /etc/localtime не является символической ссылкой на файл данных часового пояса и часовой пояс не задан переменной окружения TZ, поведение initdb останется прежним.

    Кроме того, теперь UTC предпочитается другим названиям этого часового пояса, когда ни TZ, ни /etc/localtime не предлагают другой вариант. Тем самым устранено неудобство, возникшее после произошедшего в tzdata 2019a изменения, сделавшего названия часового пояса UCT и UTC равнозначными: initdb выбирал обозначение UCT, что не соответствовало ожиданиям пользователей.

  • Исправление порядка команд GRANT, выдаваемых программами pg_dump и pg_dumpall для баз данных и табличных пространств (Натан Боссарт, Микаэль Пакье)

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

  • Устранение дезориентирующих сообщений об ошибках в reindexdb (Жюльен Руо)

  • Возвращение корректного состояния vacuumdb в случае ошибки при выполнении параллельных заданий (Жюльен Руо)

  • Исправление contrib/auto_explain для недопущения ошибок с параллельными запросами (Том Лейн)

    Ранее параллельный исполнитель мог попытаться передать на анализ свой запрос, тогда как родительский запрос в auto_explain не обрабатывался. Иногда это могло работать, хотя само по себе это неправильно, а в некоторых случаях выдавались ошибки вида «could not find key N in shm TOC» (не удалось найти ключ N в оглавлении общей памяти).

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

  • В contrib/postgres_fdw теперь учитываются возможные модификации данных, производимые локальными триггерами BEFORE ROW UPDATE (Сёхей Мотидзуки)

    Если триггер изменял столбец, который не затрагивался командой UPDATE, новое значение не передавалось на удалённый сервер.

  • Недопущение ошибки в Windows в случаях, когда для базы данных выбрана кодировка SQL_ASCII, а мы пытаемся вывести в журнал строку с не ASCII-символами (Ной Миш)

    В коде предполагалось, что такие строки всегда представлены в UTF-8, и если оказывалось, что это не так, происходила ошибка. Теперь же в журнал просто передаются непреобразованные байты.

  • Обеспечение совместимости заголовочных файлов PL/pgSQL с C++ (Георгий Тарасов)