Merge pull request #7171 from Martimiz/fixSearchEngine

Fix SearchEngine to use quoted table names
This commit is contained in:
Damian Mooyman 2017-07-27 10:38:41 +12:00 committed by GitHub
commit 18863f0916

View File

@ -226,10 +226,10 @@ class MySQLDatabase extends Database
// Generate initial DataLists and base table names // Generate initial DataLists and base table names
$lists = array(); $lists = array();
$baseClasses = array($pageClass => '', $fileClass => ''); $sqlTables = array($pageClass => '', $fileClass => '');
foreach ($classesToSearch as $class) { foreach ($classesToSearch as $class) {
$lists[$class] = DataList::create($class)->where($notMatch . $match[$class] . $extraFilters[$class]); $lists[$class] = DataList::create($class)->where($notMatch . $match[$class] . $extraFilters[$class]);
$baseClasses[$class] = '"' . $class . '"'; $sqlTables[$class] = '"' . DataObject::getSchema()->tableName($class) . '"';
} }
$charset = static::config()->get('charset'); $charset = static::config()->get('charset');
@ -237,14 +237,14 @@ class MySQLDatabase extends Database
// Make column selection lists // Make column selection lists
$select = array( $select = array(
$pageClass => array( $pageClass => array(
"ClassName", "{$pageTable}.\"ID\"", "ParentID", "ClassName", "{$sqlTables[$pageClass]}.\"ID\"", "ParentID",
"Title", "MenuTitle", "URLSegment", "Content", "Title", "MenuTitle", "URLSegment", "Content",
"LastEdited", "Created", "LastEdited", "Created",
"Name" => "_{$charset}''", "Name" => "_{$charset}''",
"Relevance" => $relevance[$pageClass], "CanViewType" "Relevance" => $relevance[$pageClass], "CanViewType"
), ),
$fileClass => array( $fileClass => array(
"ClassName", "{$fileTable}.\"ID\"", "ParentID", "ClassName", "{$sqlTables[$fileClass]}.\"ID\"", "ParentID",
"Title", "MenuTitle" => "_{$charset}''", "URLSegment" => "_{$charset}''", "Content" => "_{$charset}''", "Title", "MenuTitle" => "_{$charset}''", "URLSegment" => "_{$charset}''", "Content" => "_{$charset}''",
"LastEdited", "Created", "LastEdited", "Created",
"Name", "Name",
@ -262,7 +262,7 @@ class MySQLDatabase extends Database
$query = $list->dataQuery()->query(); $query = $list->dataQuery()->query();
// There's no need to do all that joining // There's no need to do all that joining
$query->setFrom($table); $query->setFrom($sqlTables[$class]);
$query->setSelect($select[$class]); $query->setSelect($select[$class]);
$query->setOrderBy(array()); $query->setOrderBy(array());