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()
(Том Лейн)С этими кодами был возможен выход за конец строки, в результате чего последующие коды формата читали мусор.
Исправление вывода правил и представлений, в которых аргумент
массив
в конструкции
представляет собой вложенный SELECT (Том Лейн)значение
оператор
ANY (массив
)Запрет на использование символов новой строки в значениях параметров
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
, отражающие тот факт, что в этих регионах история изменения часовых поясов отличается от соседних.