mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
MDL-79638 phpunit: Adjust version checks for mysql/mariadb hack
This hack was introduced to work around a bug in MySQL 5.6.14 and MariaDB at the time. https://bugs.mysql.com/bug.php?id=69882 It was addressed a few months later in 5.6.16, and 5.7.4. MariaDB merged version 5.6.16 of MySQL's InnoDB engine in MariaDB 10.0.11 and got the patch from there. Moodle has required MySQL 5.7, and MariaDB 10.2.29 since Moodle 3.11 and it is therefore safe to remove these hacks for these versions.
This commit is contained in:
parent
b0a7bc3f42
commit
a74443a342
@ -643,7 +643,7 @@ abstract class testing_util {
|
||||
$borkedmysql = false;
|
||||
if ($DB->get_dbfamily() === 'mysql') {
|
||||
$version = $DB->get_server_info();
|
||||
if (version_compare($version['version'], '5.6.0') == 1 and version_compare($version['version'], '5.6.16') == -1) {
|
||||
if (version_compare($version['version'], '5.7.4', '<')) {
|
||||
// Everything that comes from Oracle is evil!
|
||||
//
|
||||
// See http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
|
||||
@ -652,31 +652,27 @@ abstract class testing_util {
|
||||
// From 5.6.16 release notes:
|
||||
// InnoDB: The ALTER TABLE INPLACE algorithm would fail to decrease the auto-increment value.
|
||||
// (Bug #17250787, Bug #69882)
|
||||
$borkedmysql = true;
|
||||
|
||||
} else if (version_compare($version['version'], '10.0.0') == 1) {
|
||||
// And MariaDB is no better!
|
||||
// Let's hope they pick the patch sometime later...
|
||||
// This also impacts MySQL < 5.7.4.
|
||||
$borkedmysql = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($borkedmysql) {
|
||||
$mysqlsequences = array();
|
||||
$prefix = $DB->get_prefix();
|
||||
$rs = $DB->get_recordset_sql("SHOW TABLE STATUS LIKE ?", array($prefix.'%'));
|
||||
foreach ($rs as $info) {
|
||||
$table = strtolower($info->name);
|
||||
if (strpos($table, $prefix) !== 0) {
|
||||
// Incorrect table match caused by _ char.
|
||||
continue;
|
||||
}
|
||||
if (!is_null($info->auto_increment)) {
|
||||
$table = preg_replace('/^'.preg_quote($prefix, '/').'/', '', $table);
|
||||
$mysqlsequences[$table] = $info->auto_increment;
|
||||
if ($borkedmysql) {
|
||||
$mysqlsequences = array();
|
||||
$prefix = $DB->get_prefix();
|
||||
$rs = $DB->get_recordset_sql("SHOW TABLE STATUS LIKE ?", array($prefix.'%'));
|
||||
foreach ($rs as $info) {
|
||||
$table = strtolower($info->name);
|
||||
if (strpos($table, $prefix) !== 0) {
|
||||
// Incorrect table match caused by _ char.
|
||||
continue;
|
||||
}
|
||||
if (!is_null($info->auto_increment)) {
|
||||
$table = preg_replace('/^'.preg_quote($prefix, '/').'/', '', $table);
|
||||
$mysqlsequences[$table] = $info->auto_increment;
|
||||
}
|
||||
}
|
||||
$rs->close();
|
||||
}
|
||||
$rs->close();
|
||||
}
|
||||
|
||||
foreach ($data as $table => $records) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user