Trouver les extensions ayant des mises à jour en attente et les mettre à jour
PostgreSQLExtensionsCommande
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;Ce que fait la commande
Compare la version installée de chaque extension dans la base avec la version par défaut du paquet sur le serveur, et génère la commande ALTER EXTENSION pour celles ayant des mises à jour en attente.
Quand l'utiliser
Après des mises à niveau mineures/majeures de PostgreSQL et des mises à jour de paquets d'extensions, et lors de la maintenance périodique.
Attention
Mettre à jour le paquet OS ne met pas à jour automatiquement la partie SQL ; ALTER EXTENSION ... UPDATE doit être exécuté séparément dans chaque base (particulièrement important après pg_upgrade). Le script de mise à jour peut prendre des verrous et modifier des objets (par ex. PostGIS) ; testez-le d'abord et lisez les notes de version. Pour passer à une version précise : ALTER EXTENSION pgstattuple UPDATE TO '1.5'; Certaines extensions (par ex. pg_stat_statements) exigent aussi un redémarrage pour recharger la bibliothèque partagée.