DBAtlas · Атлас эксплуатации баз данных

Найти расширения с ожидающими обновлениями и обновить их

PostgreSQLРасширения

Команда

SELECT e.extname,
       e.extversion AS installed,
       a.default_version AS available,
       n.nspname AS schema_name,
       format('ALTER EXTENSION %I UPDATE;', e.extname) AS fix
FROM pg_extension e
JOIN pg_available_extensions a ON a.name = e.extname
JOIN pg_namespace n ON n.oid = e.extnamespace
WHERE e.extversion IS DISTINCT FROM a.default_version
ORDER BY e.extname;

-- Is there an update path?
SELECT * FROM pg_extension_update_paths('pgstattuple') WHERE path IS NOT NULL;

ALTER EXTENSION pgstattuple UPDATE;

Что делает

Сравнивает установленную в базе версию каждого расширения с версией по умолчанию пакета на сервере и генерирует команду ALTER EXTENSION для расширений с ожидающими обновлениями.

Когда использовать

После минорных/мажорных обновлений PostgreSQL и обновлений пакетов расширений, а также при периодическом обслуживании.

Внимание

Обновление пакета ОС не обновляет SQL-часть автоматически; ALTER EXTENSION ... UPDATE нужно выполнить в каждой базе данных отдельно (особенно важно после pg_upgrade). Скрипт обновления может брать блокировки и изменять объекты (например, PostGIS); сначала протестируйте его и прочитайте release notes. Для перехода на конкретную версию: ALTER EXTENSION pgstattuple UPDATE TO '1.5'; Некоторые расширения (например, pg_stat_statements) также требуют перезапуска для перезагрузки разделяемой библиотеки.

Открыть в DBAtlas →

Связанные материалы