Problème critique avec pg_upgrade

Les développeurs de PostgreSQL ont découvert un bug grave sur toutes les versions officielles de l'outil pg_upgrade. Ce bug est aussi présent sur les anciennes versions de pg_upgrade où cet outil était connu sous le nom de pg_migrator.

Ce bug est grave dans le sens où des pertes de données sont possibles si des actions curatives ne sont pas réalisées très rapidement.

Toute personne qui a utilisé pg_upgrade ou pg_migrator doit immédiatement procéder à une sauvegarde de son répertoire pg_clog.

Ensuite, dès que cela est possible, il est nécessaire d'exécuter le script SQL suivant sur toutes les bases de données qui ont été converties par pg_upgrade ou pg_migrator :

CREATE TEMPORARY TABLE pg_upgrade_fix AS
    SELECT 'VACUUM FREEZE pg_toast.' || c.relname || ';'
    FROM    pg_class c, pg_namespace n
    WHERE   c.relnamespace = n.oid AND
            n.nspname = 'pg_toast' AND
            c.relkind = 't'
    ORDER BY c.oid;
\copy pg_upgrade_fix TO 'pg_upgrade_tmp.sql'
\i pg_upgrade_tmp.SQL

Ce bug a été corrigé dans la version de pg_upgrade qui sera livrée avec les versions 8.4.8 et 9.0.4 de PostgreSQL, dont la sortie est prévue pour le lundi 18 avril 2011.

Quelques liens:

Afficher le texte source