- Patch #748340 by Berdir, andypost, catch, noahb, Crell: MySQL-optimized tableExists() implementation.
parent
1c4ff2fc67
commit
cb391a1856
|
@ -460,6 +460,40 @@ class DatabaseSchema_mysql extends DatabaseSchema {
|
||||||
return preg_replace('/; InnoDB free:.*$/', '', $comment);
|
return preg_replace('/; InnoDB free:.*$/', '', $comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function tableExists($table) {
|
||||||
|
// The information_schema table is very slow to query under MySQL 5.0.
|
||||||
|
// Instead, we try to select from the table in question. If it fails,
|
||||||
|
// the most likely reason is that it does not exist. That is dramatically
|
||||||
|
// faster than using information_schema.
|
||||||
|
// @link http://bugs.mysql.com/bug.php?id=19588
|
||||||
|
// @todo: This override should be removed once we require a version of MySQL
|
||||||
|
// that has that bug fixed.
|
||||||
|
try {
|
||||||
|
$this->connection->queryRange("SELECT 1 FROM {" . $table . "}", 0, 1);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fieldExists($table, $column) {
|
||||||
|
// The information_schema table is very slow to query under MySQL 5.0.
|
||||||
|
// Instead, we try to select from the table and field in question. If it
|
||||||
|
// fails, the most likely reason is that it does not exist. That is
|
||||||
|
// dramatically faster than using information_schema.
|
||||||
|
// @link http://bugs.mysql.com/bug.php?id=19588
|
||||||
|
// @todo: This override should be removed once we require a version of MySQL
|
||||||
|
// that has that bug fixed.
|
||||||
|
try {
|
||||||
|
$this->connection->queryRange("SELECT $column FROM {" . $table . "}", 0, 1);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
catch (Exception $e) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue