2009-03-16
Cette version contient des corrections de la version 8.3.6. Pour plus d'informations sur les nouvelles fonctionnalités de la version majeure 8.3, voir Section E.67, « Version 8.3 ».
Une sauvegarde/restauration n'est pas requise pour ceux utilisant une version 8.3.X. Néanmoins, si vous mettez à jour à partir d'une version antérieure à la 8.3.5, voir les notes de sortie de la 8.3.5.
Correction de crashs suite à des récursions erronées dûes à l'échec d'une conversion d'encodage (Tom)
Cette modification étend les corrections réalisées lors des deux précédentes versions mineures pour les même scénarios. Les corrections déjà réalisées étaient ciblées sur les problèmes rencontrés, mais nous nous apercevons maintenant que toute erreur renvoyée par une fonction de conversion d'encodage pouvait entraîner une récursion infinie pour indiquer l'erreur. La solution est donc de désactiver toute traduction et conversion d'encodage. Le message d'erreur est renvoyé en ASCII simple si nous découvrons que nous sommes dans une situation susceptible d'entraîner une récursion infinie.
N'autorise plus CREATE CONVERSION avec les mauvais encodages pour la fonction de conversion spécifiée (Heikki)
Ceci permet de prévenir un scénario possible pour un échec de conversion d'encodage. Le changement précédent permet de se protéger contre les autres échecs du même type.
Correction de xpath() pour ne modifier l'expression du chemin que si nécessaire, et de faire une tentative plus saine quand c'est nécessaire (Andrew)
Le standard SQL suggère que xpath devrait fonctionner sur des données qui sont un fragment de document mais libxml ne supporte pas cela et il n'est pas clair que ce soit intéressant d'après le standard XPatch. xpath tentait de contourner cette différence en modifiant les données et l'expression du chemin mais la modification était erronnée et pouvait causer l'échec de recherches valides. Maintenant, xpath vérifie sir les données sont en fait un document bien formé et, dans ce cas, appelle libxml sans modification des données ou de l'expression du chemin. Sinon, une méthode différente de modification qui est moins sujette à l'échec est utilisée.
La nouvelle méthode de modification n'est pas satisfaisante à 100% et il semble qu'il n'existe pas de solution réelle. Ce correctif doit donc etre vu seulement comme une aide pour ne pas casser les applications existantes. Il est probable que PostgreSQL™ 8.4 rejettera simplement l'utilisation de xpath sur des données qui ne constituent pas un document bien formé.
Correction d'un crash lorsque to_char() a pour argument des codes de format inappropriés pour la donnée en argument (Tom)
Correction d'un échec possible dans contrib/tsearch2 lorsque la locale C est utilisée avec un encodage multi-octets (Teodor)
Les crashes étaient possibles sur les plateformes où wchar_t est plus petit que int ; Windows en particulier.
Correction de l'inefficacité extrême dans la gestion par l'analyseur contrib/tsearch2 d'une chaîne de type email contenant de nombreux caractères @ (Heikki)
Correction d'un problème du planificateur avec les sous-SELECT dans la liste en sortie d'une sous-requête importante (Tom)
Le symptôme connu de ce bogue est une erreur « failed to locate grouping columns » dépendant du type de donnée impliqué mais il pourrait y avoir d'autres problèmes.
Correction de la décompilation de CASE WHEN lorsque cette instruction est utilisée avec une coercion explicite (Tom)
Cette erreur pouvait entraîner des échecs de type Assert pour les binaires compilés avec l'option Assert activé. Elle pouvait aussi entraîner des des messages d'erreur « unexpected CASE WHEN clause » dans d'autres cas lors de l'examen ou de la sauvegarde d'une vue.
Correction d'une mauvaise affectation possible du propriétaire du rowtype d'une table TOAST (Tom)
Si CLUSTER ou une variante de ALTER TABLE qui ré-écrit la table étaient exécutées par quelqu'un d'autre que le propriétaire de la table, l'entrée pg_type pour la table TOAST pouvait se trouver changer de propriétaire (en utilisant l'identifiant de l'utilisateur qui a exécuté la commande). Ceci ne pose pas de problèmes immédiatement car les droits sur le rowtype du TOAST ne sont pas examinés après chaque opération ordinaire de la base de données. Néanmoins, cela peut amener des échecs inattendus si une personne tente plus tard de supprimer le rôle qui a exécuté la commande (en 8.1 ou 8.2) ou des messages d'avertissement du type « propriétaire du type de données semble invalide » avec pg_dump après avoir supprimé l'utilisateur (en 8.3).
Modification de UNLISTEN pour qu'il quitte rapidement si la session en cours n'a jamais exécuté de commande LISTEN (Tom)
La plupart du temps, cela n'est pas une optimisation particulièrement utile mais comme DISCARD ALL appelle UNLISTEN, le codage précédent causait un problème de performances substantiel pour les applications utilisant beaucoup DISCARD ALL.
Correction de PL/pgSQL pour qu'il ne traite pas INTO après un INSERT comme une clause d'affectation de variables, quelque soit son emplacement ; en particulier, cela permet d'éviter un échec sur un INSERT INTO compris dans une commande CREATE RULE (Tom)
Nettoyage complet des variables de statut de PL/pgSQL à la sortie d'un bloc (Ashesh Vashi et Dave Page)
Ceci n'est pas un problème avec PL/pgSQL lui-même, mais l'omission pouvait entraîner un crash du debogueur PL/pgSQL lors de l'examen de l'état d'une fonction.
Ré-essaie d'appeler CallNamedPipe() après un échec sur Windows (Steve Marshall, Magnus)
Il semble que cette fonction puisse échouer de temps en temps ; auparavant, nous avons traiter toute erreur comme une erreur grave qui pourrait poser problème aux instructions LISTEN / NOTIFY ainsi qu'à d'autres opérations.
Ajout de MUST (Mauritius Island Summer Time) dans la liste par défaut des abréviations connues de fuseau horaire (Xavier Bugaud)