Le virus "MySQL"
Depuis quelques temps, j'étais à la recherche d'une solution pour synchroniser mes signets entre mes différents ordinateurs (perso, portable, travail) et pour pouvoir y accéder sur les postes "publics"
J'aurais pû simplement utiliser Del.icio.us mais je suis légèrement parano, je ne confie mes données personnelles à personne. Après quelques recherches, j'ai trouvé Scuttle. C'est un clone de Del.icio.us, open-source, en PHP et (soi-disant) multi-databases. En plus, son API service web est compatible Del.icio.us, ce qui veut dire qu'il fonctionne avec les extensions des navigateurs pour Del.icio.us. J'ai donc chargé les sources pour l'installer.
Première déception : le schéma des tables pour la base de données utilise des auto_increment. Puisque j'utilise PostgreSQL, il va y avoir un soucis, auto_increment est spécifique à MySQL. Qu'à cela ne tienne, je modifie le schéma pour qu'il soit compatible PostgreSQL (création de séquences).
Second problème : les requêtes ne sont pas faites dans les règles de l'art. Les données de comparaison (dates, chaines de caractères) sont encadrés par des double quote. Dans le standard SQL, tous ce qui est entre double quote est un nom de colone. Or, MySQL autorise que les données soit entre double quote. Là, ça fait beaucoup de modification à faire dans le code. Heureusement, j'ai trouvé sur le site de Scuttle un patch pour ça, visiblement quelqu'un avait déjà essayé de le faire tourner avec PostgreSQL.
Mais l'aventure n'est pas fini car le développeur a eu la bonne idée de mettre des majuscules dans ses noms de colone. Or le SQL est sensible à la casse lorsque les noms de colones sont encadrées par des double quote, mais pas MySQL... Il a donc fallu repasser partout pour rendre les requêtes corrects, et là il n'y avait pas de patch.
Bilan, quelques heures de travail et un patch proposé au développeur. Tout ça pour dire que MySQL avec toute la flexibilité qu'il permet dans le langage SQL, est comme un virus. On développe avec MySQL et ça fonctionne, alors qu'en réalité le code n'est pas correct. C'est exactement la même chose avec les navigateurs, ils ont commencé à accepter que les pages ne soient pas tout à fait correct, pour que le grand public puisse créer des sites. Le résultat c'est que les moteurs de rendus sont devenu d'une complexité incroyable, contraints à implémenter des pseudo-bug pour garder la compatibilité avec toutes les cochonneries que les gens ont pû faire.
Pourtant lorsqu'on développe, généralement c'est assez strict. Essayez de ne pas respecter la casse des variables en C, le compilateur va gentillement vous envoyer bouler...
Commentaires
Pas de commentaires
