
Toujours dans ma revue de code qui casse des trucs, je butte souvent sur le typage des résultats (standards) des requêtes SQL qui sont soit un record (pour MySQL et PostgreSQL) soit un staticRecord (pour SQLite), parce que SQLite n’est pas capable de parcourir via un fetch()
le résultat depuis le serveur de base de données, il faut récupérer toutes les données et ensuite seulement les parcourir comme un tableau.
J’avoue que parfois ça me titille de virer le support SQLite, sauf que je sais qu’il y a encore des utilisateurs actifs aujourd’hui avec ce driver, donc non :-)
On pourrait concevoir de basculer tous les résultats au type staticRecord, sauf que ça veut dire récupérer toutes les données d’un coup et ça peut être lourd1, donc on va éviter.
Ou alors il faudrait un nouveau type, sorte de fusion entre les deux record et staticRecord, qui supporte au passage les extensions de classe2, et qui soit capable de gérer tous les cas prévus3 dans les deux types initiaux, ce qui ne sera probablement pas très simple ; il faut que j’y réfléchisse…
Par ailleurs le système d’extension, qui permet d’ajouter des méthodes à un record/staticRecord ne me plaît pas trop en l’état ; pas sûr cependant qu’on puisse s’en passer…
1 De biou -
Je ne comprends pas trop bien le souci, car je suis assez nul en backend. Est-ce que le support de SQLite ne s’est pas amélioré depuis la création de dotclear 2 ? Est-ce que le problème c’est l’absence du support des curseurs par SQLite ? J’ai du mal à croire qu’avec SQLite tu dois obligé de récupérer tous les résultats en mémoire. De ce que je vois, ce que tu veux faire avec SQLite a l’air d’être possible en Python, ça devrait l’être aussi en PHP, non ?
2 De Franck -
Ah mais tu as peut-être raison Biou, je vais me documenter…
3 De Franck -
Bon il va falloir que je fasse bouger Clearbricks pour tenir compte de ça, mais pas tout de suite, il va d’abord falloir que je fasse des tests :-)
4 De Nicolas -
Je rejoins Biou. Je trouve ça très étonnant que l’on soit obligé de récupérer tous les résultats en mémoire. Evidemment je n’ai pas testé ni regardé le code !
5 De Franck -
Il faut croire qu’à l’époque c’était le cas et comme je n’ai pas (encore) touché à cette partie… CQFD comme on dit :-)