Issue #3119017 by Gábor Hojtsy, effulgentsia, catch, daffie: Tests fail with MariaDB 10.2.7, but not 10.3.22

merge-requests/2419/head
Alex Pott 2020-03-12 00:20:09 +00:00
parent 0a65cd6076
commit 79cca074cd
1 changed files with 16 additions and 1 deletions

View File

@ -188,7 +188,22 @@ abstract class Tasks {
*/
protected function checkEngineVersion() {
// Ensure that the database server has the right version.
if ($this->minimumVersion() && version_compare(Database::getConnection()->version(), $this->minimumVersion(), '<')) {
// We append '-AnyName' to the minimum version for comparison purposes, so
// that engines that append a package name or other build information to
// their version strings still pass. For example, MariaDB might report its
// version as '10.2.7-MariaDB' or '10.2.7+maria' or similar.
// version_compare() treats '-' and '+' as equivalent, and non-numeric
// parts other than conventional stability specifiers (dev, alpha, beta,
// etc.) as equal to each other and less than numeric parts and stability
// specifiers. In other words, 10.2.7-MariaDB, 10.2.7+maria, and
// 10.2.7-AnyName are all equal to each other and less than 10.2.7-alpha.
// This means that by appending '-AnyName' for the comparison check, that
// alpha and other pre-release versions of the minimum will pass this
// check, which isn't ideal; however, people running pre-release versions
// of database servers should know what they're doing, whether Drupal warns
// them or not.
// @see https://www.php.net/manual/en/function.version-compare.php
if ($this->minimumVersion() && version_compare(Database::getConnection()->version(), $this->minimumVersion() . '-AnyName', '<')) {
$this->fail(t("The database server version %version is less than the minimum required version %minimum_version.", ['%version' => Database::getConnection()->version(), '%minimum_version' => $this->minimumVersion()]));
}
}