gleu's blog

Aller au contenu | Aller au menu | Aller à la recherche

GIT, cette nouvelle mode

Donc PostgreSQL passe à git mi-août. Du coup, un peu tout le monde y passe. pgAdmin commence son passage ce soir (avec le dépôt pgagent par exemple). Slony se pose officiellement la question. Quant aux dépôts de PostgreSQLfr, ils y sont passés depuis un mois en gros.

Je trouve ça plutôt bien. Ça uniformise les dépôts sur un système véritablement excellent. Pour une fois qu'on uniformise vers le haut, on ne va pas se plaindre :)

Manuel 9.0 beta 3 disponible

Et non, pas de vacances pour moi pour l'instant. Les deux semaines d'inactivité sur ce blog ont une raison : la mise à jour de la traduction du manuel en beta3, mais aussi et surtout du travail sur pgAdmin (dont je parlerais plus tard, certainement en fin de semaine).

Bref. Tout ça pour dire que la traduction française du manuel de PostgreSQL 9.0 beta 3 est disponible. Normalement, tout est traduit. Peut-être mal, il va falloir que je fasse une passe importante de relecture. En attendant, un lien pour consulter la doc en ligne et un lien pour récupérer le PDF.

Merci de me rapporter tout soucis constaté dans la traduction.

Update: correction du lien vers le PDF. Merci à "Fly".

Comment un problème constaté chez un client peut se transformer en un nouveau patch pour PostgreSQL

Mardi dernier, un client en support nous appelle à cause d'un problème d'espace disque. Il est en version 8.2. Il dispose de place libre sur d'autres partitions. Rien de plus simple. Il suffit de créer un tablespace sur une des partitions où il reste suffisamment d'espace et d'y déplacer quelques objets pour faire de la place sur le répertoire principal des données. Tout se passe bien : création du répertoire, ajout du tablespace (avec CREATE TABLESPACE), choix de la table à déplacer, et déplacement de la table (avec un ALTER TABLE). Malheureusement, l'opération prends du temps, beaucoup de temps. Et les performances du serveur ont commencé à en pâtir. Le client a voulu interrompre l'opération, quitte à la reprendre plus tard. Pas de soucis, un simple Ctrl-C doit suffire. Et bien non, Ctrl-C et pg_cancel_backend() nous indiquaient bien que la demande d'annulation avait été envoyée mais les opérations sur le disque continuaient et psql ne nous rendait pas la main. Nous avons donc été forcés d'attendre la fin de l'opération.

Pendant ce temps, j'ai commencé à tester sur mon portable et a fouillé dans le code. Et j'ai fini par me rendre compte que rien ne permettait une prise en compte du signal pendant la copie. Autrement dit, vous lancez un changement de tablespace pour la table X de 50 Go, vous essayez de l'annuler au tout début, il vous faudra quand même attendre la fin de la copie des 50 Go pour que votre demande d'annulation soit prise en compte. Très dommageable. Il faut corriger ça. Tout le code se trouve dans la fonction copy_relation_data du fichier src/backend/commands/tablecmds.c. Une boucle s'occupe de la copie :

 for (blkno = 0; blkno < nblocks; blkno++)
 {    
     smgrread(src, forkNum, blkno, buf);
 
     /* XLOG stuff */
     if (use_wal)
         log_newpage(&dst->smgr_rnode, forkNum, blkno, page);
 
     /*   
      * Now write the page.  We say isTemp = true even if it's not a temp
      * rel, because there's no need for smgr to schedule an fsync for this
      * write; we'll do it ourselves below.
      */
     smgrextend(dst, forkNum, blkno, buf, true);
 }

Autrement dit, on lit chaque bloc du fichier source, que l'on copie dans le fichier destination. Une bête copie bloc par bloc, avec aucun moyen de l'interrompre.

De mes lectures dans pgsql-hackers, je me rappelais qu'il existe une fonction appelée CHECK_FOR_INTERRUPTS faisant exactement le travail dont j'avais besoin. J'ai donc uniquement ajouté un appel à cette fonction au début de la boucle, ce qui donne au final :

 for (blkno = 0; blkno < nblocks; blkno++)
 {    
     /* If we got a cancel signal during the copy of the data, quit */
     CHECK_FOR_INTERRUPTS();
    
     smgrread(src, forkNum, blkno, buf);
     
     /* XLOG stuff */
     if (use_wal)
         log_newpage(&dst->smgr_rnode, forkNum, blkno, page);
   
     /*   
      * Now write the page.  We say isTemp = true even if it's not a temp
      * rel, because there's no need for smgr to schedule an fsync for this
      * write; we'll do it ourselves below.
      */
     smgrextend(dst, forkNum, blkno, buf, true);
 }

Une compilation et quelques tests après, je me suis aperçu que tout fonctionnait comme je le souhaitais. L'annulation se fait exactement au moment où je la demande.

J'ai corrigé aussi le déplacement d'une base de données. Le patch terminé, je l'ai envoyé sur pgsql-hackers pour qu'il puisse être testé, relu et enfin commité. Je l'ai même saisi sur le site commitfest. Robert Haas s'en est occupé et l'a finalement commité vendredi sur toutes les versions, de la 8.0 (version à laquelle les tablespaces ont été ajoutées) à la future 9.0.

Vous voulez connaître les nouveautés de la 9.0 ?

Alors allez lire le document rédigé par Marc Cousin. Il existe en version française et en version anglaise. Josh Berkus semble l'avoir beaucoup apprécié.. Et avec raison, car ce document est une mine.

Fin de la traduction du manuel de la 9.0 (beta 2)

Enfin, pour moi en tout cas. Il ne reste plus aucun fichier à réserver pour la traduction. Seuls quatre fichiers sont toujours à traduire mais déjà réservés. En attendant leur traduction, il est possible de lire le reste au format HTML ou au format PDF.

Bonne lecture.

Et n'hésitez pas à me faire parvenir tout problème de traduction.

Traduction du manuel de la 9.0 beta 2

La beta 2 de la 9.0 sort aujourd'hui (oui, on est déjà lundi, même si c'est de peu), tout comme la version 1.12 beta 2 de pgAdmin.

J'en profite pour dire que j'ai fait le merge de la traduction vers la beta 2 et que j'ai commencé sérieusement la traduction. On est passé de 247 fichiers à traduire à 32. C'est évidemment les plus gros qui restent... :-/

Bref, pour les impatients, le manuel français de la 9.0 est disponible. Mais attention, il y a toujours des (plus ou moins gros) morceaux en anglais.

Et hop, un dépôt git pour la traduction des manuels de PostgreSQL et de Slony

Marc Cousin a beaucoup bossé là-dessus, et il a surtout bien bossé. Le résultat est disponible sur github.com. Le dépôt SVN devient donc inutile et sera archivé rapidement. Pour récupérer le dépôt, c'est très simple. Il vous suffit d'utiliser cette commande :

 git clone git://github.com/gleu/pgdocs_fr.git

et quelques secondes après, vous disposez de toutes les branches, de tous les tags... bref, du dépôt complet des fichiers XML. Cool, non ?

Merci Marc, j'attendais ça depuis un bon moment. Maintenant, tout se fait sur le dépôt git. Si vous voulez les droits d'écriture dessus, il me semble qu'il faut absolument un compte sur github (ouverture gratuite et rapide) et me donner le nom du compte. Allez, je retourne au boulot.

La traduction de la 9.0 peut commencer

Le merge est terminé depuis un bon moment. J'attendais de pouvoir proposer une interface simpliste pour la réservation des fichiers et surtout la récupération du diff entre ancienne version et nouvelle version de chaque fichier.

Cet après-midi, j'ai donc écrit cette interface, ainsi qu'un outil pour intégrer toutes ces informations dans une base de données. Le résultat est disponible à cette URL : http://www.postgresql.fr/~guillaume/traduction/liste.php

Alors, oui, c'est en grosse partie moche, sauf la partie visualisation du patch. Ça n'a pas beaucoup de fonctionnalités. Remarquez que c'est clairement pas le but. Je me fous de la présentation en dehors du patch. Mon but est de fournir une interface simple permettant de travailler pour se mettre au travail le plus vite possible. C'est chose faite. Je suis content :)

Pour réserver un fichier, il suffit de cliquer sur le nom du fichier, puis d'indiquer son nom dans le champ texte « Traducteur ». Le patch se trouve en dessous. Si vous ne disposez pas d'un accès au SVN, je peux vous fournir le fichier. Il suffit de m'envoyer un mail à guillaume at lelarge point info. Une fois le fichier traduit, il suffit là-aussi de me l'envoyer. Je l'intègrerais dans le SVN en vous mettant comme traducteur.

Merci.

Peu de temps, donc quelques news rapides

Les nouveautés se succèdent rapidement ces temps-ci et le temps manque encore plus que d'habitude pour parler de tout de façon détaillé.

Vous avez tous dû entendre parler du pgcon qui a eu la semaine dernière à Ottawa. Il y a eu beaucoup de billets de blogs sur le déroulement des festivités. L'un des points les plus intéressants actuellement est ce qui est sorti du Developer Meeting. Le rapport donne beaucoup d'informations sur les prochains développements, que ce soit pour la 9.0 (qui, on l'a appris, devrait bien sortir cet été) et pour la 9.1. Si tout est développé pour cette version, elle promet d'être aussi intéressante que la version 9.1. Je ne peux guère parler des conférences, n'y étant pas. Les quelques échos que j'ai eu étaient très positifs. J'espère pouvoir regarder quelques vidéos sous peu.

Le fait que la 9.0 devrait bientôt sortir est une excellente nouvelle. J'avais un peu peur qu'elle soit repoussée à la rentrée. Le problème que cela pose, c'est pour la traduction de la documentation. En apprenant cela vendredi dernier, j'ai créé la branche 8.4 pour pouvoir commencer le travail. Le merge est pratiquement terminé sur mon portable, après une quinzaine d'heures de travail (oui, c'est long et chiant). Reste encore quatre fichiers, évidemment les plus gros. Je pense nénamoins que ce sera terminé en fin de semaine. Restera la traduction, mais c'est moins effrayant que la période de merge. À noter que Marc travaille sur le passage du dépôt à git, ce serait un très gros plus.

Que dire de plus. J'ai appris ce matin que j'étais élu au comité directeur de PostgreSQL Europe, ce qui est très plaisant. Mon poste sera celui de vice-trésorier, bien que cela ne semble pas très fixé.

Enfin, j'ai un nouveau portable. Le passage de l'ancien au nouveau prend pas mal de temps mais devrait être bien plus agréable (ne serait-ce que la définition de l'écran, 1440x900, c'est autre chose que l'ancien 1280x800). Bref, j'en parlerais plus une autre fois mais je vais retourner au merge.

Traduction d'un peu de tout

Le week-end dernier, j'ai travaillé sur les traductions des prochaines mises à jour. Du coup, le site français de la documentation sur PostgreSQL dispose déjà des manuels des version 8.4.4, 8.3.11, etc. J'en ai profité aussi pour mettre à jour les manuels de Slony, branche 1.2 et 2.0. Par contre, je ne sais pas quand Damien aura le temps de les mettre sur le site, surtout que ce dernier commence à dater un peu.

Dernière nouveauté de traduction, l'installeur d'EnterpriseDB est disponible en français. J'avais fait la traduction il y a un bon moment, mais les petits gars de Dave Page ont mis beaucoup de temps pour l'intégrer... jusqu'à ce que je m'aperçoive en version 9.0 beta 1 que je m'étais trompé dans l'encodage. C'est enfin corrigé et l'installeur de la 8.4.4 dispose donc de la traduction. Allez, hop, deux copies d'écran pour la peine :

Lancement de l'installeur

2010-05-17--22-55-30.jpg

Installation en cours

2010-05-17--23-24-05.jpg

Sympa, non ? moi, j'aime bien.

Que dire de plus... la beta 2 n'est toujours pas sortie, et ne risque pas de sortir avant au moins une semaine pour cause de PGCon, ce qui m'agace bien (qu'elle ne soit pas déjà sortie et que je ne sois pas au PGCon... sigh...). Ça sent un bon retard pour la traduction du manuel de la version 9.

Le bon côté, c'est que ça me permet de travailler sur des outils comme pgpool, pgbouncer, slony. Pour les deux premiers, j'ai proposé un patch pour ajouter les options longues. Patch accepté pour pgpool, patch que j'ai donc commité dimanche après-midi. Pas de nouvelles des développeurs de pgbouncer, peut-être en voyage pour PGCon (chanceux...). Au départ, je voulais ajouter la gestion du paramètre application_name, disponible à partir de la 9.0. Je me suis un peu cassé les dents avec les poolers de connexion. Par contre, pour Slony, ça semble bien plus simple. Je pense que je vais proposer un patch assez rapidement pour ce dernier. Il serait aussi intéressant que les pilotes le prennent en compte (je pense notamment au pilote Perl et au pilote PHP). Bref, du boulot sur la planche, ce qui est cool :)

pgsnap, version 0.6

Ne voulant pas réitérer la bévue pour la version 8.4 de PostgreSQL, je me suis attelé assez rapidement à mettre à jour pgsnap pour PostgreSQL 9.0.

Ce n'est évidemment pas la seule nouveauté de cette version :

  • Support complet de la 9.0
    • connexion utilisant le paramètre application_name
    • nouveau rapport sur les ACL par défaut
    • nouveau rapport sur la configuration par paire base/utilisateur;
    • support des tables typées, des contraintes d'exclusion, de la configuration des tablespaces, des informations sur le Hot Standby et le Streaming Replication
  • Meilleur support de la 8.4
    • gestion de la colonne relistemp de pg_class
    • gestion des nouvelles colonnes de pg_settings
    • ajout de l'heure de lancement de PostgreSQL et du dernier chargement de la configuration
  • Meilleur support des autres versions
    • nouveau rapport sur les séquences
    • nouveau rapport sur les Large Objects
    • détection des modules contrib
    • ajout des commentaires sur les objets.

Pour télécharger, c'est ici. Vous pouvez consulter aussi cet exemple de rapport.

J'aurais pu attendre un peu avant de sortir cette version. Cependant, je vais être maintenant bien occupé par la mise à jour de la traduction française du manuel de PostgreSQL (enfin, dès que la beta 2 sort, donc à priori rapidement). Je n'aurais plus trop de temps pour m'occuper de pgsnap en dehors de quelques corrections de bugs. Donc voilà pourquoi cette version sort dès maintenant.

Et puis, j'ai en tête un changement important pour pgsnap. Peut-être pour la prochaine version.

Maintenant que l'annonce est faite...

Enfin, pour PostgreSQL car pour pgAdmin, on attend toujours. J'ai finalement réussi à corriger un bug dans pgAdmin qui me donnait du mal. Et j'ai terminé le Visual Tour pour la version 1.12. Il ne manque vraiment plus que l'annonce de la beta 1 de pgAdmin :)

Bref, on est en période beta. Ça veut dire correction de bugs. Ça veut dire aussi que, pour les codeurs d'outils tiers, du boulot est en prévision pour s'assurer de la compatibilité de leur outil avec la prochaine version. On va espérer que les développeurs de Slony vont penser à ça (quoiqu'il semble me rappeler avoir vu passer un patch pour ça il y a peu, donc on peut être optimiste). Ceci dit, le mieux pour tout le monde, c'est de le tester soi-même. En ce qui me concerne, ça veut dire que j'ai du boulot pour pgsnap. Un patch récemment a permis d'utiliser pgsnap avec une 9.0, mais pas d'en tirer le meilleur profit.

Mais surtout, une beta 1 de PostgreSQL, pour moi, ça veut dire une traduction du manuel à mettre à jour. Pour les outils en ligne de commande livrés avec PostgreSQL, c'est déjà fait. Mais pas encore pour la documentation. Donc voilà, à partir de demain, c'est mon occupation principale.

Beta 1 coming up

C'est ce moment de l'année où les tests sont de rigueur...

guillaume@laptop:~$ psql -V
psql (PostgreSQL) 9.0beta1
contient une gestion avancée de la ligne de commande

beta 1 de pgAdmin 1.12

Il nous a fallu quand même ce soir trois heures de discussion, codage et test avec Dave pour finaliser la 1.12. Grand merci aux outils de type pidgin, Google Chat et autres du même type, c'est quand même bien plus efficace que le mail dans ce cadre.

Une annonce officielle sera faite lundi.

GSoC pgAdmin

Je viens d'avoir la nouvelle par Luis. Sa proposition de projet GSoC pour pgAdmin a été acceptée. Et je suis son mentor, ce qui me fait bien plaisir.

Du coup, je viens de jeter un œil aux statuts des différentes propositions. Six ont été acceptées. Deux concernent pgAdmin, un concerne phpPgAdmin et les trois autres concernent PostgreSQL directement.

Le projet que je mentor-ise doit permettre la création d'un outil de modélisation graphique d'une base à partir de pgAdmin. Luis Ochoa est l'étudiant qui a proposé cette idée. Nous avons une grande confiance en lui. Il a déjà codé le constructeur graphique de requêtes (GQB, Graphical Query Builder) de l'éditeur de requêtes. Il connaît donc bien pgAdmin et la partie graphique. Il y a de fortes chances que le résultat de son travail sera inclus dans la 1.14.

À noter que le mentor du projet pour phpPgAdmin est Jehan-Guillaume de Rorthais. Bien content pour lui aussi.

Évolutions de pgsnap

Ça fait un petit moment que je n'ai pas parlé de pgsnap. Il y a eu assez peu de changements ces derniers temps. Et assez peu de motivation pour améliorer cet outil. Mais cela pourrait bien changer rapidement.

Tout d'abord, une petite information. J'ai déplacé le code source de pgsnap sur github. Donc, contrairement à ce qu'indique la page sur pgfoundry, les sources sont maintenant sur la page github de pgsnap. En soi, ça ne change pas grand-chose à part pour les développeurs. Je vais continuer à utiliser pgfoundry pour la partie web et news. Cela étant dit, je n'exclue pas la possibilité d'externaliser ça aussi.

La vraie news concerne l'orientation du projet. Pour l'instant, pgsnap crée un rapport composé de plusieurs pages HTML. C'est très bien actuellement mais cela pose quelques soucis. Le premier concerne le fait qu'un utilisateur peut se trouver avec plein de différents rapports d'une même base, placés un peu partout sur son disque local. Il est assez difficile de faire la relation entre chacun (notamment si cette personne renomme la base...), de les partager avec ses collègues, etc. Le deuxième soucis, qui me dérange de plus en plus, est la difficulté de voir les différences entre deux rapports pour savoir comment à évoluer la base dans le temps. C'est un des éléments de la TODO list qui me pose le plus de questions.

Or, il se trouve que j'ai peut-être une solution pour ces deux problèmes. J'étais partie au départ avec l'idée de fournir un rapport composé de pages HTML pour reproduire le comportement de orasnap. Mais ce n'était certainement pas le plus futé à faire. Le mieux serait certainement de récupérer toutes les données dans un format du style sauvegarde SQL de PostgreSQL ou plus simple dans un format CSV. L'idée est de pouvoir placer toutes les données dans une seule et même base PostgreSQL de reporting et de construire un outil capable d'afficher les informations sur les différents rapports stockés dans la même base, voire de regarder les différences entre deux rapports.

Voilà. L'idée me plaît. La partie « outil de visualisation » me semble assez complexe. Mais les avantages sont suffisamment importants pour songer à modifier complètement le comportement de pgsnap. Quitte à fournir une deuxième application, capable de lire ce « dump » et de créer les rapports HTML identiques à la première conception de pgsnap.

Comme les sources de pgsnap sont sur git, je vais certainement créer une nouvelle branche pour travailler sur ce concept sans déranger le reste du développement. Car, oui, il va falloir continuer le développement normal de pgsnap. Ce dernier est compatible basiquement avec la 9.0 mais il faudrait qu'il retrouve bien plus d'informations sur cette dernière. Donc la branche master sera utilisé pour ajouter une gestion plus complète de la version 9.0 et une autre branche sera créée pour tester et mettre en place le nouveau concept.

Petit résumé des quatre dernières semaines sur pgAdmin - 5

Pas mal de nouveautés cette fois sur pgAdmin, à la fois en matière de corrections de bugs mais aussi en nouvelles fonctionnalités.

Commençons par les corrections de bug. Erwin a trouvé le temps de nous concocter quelques rapports de bugs. Apprendre l'existence d'un bug n'est pas plaisant, le corriger l'est beaucoup plus. Il a remarqué par exemple que les règles d'une vue étaient oubliés dans les requêtes permettant de recréer la vue. Ce bug a été corrigé assez rapidement. Autre exemple, les groupes n'étaient pas proposés dans la liste déroulante permettant d'indiquer le propriétaire d'un objet. Là-aussi, le correctif a été plutôt simple.

Dave a découvert un bug assez étrange sur la fenêtre d'état du serveur. Le composant liste utilisé utilise par défaut le composant natif sous Mac OS X. Or, ce composant natif permet de réaliser des tris dans la liste. C'est une fonctionnalité très intéressante pour cette plateforme. Malheureusement, notre méthode pour la mettre à jour causait le vidage de certaines lignes, pour aboutir à un affichage illisible. J'ai travaillé sur ce correctif et j'ai fini par aboutir à une solution en deux étapes. Pour la branche 1.10, on empêche l'utilisation du composant natif, ce qui a pour effet de supprimer le tri possible sous Mac OS X. Pour la branche en cours de développement, j'ai ajouté la possibilité de trier les colonnes de chaque rapport, quelque soit la plateforme, en désactivant toujours le comportement natif sous Mac OS X. Voici une copie d'écran de la fenêtre d'état :

status.png

L'affichage est toujours trié par défaut par PID. En cliquant sur l'entête d'une colonne, le tri est modifié pour se faire par rapport à cette colonne. Ça faisait longtemps que je voulais ajouter cette fonctionnalité. Je n'imaginais pas du tout avoir ça pour la future 1.12, et je n'y pensais vraiment pas en commençant à travailler sur ce bug.

Josh Berkus s'est plaint, avec raison, qu'il était impossible de sélectionner un autre utilisateur pour créer une nouvelle connexion dans l'outil de requêtage. Vu qu'il s'agit d'une nouvelle fonctionnalité, elle fera partie de la 1.12 :

queryconnection.png

Josh a aussi remarqué que la gestion des fichiers récents était pour le moins étonnante. J'ai corrigé ça en permettant à un outil de requêtage d'alerter les autres outils de requêtage pour qu'ils puissent recharger la liste des derniers fichiers ouverts.

L'option de stockage d'une colonne est enfin modifiable dans la fenêtre des propriétés d'une colonne :

column.png

Dans les petits trucs en plus, on peut noter un élément supplémentaire dans le menu contextuel d'un serveur : « Reload configuration ». Cette action se contente d'exécuter un « SELECT pg_reload_conf(); » sur le serveur.

reloadconf.png

Magnus a écrit un petit patch permettant de demander le nom du fichier à utiliser pour l'export de données avant l'exécution de la requête (histoire que l'utilisateur n'ait pas à attendre le temps de l'exécution de la requête pour fournir le nom du fichier à sauvegarder). Il s'est aussi étonné que la fenêtre de maintenance utilisait la connexion du navigateur pour faire le VACUUM ou l'ANALYZE. Vu que ce sont des opérations potentiellement (très) longues, j'ai changé cela pour que la fenêtre utilise sa propre connexion, laissant à l'utilisateur la possibilité d'utiliser le navigateur pendant l'exécution de l'opération de maintenance.

J'ai travaillé aussi avec Ashesh Vashi pour corriger un bug dans l'outil de création graphique de requêtes.

La grosse nouveauté a été enregistrée e matin même dans les sources. Depuis plus d'un an, j'avais dans l'idée d'ajouter la possibilité de créer des groupes de serveurs. J'avais laissé un peu de côté. Jehan-Guillaume de Rorthais l'a fait tout récemment pour phpPgAdmin, ce qui m'a poussé à jeter un œil sur cette fonctionnalité. J'en ai un peu bavé mais c'est fait. La preuve :

browser.png

Et voilà. Pas mal, non ? :)

Pour la suite, nous sommes en train de travailler sur les dernières fonctionnalités. La beta 1 de PostgreSQL 9.0 doit sortir d'ici une semaine, cela nous laisse peu de temps. En fait, il reste peu à faire et Ashesh a déjà investi pas mal de temps sur ce qu'il nous manquait. Pas encore commité, mais ça ne devrait plus tarder. En ce qui me concerne, il me reste toujours la contrainte d'exclusion. J'avoue que j'ai du mal à travailler dessus. Mais bon, on va y arriver.

Sortie de « Utiliser PostgreSQL »

Suite du « Installer et débuter avec PostgreSQL », ce livre donne un grand nombre d'informations sur les requêtes SQL, les objets SQL, bref sur la façon d'utiliser PostgreSQL. Je trouve ce livre beaucoup plus intéressant, en tout cas pour moi. J'y ai re-découvert pas mal de choses. Donc, cette fois-ci, ça peut aussi être intéressant pour les pros.

Là encore, format PDF, 11 €. Excellent rapport qualité/prix.

Bref, vivement le prochain :)

(petite info qui peut avoir son importance pour certains, j'ai fait la relecture technique de ce livre, comme du précédent)

Une anecdocte sur le forum

Tant que j'en suis à discuter et à promouvoir le forum, autant en profiter pour raconter une petite anecdote sur l'histoire d'un thread.

Un nouveau membre, David, vient poser une question d'optimisation sur le forum le lundi 29/03/2010 18:28 : « Pb comportement analyseur 8.4 avec table partitionnées ». Une demi-heure après, Marc lui répond en demandant plus de précision.

Le lendemain, la discussion reprend entre Marc et David. À 9h19 (soit 15 heures après la première question), Marc est convaincu qu'il s'agit d'un bug ou d'une limitation. Du coup, après quelques tests de son côté, il envoie à 14h22 un mail sur la liste pgsql-general détaillant le problème rencontré par David. Deux heures après, il reçoit une réponse de Tom Lane indiquant qu'il s'agit en effet d'une limitation involontaire et non souhaitable dans les capacités du paramètre constraint_exclusion.

À 17h31, un patch est proposé par Tom Lane. Le patch sera commité par Tom Lane à minuit.

Là où je veux en venir, c'est qu'un simple message sur le forum français a permis d'améliorer PostgreSQL. Il n'a fallu qu'un jour pour obtenir ce correctif. Évidemment, David ne peut pas encore l'utiliser (à moins qu'il compile soi-même son PostgreSQL). Il va falloir attendre la 8.4.4. Évidemment aussi, le problème, très bien exposé par David sur le forum, puis par Marc sur la liste -general a permis une résolution rapide. Mais en attendant, c'est quand même très impressionnant de voir une telle rapidité dans le traitement d'un problème.

Donc ne restez pas avec votre problème sur les bras, n'hésitez pas à en parler sur le forum web ou sur les listes de discussion en choisissant le média qui vous convient le mieux, vous ne pouvez qu'y gagner.

Quelques stats sur forums.postgresql.fr

La semaine dernière, j'avais fourni quelques statistiques sur le site de documentation français sur PostgreSQL. Je me suis dit qu'il serait intéressant d'avoir aussi quelques statistiques sur l'activité du forum. Alors voici quelques chiffres et quelques graphes sympathiques.

Commençons par la quantité de messages par thèmes :

messages_par_forums.png

Attention, qu'on soit bien d'accord, je n'ai pas regardé le contenu de chaque message pour savoir s'il correspondait vraiment à ce thème. J'utilise simplement le nom du forum. Néanmoins, participant beaucoup au forum, j'estime qu'ils sont en très grande majorité dans le bon forum.

Que peut-on en dire ? pas grand-chose en dehors que les thèmes les plus fréquents sont assez logiques : installation, optimisation, réplication... et un très gros général. Donc rien de bien surprenant là.

Voyons voir maintenant la progression du nombre de threads par mois (un thread étant une question lançant un débat) :

threads.png

Après une petit chute en août, le nombre de threads est en augmentation constante, ce qui est tout à fait satisfaisant. Par contre, le nombre de threads est relativement bas (en gros, un peu plus de deux questions par jour ouvré).

Plus intéressant, le nombre de questions et de réponses :

questions_reponses_par_mois.png

Dis autrement, le posteur ne se satisfait généralement pas de la première réponse. En moyenne, ça nous donne quelque chose comme 5 réponses par question. Plutôt élevé à mon goût, mais ce n'est pas que négatif. Ça peut aussi indiquer que le posteur est intéressé et souhaite d'autres informations.

Bien pire est le nombre de lectures du forum par mois :

lectures_par_mois.png

Je n'ai aucune explication à cette baisse de fréquentation des lecteurs du forum. Ça tombe à très très peu car j'ai oublié de virer la statistique d'avril (qui n'a aucun sens, vu qu'on est le 5 avril).

Si on regarde du côté des participants au forum, j'avais assez peu d'illusions là-dessus :

participants.png

Autrement dit, Marc et moi comptabilisons pratiquement autant de messages que le reste du monde. Ce n'est pas une surprise car je ne vois que nous deux répondre aux messages.

Passons à des nouvelles plus gaies, le temps de réponse à un message dans le forum. J'indique assez souvent en formation qu'il ne faut pas hésiter à poser des questions sur le forum ou sur les listes de discussion (anglaises et française) car le temps de réponse est très court et que la réponse est très souvent techniquement exacte. Ne pouvant pas facilement juger (avec une requête SQL) du second, il est par contre aisé d'avoir la réponse au premier, ie le délai avant la première réponse. J'ai commencé petit joueur avec un délai à la journée :

delai_reponses.png

Il y a de très fortes chances que vous ayez une réponse dans l'heure, voire dans la demi-journée si vous êtes malchanceux (ie, Marc et moi absents). Je me suis donc enhardi et j'ai regardé par tranche de dix minutes sur la première heure :

reponses_par_minutes.png

En gros, il y a de fortes chances qu'une réponse arrive en moins d'une demi-heure.

Quand aux jours des posts, ce sont tous les jours ouvrés avec environ 800 posts par jour ouvrés, mais seulement 400 pour le week-end complet.

messages_par_jour_semaine.png

Je crois que la légende est inutile, c'est super simple à comprendre :)

Enfin, dernière statistique, le nombre de messages par heure dans la journée, là non plus, pas de révolution, les messages sont envoyées dans la journée de travail :

messages_par_heure.png

Par contre, les gens mangent plus tôt que ce que je pensais le midi :)

Voilà en gros ce qu'on peut dire de l'activité du forum web français sur PostgreSQL. Et autant le répéter ici, n'hésitez pas à venir poser vos questions, vous y serez bien reçu.

Petit résumé des... humm... six dernières semaines sur pgAdmin - 4

Désolé pour l'arrêt involontaire des news sur pgAdmin. Cet arrêt s'explique assez simplement. Il y a assez peu de nouveautés ces derniers temps pour la 9.0 et il a fallu s'occuper de la sortie d'une version mineure de pgAdmin (donc du travail sur le débogage mais aussi de préparation des packages et du site web).

Pour ce qui est des nouveautés, le gros du travail a été la création d'un composant graphique spécifique. Il nous fallait un bouton permettant de sélectionner une couleur et affichant la couleur plutôt que le code correspondant à la couleur. J'en ai bien bavé. Ashesh Vashi (un développeur indien travaillant pour EnterpriseDB) m'a sorti d'un blocage bien gênant. Bref, maintenant, ça fonctionne très bien. J'ai pu supprimer l'ancien composant graphique de wxWidgets qui nous posait des problèmes d'affichage sous Mac OS X.

J'ai aussi travaillé sur deux autres patchs. Le premier a pour but de gérer la nouvelle instruction « CREATE TABLE nom TYPE... ». Il a suffit en gros d'ajouter une liste déroulante pour saisir le type et coder/décoder la nouvelle forme de cette instruction SQL. Le deuxième concernait la création d'un index sans nom. C'est aussi une nouveauté de la 9.0, il sera possible de créer un index sans spécifier son nom, le système se charge de le nommer automatiquement.

Dave Page vient juste d'intégrer un patch d'Ashesh permettant la gestion des synonymes privées dans Postgres Plus Advanced Server. J'avoue que je n'en sais pas plus pour cette partie.

Que reste-t-il à ajouter ? les contraintes d'exclusion, les ACL par défaut et les objets SQL/Med. Je me suis cassé les dents sur tous, j'ai donc appelé à l'aide. Ashesh a choisi de s'occuper des ACL par défaut. Moi, je vais m'occuper pour l'instant des rapports de bugs jusqu'à ce que l'envie me reprenne de terminer le boulot sur les nouveautés.

- page 1 de 13