gleu's blog

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

samedi, juillet 19 2008

Travaux en cours sur pgAdmin

Depuis ma "journée de codage sur pgAdmin", j'ai continuer à bosser intensément sur le code de pgAdmin.

Concernant le patch sur l'activation du champ texte de la requête SQL, il a été décidé avec Dave Page que j'allais l'intégrer dans une revue des dialogues. Mon idée est de revoir tous les dialogues de propriétés des objets pour ajouter des composants (wxFlexGridSizer et wxSizer pour les connaisseurs) permettant un dimensionnement automatique des dialogues. Cela permet notamment d'autoriser le changement de taille des dialogues par l'utilisateur comme le font actuellement les dialogues sur les fonctions et les triggers. Donc, plus simplement, ce travail va revoir l'intégralité des dialogues pour permettre leur redimensionnement par les utilisateurs. C'est un gros boulot. Dès le premier dialogue, je pense être tombé sur un bug de wxWidgets sur Mac. Pfff, il est pas prêt de se terminer, ce patch.

L'autre gros travail concerne la fenêtre d'état du serveur. Il se fera en plusieurs patchs suivant cette découpe :

  • Remplacer le composant wxNotebook par wxAuiNotebook pour que les utilisateurs puissent fermer certains onglets, arranger l'ordre des onglets restants via drag-and-drop, etc.
  • Permettre d'ouvrir plusieurs fenêtres d'état du serveur (ça permettra de voir plusieurs rapports d'un même serveur en même temps, ou de surveiller plusieurs serveurs).
  • Ajouter une barre d'outils pour modifier le serveur surveillé, le délai de rafraichissement et ajouter un filtre et/ou un tri.
  • Ajouter des rapports sous forme de graphes pour les vues statistiques (à la "Gnome System Monitor").
  • Améliorer l'affichage des journaux applicatifs (en affichant avec différentes colonnes, en permettant tri et filtre).
  • Ajouter une option en ligne de commande pour démarrer la fenêtre d'état du serveur.
  • Colorier les lignes des processus (par exemple vert pour les processus fonctionnels, orange pour ceux en cours d'exécution d'une requête mais dont l'exécution de la requête a dépassé une certain durée, bleu pour les processus ne faisant rien, rouge pour ceux en attente d'un verrou, etc.)
  • Ajouter la possibilité de sélectionner un processus et de copier la requête dans l'éditeur de requêtes.
  • Ajouter la possibilité de sélectionner un processus et de n'afficher que les verrous utilisés ou attendus par ce processus.
  • Afficher un arbre logique des verrous plutôt qu'une liste.

Bref, du boulot, mais bien découpé, donc plutôt simple à suivre.

Le troisième gros boulot concerne l'ajout des fonctionnalités de recherche plein texte. Il s'agit simplement d'ajouter la gestion des trois types de données. Cela devrait être assez simple, et je suis assez impatient de m'attaquer à cela.

En dehors de ces trois gros boulots, je me suis attaqué à un petit manque de pgAdmin. Il n'est pas possible actuellement d'ajouter des tables héritées à une table déjà existante alors que cette fonctionnalité est proposée par PostgreSQL depuis la version 8.2. J'ai donc commencé un patch sur cela. J'ai encore un petit bug à corriger et cela devrait être commitable.

Enfin, cette semaine, j'ai remarqué chez un client que pgAdmin ne propose aucune statistique sur les index quand on est sur le noeud principal Index. C'est assez simple à ajouter, je vais m'en occuper rapidement.

Tout ça pour dire que le boulot continue, que le boulot est plaisant. Tant mieux car l'investissement (en temps et en argent) est croissant.

pgAdmin : quelques nouvelles

Je m'implique de plus en plus dans le projet pgAdmin. Auparavant, je faisais de petits patchs ou de la traduction. Maintenant, et notamment avec mon envie de revoir l'intégralité des dialogues de propriétés, je dois aller un peu plus loin. En effet, lorsque je modifie le contenu d'un dialogue, je vérifie sur Linux ce que ça donne. Et j'envoie un patch quand le résultat me satisfait. Malheureusement, sur Windows, comme sur Mac, le résultat n'est pas forcément aussi bon. Il faut donc vérifier l'affichage sur toutes les plateformes. Je ne peux pas demander à Dave Page (le développeur principal, qui dispose de quoi vérifier sur toutes les plateformes officiellement supportées) de tester chacune de mes modifs. Surtout que, quand il trouve un problème spécifique à une plateforme que je n'ai pas, c'est galère à déboguer.

Donc, il me fallait avoir la possibilité de tester sur les trois plateformes : Linux, Windows et Mac.

Pour Windows, c'est simple : une machine virtuelle et hop, c'est parti. Bon, dans les faits, c'est pas si simple. Il faut installer Visual Studio Express, compiler wxWidgets, compiler pgAdmin... que des emmerdes représentant plusieurs heures de boulot (dans le sens plusieurs jours d'affilée). Mais bon, ça se fait. Difficilement, mais on y arrive.

Pour Mac, c'est autre chose. Il faut déjà acheter une machine Apple. J'ai opté sur les conseils de Dave pour un Mac Mini de base. Bref, acheté jeudi, installé vendredi, compilation de pgAdmin le samedi matin. Beaucoup plus cher (à cause de l'achat de la machine) mais beaucoup plus facile à compiler/installer/tester. En deux/trois heures, c'était prêt.

Bref, voilà. Je peux générer une version Linux, Mac et Windows de pgAdmin, ce qui devrait améliorer mon travail et aussi l'accélérer.

mardi, juin 17 2008

Une journée de codage sur pgAdmin

Ça faisait un petit moment que je n'avais pas bossé sur pgAdmin. J'ai profité de l'après-midi et la soirée du samedi pour bosser sur plusieurs patchs :

  • raccourcis des menus contextuels mal affichés ;
  • activation du champ SQL dans les fenêtres de propriétés ;
  • utilisation du dialogue de couleurs pour la fenêtre de propriété du serveur ;
  • séparation du champ commentaire dans son propre onglet.

Raccourcis

Depuis un petit moment, les menus contextuels de pgAdmin s'affichaient mal. Au lieu d'avoir la lettre du raccourci soulignée, j'avais un tiret bas devant la lettre :

patch1.png

Je pensais que c'était de ma faute (mauvaise compilation, mauvaise configuration, etc). Un mail sur pgadmin-support m'a indiqué que je n'étais pas le seul. Après une discussion avec Dave et quelques tests, je me suis aperçu que la version 2.8.5 de wxWidgets semblait être la coupable. À force de recherche, j'ai fini par retrouver le commit responsable du problème sur le SVN de wxWidgets. Au prix d'une longue conversation, j'ai même réussi à convaincre les développeurs de wxWidgets de la présence de ce bug. La correction est apparue hier soir sur leur dépôt (branche WX_2_8_BRANCH). La version 2.8.8, contenant ce correctif, devrait bientôt sortir.

Ajout du dialogue de couleur

Lors de pgcon2008, Dave a intégré un patch qui permet d'ajouter une couleur de fond pour chaque serveur sur le navigateur d'objets :

patch2.png

Bon, je ne trouve pas que ce soit super beau, mais ce qui m'a surtout gêné, c'est l'interface utilisateur pour saisir la couleur. Un utilisateur doit saisir le code couleur sous la forme d'une couleur HTML. C'est juste un bête champ texte. J'en ai donc profité pour ajouter un bouton :

patch3.png

et j'ai fait en sorte que le clic sur ce bouton affiche la fenêtre standard de saisie d'une couleur :

patch4.png

Ce patch a été accepté, il est enregistré dans le SVN depuis hier soir.

Activation du champ SQL

Jusqu'à la version 1.8, l'onglet SQL ne permet pas de modifier le champ contenant la requête SQL. En cas d'erreur de pgAdmin pour la génération du SQL permettant d'appliquer les modifications de l'utilisateur sur l'interface, je pense qu'il faut avoir un moyen pour que l'utilisateur modifie le SQL généré par pgAdmin. Le meilleur exemple est lorsqu'on ajoute une colonne avec une contrainte NOT NULL. Sans plus d'informations, la requête échouera car la nouvelle colonne n'aura aucune valeur et ne pourra pas se voir ajouter la contrainte NOT NULL. IL faut donc que l'utilisateur puisse ajouter le code SQL permettant l'ajout d'une valeur par défaut aux lignes déjà présentes.

Mon patch ajoute une case à cocher permettant d'autoriser la modification du champ SQL. Comme Dave et moi ne voulons pas gérer le reverse engineering des modifications apportées dans le champ SQL, tous les objets des autres onglets sont désactivés. On peut voir le contenu des onglets, mais pas le modifier.

J'ai parlé d'un champ texte pour la requête SQL. J'aurais plutôt dû parler de deux champs car il y a deux groupes de requêtes. En effet, deux objets peuvent avoir besoin de deux transactions de modification : les bases de données et les tablespaces. Ceci est dû à une correction sur la version 8.3 de PostgreSQL.

Voici donc le résultat :

patch5.png

Dernier problème à régler : si un utilisateur modifie le nom de l'objet créé dans la requête, le navigateur d'objet affiche toujours le nom indiqué dans le champ texte Nom, et pas celui modifié. Après un rafraichissement, tout va bien... mais en attendant, l'affichage est faux. Donc, il me reste du boulot sur celui-ci.

Séparation du champ commentaire

L'idée de ce patch était de déplacer le champ Commentaire dans un autre onglet car certains dialogues deviennent vraiment trop longs. Sur mon portable, je n'ai plus accès au tiers du dialogue de création/modification d'une table (ce qui est gênant pour cliquer sur le bouton OK). Aucune technicité requise pour ce patch, juste cinq heures à passer à créer le nouvel onglet, à déplacer le texte statique et le champ texte dans ce nouvel onglet, et à revoir les placements de contrôles, pour chaque dialogue sur les propriétés des objets. Je ne sais pas comment, j'ai perdu la moitié de mon patch. Cependant, Dave est plutôt contre pour au moins deux bonnes raisons :

  • deux dialogues ont un grand nombre d'onglets, ce qui rend leur gestion plus douloureuse qu'autre chose ;
  • il existait une règle sur la création de dialogues, règle que je ne connaissais (car planqué dans une ancienne branche, et oublié depuis là-bas)... Dave l'a d'ailleurs ajouté à la page Wiki sur le développement de pgAdmin.

Bref, patch abandonné.

Conclusion

/me content

La plupart de mes travaux de samedi dernier ont donné un résultat direct, soit sur wxWidgets soit sur pgAdmin. J'ai encore plein d'idées à mettre en place. J'ai d'ailleurs envoyé deux mails pour parler de deux gros projets :

Du boulot en prévision :)

samedi, mai 31 2008

Atelier PostgreSQL

Après la présentation sur PostgreSQL, voici arrivé le moment de l'atelier. Il y a eu moins de personnes que prévus (entre 10 et 12 prévues, un peu moins de 10 présents). J'ai commencé en indiquant ce qu'il me semblait important de voir, à savoir :

  • Installation de PostgreSQL
    • récupérer la liste des paquets concernant PostgreSQL ;
    • installer le serveur ;
    • installer les outils (psql, createdb, etc.) ;
    • installer les modules contrib ;
    • installer un langage de procédures.
  • Configuration minimum
    • connexion (max_connections, listen_addresses et pg_hba.conf) ;
    • mémoire (shared_buffers, effective_cache_size... et SHMALL/SHMMAX une fois tombé dans le piège habilement posé :) ).
  • Utilisation de base
    • outils PostgreSQL (createdb, createuser, createlang) ;
    • psql (exécution d'une requête, méta-commandes) ;
    • pgAdmin (navigateur d'objets, outils de requêtages, fenêtre d'état du serveur, fenêtre de configuration du serveur) ;
    • outils PostgreSQL de sauvegarde (pg_dump) et de restauration (psql, pg_restore).

Tout s'est bien déroulé, en alternant explications puis manipulations. Pour la partie pgAdmin et la sauvegarde, il y a eu très peu de tests à cause d'un manque de temps (on a fini à 17h au lieu de 18h, principalement suite à un questions/réponses assez important) et parce qu'on n'avait pas de bases contenant des objets utilisateur. Donc, j'ai fait un mini-cours là-dessus. Pour pgAdmin, on avait en plus le problème que la version installable était une 1.4.3... autant dire que ça ne ressemble en rien à la version actuellement disponible.

Mais bon, l'un dans l'autre, je crois que le message est passé : PostgreSQL n'est pas si compliqué à installer, à configurer et à utiliser. Évidemment, on n'est pas entré dans le détail, c'était pas une formation avancée sur PostgreSQL, mais les points importants étaient là. La fin a même permis de parler identifiant de transaction, ligne vivante/morte et VACUUM. Donc déjà plus haut niveau.

Le contact avec les personnes présentes a été très bon. Beaucoup de questions et d'intérêt pour ce SGBD, et ça fait plaisir. Apparemment, l'atelier a été très apprécié. Donc je suis ravi. Ça augure du bon pour les RMLL.

mardi, mai 6 2008

Ajout des nouvelles colonnes statistiques sur les tables

pgAdmin affichait quelques informations sur les statistiques. J'ai ajouté les nouvelles colonnes de la 8.3 (« live tuples », « dead tuples », « HOT updated tuples »), ainsi que les horodatages sur le VACUUM et l'ANALYZE dans les statistiques disponibles à partir de la liste des tables. Cela donne ces deux jolis screenshots :

Table Stats (list of table)

et

Table Stats (details on one table)

Deux patchs appliqués coup sur coup, je suis plutôt content de moi :) maintenant, il faudrait voir à faire en sorte que les colonnes se dimensionnent automatiquement suivant le texte placé dans la colonne.

Ajout d'une colonne Owner sur les listes d'objets dans PostgreSQL

Mon dernier patch date de... pfiou... fin d'année 2007. C'est pas tout à fait vrai, j'ai fait une modif la semaine dernière qui permet d'éviter un bon nombre de messages d'avertissements de g++, version 4.2 (la version de la 8.04 d'Ubuntu). Mais point de nouvelles fonctionnalités.

Je voulais ajouter quelques informations sur les listes d'objets lorsqu'on clique sur un noeud, notamment taille (pour les objets physiques comme les tables et les index) et propriétaire. Comme je me suis aperçu que la taille est déjà disponible sur l'onglet Statistiques, je me suis concentré sur l'ajout du propriétaire des objets. Patch écrit hier, validé par Dave ce matin, commité par moi-même ce midi.

Le screenshot obligatoire : Owner column for objects list

Et voilà, rien de plus. Seulement maintenant (ie à partir de la prochaine version majeure), vous disposez du nom des propriétaires des objets listés.

PS : un autre patch est en attente, il ajoute bon nombre de nouvelles statistiques provenant des versions 8.2 et 8.3 de PostgreSQL.

samedi, décembre 22 2007

Support de « Drop/Reassign Owned » dans pgAdmin

Allez hop, un nouveau patch pour pgAdmin. Depuis la version 8.2 de PostgreSQL, il existe une instruction SQL permettant de réaffecter tous les objets du rôle à un autre. Il s'agit de REASSIGN OWNED. Une autre instruction du même acabit a été ajoutée : DROP OWNED, qui permet de supprimer les objets appartenant à un utilisateur. Pour l'instant, pgAdmin ne proposait pas d'interface pour ces deux types d'action. Ça faisait partie de mes vieux TODO et j'ai profité de cette semaine pour m'y mettre.

Après un clic droit sur un rôle, le menu contextuel propose un nouvel élément : « Reassign/Drop Owned... ».

reassign1.png

Une nouvelle fenêtre s'affiche permettant de choisir entre une réaffectation et une suppression des objets du rôle sélectionné.

reassign2.png

Après sélection de l'action, du nouveau rôle si besoin est et de la base où exécuter la commande, la fenêtre se ferme et l'action est exécutée.

Simple et rapide. Il m'aura quand même fallu pratiquement trois jours, principalement pour comprendre comment ajouter la nouvelle fenêtre :) Prochain patch, la gestion du changement de schéma dans les objets.

jeudi, novembre 8 2007

« Cross-Platform GUI Programming with wxWidgets »

Je viens juste de le terminer. J'avoue que j'ai survolé certaines parties qui m'intéressaient moins. En fait, j'ai lu ce livre pour mieux participer au développement de pgAdmin. De ce côté là, il a parfaitement rempli son œuvre en me donnant une meilleure idée des capacités de wxWidgets. J'ai certainement encore des manques en C++, mais en ce qui concerne wxWidgets, je suis mieux armé.

Quant au bouquin en lui-même, je l'ai trouvé intéressant et bien écrit : beaucoup d'exemples de code, beaucoup d'explications et, autant que je puisse en juger, un tour exhaustif des composants proposés par défaut. Bruce Perens a fait un excellent choix pour sa série OpenSource chez Prentice Hall.

vendredi, octobre 5 2007

IDE pour pgAdmin

J'ai réalisé dernièrement quelques patchs pour pgAdmin. Auparavant, j'utilisais Kate pour accéder aux codes source, faire mes modifs, etc. J'ai ré-installé KDevelop, histoire de voir si cet outil me permettrait de coder plus rapidement. J'avoue que pour l'instant ça marche plutôt bien, j'en suis assez content. Cependant, je suis loin d'utiliser beaucoup de fonctionnalités spécifiques de KDevelop. En fait, je m'en sers surtout comme d'un Kate évolué, spécialisé dans l'édition de code source. Enfin bon, tout ça pour dire que KDevelop me plaît bien et que c'est mon principal outil pour lire le code source de pgAdmin et de PostgreSQL.

vendredi, septembre 28 2007

Activités libresques

Ça fait un bon moment que je n'ai pas parlé de mes activités dans le libre. Même si je reste silencieux, je continue à participer. C'est de la traduction et du développement.

Au niveau de la traduction, en dehors de la mise à jour des manuels pour les nouvelles versions mineures de PostgreSQL, j'ai beaucoup travaillé sur les fichiers .po des différentes versions. Nous sommes à 100% pour toutes les versions stables (à partir de la 7.4) mais surtout, la qualité est bien meilleure.

Au niveau développement, cela ne concerne que pgAdmin. Je viens de proposer plusieurs patchs pour améliorer la compatibilité du futur PostgreSQL 8.3 (Patch to change owner of language, Patch to add parameters' value to a function, Patch to add typmod's functions to a type's creation statement, Patch to enable/disable rule on a table). Malheureusement, la plupart de ces patchs ne feront pas partie de pgAdmin 1.8 (pour laquelle nous sommes presque en RC).

Bref, ça avance. Je pense que le mois d'octobre sera dédié à deux projets libres : la mise à jour du manuel de PostgreSQL pour la 8.3 (dont la beta 1 devrait très rapidement sortir), et de nouveaux patchs pour pgAdmin (en espérant que la branche 1.8 soit créée, ce qui me permettra de vraiment avancer sur des grosses nouveautés).

samedi, juillet 7 2007

Prato 2 : pgdays.it, confs techniques (enfin :) )

Beaucoup de bonnes conférences aujourd'hui, principalement celles des hackers PostgreSQL.

Josh a ouvert le bal avec une conférence sur les nouveautés de PostgreSQL 8.3. Il a d'abord confirmé qu'il fallait de plus en plus de temps pour valider les patchs que pour les écrire... du coup, il y a quelques bouchons sur la voie de la 8.3 mais cela devrait quand même déboucher sur une version vraiment majeure (en tout cas plus que la 8.2). Sortie maintenant prévue en septembre/octobre (de cette année :) ). D'après lui, les performances de la 8.2 se situent entre MySQL5 et Oracle. En dehors de ce commentaire subjectif (à mon avis), il a entamé la liste des améliorations de la 8.3 : Hot updates (j'ai pas bien pigé le fonctionnement, mais il semble que ça ne fera gagner énormément en perfs que pour peu d'applications), amélioration du cache des requêtes, des ORDER BY...LIMIT, des checkpoints, de l'autovacuum. La réduction du volume des WAL pour les opérations COPY et CLUSTER devrait être un des points majeurs de cette version. Il y aurait aussi une grosse amélioration des parcours séquentiels dans le cas où plusieurs backends font le même seqscan en même temps mais j'avoue que là non plus je n'ai pas pigé comme cela devait fonctionner. Dans les améliorations sympas, le XML dans core, la gestion des ENUM, les curseurs qu'on peut mettre à jour, l'index advisor (que Josh lui-même n'a pas voulu expliquer :) ), le OLAP window (ça, ce fut une découverte pour moi, je croyais que Gavin n'avait pas eu le temps de terminer ce patch et qu'il avait donc été repoussé pour la 8.4).

Il a poursuivi sur une deuxième conf : cinq ensembles de conseils pour améliorer les performances. Absolument génial. Le contenu est déjà bien connu, certains points méritent d'être testés, mais dans l'ensemble c'est du très bon.

Hans-Jurgen Schonig a fait une prestation très remarqué. Il était marrant, simple, et compréhensible sur un sujet plutôt complexe : la réplication, et notamment la réplication multi-maître. On a eu droit à un vrai show, c'était excellent :)

continuent est venu faire sa pub, donc je n'en parlerais pas plus. Je me suis juste bien emmerdé pendant cette conf.

Mitani a présenté PGCluster et PGCluster2. En bref, utiliser le premier si 90% de vis requêtes sont des requêtes de lecture. Sinon utiliser le deuxième. Sachez tout de même que les performances sont assez décevantes.

La conférence d'Oleg Bartunov sur TSearch2 était géniale. Seul bémol, sa façon à passer très rapidement de slide en slide, parfois même en marche arrière... difficile de suivre dans ces conditions. Néanmoins, il a abordé beaucoup de points sur les différentes possibilités de TSearch2 et ajouté quelques infos sur la version qui sera incluse dans la 8.3. Il faut absolument que je récupère les slides d'Oleg (il me semble qu'il a utilisé celles de sa présentation lors de PGCon2007).

La pause déjeuner m'a permis de discuter beaucoup avec Dave Page pendant que Jean-Paul se faisait interviewer avec de nombreux hackers. Nous avons échangé quelques idées sur ce qu'il fallait faire pour la prochaine version de pgAdmin. J'ai du boulot en vue... Attendez-vous aussi à la première beta vendredi de cette semaine ou peu après.

L'après-midi a été moins intéressante, peut-être aussi est-ce dû à la fatigue. David Fetter a fait deux conférences très intéressantes sur DBILink et PL/Perl. Je ne suis pas un adorateur de Perl mais j'ai quand même été séduit par les deux confs de David. Beaucoup d'humour, beaucoup d'infos, une envie de faire participer le public (ce qui est bien, ça a un peu réveillé tout le monde... entre le repas et la chaleur, tout le monde peinait).

Andreas a fait une conf intéressante sur son module tablelog. Je vois bien son intérêt mais aussi son gros inconvénient. Un INSERT sur une table tracée revient à deux opérations d'écriture (une pour la table tracée, une autre pour la table de log).

Il y a eu ensuite une conférence sur PostgreSQL versus MySQL. Je ne vois pas l'intérêt de ce genre de conférences, donc j'ai zappé.

La dernière conférence était vraiment excellente. Simon Riggs a tenté d'expliquer un maximum de choses sur PITR en une demi-heure. Mission impossible, mais en fait il s'est quand même bien débrouillé. J'en ai un peu discuté avec lui après. Pour moi, sa conf aurait dû durer deux heures. Enfin, l'important, c'est qu'il a réussi à démontrer la robustesse de PITR et c'est à mon avis le plus important pour les nouvelles fonctionnalités.

Après les confs, il y a eu une réunion sur la constitution d'un groupe européen. Peu de choses en sont sorties. Le plus important a été, à mon avis, qu'on se rencontre tous (enfin presque tous), qu'on ait un visage sur chaque nom, sur chaque pseudo. Ça aide à s'unir, à s'entraider. Le reste va pouvoir débuter sur la liste de discussions.

La galerie du jour...

samedi, mai 12 2007

Pas très bavard ces temps-ci

Je sais, je cause peu sur mon blog ces temps-ci. Pas grand chose à raconter. J'attends que Magnus trouve un peu de temps pour prendre en compte mes patchs pour le site officiel de PostgreSQL, j'ai codé un patch pour ajouter le support de l'option FILLFACTOR dans pgAdmin, je relis deux/trois trucs pour EMS, j'ai beaucoup joué avec le « Log Shipping » de PostgreSQL (superbe fonctionnalité d'ailleurs). Voilà. Sans compter évidemment tout le temps que j'ai passé dans mes toilettes (enlevé le papier peint, mettre de l'enduit, passer une couche d'imprime, peindre, accrocher des étagères) et celui que je passe maintenant dans l'entrée...

Ma TODO list est assez simple actuellement : traduction de PGday.it, ajouter le support de DROP/REASSIGN OWNER à pgAdmin, traduire les .po de la 8.3, commencer à jeter un oeil sur cette version... ce ne sont pas les idées qui manquent :)

jeudi, avril 26 2007

Le debugger PL/pgsql de pgAdmin

Ça sera la grande nouveauté de la prochaine version de pgAdmin : le debugger PL/pgsql. Développé par EnterpriseDB et maintenant intégré à pgAdmin, il est testable avec une base EntrepriseDB. Le module de débuggage sera « bientôt » disponible sur le site d'EnterpriseDB. En attendant, j'ai testé cette fonctionnalité avec une version SVN toute fraîche. Et voici quelques copies d'écran, histoire de vous faire baver.

Après avoir sélectionné une fonction, un clic droit affiche un menu disposant d'un nouvel élément : Debugging. Cet élément propose deux choix : Debug et Set breakpoint. En choisissant Debug, le debugger est lancé dans sa propre fenêtre. Si la fonction comprend des arguments, une fenêtre vous demandera leur valeurs...

Une fois saisi, vous arrivez sur le debugger, prêt à exécuter la fonction :

Les dernières valeurs modifiées sont affichées en rouge dans l'onglet des variables.

L'instruction RAISE (qui ajoute un message dans les traces) va afficher aussi le message dans l'onglet « DBMS Messages ».

Pas mal, non ? :)

Notez qu'il est aussi possible de débugger une fonction trigger en ajoutant le fameux breakpoint.

mercredi, mars 7 2007

Un cocktail peu ragoûtant...

Beaucoup de fatigue, peu de motivations... si seulement j'en profitais pour dormir, mais non, je zone...

Pourtant, il en reste du boulot. Je travaille un peu sur la traduction du site web officiel. J'ai pas mal de choses en vue pour pgAdmin. Sans compter que je vais faire partie du comité pour la (les ?) journées PostgreSQL organisées en Italie. Mais, vraiment, je n'arrive pas à me lancer dans un projet.

J'ai juste trouvé la force de valider les relectures de Vincent sur LFS-6.1.1. Son travail est vraiment intéressant, ses tournures de phrase sont beaucoup plus compréhensibles que moi. J'espère qu'il aura la motivation pour faire la mise à jour LFS-6.2.

dimanche, mars 4 2007

pgAdmin : ajout du support de pgstatindex

Et voici mon troisième patch (oui, je n'ai pas encore causé du deuxième et ne suis pas sûr de le faire).

Avec la version 8.2 de PostgreSQL, le module pgstattuple comprend une nouvelle fonction permettant d'avoir quelques informations statistiques sur les index. J'avais oublié cette fonction dans mon premier patch. Du coup, je me rattrape en rajoutant cette fonctionnalité. Evidemment, le patch vérifie l'existence de la fonction au lancement de pgAdmin. Si c'est bien le cas, le menu contextuel d'un index affiche le menu « Extended statistics » comme le montre la copie d'écran ci-dessous :
Menu avec le nouvel élément

Après avoir sélectionné ce menu, les statistiques supplémentaires s'affichent dans l'onglet « Statistics » :
Et l'onglet statistiques après

J'ai encore moins galéré pour l'écriture de ce patch. En effet, je me suis basé sur le travail fait pour pgstattuple. Donc, un petit patch bien tranquille. Le prochain pourrait être un peu plus compliqué car il s'agit d'ajouter le support des instructions DROP/REASSIGN OWNED (donc spécifique 8.2).

Je profite de parler de pgAdmin pour dire que j'ai intégré deux nouvelles traductions (serbe et portugaise). Merci donc à Bojan Skaljac et à Hélder M. Vieira pour leur travaux sur leur .po respectif.

mercredi, février 21 2007

Petit état des lieux

Comme certains se plaignent de ne plus voir de billets sur mon blog, voici un petit état des lieux bref et rapide (car après tout, il est déjà 1h du mat) :

  • J'ai mes billets de train et ma réservation de chambre, je suis donc prêt pour le FOSDEM.
  • J'ai fini l'écriture de l'article pour PHP Solutions.
  • J'ai réglé un problème professionnel d'une façon qui me plaît et qui, du coup, fera l'objet d'un autre billet.
  • Firebug, c'est trop de la balle (pas de rapport avec la ligne précédente, même si je m'en suis aperçu au boulot).
  • J'ai mis à jour DotClear2, la nouvelle interface est plus jolie (mais pas révolutionnaire).
  • Je teste l'interface multiblog de DotClear, c'est pas mal du tout.
  • Il faut absolument que je trouve du temps pour créer quelques slides sur la 8.2.
  • Il faut que je revois l'étendue des dégâts concernant la trad de pgAdmin.

Pas accessoirement du tout, je vais être le parrain de ma filleu^Wnièce \o/ Rien que ça, ça re-donne le sourire. :)

samedi, janvier 20 2007

pgAdmin : ajout du support de pgstattuple

Voici le premier patch que j'ai écrit pour pgAdmin. Il a été appliqué par Dave, donc vous devriez avoir ça avec la version 1.8 de pgAdmin (prévu pour le premier semestre 2007).

pgstattuple est un module contrib de PostgreSQL. Il permet de savoir pour une relation donnée sa taille, son nombre de lignes (vivantes, mortes, totales), la taille de toutes les lignes vivantes et de toutes les lignes mortes. Cela peut être d'une grande aide pour un administrateur de bases de données car il peut ainsi se rendre compte de l'adéquation de sa configuration (notamment max_fsm_pages et max_fsm_relations, mais aussi tous les paramètres de l'autovacuum). Cela lui permet aussi de savoir si une table est bien proportionnée (10% de lignes mortes semble un max). S'il détecte un problème, il pourra ainsi entreprendre des actions pour que cela ne se reproduise plus.

Le patch détecte automatiquement si la contrib pgstattuple a été installée sur la base où l'utilisateur est connecté. Si c'est bien le cas, le menu contextuel d'une table affiche le menu « Extended statistics » comme le montre la copie d'écran ci-dessous : Menu avec le nouvel élément

Après avoir sélectionné ce menu, les statistiques supplémentaires s'afficheront dans l'onglet « Statistics » : Et l'onglet statistiques après

Et voilà. Je n'ai pas trop galéré pour l'écriture du patch. La lecture du code permet rapidement de savoir comment se débrouiller. Cela étant dit, mon deuxième patch a été moins simple à écrire...

jeudi, janvier 4 2007

Patch pour pgAdmin

Ciné, pas ciné, ciné, pas ciné... finalement pas ciné.

Cela étant dit, pas motivé non plus pour bosser sur le PC. Petit épisode de Grey's Anatomy (1ère saison, 2è épisode, très sympa). Toujours pas motivé. Je jette quand même un oeil aux sources de pgAdmin, histoire de m'attaquer à un patch que j'ai promis à Dave (support de pgstattuple). J'ai donc jeté un oeil, puis deux... et j'ai eu du mal à en sortir. Une modif par ci, un ajout par là, je me suis régalé. Bref, je me trouve avec un joli patch et quelques problèmes à résoudre encore. J'ai envoyé tout ça sur pgadmin-hackers pour avoir quelques conseils. En tout cas, je me suis bien amusé :)

Les obligatoires screenshots et le thread sur pgadmin-hackers.

jeudi, décembre 7 2006

Sortie de PostgreSQL 8.2.0 et de pgAdmin 1.6.1

Mardi soir, 23h, est arrivé PostgreSQL 8.2.0 : une excellente version de stabilisation et d'améliorations des différents outils. J'ai commencé l'écriture d'un article sur cette version sur mon wiki. N'hésitez pas à le lire et à m'indiquer ce que vous en pensez. Le manuel français est à jour. Stéphane a commencé la relecture. Vu le nombre de modifications qu'il fait, c'est vraiment important que tout soit relu (n'oubliez que, vous-aussi, vous pouvez participer). Les applications sont entièrement traduites. Bref, tout va bien si ce n'est quelques soucis avec la génération de certains types de documents. Il faut que je m'en occupe rapidement.

Une nouvelle version de pgAdmin est aussi sortie, mais ça date déjà de vendredi dernier. Elle comprend quelques correctifs de l'excellente branche 1.6. À ce sujet, j'avais écrit un article pour Linux+ DVD sur les nouveautés de cette branche. Le numéro de décembre est enfin disponible en France pour les personnes intéressées. Je suis plutôt content de mon article mais j'ai quand même un bémol : je ne sais pas ce qu'ils font avec les textes mais beaucoup d'accents ont été supprimés (alors que l'orthographe était bonne) et beaucoup ont été ajoutés (et n'auraient pas dû l'être). Bref.

C'est donc un très bon moment pour tester les deux surtout que pgAdmin 1.6.1 dispose d'un support pour PostgreSQL 8.2.0.

jeudi, novembre 30 2006

PostgreSQL-8.2.0 - RC1

Oui, la news date un peu (de vendredi pour être franc). Ce qui est nouveau, c'est la disponibilité du manuel français en 8.2.0 - RC1. Toujours concernant PostgreSQL, les applications sont entièrement traduites en français.

La version finale est imminente : création des paquets vendredi, annonce lundi (c'est mon estimation... au pire, fin de semaine prochaine). pgAdmin 1.6.1 ne devrait pas tarder non plus (ce week-end à priori). Bref, ça bouge :)

- page 1 de 2