Nouvelles hebdomadaires de PostgreSQL - 21 janvier 2007

Une légère incompréhension sur la façon dont EnterpriseDB collecte et utilise les adresses mail depuis les listes de diffusion PostgreSQL a conduit EnterpriseDB a modifié sa politique à ce sujet.

Les nouveautés des produits dérivés

Les jobs de janvier

http://archives.postgresql.org/pgsql-jobs/2007-01/threads.php

PostgreSQL Local

Merci à Gavin Sherry pour la Miniconf PostgreSQL à Linuxconf.au. http://www.gavinsherry.org/blog/index.php?/archives/1-PostgreSQL-miniconf-success.html

PostgreSQLFr tient un stand lors de SolutionsLinux 2007, à Paris (France) du 30 janvier au 1er février. Jean-Paul Argudo, trésorier de l'association, conduira une session dédiée aux bases de données FLOSS (Free/Libre/OpenSource Software). Plus d'informations ici : http://www.solutionslinux.fr/index.php

L'Autriche propose un nouveau site communautaire. http://community.postgresql.at/

Il y aura un stand PostgreSQL au FOSDEM les 24 et 25 février à Bruxelles. La plupart des têtes pensantes des communautés PostgreSQL européennes y seront. Contacter de@postgresql.org pour en être. http://www.fosdem.org/2007/

Le communauté PostgreSQL italienne organise une journée PostgreSQL cet été. Pour participer, suivre le lien http://www.pgday.it

PostgreSQL dans les média

PostgreSQL Weekly News vous est présenté cette semaine par David Fetter et Devrim GUNDUZ. Adaptation francophone de Stéphane Schildknecht.

Vos propositions d'informations doivent parvenir avant dimanche minuit à david@fetter.org.

Correctifs appliqués

Peter Eisentraut a commité :

  • la suppression de plusieurs variables inutilisées dans les tests de régression ;
  • la remise en place du lien libpq dans pgsql/src/interfaces/ecpg/test/Makefile.regress, en prenant soin de s'assurer que le répertoire d'arbre libpq est mentionné avant les répertoires système ;
  • la mise à jour de l'estimation du temps de construction ;
  • la suppression des anciennes cibles de dépendance ;
  • la bibliothèque libpq était mentionné au mauvais endroit, ce qui pouvait conduire à l'utilisation d'une ancienne libpq déjà installée. Il n'est pas nécessaire de lier la libpq à cet endroit, autant l'enlever ;
  • la construction du code des tests ecpg lors de l'exécution des tests, comme pour les autres codes de test ;
  • la correction des tests de régression xmlconcat ;
  • la correction de xmlconcat en fusionnant correctement les déclarations XML. L'ajout de la fonction d'agrégation xmlagg ;
  • l'ajout du support de conversion des valeurs binaires (i.e. bytea) en valeurs xml, avec le nouveau paramètre GUC "xmlbinary" qui contrôle l'encodage de la sortie, comme le préconise le standard SQL/XML ;
  • l'utilisation optionnelle de xml2-config pour détecter l'emplacement de la libxml ;
  • la correction des problèmes d'encodage du type xml : en mode texte, les déclarations d'encodage sont ignorées et supprimées, en mode binaire elles sont honorées comme précisé dans le standard XML.

Bruce Momjian a commité :

  • la mise à jour des instructions de la documentation sur la suppression de template1 ;
  • l'ajout d'une URL pour les index bitmap à la TODO ;
  • l'ajout d'une URL pour la carte de l'espace mortà la TODO ;
  • l'ajout de la documentation des unités de mémoire et de temps à postgresql.conf. Rétro-correctif 8.2.X pour initdbs ;
  • la mise à jour de la documentation de postgresqlconf pour mentionner les unités par défaut qui correspondent à celles du fichier postgresql.conf. L'ajout également des unités aux descriptions qui n'en ont pas. Amélioration du texte. Mention de pg_settings.unit comme une façon de trouver les unités par défaut des paramètres. Rétro-correctif 8.2.X ;
  • la modification de max_fsm_pages dans postgresql.conf.sample pour montrer une valeur typique plutôt qu'une valeur trop élevée ;
  • la documentation du fait que pour supprimer template1, datistemplate doit être 'false'. Rétro-correctif 8.2 ;
  • le déplacement du code pour placer le niveau d'erreur LOG entre ERROR et PANIC dans la nouvelle fonction is_log_level_output(), pour la clarté du code ;
  • l'ajout de l'URL du wiki des développeurs à la TODO ;
  • l'ajout à la TODO de : "Allow multiple vacuums so large tables do not starve small tables" et "Improve control of auto-vacuum" ;
  • l'ajout à la TODO des URL pour les GUIDs/UUIDs (Globally/Universally Unique Identifiers) ;
  • le marquage de l'item TODO "autovacuum on by default" comme effectué.

Tom Lane a commité :

  • l'ajustement de pgbench pour qu'il ne s'arrête pas sur les requêtes non-select qui retournent des tuples, ce qui est tout à fait possible avec les scripts personnalisés (voir RETURNING, EXPLAIN, etc) ;
  • l'ajout des options COST et ROWS à CREATE/ALTER FUNCTION, et les colonnes de pg_proc, procost and prorows, pour permettre à un simple utilisateur d'ajuster me coût estimé de l'appel d'une fonction, ainsi que de contrôler le nombre estimé de lignes retournées par une fonction retournant un ensemble. Nous étenderons peut-être cela pour permettre les routines d'estimation spécifiques à une fonction, mais il semble se dégager un consensus sur l'utilisation en premier lieu d'une simple constante. Cela permet en particulier d'obtenir une façon simple de contrôler l'ordre dans lequel différentes clauses WHERE sont appliquées dans un nœud du plan. C'est une bonne chose dans la mesure où la réécriture récente de EquivalenceClass du planificateur l'a rendu moins prédictible qu'avant ;
  • le réécriture de quelques routines lsyscache pour éliminer de la duplication de code et éviter quelques parcours de syscache dans make_pathkey_from_sortinfo() ;
  • la simplification de la représentation par pg_am des méthodes d'accès ayant des capacités de tri : fournir un simple booléen 'amcanorder', à la place des champs qui précisent les numéros de stratégie des opérateurs de tri. Nous avons décidé d'imposer aux AM ayant des capacités de tri d'utiliser les numéros de stratégie compatible b-tree, ainsi les anciens champs sont devenus inutiles (et en fait source d'erreur concernant ce qui est autorisé) ;
  • ne pas utiliser 'int' là où 'bool' est souhaité, dans pgsql/src/backend/utils/error/elog.c ;
  • la correction de balises cassées dans pgsql/doc/src/sgml/installation.sgml ;
  • la refonte la structure des données des chemins du planificateur pour créer une représentation séparée, explicite des classes d'équivalence des variables ;
  • l'ajout d'une note pointant que is_pseudo_constant_clause() ne vérifie pas les aggrégats. Aucun problème lors d'une utilisation courante, mais quelqu'un pourrait finir par se brûler ;
  • l'extension du correctif d'hier pour que le bgwriter soit aussi averti d'oublier les fsyncs en attente lors d'un DROP DATABASE ;
  • la révision du mécanisme de requêtes de fsync par bgwriter pour améliorer sa résistance lorsqu'une table est supprimée. Un processus serveur sur le point de délier un fichier envoie désormais une requête "revoke fsync" au bgwriter pour qu'il supprime les fsyncs en attente. Il existe toujours une possibilité que le bgwriter tente un fsync après la déliaison, mais cela peut-être résolu par la revérification de la queue de requêtes fsync pour voir si une requête d'annulation est arrivée entre temps. Cela élimine le souci précédent de la simple "hypothèse" qu'une erreur ENOENT est ok, et nous laisse gérer le fait que sous Windows, cela peut aussi être EACCES sans intriduire d'hypothèse suspecte. D'après une de mes idées améliorée par Magnus. Le correctif dans HEAD ne s'applique pas correctement à 8.2, mais je verrais pour un rétrocorrectif plus tard. Dans le même temps, quelques tests sous Windows m'ont permis de le forcer par le chemin du code via ENOENT, mais cela ne prouve pas que le problème soit résolu sous Windows ;
  • la correction des vérifications incorrectes des permissions dans la vue information_schema.key_column_usage : elle vérifiait un pg_constraint OID à la place d'un pg_class OID, ce qui aboutissait à un "relation with OID nnnnn does not exist" pour quiconque n'était pas propriétaire de la table examinée. Per bug #2848 de Laurence Rowe. Note : pour les installations 8.2 existantes, une simple mise à jour de version ne le corrigera pas ; la façon la plus simple de le corriger est CREATE OR REPLACE sur la vue avec la définition correcte ;

Alvaro Herrera a commité :

  • la correction du plantage de pg_regress pour les tests PL et contrib, en ne requérant pas la présence obligatoire des répertoires "input" et "output" ;
  • le correctif de Magnus Hagander qui modifie les règles sed dans les tests de régression de pg_regress pour créer les fichiers engendrés, pour permettre à Visual C++ de passer ces tests. Ces tests réussissent toujours pour les constructions VPATH et normales ;
  • l'activation d'autovacuum dans la configuration par défaut ;
  • la possibilité de tuer autovacuum lorsqu'une autre opération veut être la seule à y accéder, telle DROP DATABASE. Cela permet aux tests de régression de réussir avec autovacuum activé, ce qui ouvre la voie à l'activation d'autovacuum par défaut.

Neil Conway a commité :

  • la mise à jour des documentations pour les modifications récentes de la valeur de retour de setseed() ;
  • setseed() retourn void, plutôt qu'un int4 inutilisé. D'après une discussion sur pgsql-patches du 20 Septembre 2006 ;
  • les déclencheurs désactivés sont listés séparément dans la sortie de "\d < table >" du psql. Auparavant, ils n'étaient pas affichés différement des actifs, ce qui portait à confusion. Correctif de Brendan Jurd ;
  • la refonte de l'API de l'index AM : déplacement de currentItemData et currentMarkData de IndexScanDesc vers la structure opaque des index AM qui nécessitent cette information (gist et hash à ce jour). Correctif de Heikki Linnakangas, arrangé par Neil Conway ;
  • les tests de régression pour les objets volumineux. Correctif de Jeremy Drake ;
  • \lo de psql doit respecter le mode non verbeux et produire les sorties HTML en HTML. Correctif de Jeremy Drake ;
  • l'ajout de notions de cpyright manquante, ruleutils.c utilise la mise en forme standard pour les commentaires d'entête ;
  • la modification des tests de régression de width_bucket() pour éviter une dépendance non nécessaire à l'implantation du point flottant sur la plateforme. D'après un rapport de Stefan Kaltenbrunner ;
  • les mises à jour de vcbuild de Magnus Hagander : après le correctif de Markos pgcrypto est construit sans zlib, la mise à jour des README avec l'info xml, xml nécessite xslt et iconv, la désactivation des avertissements inutiles concernant __cdecl(), l'ajout d'un buildenv.bat appelé depuis tous les autres fichiers bat pour mettre en place des choses telles que PATH pour flex/bison. (Ne peut pas le mettre en place juste avant l'appel, cela ne fonctionne pas toujours pour les constructions depuis le GUI) ;
  • l'implantation de width_bucket() pour le type de données float8 ;
  • de menues améliorations de la TODO liste. L'ajout de quelques URLs pour des items TODO existant, et le réajout d'un item TODO pour les capacités d'"estimated count" ;
  • la correction d'un petite incohérence dans la page de référence de pg_dumpall : -g exporte les roles et tablespaces, plus les users et groups. Per Dave Page. Rétrocorrectif de 8.2 et 8.1.

Teodor Sigaev a commité :

  • la correction du support de la régionalisation des encodage multioctets et C. Correctif de Tatsuo Ishii légèrement retravaillé.

Correctifs rejetés (à ce jour)

Pas de déception cette semaine :-)

Correctifs en attente

  • Greg Sabino Mullane a envoyé un correctif qui permet à pg_dump d'afficher joliment les DDL des objets systèmes ;
  • Gurjeet Singh a envoyé de nouvelles versions de ses correctifs de pg_post_planner_plugin et pg_index_adviser, cette fois-ci pour le CVS HEAD ;
  • Dave Page a envoyé un correctif qui ajoute -f (--file=FILENAME) et -l (--default-database=) à pg_dumpall ;
  • ITAGAKI Takahiro a envoyé un correctif qui ajoute le support d'O_DIRECT pour Windows ;
  • Arul Shaji a envoyé un correctif qui implante pg_get_domaindef(oid) ;
  • Gevik Babakhani a renvoyé son correctif d'implantation du type de donnéesUUID.