E.42. Выпуск 9.5.3

Дата выпуска: 2016-05-12

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

E.42.1. Миграция на версию 9.5.3

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

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

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

  • Очередь ошибок OpenSSL должна очищаться перед вызовом функций OpenSSL (не следует полагать, что она уже очищена); мы также должны обязательно очищать её после вызова (Питер Гейган, Дэйв Витек, Питер Эйзентраут)

    Это изменение предотвращает проблемы, возникающие, когда несколько подключений используют OpenSSL в одном процессе и не весь участвующий в этом код очищает очередь ошибок по одним правилам. В частности, возникали ошибки, когда клиентское приложение использовало SSL-подключения через libpq одновременно с SSL-подключениями, устанавливаемыми обёртками PHP, Python или Ruby для OpenSSL. Подобные проблемы могли иметь место и на сервере, если модуль расширения устанавливал исходящее SSL-подключение.

  • Исправление ошибки планировщика «не удалось построить N-стороннее соединение» с полным соединением, заключённым в правой части левого соединения (Том Лейн)

  • Исправление некорректной обработки проверок класса эквивалентности в планах с многоуровневыми вложенными циклами (Том Лейн)

    С классом эквивалентности переменных с тремя или более элементами, например X.X = Y.Y = Z.Z, планировщик мог опустить некоторые проверки, необходимые, чтобы удостовериться, что все переменные действительно равны, в результате чего выдавались строки соединения, не удовлетворяющие предложениям WHERE. По ряду причин некорректные планы редко выбирались на практике, поэтому эта ошибка оставалась необнаруженной долгое время.

  • Исправление ошибок анализатора запроса в особых случаях при включённом параметре operator_precedence_warning (Том Лейн)

    Например, запрос SELECT (ARRAY[])::text[] давал ошибку, хотя без скобок он работал.

  • Ликвидирована утечка памяти на протяжении запроса при сканировании индекса GIN (Жюльен Руо)

  • Ликвидирована утечка памяти на протяжении запроса и угроза повреждения индекса при добавлении в индекс GIN (Том Лейн)

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

  • Исправление возможного некорректного поведения кодов формата TH, th и Y,YYY в to_timestamp() (Том Лейн)

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

  • Исправление вывода правил и представлений, в которых аргумент массив в конструкции значение оператор ANY (массив) представляет собой вложенный SELECT (Том Лейн)

  • Запрет на использование символов новой строки в значениях параметров ALTER SYSTEM (Том Лейн)

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

  • Исправление поведения ALTER TABLE ... REPLICA IDENTITY USING INDEX в случае, когда выбирается индекс по OID (Дэвид Роули)

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

  • Исправление сбоя при логическом декодировании на платформах, чувствительных к выравниванию (Том Лейн, Андрес Фройнд)

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

  • Исключение повторных обращений за ответом к приёмнику журнала при завершении процесса walsender (Ник Клитон)

  • Использование в pg_regress тайм-аута запуска из переменной окружения PGCTLTIMEOUT, если она задана (Том Лейн)

    Это поведение согласуется с тем, что было недавно введено в pg_ctl; возможность задать тайм-аут облегчает автоматизированное тестирование на медленных машинах.

  • Исправление ошибки в pg_upgrade, из-за которой не восстанавливалось членство семейства операторов, содержащего всего один класс операторов, в расширении (Том Лейн)

    В таких случаях семейство операторов восстанавливалось в новую базу, но переставало быть частью расширения. Это не приводило немедленно к негативным эффектам, но с выводом, выдаваемым впоследствии утилитой pg_dump, при восстановлении возникали ошибки (безвредные).

  • Исправление ошибки в pg_upgrade, приводившей к сбою, когда правила TOAST в новом кластере отличались от старых (Том Лейн)

    В pg_upgrade был специальный код для обработки ситуации, когда новая версия PostgreSQL считала, что у таблицы должна быть дополнительная таблица TOAST, а старая версия считала по-другому. Этот код был нерабочим, поэтому его следует удалить и ничего не делать в таких случаях; похоже, что нет никаких причин полагать, что мы не сможем обойтись без таблицы TOAST, если это было возможно по правилам старой версии.

  • Исправление атомарных операций в коде для PPC, генерируемом компилятором IBM XLC (Ной Миш)

  • Уменьшение числа семафоров SysV, задействуемых сборкой, полученной с ключом --disable-spinlocks (Том Лейн)

  • Переименование внутренней функции strtoi() в strtoint() во избежание конфликта с библиотечной функцией NetBSD (Томас Мунро)

  • Исправление кодов ошибок, получаемых из системных вызовов bind() и listen() в Windows (Том Лейн)

  • Уменьшение детализации вывода компилятора при сборке с Microsoft Visual Studio (Кристиан Ульрих)

  • Поддержка сборки с Visual Studio 2015 (Микаэль Пакье, Петр Желинек)

    Учтите, что сборки, произведённые с VS2015, не будут работать в версиях Windows, более ранних чем Windows Vista.

  • Исправление putenv() для корректной работы с Visual Studio 2013 (Микаэль Пакье)

  • Исключение потенциально небезопасного использования функции FormatMessage() в Windows (Кристиан Ульрих)

    Использование флага FORMAT_MESSAGE_IGNORE_INSERTS, где это уместно. Сообщений о конкретных связанных с этим ошибками не было, но проявить осторожность представляется хорошей идеей.

  • Обновление данных часовых поясов до версии tzdata 2016d, включающее изменения правил перехода на летнее время в России и Венесуэле. Появились новые названия часовых поясов Europe/Kirov и Asia/Tomsk, отражающие тот факт, что в этих регионах история изменения часовых поясов отличается от соседних.