MDL-16920 mysqli: refactored driver to use new query logging

This commit is contained in:
skodak
2008-11-04 22:25:23 +00:00
parent d139b06701
commit a6283e9127
+76 -33
View File
@@ -89,7 +89,10 @@ class mysqli_native_moodle_database extends moodle_database {
if ($this->mysqli->connect_error) {
return false;
}
$this->query_start("--set_charset()", null, SQL_QUERY_AUX);
$this->mysqli->set_charset('utf8');
$this->query_end(true);
return true;
}
@@ -136,7 +139,11 @@ class mysqli_native_moodle_database extends moodle_database {
public function get_tables() {
$this->reads++;
$tables = array();
if ($result = $this->mysqli->query("SHOW TABLES")) {
$sql = "SHOW TABLES";
$this->query_start($sql, null, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result) {
while ($arr = $result->fetch_assoc()) {
$tablename = reset($arr);
if (strpos($tablename, $this->prefix) !== 0) {
@@ -157,7 +164,11 @@ class mysqli_native_moodle_database extends moodle_database {
public function get_indexes($table) {
$preflen = strlen($this->prefix);
$indexes = array();
if ($result = $this->mysqli->query("SHOW INDEXES FROM {$this->prefix}$table")) {
$sql = "SHOW INDEXES FROM {$this->prefix}$table";
$this->query_start($sql, null, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result) {
while ($res = $result->fetch_object()) {
if ($res->Key_name === 'PRIMARY') {
continue;
@@ -185,11 +196,18 @@ class mysqli_native_moodle_database extends moodle_database {
$this->columns[$table] = array();
if (!$rawcolumns = $this->get_records_sql("SHOW COLUMNS FROM {".$table."}")) {
$sql = "SHOW COLUMNS FROM {$this->prefix}$table";
$this->query_start($sql, null, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result === false) {
return array();
}
foreach ($rawcolumns as $rawcolumn) {
while ($rawcolumn = $result->fetch_assoc()) {
$rawcolumn = (object)array_change_key_case($rawcolumn, CASE_LOWER);
$info = new object();
$info->name = $rawcolumn->field;
$matches = null;
@@ -305,6 +323,8 @@ class mysqli_native_moodle_database extends moodle_database {
$this->columns[$table][$info->name] = new database_column_info($info);
}
$result->close();
return $this->columns[$table];
}
@@ -328,8 +348,12 @@ class mysqli_native_moodle_database extends moodle_database {
* @return bool
*/
public function setup_is_unicodedb() {
$this->reads++;
if ($result = $this->mysqli->query("SHOW LOCAL VARIABLES LIKE 'character_set_database'")) {
$sql = "SHOW LOCAL VARIABLES LIKE 'character_set_database'";
$this->query_start($sql, null, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result) {
$result->close();
return true;
}
@@ -366,10 +390,12 @@ class mysqli_native_moodle_database extends moodle_database {
* @return bool success
*/
public function change_database_structure($sql) {
$this->writes++;
$this->print_debug($sql);
$result = $this->mysqli->query($sql);
$this->reset_columns();
$this->query_start($sql, null, SQL_QUERY_STRUCTURE);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql);
return false;
@@ -420,9 +446,9 @@ class mysqli_native_moodle_database extends moodle_database {
$rawsql = $this->emulate_bound_params($sql, $params);
$this->writes++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -465,10 +491,10 @@ class mysqli_native_moodle_database extends moodle_database {
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
$this->reads++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_SELECT);
// no MYSQLI_USE_RESULT here, it would block write ops on affected tables
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -508,9 +534,9 @@ class mysqli_native_moodle_database extends moodle_database {
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
$this->reads++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_SELECT);
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -518,14 +544,14 @@ class mysqli_native_moodle_database extends moodle_database {
}
$return = array();
while($row = $result->fetch_assoc()) {
$row = array_change_key_case($row, CASE_LOWER);
$id = reset($row);
$return[$id] = (object)$row;
}
$result->close();
return $return;
}
@@ -540,9 +566,9 @@ class mysqli_native_moodle_database extends moodle_database {
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
$this->reads++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_SELECT);
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -550,12 +576,12 @@ class mysqli_native_moodle_database extends moodle_database {
}
$return = array();
while($row = $result->fetch_assoc()) {
$return[] = reset($row);
}
$result->close();
return $return;
}
@@ -593,9 +619,9 @@ class mysqli_native_moodle_database extends moodle_database {
$sql = "INSERT INTO {$this->prefix}$table ($fields) VALUES($qms)";
$rawsql = $this->emulate_bound_params($sql, $params);
$this->writes++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_INSERT);
$result = $this->mysqli->query($rawsql);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -723,9 +749,9 @@ class mysqli_native_moodle_database extends moodle_database {
$sql = "UPDATE {$this->prefix}$table SET $sets WHERE id=?";
$rawsql = $this->emulate_bound_params($sql, $params);
$this->writes++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -803,9 +829,9 @@ class mysqli_native_moodle_database extends moodle_database {
$sql = "UPDATE {$this->prefix}$table SET $newfield $select";
$rawsql = $this->emulate_bound_params($sql, $params);
$this->writes++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -832,9 +858,9 @@ class mysqli_native_moodle_database extends moodle_database {
list($sql, $params, $type) = $this->fix_sql_params($sql, $params);
$rawsql = $this->emulate_bound_params($sql, $params);
$this->writes++;
$this->print_debug($sql, $params);
$this->query_start($sql, $params, SQL_QUERY_UPDATE);
$result = $this->mysqli->query($rawsql);
$this->query_end($result);
if ($result === false) {
$this->report_error($sql, $params);
@@ -892,11 +918,20 @@ class mysqli_native_moodle_database extends moodle_database {
* this is _very_ useful for massive updates
*/
public function begin_sql() {
$result = $result = $this->mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED");
$sql = "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED";
$this->query_start($sql, NULL, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result === false) {
return false;
}
$result = $result = $this->mysqli->query("BEGIN");
$sql = "BEGIN";
$this->query_start($sql, NULL, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result === false) {
return false;
}
@@ -907,7 +942,11 @@ class mysqli_native_moodle_database extends moodle_database {
* on DBs that support it, commit the transaction
*/
public function commit_sql() {
$result = $result = $this->mysqli->query("COMMIT");
$sql = "COMMIT";
$this->query_start($sql, NULL, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result === false) {
return false;
}
@@ -918,7 +957,11 @@ class mysqli_native_moodle_database extends moodle_database {
* on DBs that support it, rollback the transaction
*/
public function rollback_sql() {
$result = $result = $this->mysqli->query("ROLLBACK");
$sql = "ROLLBACK";
$this->query_start($sql, NULL, SQL_QUERY_AUX);
$result = $this->mysqli->query($sql);
$this->query_end($result);
if ($result === false) {
return false;
}