Extensions mit ausstehenden Updates finden und aktualisieren
PostgreSQLExtensionsBefehl
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;Was es tut
Vergleicht die in der Datenbank installierte Version jeder Extension mit der Standardversion des Pakets auf dem Server und erzeugt den Befehl ALTER EXTENSION für solche mit ausstehenden Updates.
Wann einsetzen
Nach Minor-/Major-Upgrades von PostgreSQL und Updates von Extension-Paketen sowie bei regelmäßiger Wartung.
Vorsicht
Ein Upgrade des OS-Pakets aktualisiert die SQL-Seite nicht automatisch; ALTER EXTENSION ... UPDATE muss in jeder Datenbank separat ausgeführt werden (besonders wichtig nach pg_upgrade). Das Update-Skript kann Sperren nehmen und Objekte ändern (z. B. PostGIS); vorher testen und die Release Notes lesen. Um auf eine bestimmte Version zu wechseln: ALTER EXTENSION pgstattuple UPDATE TO '1.5'; Einige Extensions (z. B. pg_stat_statements) erfordern zusätzlich einen Neustart, um die Shared Library neu zu laden.