[spip-dev] Les jointures cassées en SPIP 2.1.8 ?

Salut tout le monde,
Je suis actuellement en SPIP 2.1.8 [17201] et j’ai la bizarre impression qu’il y a un problème avec les jointures…
J’ai voulu faire une sélection sur les titres des groupes de mots dans une boucle mots avec comme préconisé par programmer.spip.org (cf. http://programmer.spip.org/Forcer-des-jointures) une jointure :

<BOUCLE_tags(MOTS groupes_mots){groupes_mots.titre==Technique}{", "}>

J’ai essayé avec GROUPES_MOTS, spip_groupes_mots, … mais pareil.
J’ai toujours la même erreur :

1 Erreur(s) dans le squelette
Numéro message squelette boucle
Ligne1 Critère inconnu == sites/yohanns.localhost/squelettes/inclure/article-resume.html_tags12

J’ai donc voulu faire avec ça : http://programmer.spip.org/declarer_tables_interfaces,379 :

mes_options.php avec <?php $spip_pipeline['declarer_tables_interfaces'] = "|interface_groupe"; function interface_groupe($interface) { $interface['exceptions_des_jointures']['titre_groupe'] = array('spip_groupes_mots', 'titre'); return $interface; } ?>

et

<BOUCLE_tags(MOTS){titre_groupe==Technique}{", "}>

dans mon squelette. Mais c’est toujours la même erreur.

Y aurait-il un problème avec les jointures ? Parce que d’après programmer, ça marchait au moment de l’écriture…

Merci d’avance.

Je viens de tester :
<BOUCLE_tags(MOTS groupes_mots){groupes_mots.titre==Balise}{", "}>
#TITRE
</BOUCLE_tags>

Qui me sort bien mes mots...

Rien à faire chez moi, ça veut pas marcher. Sur deux serveurs différents.

Quel code SQL est produit ? (Tu peux le voir avec debug)

Paolo

je ne peux rien voir, j'ai juste l'erreur du critère == inconnu.

la jointure se fait bien et la boucle fonctionne en 2.3.0-dev [17230]
mais pas en SPIP 2.1.8 [17154] ni en SPIP 2.1.8 [16966]
les 2 spip nus sans plugin aucun ni options/fonctions persos.

pour ces 2 derniers cas, le fait d'apporter les modifs dans
ecrire/base/serial.php

en ajoutant :
   $spip_mots_join = array("id_groupe"=>"id_groupe");

et :
   $spip_groupes_mots_join = array("id_groupe"=>"id_groupe");

et en modifiant :
   $tables_principales['spip_mots'] = array(
         'field' => &$spip_mots,
         'key' => &$spip_mots_key,
         'join' => &$spip_mots_join);
   $tables_principales['spip_groupes_mots'] = array(
         'field' => &$spip_groupes_mots,
         'key' => &$spip_groupes_mots_key,
         'join' => &$spip_groupes_mots_join);

permet à la jointure de se faire et à la boucle de fonctionner,
comme si, en absence de déclaration explicite, la recherche des
clefs primaires ou secondaires ne s'effectuait pas pour ces 2 tables.

Voilà, c'est bien ce que je me disais ^^.
Programmer.spip.org prend comme référence la version stable, non ? Donc si ça ne marche plus, c'est bien un bug ?

Merci pour la solution, je vais utiliser ça en attendant (même si j'aime pas forker, mais quand il faut, il faut !).

non.
ces erreurs de "critère inconnu" ne sont pas logguées
et sont détectées avant la construction de la requête sql.

en var_mode=debug on retombe inévitablement sur l'erreur du
compilateur :

Ah, tiens... je reproduis enfin !

(en même temps {type == Technique} fonctionne)

Salut,
J'up un coup parce que vu les récents changements dans les différentes
branches/extensions (j'ai pas du tout suivi, désolé si je dis des
bêtises), on pourrait pas corriger ce bug en reportant quelques
commits en stable ?