Jointures automatiques erronées ? (ex. : groupe au lieu de groupe_mots)
(J'hésitais à classer le ticket dans le plugin mots, mais ça semble concerner les jointures en général donc j'ai mis dans spip. À déplacer si c'est pas le cas).
Graphie "signalait une erreur sur contrib":https://contrib.spip.net/Plugin-Identifiants#comment507866 avec le plugin identifiants et une boucle sur les groupes de mots-clés.
La jointure automatique se fait bien, mais dans le where ça ne met pas "le bon type d'objet":https://git.spip.net/spip/mots/src/branch/master/base/mots.php#L155 : groupe
au lieu de groupe_mots
.
En essayant de tracer un peu le problème, j'obtiens à une erreur similaire avec la dist, pour reproduire :
- Ajouter un document à un groupe de mots-clé, lui donner « toto » comme titre.
- Et tester la boucle suivante :
<BOUCLE_a(GROUPES_MOTS) {documents.titre=toto}>
#ID_GROUPE
</BOUCLE_a>
Dans spip_documents_liens on a le bon type d'objet groupe_mots
, mais dans la requête même problème : groupe
au lieu de groupe_mots
SELECT L1.id_objet, L1.id_objet AS id_groupe
FROM spip_documents_liens AS 'L1'
INNER JOIN spip_documents AS L2 ON ( L2.id_document = L1.id_document )
WHERE (L1.objet = 'groupe')
AND (L2.titre = 'toto')
GROUP BY L1.id_objet
Graphie signale que ça fonctionnait dans une version précédente de spip 3.3-dev, quelque chose a dû changer entre temps.
Je ne sais pas d'où sort ce "groupe", il est bien dans les alias de la table spip_groupes_mots mais c'est le dernier de la liste : https://git.spip.net/spip/mots/src/branch/master/base/mots.php#L152 Doit y avoir autre chose qui entre en jeu.
'table_objet_surnoms' => array(
'groupemot',
'groupe_mots'
/*hum*/,
'groupe_mot'
/* hum*/,
'groupe'
/*hum (EXPOSE)*/
),