E.7. Выпуск 9.6.18
Дата выпуска: 2020-05-14
В этот выпуск вошли различные исправления, внесённые после версии 9.6.17. За информацией о нововведениях версии 9.6 обратитесь к Разделу E.25.
E.7.1. Миграция на версию 9.6.18
Если используется версия 9.6.X, выгрузка/восстановление базы не требуется.
Однако если вы обновляете сервер с более ранней версии, чем 9.6.16, см. Раздел E.9.
E.7.2. Изменения
Сохранение свойства
indisclusteredу индексов, перезаписываемых командойALTER TABLE(Амит Ланготе, Джастин Призби)Ранее команда
ALTER TABLEтеряла информацию о том, для какого индекса выполнялась командаCLUSTER.Сохранение свойства идентификации реплики у индексов, перезаписываемых командой
ALTER TABLE(Цюань Цзунлян, Питер Эйзентраут)Блокирование объектов на более ранней стадии выполнения
DROP OWNED BY(Альваро Эррера)Это позволяет исключить ошибки в условиях гонки, когда какие-либо из удаляемых объектов параллельно удаляются в другом сеансе.
Исправление обработки ошибок при выполнении
CREATE ROLE ... IN ROLE(Эндрю Гирт)В некоторых случаях при ошибке вместо надлежащего сообщения выдавалось «unexpected node type» (неожиданный тип узла) или что-то подобное.
Исправление в полнотекстовом поиске обработки отрицания для результата поиска фразы (Том Лейн)
Запросы вида
!(foo<->bar)не могли найти нужные строки, когда применялся поиск по индексу GiST или GIN.Исправление полнотекстового поиска в ситуациях, когда в поисковой фразе оказывается элемент, задающий и искомый префикс, и вес (Том Лейн)
Улучшение выбора выдержек из документа в функции
ts_headline()при обработке фразовых запросов (Том Лейн)Устранение ошибок в обработке
gin_fuzzy_search_limit(Аде Хэйуорд, Том Лейн)При небольшом значении
gin_fuzzy_search_limitвыполнение запросов могло неожиданно замедляться из-за непреднамеренного многократного сканирования одной и той же страницы индекса. В другом месте кода желаемая фильтрация не применялась вовсе, в результате чего могло возвращаться слишком много значений.Добавление в набор форматов, допустимых для типа
circle, формата «(», который должен приниматься согласно документации (Дэвид Чжан)x,y),rДоработка функций
get_bit()иset_bit()для поддержки строкbyteaдлиннее 256 МБ (Мувад Ли)Так как аргумент, задающий номер бита, имеет тип
int4, с помощью этих функций нельзя обращаться к битам за пределами первых 256 мегабайт значенияbytea. В 13 версии тип аргумента будет расширен доint8, а тем временем в текущей версии обеспечена поддержка этими функциями больших значенийbyteaв обозначенном пределе.Устранение возможной утечки открытого дескриптора каталога в
pg_ls_dir(),pg_timezone_names(),pg_tablespace_databases()и родственных функциях (Джастин Призби)Исправление разрешения типов в полиморфных функциях, чтобы фактический тип результата
anyarrayвыводился из входного типа, если на вход поступает толькоanyrange(Том Лейн)Устранение возможности сбоя при прерывании команды
REINDEXсигналом завершения сеанса (Том Лейн)Предотвращение отображения мусорных данных при выводе статистики таблицы соединения по хешу в
EXPLAIN(Константин Книжник, Том Лейн, Томас Манро)Исправление расчёта длительности этапов в процедуре усечения кучи при выполнении
VACUUM VERBOSE(Тацухито Касахара)Предотвращение повторного добавления «waiting» (ожидание) в заголовок процесса, выводимый PS (Масахико Савада)
Предотвращение преждевременного перерабатывания сегментов WAL во время восстановления после сбоя (Жеан-Гийом де Рорте)
Сегменты WAL, которые становились готовыми к архивации в ходе процедуры восстановления, могли перерабатываться, не попадая в архив.
Отказ от сканирования неактуальных линий времени в ходе восстановления архива (Кётаро Хоригути)
Теперь не будут производиться многократные попытки считать несуществующие файлы WAL из архивного хранилища, что важно при низкоскоростном подключении к архиву.
Удаление ненужной проверки, сигнализирующей об ошибке «subtransaction logged without previous top-level txn record» (записи подтранзакции в журнале не предшествует запись транзакции верхнего уровня) (Арсений Шер, Амит Капила)
Ситуация, которая ранее считалась недопустимой, могла сложиться на вполне законных основаниях, поэтому данную проверку следует удалить.
Обеспечение снятия блокировки
io_in_progress_lockдля слота репликации при обработке нештатных ситуаций (Паван Деоласи)Ранее блокировка снималась не всегда, вследствие чего процесс walsender мог зависнуть в ожидании.
Устранение условий гонки при управлении синхронными ведомыми серверами (Том Лейн)
В процессе применения изменений параметра
synchronous_standby_namesсуществовало окно, в котором могли быть приняты неверные решения об освобождении транзакций, ожидающих синхронной фиксации. Подобные неверные решения могли приниматься и тогда, когда после завершения процесса walsender он сразу же заменялся другим.Недопущение изменения
nextXidв обратном направлении на ведомом сервере (Ека Паламадай)В результате условия гонки сервер горячего резерва мог передавать ведущему серверу некорректные ответные сообщения, вследствие чего на ведущем операция
VACUUMмогла выполняться раньше времени.Добавление значений SQLSTATE в формируемые отчёты об ошибках в нескольких местах (Масахико Савада)
Реализация в PL/pgSQL надёжного метода пресечения попытки выполнить функцию событийного триггера как обычную функцию (Том Лейн)
Устранение утечки памяти в libpq при использовании режима
sslmode=verify-full(Роман Пешкуров)При проверке сертификата на стадии установления соединения была возможна утечка памяти. Это могло стать серьёзной проблемой, если клиентский процесс в своём жизненном цикле устанавливал много подключений к базе данных.
Обработка в ecpg аргумента «
-» как означающего «читать с stdin» на всех платформах (Том Лейн)Добавление в pg_dump поддержки конструкции
ALTER ... DEPENDS ON EXTENSION(Альваро Эррера)Ранее программа pg_dump игнорировала зависимости, добавленные таким образом, вследствие чего они терялись после выгрузки/восстановления или выполнения pg_upgrade.
Исправление в pg_dump выгрузки комментариев к объектам политики RLS (Том Лейн)
Перенос в выгрузке pg_dump восстановления событийных триггеров на финальный этап (Фабрицио де Ройес Мелло, Хамид Ахтар, Том Лейн)
Это снижает риск нежелательного влияния событийных триггеров на восстановление других объектов.
Исправление обработки кавычек в значениях параметров
--encoding,--lc-ctypeи--lc-collateутилиты createdb (Микаэль Пакье)Устранение краха при попытке вызвать функцию
lo_manage()изcontrib/loкак обычную функцию, а не в качестве триггера (Том Лейн)Защита от переполнения полей длины в типах
ltreeиlqueryмодуляcontrib/ltree(Никита Глухов)Устранение утечки ссылки на кеш в
contrib/sepgsql(Майкл Ло)Исправление обработки имён локалей в стиле Unix на платформе Windows (Хуан Хосе Сантамария Флеча)
Исправление в сборках MSVC манипуляции с путём к Python с учётом того, что он может содержать пробелы (Виктор Вагнер)
Исправление в сборках MSVC определения версии Visual Studio во избежание зависимости от языковых настроек (Эндрю Дунстан)
Использование в сборках MSVC ключа
-Wno-deprecatedс bison версии новее 3.0, как уже делается в сборках для отличных от Windows ОС (Эндрю Дунстан)Обновление данных часовых поясов до версии tzdata 2020a, включающее изменение правил перехода на летнее время в Марокко и канадском Юконе, а также корректировку исторических данных для Шанхая.
Часовой пояс America/Godthab был переименован в America/Nuuk в соответствии с принятым сейчас названием; старое обозначение сохранено для совместимости в виде ссылки.
Также был актуализирован список известных initdb часовых поясов в Windows, так что теперь параметры системного часового пояса на этой платформе будут восприняты корректно с большей вероятностью.