E.52. Выпуск 10.6
Дата выпуска: 2018-11-08
В этот выпуск вошли различные исправления, внесённые после версии 10.5. За информацией о нововведениях версии 10 обратитесь к Разделу E.58.
E.52.1. Миграция на версию 10.6
Если используется версия 10.X, выгрузка/восстановление базы не требуется.
Однако если вы используете расширение pg_stat_statements, прочитайте запись о нём в списке изменений.
Если вы обновляете сервер с более ранней версии, чем 10.4, см. также Раздел E.54.
E.52.2. Изменения
Корректное заключение в кавычки имён переходных таблиц в командах
CREATE TRIGGER ... REFERENCING, которые выдаёт pg_dump (Том Лейн)Отсутствием кавычек мог воспользоваться непривилегированный пользователь с целью получения прав суперпользователя при последующем восстановлении выгруженных данных или выполнении pg_upgrade. (CVE-2018-16850)
Устранение сбоев, которые могли возникать в особых случаях в семействе функций
has_(Том Лейн)объект_privilege()Эти функции должны возвращать NULL, а не выдавать ошибку при получении неверного OID. Некоторые из этих функций делали это и прежде, но не все. Кроме того, в функции
has_column_privilege()на некоторых платформах могли иметь место и другие сбои.Исправление функции
pg_get_partition_constraintdef(), чтобы при получении неверного OID отношения не происходил сбой, а выдавался NULL (Том Лейн)Недопущение замедления порядка O(N^2) в функциях match/split с регулярными выражениями при обработке длинных строк (Эндрю Гирт)
Исправление дефекта в обработке стандартных многосимвольных операторов, следующих непосредственно за комментарием или символами
+и-(Эндрю Гирт)Следствием данного упущения могли быть ошибки при разборе или неправильное определение приоритета операторов.
Недопущение замедления порядка O(N^3) при обработке лексическим анализатором длинных строк из символов
+или-(Эндрю Гирт)Исправление некорректного выполнения подчинённых планов при сканировании внешнего запроса в обратном направлении (Эндрю Гирт)
Исправление ошибочного поведения
UPDATE/DELETE ... WHERE CURRENT OF ...после перемещения курсора (Том Лейн)Курсор, сканирующий несколько отношений (в частности, дерево наследования), мог работать неправильно, возвращаясь к предыдущему отношению.
Исправление в функции
EvalPlanQualобработки узлов InitPlan, которые выполняются по условию (Эндрю Гирт, Том Лейн)Вследствие ошибки реализации могли возникать сложновоспроизводимые сбои или выдаваться неправильные результаты при одновременных запросах на изменение, содержащих изолированные вложенные
SELECTв конструкцииCASE.Недопущение создания секции в триггере, присоединённом к родительской таблице (Амит Ланготе)
В идеале такое создание можно было бы разрешить, но в данный момент оно блокируется во избежание сбоев.
Устранение проблем с применением
ON COMMIT DELETE ROWSк секционированной временной таблице (Амит Ланготе)Исправление проверок классов символов для корректной поддержки в Windows символов Unicode выше U+FFFF (Том Лейн, Кэндзи Уно)
Эта ошибка проявлялась в операциях полнотекстового поиска, а также в работе модулей
contrib/ltreeиcontrib/pg_trgm.Недопущение передачи вложенных
SELECTс оконными функциями, а также с указаниямиLIMITилиOFFSET, параллельным исполнителям (Амит Капила)В таких случаях поведение могло быть несогласованным из-за того, что разные исполнители получали разные результаты вследствие вариативности в порядке строк.
Смена владельца последовательности, принадлежащей сторонней таблице, при выполнении
ALTER OWNERдля этой таблицы (Питер Эйзентраут)Операция смены владельца должна распространяться и на такие последовательности, но раньше сторонние таблицы она не затрагивала.
Обеспечение обработки сервером уже полученных прерываний
NOTIFYиSIGTERMдо начала ожидания данных от клиента (Джефф Джейнс, Том Лейн)Устранение ошибки, приводившей к выделению лишней памяти для строки результатов
array_out()(Кэйити Хиробэ)Предотвращение утечки памяти на время выполнения запроса при работе с
XMLTABLE(Эндрю Гирт)Ликвидация утечки памяти при сканировании индекса SP-GiST (Том Лейн)
Сколько-нибудь значительное проявление этой утечки наблюдалось, только когда для ограничения-исключения, использующего SP-GiST, в индекс поступало много записей.
Закрытие файла сопоставлений в
ApplyLogicalMappingFile()после завершения его использования (Томаш Вондра)Ранее дескриптор файла терялся, что могло в итоге приводить к сбоям при логическом декодировании.
Устранение ошибки логического декодирования в случаях, когда сопоставленная таблица каталога постоянно перезаписывается, например, в результате действия
VACUUM FULL(Андрес Фройнд)Предотвращение запуска сервера со значением
wal_level, недостаточно большим для поддержки существующего слота репликации (Андрес Фройнд)Предотвращение сбоя в случаях, когда служебная команда создаёт бесконечную рекурсию (Том Лейн)
Устранение в процессе инициализации горячего резерва проблемы дублирующихся XID, которые образуются при выполнении двухфазных транзакций на ведущем сервере (Микаэль Пакье, Константин Книжник)
Исправление поведения событийных триггеров при обработке вложенных команд
ALTER TABLE(Микаэль Пакье, Альваро Эррера)Передача параллельным исполнителям времени начала оператора и транзакции от родительского процесса (Константин Книжник)
Тем самым исправлено поведение таких функций, как
transaction_timestamp(), выполняющихся в параллельном исполнителе.Обеспечение корректного выравнивания при передаче расширенных значений данных параллельным исполнителям, что позволяет избежать сбоев на платформах, требовательных к выравниванию (Том Лейн, Амит Капила)
Исправление логики переработки файла WAL для правильного выполнения этой операции на ведомых серверах (Микаэль Пакье)
В зависимости от значения параметра
archive_modeведомый сервер мог не удалить некоторые файлы WAL, подлежащие удалению.Исправление обработки времени фиксации транзакций в процессе восстановления (Масахико Савада, Микаэль Пакье)
Если отслеживание времени фиксации не было включено постоянно, в процессе восстановления мог произойти сбой при попытке получить время фиксации транзакции, для которой оно не было записано.
Использование случайной затравки для
random()в initdb, а также в сервере, запускаемом в режиме начальной загрузки и в монопольном режиме (Ной Миш)Практическая польза этого изменения состоит прежде всего в разрешении проблемы, когда программа initdb не могла использовать общую память POSIX, считая её недоступной, из-за конфликтов имён, вызванных использованием одинаковой затравки.
Предотвращение повреждения общей памяти в логике DSA (Томас Манро)
Возможность прерывания операции выделения памяти в DSM (Крис Трэверс)
Предупреждение сбоя в параллельном исполнителе при загрузке расширения, пытающегося обратиться к системным кешам в своей функции инициализации (Томас Манро)
Мы не считаем это удачным приёмом программирования расширений, но до внедрения параллельных запросов это работало, а значит должно поддерживаться и теперь.
Исправление поведения при динамическом включении параметра
full_page_writes(Кётаро Хоригути)Недопущение возможного сбоя в результате двойного освобождения памяти при повторном сканировании SP-GiST (Эндрю Гирт)
Предотвращение некорректной компоновки функций в src/port и src/common на платформах BSD, использующих формат ELF, а также в HP-UX и Solaris (Эндрю Гирт, Том Лейн)
Разделяемые библиотеки, загружаемые в адресное пространство сервера, могли использовать серверные версии этих функций, а не собственные реализации, как должно быть. Так как в поведении этих двух наборов функций имеются различия, это приводило к проблемам.
Предупреждение возможного переполнения буфера при воспроизведении операции распаковки страницы GIN из WAL (Александр Коротков, Шивасубраманьян Рамасубраманьян)
Предотвращение переполнения метастраницы хеш-индекса в случаях, когда размер
BLCKSZменьше значения по умолчанию (Дилип Кумар)Добавление ранее упущенного пересчёта контрольной суммы страницы в хеш-индексах (Амит Капила)
Выполнение операции fsync, ранее упущенной, для каталога слотов репликации (Константин Книжник, Микаэль Пакье)
Устранение неожиданных тайм-аутов при использовании
wal_sender_timeoutна медленном сервере (Ной Миш)Исправление вычисления подходящей точки согласованности WAL в процессах горячего резерва (Александр Кукушкин, Микаэль Пакье)
Выбор правильной точки позволяет предотвратить некорректное поведение сразу после того, как ведомый сервер достигает согласованного состояния базы при воспроизведении WAL.
Корректная остановка фоновых рабочих процессов при получении главным процессом запроса на быстрое отключение до завершения запуска базы (Александр Кукушкин)
Обновление карты свободного пространства при воспроизведении из WAL изменений флагов замороженных/полностью видимых страниц (Альваро Эррера)
Ранее мы не заботились об этом, считая, что в карте свободного пространства в любом случае нет важной информации. Однако если она сильно устаревает, это может привести к значительному снижению производительности после повышения ведомого сервера до основного. Эта карта в конце концов будет исправлена в результате обновлений, но мы хотим иметь её в хорошем состоянии раньше, поэтому стоит приложить дополнительные усилия и поддерживать её актуальность при воспроизведении WAL.
Предотвращение преждевременного освобождения ресурсов параллельных исполнителей по окончании запроса или при достижении предельного числа кортежей (Амит Капила)
В этот момент завершение исполнителя допустимо, только если вызывающий процесс не может запросить обратное сканирование.
Отказ от вызова обработчиков atexit при обработке
SIGQUIT(Хейкки Линнакангас)Исключение сопоставлений пользователей для сторонних серверов из состава расширений (Том Лейн)
При выполнении
CREATE USER MAPPINGв скрипте расширения для создаваемого сопоставления добавлялась зависимость, чего не должно быть. Сопоставления пользователей, как и роли, не могут быть членами расширений.Исправление поведения syslogger в случае ошибок при попытке открыть файлы CSV (Том Лейн)
При передаче в libpq нескольких имён узлов они должны разрешаться в DNS не все сразу, а каждое в свою очередь (Том Лейн)
Это предотвращает отказы, которых можно избежать, и замедления подключения после успешного соединения с одним из предыдущих серверов в списке.
Исправление поведения libpq, чтобы тайм-ауты при подключении корректно применялись для отдельного имени или IP-адреса узла (Том Лейн)
Ранее при некоторых условиях таймер при переключении на следующий узел не перезапускался, что могло приводить к преждевременному тайм-ауту.
Исправление кода psql, а также примеров в документации, чтобы функция
PQconsumeInput()вызывалась передPQnotifies()(Том Лейн)Тем самым решена проблема, когда psql не выдавал полученное сообщение
NOTIFYдо следующей команды.Исправление в pg_dump обработки ключа
--no-publications, чтобы с ним также игнорировались таблицы публикации (Жиль Даролд)Исключение из выгрузки pg_dump идентификационной последовательности при исключении её родительской таблицы (Дэвид Роули)
Устранение возможной несогласованности при сортировке различных имён объектов в pg_dump (Джейкоб Чемпион)
Исправление pg_restore, чтобы при выдаче команд
DISABLE/ENABLE TRIGGERимя таблицы дополнялось схемой (Том Лейн)Это предотвращает сбои, возможные при новой политике выполнения восстановления с ограниченным путём поиска.
В pg_upgrade исправлена обработка событийных триггеров в расширениях (Харибабу Комми)
Ранее pg_upgrade не сохранял связь событийных триггеров с расширениями.
Исправление проверки состояния кластера в pg_upgrade, чтобы она корректно выполнялась на ведомом сервере (Брюс Момджян)
Ограничение числа размерностей в значениях
cubeво всех функцияхcontrib/cube(Андрей Бородин)Ранее в некоторых функциях, связанных с кубами, можно было создать такие значения, которые затем не принимала функция
cube_in(), что вызывало ошибки при восстановлении выгруженных данных.В
contrib/pg_stat_statementsролиpg_read_all_statsзапрещено выполнениеpg_stat_statements_reset()(Харибабу Комми)Роли
pg_read_all_statsдолжно позволяться только чтение статистики, но не её изменение, поэтому разрешение на выполнение этой функции ей было дано некорректно.Чтобы это изменение вступило в силу, выполните
ALTER EXTENSION pg_stat_statements UPDATEв каждой базе данных, где установлено расширениеpg_stat_statements.Недопущение передачи расширением
contrib/postgres_fdwпредложенийORDER BY, не содержащих переменных, на удалённый сервер (Эндрю Гирт)Исправление функции
unaccent()в расширенииcontrib/unaccent, чтобы она использовала словарь текстового поискаunaccent, находящийся в той же схеме, где и сама функция (Том Лейн)Ранее она пыталась найти словарь по пути поиска, но могла не обнаружить его, если путь поиска был ограничен.
Устранение проблем при сборке в macOS 10.14 (Mojave) (Том Лейн)
Усовершенствование скрипта configure, чтобы в
CPPFLAGSдобавлялся ключ-isysroot; без этого PL/Perl и PL/Tcl нельзя сконфигурировать или собрать в macOS 10.14. Значение sysroot можно переопределить во время конфигурирования или сборки, установив переменнуюPG_SYSROOTв аргументах configure или make.Теперь рекомендуется, чтобы для связанных с Perl расширений во флагах компилятора указывалось
$(perl_includespec), а не-I$(perl_archlibexp)/CORE. Второй вариант по-прежнему будет работать на большинстве платформ, но не в последних macOS.Также теперь не требуется указывать вручную ключ
--with-tclconfig, чтобы собрать PL/Tcl в последних версиях macOS.Исправление скриптов сборки с MSVC и регрессионного тестирования для работы с последними версиями Perl (Эндрю Дунстан)
Это изменение вызвано тем, что Perl теперь по умолчанию не включает текущий каталог в свой путь поиска.
Реализована возможность запускать регрессионные тесты в Windows с учётной записью администратора (Эндрю Дунстан)
Чтобы это было безопасно, pg_regress теперь лишает себя расширенных прав при запуске.
Снятие запрета на возврат из функций сравнения btree значений
INT_MIN(Том Лейн)До настоящего времени мы не позволяли типозависимым функциям сравнения возвращать
INT_MIN, благодаря чему вызывающий код мог сменить порядок сортировки, просто изменив знак результата сравнения. Однако это могло вызывать проблемы с функциями сравнения, возвращающими непосредственно результатmemcmp(),strcmp()и подобных функций, так как POSIX не накладывает на него никаких ограничений. Как минимум некоторые последние версииmemcmp()могут возвращатьINT_MIN, что приводило к нарушению порядка сортировки. В связи с этим мы убрали это ограничение. Там же, где требуется поменять порядок сортировки на противоположный, теперь нужно использовать макросINVERT_COMPARE_RESULT().Устранение риска рекурсии при обработке сообщений об аннулировании общего кеша (Том Лейн)
Эта ошибка могла привести, например, к сбою при обращении к системному каталогу или индексу, который был только что обработан командой
VACUUM FULL.В результате этого изменения функция
LockAcquireтеперь может возвращать новый код результата, что теоретически может вызвать проблемы при использовании этой функции, хотя для этого схема её использования должна быть весьма необычной. Также был изменён API функцииLockAcquireExtended.Сохранение и восстановление глобальных переменных SPI в
SPI_connect()иSPI_finish()(Чепмен Флэк, Том Лейн)Это предотвращает накладки, возможные при вызове из одной функции, использующей SPI, другой такой функции.
Предотвращение использования потенциально невыравненных буферов страниц (Том Лейн)
Добавлены новые типы-объединения
PGAlignedBlockиPGAlignedXLogBlock, которые должны использоваться вместо простых массивов char, чтобы компилятор гарантированно выравнивал адрес начала буфера. В результате устраняется риск аварийного сбоя на платформах, чувствительных к выравниванию, и может увеличиться быстродействие даже на тех платформах, где выравнивание не требуется.Приведение в
src/port/snprintf.cзначения результатаsnprintf()в соответствие со стандартом C99 (Том Лейн)На платформах, где этот код используется (в основном в Windows), его несовременное поведение (не соответствующие C99) могло препятствовать выявлению переполнения буфера, если вызывающий код рассчитывал на семантику C99.
Требование обязательного использования
-msse2при сборке компилятором clang для i386 (Андрес Фройнд)Тем самым решается проблема отсутствия проверок переполнения при операциях с плавающей точкой.
Исправление в configure проверки, определяющей, результат какого типа возвращает
strerror_r()(Том Лейн)Предыдущая реализация давала неправильный ответ при сборке с использованием компилятора icc в Linux (возможно, и в других случаях), в результате чего libpq не выдавала полезные сообщения при возникновении системных ошибок.
Обновление данных часовых поясов до версии tzdata 2018g, включающее изменения правил перехода на летнее время в России (Волгограде), Чили, Марокко и на Фиджи, а также корректировку исторических данных для Китая, Гавайев, Японии, Макао и Северной Кореи.
E.52. Release 10.6
Release date: 2018-11-08
This release contains a variety of fixes from 10.5. For information about new features in major release 10, see Section E.58.
E.52.1. Migration to Version 10.6
A dump/restore is not required for those running 10.X.
However, if you use the pg_stat_statements extension, see the changelog entry below about that.
Also, if you are upgrading from a version earlier than 10.4, see Section E.54.
E.52.2. Changes
Ensure proper quoting of transition table names when pg_dump emits
CREATE TRIGGER ... REFERENCINGcommands (Tom Lane)This oversight could be exploited by an unprivileged user to gain superuser privileges during the next dump/reload or pg_upgrade run. (CVE-2018-16850)
Fix corner-case failures in
has_family of functions (Tom Lane)foo_privilege()Return NULL rather than throwing an error when an invalid object OID is provided. Some of these functions got that right already, but not all.
has_column_privilege()was additionally capable of crashing on some platforms.Fix
pg_get_partition_constraintdef()to return NULL rather than fail when passed an invalid relation OID (Tom Lane)Avoid O(N^2) slowdown in regular expression match/split functions on long strings (Andrew Gierth)
Fix parsing of standard multi-character operators that are immediately followed by a comment or
+or-(Andrew Gierth)This oversight could lead to parse errors, or to incorrect assignment of precedence.
Avoid O(N^3) slowdown in lexer for long strings of
+or-characters (Andrew Gierth)Fix mis-execution of SubPlans when the outer query is being scanned backwards (Andrew Gierth)
Fix failure of
UPDATE/DELETE ... WHERE CURRENT OF ...after rewinding the referenced cursor (Tom Lane)A cursor that scans multiple relations (particularly an inheritance tree) could produce wrong behavior if rewound to an earlier relation.
Fix
EvalPlanQualto handle conditionally-executed InitPlans properly (Andrew Gierth, Tom Lane)This resulted in hard-to-reproduce crashes or wrong answers in concurrent updates, if they contained code such as an uncorrelated sub-
SELECTinside aCASEconstruct.Prevent creation of a partition in a trigger attached to its parent table (Amit Langote)
Ideally we'd allow that, but for the moment it has to be blocked to avoid crashes.
Fix problems with applying
ON COMMIT DELETE ROWSto a partitioned temporary table (Amit Langote)Fix character-class checks to not fail on Windows for Unicode characters above U+FFFF (Tom Lane, Kenji Uno)
This bug affected full-text-search operations, as well as
contrib/ltreeandcontrib/pg_trgm.Disallow pushing sub-
SELECTs containing window functions,LIMIT, orOFFSETto parallel workers (Amit Kapila)Such cases could result in inconsistent behavior due to different workers getting different answers, as a result of indeterminacy due to row-ordering variations.
Ensure that sequences owned by a foreign table are processed by
ALTER OWNERon the table (Peter Eisentraut)The ownership change should propagate to such sequences as well, but this was missed for foreign tables.
Ensure that the server will process already-received
NOTIFYandSIGTERMinterrupts before waiting for client input (Jeff Janes, Tom Lane)Fix over-allocation of space for
array_out()'s result string (Keiichi Hirobe)Avoid query-lifetime memory leak in
XMLTABLE(Andrew Gierth)Fix memory leak in repeated SP-GiST index scans (Tom Lane)
This is only known to amount to anything significant in cases where an exclusion constraint using SP-GiST receives many new index entries in a single command.
Ensure that
ApplyLogicalMappingFile()closes the mapping file when done with it (Tomas Vondra)Previously, the file descriptor was leaked, eventually resulting in failures during logical decoding.
Fix logical decoding to handle cases where a mapped catalog table is repeatedly rewritten, e.g., by
VACUUM FULL(Andres Freund)Prevent starting the server with
wal_levelset to too low a value to support an existing replication slot (Andres Freund)Avoid crash if a utility command causes infinite recursion (Tom Lane)
When initializing a hot standby, cope with duplicate XIDs caused by two-phase transactions on the master (Michael Paquier, Konstantin Knizhnik)
Fix event triggers to handle nested
ALTER TABLEcommands (Michael Paquier, Álvaro Herrera)Propagate parent process's transaction and statement start timestamps to parallel workers (Konstantin Knizhnik)
This prevents misbehavior of functions such as
transaction_timestamp()when executed in a worker.Fix transfer of expanded datums to parallel workers so that alignment is preserved, preventing crashes on alignment-picky platforms (Tom Lane, Amit Kapila)
Fix WAL file recycling logic to work correctly on standby servers (Michael Paquier)
Depending on the setting of
archive_mode, a standby might fail to remove some WAL files that could be removed.Fix handling of commit-timestamp tracking during recovery (Masahiko Sawada, Michael Paquier)
If commit timestamp tracking has been turned on or off, recovery might fail due to trying to fetch the commit timestamp for a transaction that did not record it.
Randomize the
random()seed in bootstrap and standalone backends, and in initdb (Noah Misch)The main practical effect of this change is that it avoids a scenario where initdb might mistakenly conclude that POSIX shared memory is not available, due to name collisions caused by always using the same random seed.
Fix possible shared-memory corruption in DSA logic (Thomas Munro)
Allow DSM allocation to be interrupted (Chris Travers)
Avoid failure in a parallel worker when loading an extension that tries to access system caches within its init function (Thomas Munro)
We don't consider that to be good extension coding practice, but it mostly worked before parallel query, so continue to support it for now.
Properly handle turning
full_page_writeson dynamically (Kyotaro Horiguchi)Fix possible crash due to double
free()during SP-GiST rescan (Andrew Gierth)Prevent mis-linking of src/port and src/common functions on ELF-based BSD platforms, as well as HP-UX and Solaris (Andrew Gierth, Tom Lane)
Shared libraries loaded into a backend's address space could use the backend's versions of these functions, rather than their own copies as intended. Since the behavior of the two sets of functions isn't quite the same, this led to failures.
Avoid possible buffer overrun when replaying GIN page recompression from WAL (Alexander Korotkov, Sivasubramanian Ramasubramanian)
Avoid overrun of a hash index's metapage when
BLCKSZis smaller than default (Dilip Kumar)Fix missed page checksum updates in hash indexes (Amit Kapila)
Fix missed fsync of a replication slot's directory (Konstantin Knizhnik, Michael Paquier)
Fix unexpected timeouts when using
wal_sender_timeouton a slow server (Noah Misch)Ensure that hot standby processes use the correct WAL consistency point (Alexander Kukushkin, Michael Paquier)
This prevents possible misbehavior just after a standby server has reached a consistent database state during WAL replay.
Ensure background workers are stopped properly when the postmaster receives a fast-shutdown request before completing database startup (Alexander Kukushkin)
Update the free space map during WAL replay of page all-visible/frozen flag changes (Álvaro Herrera)
Previously we were not careful about this, reasoning that the FSM is not critical data anyway. However, if it's sufficiently out of date, that can result in significant performance degradation after a standby has been promoted to primary. The FSM will eventually be healed by updates, but we'd like it to be good sooner, so work harder at maintaining it during WAL replay.
Avoid premature release of parallel-query resources when query end or tuple count limit is reached (Amit Kapila)
It's only okay to shut down the executor at this point if the caller cannot demand backwards scan afterwards.
Don't run atexit callbacks when servicing
SIGQUIT(Heikki Linnakangas)Don't record foreign-server user mappings as members of extensions (Tom Lane)
If
CREATE USER MAPPINGis executed in an extension script, an extension dependency was created for the user mapping, which is unexpected. Roles can't be extension members, so user mappings shouldn't be either.Make syslogger more robust against failures in opening CSV log files (Tom Lane)
When libpq is given multiple target host names, do the DNS lookups one at a time, not all at once (Tom Lane)
This prevents unnecessary failures or slow connections when a connection is successfully made to one of the earlier servers in the list.
Fix libpq's handling of connection timeouts so that they are properly applied per host name or IP address (Tom Lane)
Previously, some code paths failed to restart the timer when switching to a new target host, possibly resulting in premature timeout.
Fix psql, as well as documentation examples, to call
PQconsumeInput()before eachPQnotifies()call (Tom Lane)This fixes cases in which psql would not report receipt of a
NOTIFYmessage until after the next command.Fix pg_dump's
--no-publicationsoption to also ignore publication tables (Gilles Darold)In pg_dump, exclude identity sequences when their parent table is excluded from the dump (David Rowley)
Fix possible inconsistency in pg_dump's sorting of dissimilar object names (Jacob Champion)
Ensure that pg_restore will schema-qualify the table name when emitting
DISABLE/ENABLE TRIGGERcommands (Tom Lane)This avoids failures due to the new policy of running restores with restrictive search path.
Fix pg_upgrade to handle event triggers in extensions correctly (Haribabu Kommi)
pg_upgrade failed to preserve an event trigger's extension-membership status.
Fix pg_upgrade's cluster state check to work correctly on a standby server (Bruce Momjian)
Enforce type
cube's dimension limit in allcontrib/cubefunctions (Andrey Borodin)Previously, some cube-related functions could construct values that would be rejected by
cube_in(), leading to dump/reload failures.In
contrib/pg_stat_statements, disallow thepg_read_all_statsrole from executingpg_stat_statements_reset()(Haribabu Kommi)pg_read_all_statsis only meant to grant permission to read statistics, not to change them, so this grant was incorrect.To cause this change to take effect, run
ALTER EXTENSION pg_stat_statements UPDATEin each database wherepg_stat_statementshas been installed.In
contrib/postgres_fdw, don't try to ship a variable-freeORDER BYclause to the remote server (Andrew Gierth)Fix
contrib/unaccent'sunaccent()function to use theunaccenttext search dictionary that is in the same schema as the function (Tom Lane)Previously it tried to look up the dictionary using the search path, which could fail if the search path has a restrictive value.
Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
Adjust configure to add an
-isysrootswitch toCPPFLAGS; without this, PL/Perl and PL/Tcl fail to configure or build on macOS 10.14. The specific sysroot used can be overridden at configure time or build time by setting thePG_SYSROOTvariable in the arguments of configure or make.It is now recommended that Perl-related extensions write
$(perl_includespec)rather than-I$(perl_archlibexp)/COREin their compiler flags. The latter continues to work on most platforms, but not recent macOS.Also, it should no longer be necessary to specify
--with-tclconfigmanually to get PL/Tcl to build on recent macOS releases.Fix MSVC build and regression-test scripts to work on recent Perl versions (Andrew Dunstan)
Perl no longer includes the current directory in its search path by default; work around that.
On Windows, allow the regression tests to be run by an Administrator account (Andrew Dunstan)
To do this safely, pg_regress now gives up any such privileges at startup.
Allow btree comparison functions to return
INT_MIN(Tom Lane)Up to now, we've forbidden datatype-specific comparison functions from returning
INT_MIN, which allows callers to invert the sort order just by negating the comparison result. However, this was never safe for comparison functions that directly return the result ofmemcmp(),strcmp(), etc, as POSIX doesn't place any such restriction on those functions. At least some recent versions ofmemcmp()can returnINT_MIN, causing incorrect sort ordering. Hence, we've removed this restriction. Callers must now use theINVERT_COMPARE_RESULT()macro if they wish to invert the sort order.Fix recursion hazard in shared-invalidation message processing (Tom Lane)
This error could, for example, result in failure to access a system catalog or index that had just been processed by
VACUUM FULL.This change adds a new result code for
LockAcquire, which might possibly affect external callers of that function, though only very unusual usage patterns would have an issue with it. The API ofLockAcquireExtendedis also changed.Save and restore SPI's global variables during
SPI_connect()andSPI_finish()(Chapman Flack, Tom Lane)This prevents possible interference when one SPI-using function calls another.
Avoid using potentially-under-aligned page buffers (Tom Lane)
Invent new union types
PGAlignedBlockandPGAlignedXLogBlock, and use these in place of plain char arrays, ensuring that the compiler can't place the buffer at a misaligned start address. This fixes potential core dumps on alignment-picky platforms, and may improve performance even on platforms that allow misalignment.Make
src/port/snprintf.cfollow the C99 standard's definition ofsnprintf()'s result value (Tom Lane)On platforms where this code is used (mostly Windows), its pre-C99 behavior could lead to failure to detect buffer overrun, if the calling code assumed C99 semantics.
When building on i386 with the clang compiler, require
-msse2to be used (Andres Freund)This avoids problems with missed floating point overflow checks.
Fix configure's detection of the result type of
strerror_r()(Tom Lane)The previous coding got the wrong answer when building with icc on Linux (and perhaps in other cases), leading to libpq not returning useful error messages for system-reported errors.
Update time zone data files to tzdata release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia (Volgograd), plus historical corrections for China, Hawaii, Japan, Macau, and North Korea.