MDL-26371 sql - avoid distinct + text in glossary search
[moodle.git] / mod / glossary / sql.php
index 912473b..de99771 100644 (file)
     default:
         $sqlselect  = "SELECT ge.*, ge.concept AS glossarypivot";
         $sqlfrom    = "FROM {glossary_entries} ge";
+        // For cases needing inner view
+        $sqlwrapheader = '';
+        $sqlwrapfooter = '';
 
         $where = '';
         $fullpivot = 0;
             } else {
                 $searchcond = implode(" AND ", $searchcond);
 
-                $sqlselect  = "SELECT DISTINCT ge.*, ge.concept AS glossarypivot";
+                // Need one inner view here to avoid distinct + text
+                $sqlwrapheader = 'SELECT ge.*, ge.concept AS glossarypivot
+                                    FROM {glossary_entries} ge
+                                    JOIN ( ';
+                $sqlwrapfooter = ' ) gei ON (ge.id = gei.id)';
+
+                $sqlselect  = "SELECT DISTINCT ge.id";
                 $sqlfrom    = "FROM {glossary_entries} ge
                                LEFT JOIN {glossary_alias} al ON al.entryid = ge.id";
                 $where      = "AND ($searchcond)";
         $limitnum = $entriesbypage;
     }
 
-    $allentries = $DB->get_records_sql("$sqlselect $sqlfrom $sqlwhere $sqlorderby", $params, $limitfrom, $limitnum);
+    $query = "$sqlwrapheader $sqlselect $sqlfrom $sqlwhere $sqlwrapfooter $sqlorderby";
+    $allentries = $DB->get_records_sql($query, $params, $limitfrom, $limitnum);