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のマイナー/メジャーアップグレードや拡張パッケージの更新後、定期メンテナンス時に。

注意

OSパッケージをアップグレードしてもSQL側は自動的に更新されない。ALTER EXTENSION ... UPDATEをデータベースごとに個別に実行する必要がある(pg_upgrade後は特に重要)。更新スクリプトはロールを取得しオブジェクトを変更する場合がある(例: PostGIS)ため、先にテストし、リリースノートを読む。特定のバージョンに移行するには: ALTER EXTENSION pgstattuple UPDATE TO '1.5'; 一部の拡張(例: pg_stat_statements)は共有ライブラリの再ロードのために再起動も必要。

DBAtlas で開く →

関連項目