[spip-dev] Bug égalité dans un critère de boucle ?

En SPIP 2.1.0 SVN [15858].

J'ai une boucle comme celle-ci :
<BOUCLE_article(ARTICLES){id_rubrique}{titre_mot=#ENV{version}}>

Si un article a un mot clef "7.0.1" et que #ENV{version} vaut "7.0", l'article est retourné, ce qui me semble faux.

Par contre, ça marche avec une expression régulière :
<BOUCLE_article(ARTICLES){id_rubrique}{titre_mot==^#ENV{version}$}>

-Nicolas

oui.

c'est bien un bug, dû (entre autre) à la fonction _q() :
la variable du contexte est considérée ici comme un numérique et
n'est donc pas 'quotée'...

et c'est alors que mysql (deuxième effet kiss-cool) dans sa grande
liberté, fait le reste, se jouant du type déclaré pour le champ
spip_mots.titre...

ainsi avec un spip_mots.titre renseigné à 7.0.1
   SELECT titre
   FROM spip_mots
   WHERE titre = 7.0
retournera (faussement) 1 enregistrement

alors que
   SELECT titre
   FROM spip_mots
   WHERE titre = 7.0.1
retournera (tout aussi faussement) une erreur mysql

ceci indépendament de spip.

Le pb est plus général: les squelettes sont chargés de transformere les types de données de PHP en ceux de la base de données, qui de plus dépendent du portage de SPIP: le système de type de MySQL n'est pas celui de PostGres par exemple. Ca fait partie des zones d'ombres de la sémantique de SPIP, qui demanderait d'en faire préalablement, horresco referens, la théorie. Autrement dit: ne pas modifier seulement la partie émergée de l'iceberg, ça ne fera que créer des incompatibilités sans vraiment apporter de clarification.

Committo,Ergo:Sum

Est-ce que cela mérite un ticket du coup et/ou une mise à jour de la doc des critères de boucles ?

-Nicolas