E.1. Postgres Pro Standard 9.6.24.1

Дата выпуска: 2021-11-22

E.1.1. Обзор

Этот выпуск Postgres Pro Standard должен стать последним в серии 9.6. Пользователям следует поторопиться с переходом на более новую основную версию Postgres Pro Standard.

Этот выпуск основан на PostgreSQL 9.6.24 и Postgres Pro Standard 9.6.23.1. Все усовершенствования, унаследованные от PostgreSQL 9.6.24, перечислены в Замечаниях к выпуску PostgreSQL 9.6.24. Другие важные изменения и улучшения перечислены ниже:

  • Прекращена поддержка расширения sr_plan.

  • Модуль mamonsu обновлён до версии 3.1.0. Основные изменения перечислены ниже:

    • У команды bootstrap появилась новая возможность. Благодаря ей, если параметр -dbname не указан явно, он автоматически примет значение, соответствующее имени базы данных, которое указано в разделе [postgres] файла конфигурации mamonsu.

    • Исправлена критическая проблема, которая могла возникнуть при пропуске шага bootstrap. В этом случае, хотя пользователь мог работать с mamonsu с правами суперпользователя, специальная схема mamonsu не создавалась, но после создания вспомогательного расширения pg_buffercache в любой другой схеме запуск mamonsu приводил к ошибкам «ERROR: relation "mamonsu.pg_buffercache" does not exist.» (ОШИБКА: отношение "mamonsu.pg_buffercache" не существует).

  • Решена проблема pg_probackup с архивированием WAL из каталога за пределами каталога данных. Ранее многопоточная и пакетная оптимизации команды archive-push препятствовали такому архивированию; теперь можно архивировать WAL из любого каталога, но если он находится за пределами каталога данных, многопоточная и пакетная оптимизации автоматически отключаются.

  • Оператор WAITLSN признан устаревшим.

E.1.2. Миграция на версию 9.6.24.1

Процедура установки зависит от версии вашей текущей инсталляции.

Для обновления СУБД с версии Postgres Pro Standard, основанной на предыдущей основной версии PostgreSQL, вы должны установить последний корректирующий выпуск для вашей версии, а затем выполнить выгрузку/восстановление данных, применив pg_dumpall, или воспользоваться утилитой pg_upgrade.

Для обновления с версии Postgres Pro Standard, основанной на этом же основном выпуске PostgreSQL, выгрузка/восстановление данных не требуется.

Встроенные функции numeric_eq, numeric_ne, numeric_gt, numeric_ge, numeric_lt и numeric_le фактически являются герметичными, но они не имели соответствующей пометки в Postgres Pro Standard до версии 9.6.17.1, в результате чего запросы могли выполняться неоптимально. В частности, это отрицательно сказывалось на производительности запросов при использовании политик защиты на уровне строк. В версии 9.6.17.1 это было исправлено для новых инсталляций в результате корректировки исходных данных каталога, но существующие инсталляции сохранят некорректные пометки, пока вы не исправите записи этих функций в pg_proc. Чтобы их исправить, обновите экземпляр сервера с помощью pg_upgrade либо вручную измените их в существующем кластере, выполнив во всех его базах данных соответствующие команды ALTER FUNCTION. Например:

ALTER FUNCTION pg_catalog.numeric_eq LEAKPROOF

Так как в Postgres Pro Standard 9.6.12.1 была изменена модель распространения pg_probackup, при переходе с предыдущей версии в Альт Линукс или системе на базе Debian выполните apt dist-upgrade (или apt-get dist-upgrade), чтобы корректно обработались все новые зависимости. В Windows для завершения обновления вам нужно будет запустить отдельный инсталлятор pg_probackup.

При обновлении с версии 9.6.8.2 и ниже вы должны выполнить команду REINDEX для индексов, в которых используются типы mchar или mvarchar.

Если вы производите обновление с версии Postgres Pro Standard 9.6.7.1 или ниже, вы должны также воспользоваться скриптом pgpro_upgrade, предоставленным в данном дистрибутиве. Этот скрипт обновляет метаданные для смены формата номера каталога, изменившегося после Postgres Pro Standard 9.6.4.1, а также переименовывает функцию pgpro_build в pgpro_source_id. Скрипт pgpro_upgrade обычно запускается автоматически, но если вы создали базу данных в нестандартном расположении, вы должны запустить его вручную.

Примечание

Если вы запускаете pgpro_upgrade вручную, вы должны остановить службу postgres. Этот скрипт должен запускать пользователь-владелец базы данных (обычно postgres). При попытке запустить pgpro_upgrade от имени root произойдёт ошибка. За подробностями обратитесь к описанию pgpro_upgrade.

Примечание

В дистрибутивах Linux с системой пакетов RPM при обновлении с версии 9.6.2.1 или более ранней вы должны переименовать каталог данных pgsql в pgpro до запуска скрипта pgpro_upgrade.

Для перехода с ванильной версии PostgreSQL 9.6.x сначала установите последний корректирующий выпуск для этой версии, а затем выполните выгрузку/восстановление данных, используя pg_dumpall.