E.28. Sortie 7.4.2

Date de sortie�: 2004-03-08

Cette version contient quelques correctifs pour la 7.4.1. For information about new features in the 7.4 major release, see Section E.30.

E.28.1. Migration vers la version 7.4.2

Une sauvegarde restauration n'est pas requise pour ceux utilisant une version 7.4.X. N�anmoins, c'est la m�thode conseill� car plus simple pour l'incorporation de la correction sur deux erreurs trouv�es dans le contenu initial des catalogues syst�mes de la 7.4. Une s�quence sauvegarde/initdb/restauration utilisant l'initdb de la 7.4.2 corrigera automatiquement ces probl�mes.

La plus s�v�re des deux erreurs est que le type de donn�es anyarray a un mauvais label d'alignement ; ceci est un probl�me parce que le catalogue syst�me pg_statistic utilise des colonnes anyarray. Ce mauvais label peut causer des mauvaises estimations du planificateur et m�me des arr�ts brutaux lorsque des requ�tes de planification impliquent des clauses WHERE sur des colonnes doublement align�es doubles (telles que float8 et timestamp). Il est fortement recommand� que toutes les installations r�parent cette erreur, soit par initdb soit en suivant la proc�dure de r�paration manuelle donn�e ci-dessous.

L'erreur moindre est que la vue syst�me pg_settings devrait �tre marqu�e comme ayant un acc�s public en mise � jour pour permettre l'utilisation de UPDATE pg_settings comme substitut pour SET. Ceci peut �tre corrig� soit par initdb soit manuellement mais il n'est pas n�cessaire de le corriger sauf si vous voulez utiliser UPDATE pg_settings.

Si vous ne souhaitez pas lancer un initdb, la proc�dure suivante corrigera pg_statistic. En tant que superutilisateur de la base de donn�es, faites :

-- efface les anciennes donn�es de pg_statistic :
DELETE FROM pg_statistic;
VACUUM pg_statistic;
-- ceci devrait mettre � jour 1 ligne :
UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
-- ceci devrait mettre � jour 6 lignes :
UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
--     
-- � ce moment, vous DEVEZ lancer un nouveau moteur pour �viter un arr�t brutal
--
-- repopulate pg_statistic:
ANALYZE;

Ceci peut se faire sur une base de donn�es en r�el mais attention au fait que tous les serveurs de la base de donn�es modifi�e doivent �tre relanc�s avant qu'il ne soit sain de repeupler pg_statistic.

Pour corriger l'erreur pg_settings, faites simplement :

GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;

Les proc�dures ci-dessus doivent �tre ex�cut�es dans chaque base de donn�es d'une installation, ceci incluant template1, et id�alement template0. Si vous ne corrigez pas les bases de donn�es mod�les, alors toute nouvelle base de donn�es contiendra les m�mes erreurs. template1 peut �tre corrig� de la m�me fa�on que toute autre base de donn�es, mais corriger template0 requiert quelques �tapes suppl�mentaires. Tout d'abord, � partir de n'importe quelle session de base de donn�es

UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';

nsuite, connectez-vous � template0 et ex�cutez les proc�dures de r�paration suivante. Enfin, faites

-- re-g�le template0:
VACUUM FREEZE;
-- et la prot�ge contre toute modifications futures :
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';

E.28.2. Modifications

La version 7.4.2 incorpore toutes les corrections de la version 7.3.6, ainsi que les suivantes :