E.23. Выпуск 9.5.3
Дата выпуска: 2016-05-12
В этот выпуск вошли различные исправления, внесённые после версии 9.5.2. За информацией о нововведениях версии 9.5 обратитесь к Разделу E.26.
E.23.1. Миграция на версию 9.5.3
Если используется версия 9.5.X, выгрузка/восстановление базы не требуется.
Однако если вы обновляете сервер с более ранней версии, чем 9.5.2, см. Раздел E.24.
E.23.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 (- массив)
- Запрет на использование символов новой строки в значениях параметров - 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, отражающие тот факт, что в этих регионах история изменения часовых поясов отличается от соседних.