mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-01 13:48:37 +02:00
Merge pull request #92 from simonwelsh/fulltextsearch-fix
BUGFIX fulltext fixes.
This commit is contained in:
commit
3c16af3aca
@ -259,16 +259,34 @@ class MySQLDatabase extends SS_Database {
|
|||||||
$alterList[] .= "ADD ". $this->getIndexSqlDefinition($k, $v);
|
$alterList[] .= "ADD ". $this->getIndexSqlDefinition($k, $v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($alteredOptions && isset($alteredOptions[get_class($this)])) {
|
||||||
|
if(!isset($this->indexList[$tableName])) {
|
||||||
|
$this->indexList[$tableName] = $this->indexList($tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
$skip = false;
|
||||||
|
foreach($this->indexList[$tableName] as $index) {
|
||||||
|
if(strpos($index, 'fulltext ') === 0) {
|
||||||
|
$skip = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($skip) {
|
||||||
|
DB::alteration_message(
|
||||||
|
sprintf("Table %s options not changed to %s due to fulltextsearch index", $tableName, $alteredOptions[get_class($this)]),
|
||||||
|
"changed"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->query(sprintf("ALTER TABLE \"%s\" %s", $tableName, $alteredOptions[get_class($this)]));
|
||||||
|
DB::alteration_message(
|
||||||
|
sprintf("Table %s options changed: %s", $tableName, $alteredOptions[get_class($this)]),
|
||||||
|
"changed"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$alterations = implode(",\n", $alterList);
|
$alterations = implode(",\n", $alterList);
|
||||||
$this->query("ALTER TABLE \"$tableName\" $alterations");
|
$this->query("ALTER TABLE \"$tableName\" $alterations");
|
||||||
|
|
||||||
if($alteredOptions && isset($alteredOptions[get_class($this)])) {
|
|
||||||
$this->query(sprintf("ALTER TABLE \"%s\" %s", $tableName, $alteredOptions[get_class($this)]));
|
|
||||||
DB::alteration_message(
|
|
||||||
sprintf("Table %s options changed: %s", $tableName, $alteredOptions[get_class($this)]),
|
|
||||||
"changed"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isView($tableName) {
|
public function isView($tableName) {
|
||||||
|
@ -49,6 +49,9 @@ class FulltextSearchable extends DataExtension {
|
|||||||
if(!class_exists($class)) continue;
|
if(!class_exists($class)) continue;
|
||||||
|
|
||||||
if(isset($defaultColumns[$class])) {
|
if(isset($defaultColumns[$class])) {
|
||||||
|
if(DB::getConn()->getDatabaseServer() == 'mysql') {
|
||||||
|
Object::add_static_var($class, 'create_table_options', array('MySQLDatabase' => 'ENGINE=MyISAM'), true);
|
||||||
|
}
|
||||||
Object::add_extension($class, "FulltextSearchable('{$defaultColumns[$class]}')");
|
Object::add_extension($class, "FulltextSearchable('{$defaultColumns[$class]}')");
|
||||||
Object::add_static_var($class, 'create_table_options', array('MySQLDatabase' => 'ENGINE=MyISAM'));
|
Object::add_static_var($class, 'create_table_options', array('MySQLDatabase' => 'ENGINE=MyISAM'));
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user