Bifurcation depuis
spip / spip
Le projet source a une visibilité limitée.
-
esj a rédigé
Le débusqueur donne à présent aussi pour les requêtes fabriquées par le compilateur la ligne où l'erreur intervient dans le squelette (cas assez rares où l'utilisateur écrit mal des opérandes de fonctions SQL comme REGEXP). Occasion de voir que les portages SQL n'étaient pas toujours cohérents> de l'un à l'autre mais aussi en interne: * sql_countsel ne contrôlait pas bien une éventuelle erreur de sql_select, * sql_errno ne retournait pas toujours un code numérique. On rajoute dans le code compilé l'envoi du contexte de compil (toujours la même fonction {{{denoncer_inclure_dynamique}}} qui n'est donc toujours pas bien nommée), et un test de requête fautive pour éviter une cascade d'erreur ensuite. La fonction {{{sql_select}}} voit son dernier argument légèrement modifié: il peut être le contexte de compil, et s'interprète alors comme True (ça devrait être transparent). Les instances dans les différents portage ne retourne plus un tableau en cas d'erreur, mais seulement le texte brut de la requête, ça permet de ne plus dupliquer du code dans les portages. Il faudrait revoir trace_query, il y a des redondance quant au contexte de compil à présent.
esj a rédigéLe débusqueur donne à présent aussi pour les requêtes fabriquées par le compilateur la ligne où l'erreur intervient dans le squelette (cas assez rares où l'utilisateur écrit mal des opérandes de fonctions SQL comme REGEXP). Occasion de voir que les portages SQL n'étaient pas toujours cohérents> de l'un à l'autre mais aussi en interne: * sql_countsel ne contrôlait pas bien une éventuelle erreur de sql_select, * sql_errno ne retournait pas toujours un code numérique. On rajoute dans le code compilé l'envoi du contexte de compil (toujours la même fonction {{{denoncer_inclure_dynamique}}} qui n'est donc toujours pas bien nommée), et un test de requête fautive pour éviter une cascade d'erreur ensuite. La fonction {{{sql_select}}} voit son dernier argument légèrement modifié: il peut être le contexte de compil, et s'interprète alors comme True (ça devrait être transparent). Les instances dans les différents portage ne retourne plus un tableau en cas d'erreur, mais seulement le texte brut de la requête, ça permet de ne plus dupliquer du code dans les portages. Il faudrait revoir trace_query, il y a des redondance quant au contexte de compil à présent.