Changeset 100643 in spip-zone


Ignore:
Timestamp:
Nov 23, 2016, 11:10:51 PM (3 years ago)
Author:
maieul@…
Message:

par contre, pour des raisons de perfs, on supprime le sous select et on fait un calcul à la place. On applique donc à cette branche le patch de r58902

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/critere_mots/trunk/critere_mots_fonctions.php

    r100642 r100643  
    143143           }
    144144       
    145         $wh = "$_table.$_id_table IN (
    146                 SELECT id_objet FROM spip_mots_liens WHERE "
    147                 . join(' OR ', $where)
    148                 . ' GROUP BY id_objet,objet '
    149                 . $having
    150                 . "\n\t)";
    151 
     145        $in = array();
     146        // Normalement on devrait faire un sous-select, mais mysql 5* a un bug (ttp://bugs.mysql.com/bug.php?id=32665)
     147        // du coup on calcule d'abord le résultat de la sous-select, et on intègre cela inc_prepare_mots_dist
     148  $s = sql_query("SELECT id_objet as i FROM spip_mots_liens WHERE "
     149    . join(' OR ', $where)
     150    . ' GROUP BY id_objet,objet'
     151    . $having);
     152  while($t = sql_fetch($s)){
     153                        $in[] = $t['i'];
     154        }
     155        var_dump($in);
     156        if ($in){
     157          $wh = sql_in("$_table.$_id_table", $in);
     158  }
     159        else{
     160                $wh = '22=0';//1=0 est automatiquement filtré par le compilateur
     161        }
    152162        return $wh;
    153163}
Note: See TracChangeset for help on using the changeset viewer.