Différence de traitement du IN selon qu'un critère est facultatif ou pas
Description :
Il semble y avoir une différence de traitement selon qu'un critère est facultatif ou pas, quand dans l'environnement, la valeur correspondant au critère est un array. Dans un cas, ça fait bien un WHERE machin IN (x,y,z)
, dans l'autre, ça fait un WHERE machin = truc bizarre
.
Pour reproduire :
Soit un squelette qui en inclus un autre :
<INCLURE{fond=truc, id_auteur=#LISTE{1,2,3,4,5,6,7,8,9,10}} />
Squelette inclus :
<BOUCLE_auteurs(AUTEURS){id_auteur ?}>#ID_AUTEUR</BOUCLE_auteurs>
Au niveau de ce dernier, #ENV{id_auteur}
est un tableau qui contient des strings, au lieu de int :
array (size=10)
0 => string '1' (length=1)
1 => string '2' (length=1)
etc.
Avec le critere facultatif {id_auteur ?}
, la boucle passe, on a bien un IN dans le WHERE :
auteurs.id_auteur IN (1,2,3,4,5,6,7,8,9,10)
En revanche avec le critere {id_auteur}, ça ne fonctionne pas :
auteurs.id_auteur = (2 1 (3) : 4)