Modification de la compilation de jointures en 3.1 ?
RastaPopoulos <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Cas concret, une boucle dans le plugin Sélections éditoriales *qui n'a
pas bougé* :
(SELECTIONS selections_liens){!orphelins}{auteurs_liens.id_auteur?}
Cette boucle contient *une jointure explicite* demandée. Le compilateur
DOIT l'ajouter normalement, ce n'est pas facultatif, on la demande
explicitement.
La seconde différence *hors* compilateur qui a changé aussi, c'est que
Cédric à modifier {orphelins} pour ajouter une "subquery". Mais ce point
n'est pas censé être lié à la jointure, c'est dans une des conditions du
"where".
Voici sur les deux versions :
## En SPIP 3.0
SELECT selections.id_selection, 0 AS points, '', L2.id_objet, L2.objet,
selections.titre AS titre_rang, selections.titre
FROM spip_selections AS 'selections'
INNER JOIN spip_selections_liens AS L2 ON ( L2.id_selection =
selections.id_selection )
WHERE selections.id_selection IN (
SELECT DISTINCT id_selection
FROM spip_selections_liens AS oooo)
GROUP BY selections.id_selection
ORDER BY 0+selections.titre, id_objet
## En SPIP 3.1
SELECT selections.id_selection, 0 AS points, '', L1.id_objet, L1.objet,
selections.titre AS titre_rang, selections.titre
FROM spip_selections AS `selections`
INNER JOIN spip_auteurs_liens AS L1 ON ( L1.id_objet =
ctions.id_selection AND L1.objet='selection')
WHERE selections.id_selection IN (SELECT * FROM(
SELECT DISTINCT id_selection
FROM spip_selections_liens AS oooo) AS subquery)
GROUP BY selections.id_selection
ORDER BY 0+selections.titre, id_objet
En 3.1, quand on vire {auteurs_liens.id_auteur?}, alors ça remet la
bonne jointure "spip_selections_liens". Mais en 3.0 ça marche direct
sans rien changer.
--
RastaPopoulos