Portage Adodb

Un article de PhpMyVisites documentation.

Jump to: navigation, search

Premiers elements

A priori, on se contentera de modifier la classe actuelle Db pour remplacer l'instance de connection mysql par un objet Adodb. Ensuite, il faudra remplacer tous les appels aux fonctions query() , insertLine() et updateLine() par les appels natifs adodb.

Concernant la portabilité des requetes, il serait nettement preferable de voir si l'on peut adapter les requetes existantes pour les rendre portables plutot que de deporter les requetes dans des fichiers specifiques a chaque SGBD. En effet la maintenabilité d'un systeme utilisant un fichier de requete par SGBD risque d'etre carrement cauchemardesque.

Pour l'instant j'ai regardé rapidement le plus gros fichier SQL: ArchiveDay.class.php et voila ce qu'il ressort de la premiere analyse concernant la portabilite des requetes:

  • Selection de parties de dates ou d'heures : HOUR(time) >> Le plus gros probleme a priori
  • Concatenation dans les selects : SELECT CONCAT() >> facilement recuperable via adodb
  • Limite SQL : utiliser : Adodb::FetchRow() ou Adodb::LimitQuery()
  • Peut etre problemes de Group By > certains SGBD (postgres par exemple) demande que l'on fasse apparaitre tous les termes selectionnés dans l'agglomeration
  • OPTIMIZE TABLE... surement a n'executer qu'en conditionnel
  • Requetes comportant un IF (il me semble que C ok pour postgres, mais a verifier sur les autres)
  • Requetes purement Mysql, genre: SHOW TABLES
  • Requetes de creation des tables: utiliser du SQL standard (pas de tinyint, smallint, mediumint, mediumtext etc...)
  • Requetes de creation de tables: Supprimer la definition des index a l'aide de KEY et les remplacer par des definitions standard.