E.18. Выпуск 9.5.8
Дата выпуска: 2017-08-10
В этот выпуск вошли различные исправления, внесённые после версии 9.5.7. За информацией о нововведениях версии 9.5 обратитесь к Разделу E.26.
E.18.1. Миграция на версию 9.5.8
Если используется версия 9.5.X, выгрузка/восстановление базы не требуется.
Однако если вы используете сторонние серверы данных, на которых для проверки подлинности применяются пароли, прочитайте ниже первую запись в списке изменений.
Также, если вы обновляете сервер с более ранней версии, чем 9.5.7, см. Раздел E.19.
E.18.2. Изменения
Дальнейшее ограничение видимости
pg_user_mappings.umoptionsдля защиты паролей, сохранённых в свойствах сопоставлений пользователей (Ной Миш)Исправление дефекта CVE-2017-7486 оказалось некорректным: в результате пользователь мог видеть свойства своего собственного сопоставления, даже когда он не имел права
USAGEдля соответствующего стороннего сервера. В таких свойствах мог содержаться пароль, который должен задавать владелец сервера, а не сам пользователь. Так как представлениеinformation_schema.user_mapping_optionsне показывает свойства в таких случаях, иpg_user_mappingsне должно. (CVE-2017-7547)Само по себе это исправление корректирует поведение только в новых базах данных, создаваемых initdb. Если вы хотите применить это исправление к существующей базе данных, вам нужно будет проделать следующие действия:
Добавьте
allow_system_table_mods = trueвpostgresql.confи перезапустите сервер. (В версиях, поддерживающихALTER SYSTEM, вы можете воспользоваться этой командой для изменения конфигурации, но перезапустить сервер потребуется всё равно.)В каждой базе данных кластера выполните от имени суперпользователя следующие команды:
SET search_path = pg_catalog; CREATE OR REPLACE VIEW pg_user_mappings AS SELECT U.oid AS umid, S.oid AS srvid, S.srvname AS srvname, U.umuser AS umuser, CASE WHEN U.umuser = 0 THEN 'public' ELSE A.rolname END AS usename, CASE WHEN (U.umuser <> 0 AND A.rolname = current_user AND (pg_has_role(S.srvowner, 'USAGE') OR has_server_privilege(S.oid, 'USAGE'))) OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) THEN U.umoptions ELSE NULL END AS umoptions FROM pg_user_mapping U LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN pg_foreign_server S ON (U.umserver = S.oid);Не забудьте внести коррективы в базах данных
template0иtemplate1, в противном случае уязвимость сохранится в базах, которые будут создаваться впоследствии. Чтобы поправитьtemplate0, вам потребуется временно разрешить подключения к ней. В PostgreSQL 9.5 и новее вы можете выполнитьALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
, а внеся поправку в
template0, восстановить прежнее состояние командойALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
В более ранних версиях вместо этого используйте пару команд
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
В заключение удалите параметр конфигурации
allow_system_table_modsи ещё раз перезапустите postmaster.
Запрет пустых паролей для всех методов аутентификации по паролю (Хейкки Линнакангас)
Библиотека libpq игнорирует пустое указание пароля и не передаёт его на сервер. Поэтому, если пароль пользователя пустой, psql и другие клиенты на базе libpq не позволяют подключиться с таким паролем. Как следствие, администратор может решить, что установка пустого пароля равнозначна запрету входа по паролю. Однако с изменённым клиентом или клиентом не на базе libpq подключение оказывается возможным, в зависимости от настроенного метода аутентификации. В частности, самый распространённый метод,
md5, принимает пустые пароли. В результате этого изменения сервер не будет принимать пустые пароли во всех случаях. (CVE-2017-7546)Добавление в
lo_put()проверки праваUPDATEдля целевых больших объектов (Том Лейн, Микаэль Пакье)Функция
lo_put(), несомненно, должна требовать наличия тех же прав, что иlowrite(), но такая проверка отсутствовала, что позволяло пользователю менять данные в большом объекте. (CVE-2017-7548)Исправление в документации описания процесса обновления резервных серверов с использованием pg_upgrade (Брюс Момджян)
Ранее в документации говорилось, что нужно запустить/остановить ведущий сервер после запуска pg_upgrade, но до синхронизации резервных серверов. Однако эта последовательность небезопасна.
Исправление одновременной блокировки цепочки изменённых кортежей (Альваро Эррера)
Когда цепочка изменённых кортежей блокируется одновременно несколькими сеансами в неконфликтующем режиме с использованием старого снимка, и все операции завершаются успешно, существовала возможность, что некоторые из них, несмотря на это, нарушатся (и заключат, что актуальной версии кортежа нет) из-за условий гонки. В частности, вследствие этого проверка внешнего ключа могла не увидеть кортеж, который определённо существует, но изменяется параллельной операцией.
Устранение риска повреждения данных при замораживании кортежа, в котором XMAX равен идентификатору мультитранзакции с ровно одним ещё востребованным членом (Фёдор Сигаев)
Предупреждение целочисленного переполнения и краха при сортировке в памяти более чем одного миллиарда кортежей (Сергей Копосов)
В Windows необходимо повторять попытки создания процесса в случае ошибки при резервировании диапазона адресов разделяемой памяти в новом процессе (Том Лейн, Амит Капила)
Это должно устранить периодические сбои при запуске дочерних процессов, возможно, вызванные вмешательством антивирусных программ.
Устранение маловероятной возможности повреждения разделяемой хеш-таблицы предикатных блокировок в сборках для Windows (Томас Манро, Том Лейн)
Предотвращение вывода в журнал сообщения о штатном закрытии SSL-соединения (поведение должно быть таким же, как и при сбросе соединения) (Микаэль Пакье)
Запрещение передачи сеансовых билетов SSL клиентам (Том Лейн)
Это исправление устраняет сбои при переподключении клиентов с реализациями SSL, в которых эти билеты используются.
Исправление кода, устанавливающего tcp_keepalives_idle в Solaris (Том Лейн)
Исправление дефекта в сборщике статистики, приводящего к потере запросных сообщений, выдаваемых сразу после перезапуска главного процесса (Том Лейн)
Запросы статистики, выдаваемые в течение полсекунды после предыдущего отключения главного процесса, по сути терялись.
Размер приёмного буфера в сборщике статистики должен быть не меньше 100 Кбайт (Том Лейн)
Это снижает риск потери данных статистики на старых платформах, где размер приёмного буфера по умолчанию меньше.
Устранение возможности создания некорректного сегмента WAL при повышении резервного сервера сразу после того, как он обрабатывает запись
XLOG_SWITCH(Андрес Фройнд)Процесс walsender должен завершаться своевременно, когда клиент инициирует выключение (Том Лейн)
Исправление обработки сигналов SIGHUP и SIGUSR1 в процессах walsender (Петр Желинек, Андрес Фройнд)
Предотвращение панического состояния, которое могут вызвать процессы walsender во время контрольной точки при выключении (Андрес Фройнд, Микаэль Пакье)
Устранение неоправданной паузы при перезапуске процессов walreceiver, возникающей вследствие условий гонки в главном процессе (Том Лейн)
Устранение утечки маленьких подтранзакций, оказывающихся на диске при логическом декодировании (Андрес Фройнд)
В результате образовывались временные файлы, занимающие лишнее место на диске.
Оптимизация операций, необходимых для получения снимков при создании слотов логического декодирования (Андрес Фройнд, Петр Желинек)
Предыдущий алгоритм оказывался очень неэффективным на сервере со множеством открытых транзакций.
Устранение условий гонки, при которых создание слотов логического декодирования могло откладываться на неопределённое время (Андрес Фройнд, Петр Желинек)
Уменьшение издержек при обработке событий сброса системного кеша (Том Лейн)
Это особенно полезно для логического декодирования, когда сброс кеша происходит часто.
Исправление поведения в ситуациях, когда
INSERTилиUPDATEприсваивает более одного элемента столбцу с типом домена на базе массива (Том Лейн)Разрешение использования оконных функций во вложенных
SELECTв аргументах агрегатной функции (Том Лейн)Предупреждение конфликта имён с автоматически генерируемыми типами массивов при выполнении
ALTER ... RENAME(Вик Фиринг)Ранее автоматически сгенерированный тип массива во избежание конфликта переименовывался при выполнении
CREATE; данное исправление распространяет это поведение и на операции переименования.Устранение потери указателя в
ALTER TABLEкогда для ограничения, принадлежащего таблице, добавлен комментарий (Дэвид Роули)При повторном применении комментария к воссозданному ограничению мог произойти сбой со странным сообщением или даже с аварийным завершением.
Добавление для команды
ALTER USER ... SETвсех вариантов синтаксиса, что принимаетALTER ROLE ... SET(Питер Эйзентраут)Обновление информации о зависимости при смене типа аргумента или возврата для функции ввода/вывода с
opaqueна целевой тип (Хейкки Линнакангас)CREATE TYPEизменяет функции ввода/вывода, объявленные в давно устаревшем стиле, но информация о зависимости от этого типа не записывалась, в результате чего после командDROP TYPEмогли оставаться дефектные определения функций.Сокращение использования памяти при обработке командой
ANALYZEстолбцовtsvector(Хейкки Линнакангас)Устранение ненужной потери точности и небрежного округления при умножении и делении значений
moneyна целые числа или числа с плавающей точкой (Том Лейн)Уточнение проверок пробельных символов в функциях, разбирающих идентификаторы, например
regprocedurein()(Том Лейн)В зависимости от используемой локали эти функции могли неправильно воспринимать фрагменты многобайтных символов как пробелы.
Использование уместных символов
#defineиз Perl при сборке PL/Perl (Ашутош Шарма, Том Лейн)Это предупреждает проблемы переносимости, обычно проявляющиеся в виде ошибок «проверки совместимости» в момент загрузки библиотеки при использовании последних версий Perl.
Обеспечение в libpq корректного сброса состояния аутентификации GSS/SASL и SSPI после неудачной попытки подключения (Микаэль Пакье)
Ранее этот сброс не выполнялся и при переходе с SSL-соединения на не SSL ошибка GSS/SASL при попытке SSL-подключения мешала затем установить обычное подключение, без SSL. С SSPI этого не происходило, но имела место утечка памяти.
В psql устранён сбой, возникающий, когда команда
COPY FROM STDINзавершалась вводом сигнала EOF с клавиатуры, а затем следовала ещё одна попытка выполнитьCOPY FROM STDIN(Томас Манро)Это некорректное поведение наблюдалось в системах, основанных на BSD, (включая macOS), но не в других.
Исправление программ pg_dump и pg_restore, чтобы команды
REFRESH MATERIALIZED VIEWвыдавались в конце (Том Лейн)Это предотвращает ошибки при выгрузке/восстановлении данных, когда материализованное представление ссылается на таблицы, принадлежащие другому пользователю.
Улучшение вывода в pg_dump/pg_restore сообщений об ошибках, возникающих в zlib (Владимир Кунщиков, Альваро Эррера)
Исправление поведения pg_dump с ключом
--clean, чтобы событийные триггеры удалялись должным образом (Том Лейн)Теперь также правильно назначаются владельцы событийных триггеров; ранее после запуска скрипта восстановления такие триггеры оказывались принадлежащими суперпользователю.
Исправление дефекта в pg_dump, когда для пустого класса операторов выдавался некорректный SQL (Даниэль Густафссон)
Исправление вывода pg_dump в stdout на платформе Windows (Кунтал Гхош)
Сжатые данные выгрузки в текстовом виде при выводе в stdout оказывались испорченными из-за того, что дескриптор файла не переводился в двоичный режим.
Исправление вывода
pg_get_ruledef()для правилаON SELECT, связанного с представлением, в котором переименовывались столбцы (Том Лейн)В некоторых особых случаях pg_dump использует
pg_get_ruledef()для выгрузки представлений, так что эта ошибка могла приводить к сбоям при выгрузке/загрузке.Исправление выгрузки внешних соединений с пустыми ограничениями, получающихся, например, в результате
NATURAL LEFT JOINбез общих столбцов (Том Лейн)Исправление выгрузки выражений с функциями в предложении
FROMв случаях, когда эти выражения не преобразуются в нечто, напоминающее вызов функции (Том Лейн)Исправление вывода pg_basebackup в stdout на платформе Windows (Харибабу Комми)
Архивируемые данные при выводе в stdout оказывались испорченными из-за того, что дескриптор файла не переводился в двоичный режим.
Исправление pg_rewind для корректной работы с файлами больше 2 ГБ (Кунтал Гхош, Микаэль Пакье)
Обычно такие файлы в каталогах данных PostgreSQL не образуются, но в некоторых случаях они могут появиться.
Исправление pg_upgrade, чтобы в конечной записи в WAL не оказалось wal_level =
minimum(Брюс Момджян)Это могло препятствовать переподключению обновлённых резервных серверов.
Исправление в pg_xlogdump вычисления длины записи WAL (Андрес Фройнд)
В
postgres_fdwсоединения к удалённым серверам должны устанавливаться заново после командALTER SERVERиALTER USER MAPPING(Кётаро Хоригути)Благодаря этому изменения параметров, затрагивающие свойства соединения, вступят в силу своевременно.
В
postgres_fdwреализована отмена команд управления удалёнными транзакциями (Роберт Хаас, Рафия Сабих)Это изменение позволяет быстрее прервать ожидание неотвечающего удалённого сервера в большем количестве случаев, чем раньше.
Увеличение
MAX_SYSCACHE_CALLBACKSдля выделения дополнительного места расширениям (Том Лейн)При сборке разделяемых библиотек с gcc всегда должен передаваться ключ
-fPIC, а не-fpic(Том Лейн)Это позволяет поддерживать библиотеки расширений большего размера на тех платформах, где эти ключи не равнозначны.
Экранирование фигурных скобок в наших сборочных скриптах для Microsoft MSVC во избежание предупреждений или ошибок с новыми версиями Perl (Эндрю Дунстан)
Для сборок MSVC реализована обработка ситуации, когда библиотека openssl находится не в подкаталоге
VC(Эндрю Дунстан)Для сборок MSVC добавлен нужный путь для заголовочных файлов libxml2 (Эндрю Дунстан)
Это устраняет прежнюю необходимость перемещения файлов в стандартной инсталляции libxml2 в Windows.
Сборки MSVC должны распознавать библиотеку Tcl с именем
tcl86.lib(Ной Миш)В сборках MSVC должны учитываться флаги в параметре
PROVE_FLAGS, заданном в командной строкеvcregress.pl(Эндрю Дунстан)
E.18. Release 9.5.8
Release date: 2017-08-10
This release contains a variety of fixes from 9.5.7. For information about new features in the 9.5 major release, see Section E.26.
E.18.1. Migration to Version 9.5.8
A dump/restore is not required for those running 9.5.X.
However, if you use foreign data servers that make use of user passwords for authentication, see the first changelog entry below.
Also, if you are upgrading from a version earlier than 9.5.7, see Section E.19.
E.18.2. Changes
Further restrict visibility of
pg_user_mappings.umoptions, to protect passwords stored as user mapping options (Noah Misch)The fix for CVE-2017-7486 was incorrect: it allowed a user to see the options in her own user mapping, even if she did not have
USAGEpermission on the associated foreign server. Such options might include a password that had been provided by the server owner rather than the user herself. Sinceinformation_schema.user_mapping_optionsdoes not show the options in such cases,pg_user_mappingsshould not either. (CVE-2017-7547)By itself, this patch will only fix the behavior in newly initdb'd databases. If you wish to apply this change in an existing database, you will need to do the following:
Restart the postmaster after adding
allow_system_table_mods = truetopostgresql.conf. (In versions supportingALTER SYSTEM, you can use that to make the configuration change, but you'll still need a restart.)In each database of the cluster, run the following commands as superuser:
SET search_path = pg_catalog; CREATE OR REPLACE VIEW pg_user_mappings AS SELECT U.oid AS umid, S.oid AS srvid, S.srvname AS srvname, U.umuser AS umuser, CASE WHEN U.umuser = 0 THEN 'public' ELSE A.rolname END AS usename, CASE WHEN (U.umuser <> 0 AND A.rolname = current_user AND (pg_has_role(S.srvowner, 'USAGE') OR has_server_privilege(S.oid, 'USAGE'))) OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE')) OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user) THEN U.umoptions ELSE NULL END AS umoptions FROM pg_user_mapping U LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN pg_foreign_server S ON (U.umserver = S.oid);Do not forget to include the
template0andtemplate1databases, or the vulnerability will still exist in databases you create later. To fixtemplate0, you'll need to temporarily make it accept connections. In PostgreSQL 9.5 and later, you can useALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
and then after fixing
template0, undo that withALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
In prior versions, instead use
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
Finally, remove the
allow_system_table_modsconfiguration setting, and again restart the postmaster.
Disallow empty passwords in all password-based authentication methods (Heikki Linnakangas)
libpq ignores empty password specifications, and does not transmit them to the server. So, if a user's password has been set to the empty string, it's impossible to log in with that password via psql or other libpq-based clients. An administrator might therefore believe that setting the password to empty is equivalent to disabling password login. However, with a modified or non-libpq-based client, logging in could be possible, depending on which authentication method is configured. In particular the most common method,
md5, accepted empty passwords. Change the server to reject empty passwords in all cases. (CVE-2017-7546)Make
lo_put()check forUPDATEprivilege on the target large object (Tom Lane, Michael Paquier)lo_put()should surely require the same permissions aslowrite(), but the check was missing, allowing any user to change the data in a large object. (CVE-2017-7548)Correct the documentation about the process for upgrading standby servers with pg_upgrade (Bruce Momjian)
The previous documentation instructed users to start/stop the primary server after running pg_upgrade but before syncing the standby servers. This sequence is unsafe.
Fix concurrent locking of tuple update chains (Álvaro Herrera)
If several sessions concurrently lock a tuple update chain with nonconflicting lock modes using an old snapshot, and they all succeed, it was possible for some of them to nonetheless fail (and conclude there is no live tuple version) due to a race condition. This had consequences such as foreign-key checks failing to see a tuple that definitely exists but is being updated concurrently.
Fix potential data corruption when freezing a tuple whose XMAX is a multixact with exactly one still-interesting member (Teodor Sigaev)
Avoid integer overflow and ensuing crash when sorting more than one billion tuples in-memory (Sergey Koposov)
On Windows, retry process creation if we fail to reserve the address range for our shared memory in the new process (Tom Lane, Amit Kapila)
This is expected to fix infrequent child-process-launch failures that are probably due to interference from antivirus products.
Fix low-probability corruption of shared predicate-lock hash table in Windows builds (Thomas Munro, Tom Lane)
Avoid logging clean closure of an SSL connection as though it were a connection reset (Michael Paquier)
Prevent sending SSL session tickets to clients (Tom Lane)
This fix prevents reconnection failures with ticket-aware client-side SSL code.
Fix code for setting tcp_keepalives_idle on Solaris (Tom Lane)
Fix statistics collector to honor inquiry messages issued just after a postmaster shutdown and immediate restart (Tom Lane)
Statistics inquiries issued within half a second of the previous postmaster shutdown were effectively ignored.
Ensure that the statistics collector's receive buffer size is at least 100KB (Tom Lane)
This reduces the risk of dropped statistics data on older platforms whose default receive buffer size is less than that.
Fix possible creation of an invalid WAL segment when a standby is promoted just after it processes an
XLOG_SWITCHWAL record (Andres Freund)Fix walsender to exit promptly when client requests shutdown (Tom Lane)
Fix SIGHUP and SIGUSR1 handling in walsender processes (Petr Jelinek, Andres Freund)
Prevent walsender-triggered panics during shutdown checkpoints (Andres Freund, Michael Paquier)
Fix unnecessarily slow restarts of walreceiver processes due to race condition in postmaster (Tom Lane)
Fix leakage of small subtransactions spilled to disk during logical decoding (Andres Freund)
This resulted in temporary files consuming excessive disk space.
Reduce the work needed to build snapshots during creation of logical-decoding slots (Andres Freund, Petr Jelinek)
The previous algorithm was infeasibly expensive on a server with a lot of open transactions.
Fix race condition that could indefinitely delay creation of logical-decoding slots (Andres Freund, Petr Jelinek)
Reduce overhead in processing syscache invalidation events (Tom Lane)
This is particularly helpful for logical decoding, which triggers frequent cache invalidation.
Fix cases where an
INSERTorUPDATEassigns to more than one element of a column that is of domain-over-array type (Tom Lane)Allow window functions to be used in sub-
SELECTs that are within the arguments of an aggregate function (Tom Lane)Move autogenerated array types out of the way during
ALTER ... RENAME(Vik Fearing)Previously, we would rename a conflicting autogenerated array type out of the way during
CREATE; this fix extends that behavior to renaming operations.Fix dangling pointer in
ALTER TABLEwhen there is a comment on a constraint belonging to the table (David Rowley)Re-applying the comment to the reconstructed constraint could fail with a weird error message, or even crash.
Ensure that
ALTER USER ... SETaccepts all the syntax variants thatALTER ROLE ... SETdoes (Peter Eisentraut)Properly update dependency info when changing a datatype I/O function's argument or return type from
opaqueto the correct type (Heikki Linnakangas)CREATE TYPEupdates I/O functions declared in this long-obsolete style, but it forgot to record a dependency on the type, allowing a subsequentDROP TYPEto leave broken function definitions behind.Reduce memory usage when
ANALYZEprocesses atsvectorcolumn (Heikki Linnakangas)Fix unnecessary precision loss and sloppy rounding when multiplying or dividing
moneyvalues by integers or floats (Tom Lane)Tighten checks for whitespace in functions that parse identifiers, such as
regprocedurein()(Tom Lane)Depending on the prevailing locale, these functions could misinterpret fragments of multibyte characters as whitespace.
Use relevant
#definesymbols from Perl while compiling PL/Perl (Ashutosh Sharma, Tom Lane)This avoids portability problems, typically manifesting as a “handshake” mismatch during library load, when working with recent Perl versions.
In libpq, reset GSS/SASL and SSPI authentication state properly after a failed connection attempt (Michael Paquier)
Failure to do this meant that when falling back from SSL to non-SSL connections, a GSS/SASL failure in the SSL attempt would always cause the non-SSL attempt to fail. SSPI did not fail, but it leaked memory.
In psql, fix failure when
COPY FROM STDINis ended with a keyboard EOF signal and then anotherCOPY FROM STDINis attempted (Thomas Munro)This misbehavior was observed on BSD-derived platforms (including macOS), but not on most others.
Fix pg_dump and pg_restore to emit
REFRESH MATERIALIZED VIEWcommands last (Tom Lane)This prevents errors during dump/restore when a materialized view refers to tables owned by a different user.
Improve pg_dump/pg_restore's reporting of error conditions originating in zlib (Vladimir Kunschikov, Álvaro Herrera)
Fix pg_dump with the
--cleanoption to drop event triggers as expected (Tom Lane)It also now correctly assigns ownership of event triggers; before, they were restored as being owned by the superuser running the restore script.
Fix pg_dump to not emit invalid SQL for an empty operator class (Daniel Gustafsson)
Fix pg_dump output to stdout on Windows (Kuntal Ghosh)
A compressed plain-text dump written to stdout would contain corrupt data due to failure to put the file descriptor into binary mode.
Fix
pg_get_ruledef()to print correct output for theON SELECTrule of a view whose columns have been renamed (Tom Lane)In some corner cases, pg_dump relies on
pg_get_ruledef()to dump views, so that this error could result in dump/reload failures.Fix dumping of outer joins with empty constraints, such as the result of a
NATURAL LEFT JOINwith no common columns (Tom Lane)Fix dumping of function expressions in the
FROMclause in cases where the expression does not deparse into something that looks like a function call (Tom Lane)Fix pg_basebackup output to stdout on Windows (Haribabu Kommi)
A backup written to stdout would contain corrupt data due to failure to put the file descriptor into binary mode.
Fix pg_rewind to correctly handle files exceeding 2GB (Kuntal Ghosh, Michael Paquier)
Ordinarily such files won't appear in PostgreSQL data directories, but they could be present in some cases.
Fix pg_upgrade to ensure that the ending WAL record does not have wal_level =
minimum(Bruce Momjian)This condition could prevent upgraded standby servers from reconnecting.
Fix pg_xlogdump's computation of WAL record length (Andres Freund)
In
postgres_fdw, re-establish connections to remote servers afterALTER SERVERorALTER USER MAPPINGcommands (Kyotaro Horiguchi)This ensures that option changes affecting connection parameters will be applied promptly.
In
postgres_fdw, allow cancellation of remote transaction control commands (Robert Haas, Rafia Sabih)This change allows us to quickly escape a wait for an unresponsive remote server in many more cases than previously.
Increase
MAX_SYSCACHE_CALLBACKSto provide more room for extensions (Tom Lane)Always use
-fPIC, not-fpic, when building shared libraries with gcc (Tom Lane)This supports larger extension libraries on platforms where it makes a difference.
Fix unescaped-braces issue in our build scripts for Microsoft MSVC, to avoid a warning or error from recent Perl versions (Andrew Dunstan)
In MSVC builds, handle the case where the openssl library is not within a
VCsubdirectory (Andrew Dunstan)In MSVC builds, add proper include path for libxml2 header files (Andrew Dunstan)
This fixes a former need to move things around in standard Windows installations of libxml2.
In MSVC builds, recognize a Tcl library that is named
tcl86.lib(Noah Misch)In MSVC builds, honor
PROVE_FLAGSsettings onvcregress.pl's command line (Andrew Dunstan)