PostgreSQL - это система с открытым исходным кодом, мощная, надежная, стабильная, готовая к работе и свободная объектно-реляционная база данных в стиле проектов MariaDB, MySQL или SQLite. Он является совместимым с ACID (Atomicity, Consistency, Isolation, Durability) сервером / движком базы данных, который может быть сильно настроен и включает в себя множество привлекательных функций, что делает большую замену вышеупомянутым механизмам базы данных.
Особенности с первого взгляда
Ключевые функции включают поддержку внешних ключей, представлений, объединений, триггеров и хранимых процедур, поддержку нескольких языков, поддержку широкого спектра типов данных SQL, включая BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP и DATE.
Кроме того, программное обеспечение поставляется с поддержкой хранения двоичных больших объектов, включая всевозможные мультимедийные файлы (видео, аудио и фото), а также предоставляет разработчикам встроенные программные интерфейсы для C, C ++, Python, Perl, Ruby, Языки программирования Java, .NET, Tcl и ODBC.
Среди других интересных функций можно упомянуть MVCC (Multi-Version Concurrency Control), табличные пространства, многобайтовые кодировки символов, временное восстановление, зрелый оптимизатор запросов и планировщик, асинхронную репликацию, онлайн-резервное копирование, вложенные транзакции (широко известные как точки сохранения), горячие резервные копии, запись вперед для отказоустойчивости, поддержка международных наборов символов, а также поддержка Unicode.
PostgreSQL в числах
В настоящий момент сервер баз данных PostgreSQL поддерживает неограниченный размер для баз данных, 32 ТБ должны быть максимальным размером для таблиц, 1,6 ТБ на строку, 1 ГБ на поле, неограниченными рядами на таблицу, поддержкой от 250 до 1600 столбцов на таблицу , в зависимости от типов столбцов и поддерживает неограниченные индексы для каждой таблицы.
Поддерживаемые операционные системы
PostgreSQL успешно протестирован во всех основных операционных системах, включая GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X и Microsoft Windows. PostgreSQL доступен для загрузки как универсальный исходный архив, а также предварительно скомпилированные двоичные пакеты для многих дистрибутивов Linux, поддерживающих как 32-разрядные, так и 64-разрядные архитектуры.
Что нового в этом выпуске:
- В этом выпуске исправлены две проблемы безопасности. В этом выпуске также исправлены проблемы, обнаруженные с помощью индексов VACUUM, GIN и хэшей, параллельного запроса, логической репликации и других ошибок, зарегистрированных за последние три месяца. Все пользователи, использующие уязвимые версии PostgreSQL, должны обновляться как можно скорее.
Что нового в версии 10.4 / 11 Beta 1:
- В этом выпуске исправлены две проблемы безопасности. В этом выпуске также исправлены проблемы, обнаруженные с помощью индексов VACUUM, GIN и хэшей, параллельного запроса, логической репликации и других ошибок, зарегистрированных за последние три месяца. Все пользователи, использующие уязвимые версии PostgreSQL, должны обновляться как можно скорее.
Что нового в версии:
- Дальнейшее ограничение видимости pg_user_mappings.umoptions, чтобы защитить пароли, сохраненные в качестве параметров сопоставления пользователя (Noah Misch)
- Исправление для CVE-2017-7486 было неправильным: это позволило пользователю увидеть параметры в своем собственном сопоставлении пользователей, даже если у нее не было разрешения ИСПОЛЬЗОВАНИЯ на соответствующем иностранном сервере. Такие параметры могут включать пароль, который был предоставлен владельцем сервера, а не самим пользователем. Поскольку information_schema.user_mapping_options не показывает параметры в таких случаях, pg_user_mappings также не должны. (CVE-2017-7547) литий>
- Сам по себе этот патч будет только исправлять поведение в новых базах данных initdb'd. Если вы хотите применить это изменение в существующей базе данных, вам нужно будет сделать следующее:
- Перезапустите postmaster после добавления allow_system_table_mods = true в postgresql.conf. (В версиях, поддерживающих ALTER SYSTEM, вы можете использовать это, чтобы изменить конфигурацию, но вам все равно потребуется перезагрузка.)
- В каждой базе данных кластера запускайте следующие команды в качестве суперпользователя:
- SET search_path = pg_catalog;
- СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПРОСМОТР 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
- 'общественность'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser 0 AND A.rolname = current_user
- И (pg_has_role (S.srvowner, 'USAGE')
- ИЛИ has_server_privilege (S.oid, 'USAGE')))
- ИЛИ (U.umuser = 0 И pg_has_role (S.srvowner, 'USAGE'))
- ИЛИ (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, или эта уязвимость будет по-прежнему существовать в базах данных, которые вы создаете позже. Чтобы исправить шаблон0, вам необходимо временно принять его. В PostgreSQL 9.5 и более поздних версиях вы можете использовать
- ALTER DATABASE template0 С ALLOW_CONNECTIONS true;
- , а затем после исправления шаблона0 отмените это действие с помощью
- ALTER DATABASE template0 С ALLOW_CONNECTIONS false;
- В предыдущих версиях вместо этого используйте
- UPDATE pg_database SET datallowconn = true WHERE имя_файла = 'шаблон0';
- UPDATE pg_database SET datallowconn = false WHERE имя_файла = 'шаблон0';
- Наконец, удалите параметр конфигурации allow_system_table_mods и снова перезапустите postmaster.
- Запретить пустые пароли во всех методах проверки паролей (Heikki Linnakangas)
- libpq игнорирует спецификации пустого пароля и не передает их на сервер. Итак, если пароль пользователя установлен в пустую строку, невозможно войти в систему с этим паролем через psql или другие клиенты на основе libpq. Поэтому администратор может полагать, что установка пароля для пустого эквивалентна отключению пароля. Однако, с измененным клиентом или без libpq, вход в систему может быть возможен, в зависимости от того, какой метод проверки подлинности настроен. В частности, наиболее распространенный метод, md5, принял пустые пароли. Измените сервер на отсутствие пустых паролей во всех случаях. (CVE-2017-7546) литий>
- Сделать lo_put () проверить привилегию UPDATE на целевом большом объекте (Tom Lane, Michael Paquier)
- lo_put () обязательно должен иметь те же права, что и lowrite (), но проверка отсутствовала, что позволяет любому пользователю изменять данные в большом объекте. (CVE-2017-7548) литий>
- Исправьте документацию о процессе обновления резервных серверов с помощью pg_upgrade (Bruce Momjian)
- В предыдущей документации пользователям было предложено запустить / остановить первичный сервер после запуска pg_upgrade, но до синхронизации резервных серверов. Эта последовательность небезопасна.
- Исправить одновременную блокировку цепочек обновлений кортежей (Alvaro Herrera)
- Если несколько сеансов одновременно блокируют цепочку обновлений кортежа с неконфликтными режимами блокировки с использованием старого моментального снимка, и все они преуспевают, некоторые из них, тем не менее, могут потерпеть неудачу (и не заключают, что нет живой версии кортежа) из-за гонки состояние. Это привело к таким последствиям, как проверки внешнего ключа, неспособные увидеть кортеж, который определенно существует, но обновляется одновременно.
- Исправить потенциальное повреждение данных при замораживании кортежа, XMAX которого является многоуровневым с точно одним интересным членом (Теодор Сигаев)
- Избегайте целочисленного переполнения и последующего сбоя при сортировке более одного миллиарда кортежей в памяти (Сергей Копосов)
- В Windows процесс создания повторных попыток, если мы не можем зарезервировать диапазон адресов для нашей общей памяти в новом процессе (Tom Lane, Amit Kapila)
- Ожидается, что будут исправлены редкие сбои в работе дочерних процессов, которые, вероятно, связаны с помехами от антивирусных продуктов.
- Исправить повреждение с низкой вероятностью общей хеш-таблицы предиката-блокировки в строках Windows (Thomas Munro, Tom Lane)
- Избегайте протоколирования чистого закрытия SSL-соединения, как будто это был сброс соединения (Michael Paquier).
- Предотвращение отправки SSL-сессионных билетов клиентам (Tom Lane)
- Это исправление предотвращает сбои пересоединения с использованием кода SSL на стороне клиента.
- Исправить код для установки tcp_keepalives_idle на Solaris (Tom Lane)
- Исправить сборщик статистики, чтобы почтить сообщения о запросах, выпущенные сразу после выключения postmaster и немедленного перезапуска (Tom Lane).
- Статистические запросы, выпущенные за полсекунды предыдущего закрытия почтового сервера, были фактически проигнорированы.
- Убедитесь, что размер буфера приема сборщика статистики не менее 100 КБ (Tom Lane)
- Это уменьшает риск сброса статистических данных на более ранних платформах, размер по умолчанию которых меньше, чем этот.
- Исправить возможное создание недействительного сегмента WAL при продвижении в режиме ожидания сразу после его обработки записи WOG XLOG_SWITCH (Andres Freund)
- Исправить walsender для быстрого выхода при завершении работы клиента (Tom Lane)
- Исправить ошибки SIGHUP и SIGUSR1 в процессах сальдером (Petr Jelinek, Andres Freund)
- Предотвращение паники во время контрольных точек выключения (Andres Freund, Michael Paquier)
- Исправить ненужные медленные перезагрузки процессов walreceiver из-за состояния гонки в postmaster (Tom Lane).
- Исправить утечку небольших подтранзакций, пролитых на диск во время логического декодирования (Andres Freund)
- Это привело к тому, что временные файлы потребляли чрезмерное дисковое пространство.
- Уменьшить работу, необходимую для создания моментальных снимков при создании слотов логического декодирования (Andres Freund, Petr Jelinek).
- Предыдущий алгоритм был неоправданно дорогим на сервере с большим количеством открытых транзакций.
- Исправить состояние гонки, которое может бесконечно задержать создание слотов логического декодирования (Andres Freund, Petr Jelinek)
- Уменьшить накладные расходы при обработке событий неактивности syscache (Tom Lane)
- Это особенно полезно для логического декодирования, который вызывает частую недействительность кэша.
- Удалить некорректную эвристику, используемую в некоторых случаях для оценки избирательности выбора на основе наличия ограничений внешнего ключа (David Rowley)
- В некоторых случаях, когда существовало ограничение нескольких ключей с несколькими столбцами, но точно не соответствовало структуре объединения запросов, планировщик использовал эвристику оценки, которая не работает вообще. Отмените такие случаи так, как они были оценены до 9.6.
- Исправить случаи, когда INSERT или UPDATE присваивает более чем одному элементу столбца, который имеет тип домена над массивом (Tom Lane)
- Разрешить функции окна, которые будут использоваться в sub-SELECT, которые находятся внутри аргументов агрегированной функции (Tom Lane)
- Убедитесь, что предложение CHECK OPTIONS в представлении выполнено правильно, когда базовая таблица является внешней таблицей (Etsuro Fujita)
- Раньше обновление могло быть полностью перенесено на внешний сервер, но при этом необходимо было проверить условия просмотра, если это так.
- Извлеките типы автогенерированных массивов во время ALTER ... RENAME (Vik Fearing)
- Раньше мы бы переименовали конфликтующий тип автогенерированного массива во время CREATE; это исправление расширяет это поведение до операций переименования.
- Исправьте висячий указатель в ALTER TABLE, когда есть комментарий к ограничению, принадлежащему таблице (David Rowley)
- Повторное применение комментария к восстановленному ограничению может завершиться неудачей с появлением странного сообщения об ошибке или даже сбой.
- Убедитесь, что ALTER USER ... SET принимает все варианты синтаксиса, которые ALTER ROLE ... SET делает (Peter Eisentraut)
- Разрешить ограничения CHECK внешней таблицы изначально НЕ VALID (Amit Langote)
- CREATE TABLE молча отключает спецификаторы NOT VALID для ограничений CHECK, полагая, что таблица должна быть пустой, поэтому ограничение может быть проверено немедленно. Но это неправильно для CREATE FOREIGN TABLE, где нет оснований полагать, что базовая таблица пуста, и даже если нам не нужно решать, что ограничение может рассматриваться как действительное в будущем. Пропустите эту «оптимизацию». для иностранных таблиц.
- Правильно обновлять информацию о зависимостях при изменении аргумента функции ввода-вывода типа данных или типа возврата от непрозрачного до правильного типа (Heikki Linnakangas)
- CREATE TYPE обновляет функции ввода / вывода, объявленные в этом устаревшем стиле, но забыл записать зависимость от типа, позволяя последующему типу DROP оставлять сломанные определения функций позади.
- Разрешить параллелизм в плане запроса, когда копии COPY из результата запроса (Andres Freund)
- Сокращение использования памяти, когда ANALYZE обрабатывает столбец tsvector (Heikki Linnakangas)
- Исправить ненужные потери точности и неаккуратное округление при умножении или делении денежных значений на целые числа или поплавки (Tom Lane)
- Затяните проверки пробелов в функциях, которые анализируют идентификаторы, такие как regprocedurein () (Tom Lane)
- В зависимости от преобладающего языка эти функции могут неправильно интерпретировать фрагменты многобайтовых символов как пробельные символы.
- Используйте соответствующие символы #define из Perl при компиляции PL / Perl (Ashutosh Sharma, Tom Lane).
- Это позволяет избежать проблем с переносимостью, обычно проявляясь как «рукопожатие». несоответствие во время загрузки библиотеки при работе с последними версиями Perl.
- В libpq, после правильной попытки подключения (Michael Paquier) перезагрузите состояние аутентификации GSS / SASL и SSPI.
- Невыполнение этого означает, что при откате от SSL к соединениям, отличным от SSL, сбой GSS / SASL при попытке SSL всегда приведет к сбою в не-SSL. SSPI не провалился, но он просочился в память.
- В psql исправить ошибку, когда COPY FROM STDIN заканчивается сигналом EOF клавиатуры, а затем выполняется другая COPY FROM STDIN (Thomas Munro)
- Это неправильное поведение наблюдалось на платформах BSD (включая macOS), но не на большинстве других.
- Исправить pg_dump и pg_restore, чтобы выпустить команды REFRESH MATERIALIZED VIEW last (Tom Lane).
- Это предотвращает ошибки во время дампа / восстановления, когда материализованное представление относится к таблицам, принадлежащим другому пользователю.
- Улучшить отчет pg_dump / pg_restore об ошибках, возникающих в zlib (Владимир Кунщиков, Альваро Эррера)
- Исправить pg_dump с опцией --clean, чтобы сбросить триггеры событий (как ожидалось) (Tom Lane)
- Теперь он также правильно назначает право собственности на триггеры событий; раньше, они были восстановлены как принадлежащие суперпользователю, выполняющему сценарий восстановления.
- Исправить pg_dump с параметром --clean, чтобы не сбой, когда общедоступная схема не существует (Stephen Frost)
- Исправить pg_dump, чтобы не выводить недопустимый SQL для пустого операторского класса (Daniel Gustafsson)
- Исправить вывод pg_dump в stdout в Windows (Kuntal Ghosh)
- Сжатый текстовый дамп, записанный в stdout, будет содержать поврежденные данные из-за отказа помещать дескриптор файла в двоичный режим.
- Исправить pg_get_ruledef (), чтобы напечатать правильный вывод для правила ON SELECT для представления, чьи столбцы были переименованы (Tom Lane)
- В некоторых случаях, когда pg_dump полагается на pg_get_ruledef () для представления дампа, так что эта ошибка может привести к сбоям дампа / перезагрузки.
- Исправить сброс внешних соединений с пустыми ограничениями, такими как результат NATURAL LEFT JOIN без общих столбцов (Tom Lane)
- Исправлено сброс выражений функций в предложении FROM в случаях, когда выражение не отделяется от того, что выглядит как вызов функции (Tom Lane)
- Исправить вывод pg_basebackup в stdout в Windows (Haribabu Kommi)
- Резервная копия, записанная в stdout, будет содержать поврежденные данные из-за отказа помещать дескриптор файла в двоичный режим.
- Исправить pg_rewind, чтобы правильно обрабатывать файлы, превышающие 2 ГБ (Kuntal Ghosh, Michael Paquier).
- Обычно такие файлы не отображаются в каталогах данных PostgreSQL, но они могут присутствовать в некоторых случаях.
- Исправить pg_upgrade, чтобы гарантировать, что конечная запись WAL не имеет wal_level = minimum (Bruce Momjian)
- Это условие может препятствовать повторному подключению обновленных резервных серверов.
- Исправить pg_xlogdump для вычисления длины записи WAL (Andres Freund)
- В postgres_fdw восстановить соединения с удаленными серверами после команд ALTER SERVER или ALTER USER MAPPING (Kyotaro Horiguchi)
- Это гарантирует, что изменения параметров, влияющие на параметры соединения, будут применены незамедлительно.
- В postgres_fdw разрешить отмену удаленных команд управления транзакциями (Robert Haas, Rafia Sabih).
- Это изменение позволяет нам быстро избежать ожидания незащищенного удаленного сервера во многих других случаях, чем раньше.
- Увеличьте MAX_SYSCACHE_CALLBACKS, чтобы предоставить больше возможностей для расширений (Tom Lane).
- Всегда используйте -fPIC, а не -fpic, при создании разделяемых библиотек с помощью gcc (Tom Lane)
- Это поддерживает большие библиотеки расширений на платформах, где это имеет значение.
- В сборках MSVC обрабатывайте случай, когда библиотека openssl не находится в подкаталоге VC (Andrew Dunstan).
- В сборках MSVC добавьте правильный путь include для файлов заголовков libxml2 (Andrew Dunstan)
- Это исправляет прежнюю необходимость перемещать вещи в стандартных установках Windows libxml2.
- В сборках MSVC узнайте библиотеку Tcl, которая называется tcl86.lib (Noah Misch)
- В сборках MSVC соблюдайте настройки PROVE_FLAGS в командной строке vcregress.pl (Andrew Dunstan)
Что нового в версии 9.6.4:
- Дальнейшее ограничение видимости pg_user_mappings.umoptions, чтобы защитить пароли, сохраненные в качестве параметров сопоставления пользователя (Noah Misch)
- Исправление для CVE-2017-7486 было неправильным: это позволило пользователю увидеть параметры в своем собственном сопоставлении пользователей, даже если у нее не было разрешения ИСПОЛЬЗОВАНИЯ на соответствующем иностранном сервере. Такие параметры могут включать пароль, который был предоставлен владельцем сервера, а не самим пользователем. Поскольку information_schema.user_mapping_options не показывает параметры в таких случаях, pg_user_mappings также не должны. (CVE-2017-7547) литий>
- Сам по себе этот патч будет только исправлять поведение в новых базах данных initdb'd. Если вы хотите применить это изменение в существующей базе данных, вам нужно будет сделать следующее:
- Перезапустите postmaster после добавления allow_system_table_mods = true в postgresql.conf. (В версиях, поддерживающих ALTER SYSTEM, вы можете использовать это, чтобы изменить конфигурацию, но вам все равно потребуется перезагрузка.)
- В каждой базе данных кластера запускайте следующие команды в качестве суперпользователя:
- SET search_path = pg_catalog;
- СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПРОСМОТР 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
- 'общественность'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser 0 AND A.rolname = current_user
- И (pg_has_role (S.srvowner, 'USAGE')
- ИЛИ has_server_privilege (S.oid, 'USAGE')))
- ИЛИ (U.umuser = 0 И pg_has_role (S.srvowner, 'USAGE'))
- ИЛИ (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, или эта уязвимость будет по-прежнему существовать в базах данных, которые вы создаете позже. Чтобы исправить шаблон0, вам необходимо временно принять его. В PostgreSQL 9.5 и более поздних версиях вы можете использовать
- ALTER DATABASE template0 С ALLOW_CONNECTIONS true;
- , а затем после исправления шаблона0 отмените это действие с помощью
- ALTER DATABASE template0 С ALLOW_CONNECTIONS false;
- В предыдущих версиях вместо этого используйте
- UPDATE pg_database SET datallowconn = true WHERE имя_файла = 'шаблон0';
- UPDATE pg_database SET datallowconn = false WHERE имя_файла = 'шаблон0';
- Наконец, удалите параметр конфигурации allow_system_table_mods и снова перезапустите postmaster.
- Запретить пустые пароли во всех методах проверки паролей (Heikki Linnakangas)
- libpq игнорирует спецификации пустого пароля и не передает их на сервер. Итак, если пароль пользователя установлен в пустую строку, невозможно войти в систему с этим паролем через psql или другие клиенты на основе libpq. Поэтому администратор может полагать, что установка пароля для пустого эквивалентна отключению пароля. Однако, с измененным клиентом или без libpq, вход в систему может быть возможен, в зависимости от того, какой метод проверки подлинности настроен. В частности, наиболее распространенный метод, md5, принял пустые пароли. Измените сервер на отсутствие пустых паролей во всех случаях. (CVE-2017-7546) литий>
- Сделать lo_put () проверить привилегию UPDATE на целевом большом объекте (Tom Lane, Michael Paquier)
- lo_put () обязательно должен иметь те же права, что и lowrite (), но проверка отсутствовала, что позволяет любому пользователю изменять данные в большом объекте. (CVE-2017-7548) литий>
- Исправьте документацию о процессе обновления резервных серверов с помощью pg_upgrade (Bruce Momjian)
- В предыдущей документации пользователям было предложено запустить / остановить первичный сервер после запуска pg_upgrade, но до синхронизации резервных серверов. Эта последовательность небезопасна.
- Исправить одновременную блокировку цепочек обновлений кортежей (Alvaro Herrera)
- Если несколько сеансов одновременно блокируют цепочку обновлений кортежа с неконфликтными режимами блокировки с использованием старого моментального снимка, и все они преуспевают, некоторые из них, тем не менее, могут потерпеть неудачу (и не заключают, что нет живой версии кортежа) из-за гонки состояние. Это привело к таким последствиям, как проверки внешнего ключа, неспособные увидеть кортеж, который определенно существует, но обновляется одновременно.
- Исправить потенциальное повреждение данных при замораживании кортежа, XMAX которого является многоуровневым с точно одним интересным членом (Теодор Сигаев)
- Избегайте целочисленного переполнения и последующего сбоя при сортировке более одного миллиарда кортежей в памяти (Сергей Копосов)
- В Windows процесс создания повторных попыток, если мы не можем зарезервировать диапазон адресов для нашей общей памяти в новом процессе (Tom Lane, Amit Kapila)
- Ожидается, что будут исправлены редкие сбои в работе дочерних процессов, которые, вероятно, связаны с помехами от антивирусных продуктов.
- Исправить повреждение с низкой вероятностью общей хеш-таблицы предиката-блокировки в строках Windows (Thomas Munro, Tom Lane)
- Избегайте протоколирования чистого закрытия SSL-соединения, как будто это был сброс соединения (Michael Paquier).
- Предотвращение отправки SSL-сессионных билетов клиентам (Tom Lane)
- Это исправление предотвращает сбои пересоединения с использованием кода SSL на стороне клиента.
- Исправить код для установки tcp_keepalives_idle на Solaris (Tom Lane)
- Исправить сборщик статистики, чтобы почтить сообщения о запросах, выпущенные сразу после выключения postmaster и немедленного перезапуска (Tom Lane).
- Статистические запросы, выпущенные за полсекунды предыдущего закрытия почтового сервера, были фактически проигнорированы.
- Убедитесь, что размер буфера приема сборщика статистики не менее 100 КБ (Tom Lane)
- Это уменьшает риск сброса статистических данных на более ранних платформах, размер по умолчанию которых меньше, чем этот.
- Исправить возможное создание недействительного сегмента WAL при продвижении в режиме ожидания сразу после его обработки записи WOG XLOG_SWITCH (Andres Freund)
- Исправить walsender для быстрого выхода при завершении работы клиента (Tom Lane)
- Исправить ошибки SIGHUP и SIGUSR1 в процессах сальдером (Petr Jelinek, Andres Freund)
- Предотвращение паники во время контрольных точек выключения (Andres Freund, Michael Paquier)
- Исправить ненужные медленные перезагрузки процессов walreceiver из-за состояния гонки в postmaster (Tom Lane).
- Исправить утечку небольших подтранзакций, пролитых на диск во время логического декодирования (Andres Freund)
- Это привело к тому, что временные файлы потребляли чрезмерное дисковое пространство.
- Уменьшить работу, необходимую для создания моментальных снимков при создании слотов логического декодирования (Andres Freund, Petr Jelinek).
- Предыдущий алгоритм был неоправданно дорогим на сервере с большим количеством открытых транзакций.
- Исправить состояние гонки, которое может бесконечно задержать создание слотов логического декодирования (Andres Freund, Petr Jelinek)
- Уменьшить накладные расходы при обработке событий неактивности syscache (Tom Lane)
- Это особенно полезно для логического декодирования, который вызывает частую недействительность кэша.
- Удалить некорректную эвристику, используемую в некоторых случаях для оценки избирательности выбора на основе наличия ограничений внешнего ключа (David Rowley)
- В некоторых случаях, когда существовало ограничение нескольких ключей с несколькими столбцами, но точно не соответствовало структуре объединения запросов, планировщик использовал эвристику оценки, которая не работает вообще. Отмените такие случаи так, как они были оценены до 9.6.
- Исправить случаи, когда INSERT или UPDATE присваивает более чем одному элементу столбца, который имеет тип домена над массивом (Tom Lane)
- Разрешить функции окна, которые будут использоваться в sub-SELECT, которые находятся внутри аргументов агрегированной функции (Tom Lane)
- Убедитесь, что предложение CHECK OPTIONS в представлении выполнено правильно, когда базовая таблица является внешней таблицей (Etsuro Fujita)
- Раньше обновление могло быть полностью перенесено на внешний сервер, но при этом необходимо было проверить условия просмотра, если это так.
- Извлеките типы автогенерированных массивов во время ALTER ... RENAME (Vik Fearing)
- Раньше мы бы переименовали конфликтующий тип автогенерированного массива во время CREATE; это исправление расширяет это поведение до операций переименования.
- Исправьте висячий указатель в ALTER TABLE, когда есть комментарий к ограничению, принадлежащему таблице (David Rowley)
- Повторное применение комментария к восстановленному ограничению может завершиться неудачей с появлением странного сообщения об ошибке или даже сбой.
- Убедитесь, что ALTER USER ... SET принимает все варианты синтаксиса, которые ALTER ROLE ... SET делает (Peter Eisentraut)
- Разрешить ограничения CHECK внешней таблицы изначально НЕ VALID (Amit Langote)
- CREATE TABLE молча отключает спецификаторы NOT VALID для ограничений CHECK, полагая, что таблица должна быть пустой, поэтому ограничение может быть проверено немедленно. Но это неправильно для CREATE FOREIGN TABLE, где нет оснований полагать, что базовая таблица пуста, и даже если нам не нужно решать, что ограничение может рассматриваться как действительное в будущем. Пропустите эту «оптимизацию» для внешних таблиц.
- Правильно обновлять информацию о зависимостях при изменении аргумента функции ввода-вывода типа данных или типа возврата от непрозрачного до правильного типа (Heikki Linnakangas)
- CREATE TYPE обновляет функции ввода / вывода, объявленные в этом устаревшем стиле, но забыл записать зависимость от типа, позволяя последующему типу DROP оставлять сломанные определения функций позади.
- Разрешить параллелизм в плане запроса, когда копии COPY из результата запроса (Andres Freund)
- Сокращение использования памяти, когда ANALYZE обрабатывает столбец tsvector (Heikki Linnakangas)
- Исправить ненужные потери точности и неаккуратное округление при умножении или делении денежных значений на целые числа или поплавки (Tom Lane)
- Затяните проверки пробелов в функциях, которые анализируют идентификаторы, такие как regprocedurein () (Tom Lane)
- В зависимости от преобладающего языка эти функции могут неправильно интерпретировать фрагменты многобайтовых символов как пробельные символы.
- Используйте соответствующие символы #define из Perl при компиляции PL / Perl (Ashutosh Sharma, Tom Lane).
- Это позволяет избежать проблем с переносимостью, обычно проявляя несоответствие «рукопожатия» при загрузке библиотеки при работе с последними версиями Perl.
- В libpq, после правильной попытки подключения (Michael Paquier) перезагрузите состояние аутентификации GSS / SASL и SSPI.
- Невыполнение этого означает, что при откате от SSL к соединениям, отличным от SSL, сбой GSS / SASL при попытке SSL всегда приведет к сбою в не-SSL. SSPI не провалился, но он просочился в память.
- В psql исправить ошибку, когда COPY FROM STDIN заканчивается сигналом EOF клавиатуры, а затем выполняется другая COPY FROM STDIN (Thomas Munro)
- Это неправильное поведение наблюдалось на платформах BSD (включая macOS), но не на большинстве других.
- Исправить pg_dump и pg_restore, чтобы выпустить команды REFRESH MATERIALIZED VIEW last (Tom Lane).
- Это предотвращает ошибки во время дампа / восстановления, когда материализованное представление относится к таблицам, принадлежащим другому пользователю.
- Улучшить отчет pg_dump / pg_restore об ошибках, возникающих в zlib (Владимир Кунщиков, Альваро Эррера)
- Исправить pg_dump с опцией --clean, чтобы сбросить триггеры событий (как ожидалось) (Tom Lane)
- Теперь он также правильно назначает право собственности на триггеры событий; раньше, они были восстановлены как принадлежащие суперпользователю, выполняющему сценарий восстановления.
- Исправить pg_dump с параметром --clean, чтобы не сбой, когда общедоступная схема не существует (Stephen Frost)
- Исправить pg_dump, чтобы не выводить недопустимый SQL для пустого операторского класса (Daniel Gustafsson)
- Исправить вывод pg_dump в stdout в Windows (Kuntal Ghosh)
- Сжатый текстовый дамп, записанный в stdout, будет содержать поврежденные данные из-за отказа помещать дескриптор файла в двоичный режим.
- Исправить pg_get_ruledef (), чтобы напечатать правильный вывод для правила ON SELECT для представления, чьи столбцы были переименованы (Tom Lane)
- В некоторых случаях, когда pg_dump полагается на pg_get_ruledef () для представления дампа, так что эта ошибка может привести к сбоям дампа / перезагрузки.
- Исправить сброс внешних соединений с пустыми ограничениями, такими как результат NATURAL LEFT JOIN без общих столбцов (Tom Lane)
- Исправлено сброс выражений функций в предложении FROM в случаях, когда выражение не отделяется от того, что выглядит как вызов функции (Tom Lane)
- Исправить вывод pg_basebackup в stdout в Windows (Haribabu Kommi)
- Резервная копия, записанная в stdout, будет содержать поврежденные данные из-за отказа помещать дескриптор файла в двоичный режим.
- Исправить pg_rewind, чтобы правильно обрабатывать файлы, превышающие 2 ГБ (Kuntal Ghosh, Michael Paquier).
- Обычно такие файлы не отображаются в каталогах данных PostgreSQL, но они могут присутствовать в некоторых случаях.
- Исправить pg_upgrade, чтобы гарантировать, что конечная запись WAL не имеет wal_level = minimum (Bruce Momjian)
- Это условие может препятствовать повторному подключению обновленных резервных серверов.
- Исправить pg_xlogdump для вычисления длины записи WAL (Andres Freund)
- В postgres_fdw восстановить соединения с удаленными серверами после команд ALTER SERVER или ALTER USER MAPPING (Kyotaro Horiguchi)
- Это гарантирует, что изменения параметров, влияющие на параметры соединения, будут применены незамедлительно.
- В postgres_fdw разрешить отмену удаленных команд управления транзакциями (Robert Haas, Rafia Sabih).
- Это изменение позволяет нам быстро избежать ожидания незащищенного удаленного сервера во многих других случаях, чем раньше.
- Увеличьте MAX_SYSCACHE_CALLBACKS, чтобы предоставить больше возможностей для расширений (Tom Lane).
- Всегда используйте -fPIC, а не -fpic, при создании разделяемых библиотек с помощью gcc (Tom Lane)
- Это поддерживает большие библиотеки расширений на платформах, где это имеет значение.
- В сборках MSVC обрабатывайте случай, когда библиотека openssl не находится в подкаталоге VC (Andrew Dunstan).
- В сборках MSVC добавьте правильный путь include для файлов заголовков libxml2 (Andrew Dunstan)
- Это исправляет прежнюю необходимость перемещать вещи в стандартных установках Windows libxml2.
- В сборках MSVC узнайте библиотеку Tcl, которая называется tcl86.lib (Noah Misch)
- В сборках MSVC соблюдайте настройки PROVE_FLAGS в командной строке vcregress.pl (Andrew Dunstan)
Комментарии не найдены