From e13523ae3827137cefd5d62f7cb0b50ad82f77a9 Mon Sep 17 00:00:00 2001
From: xjm <xjm@65776.no-reply.drupal.org>
Date: Thu, 5 Mar 2020 13:44:49 -0600
Subject: [PATCH] =?UTF-8?q?Revert=20"Issue=20#3109534=20by=20TravisCarden,?=
 =?UTF-8?q?=20mondrake,=20andypost,=20G=C3=A1bor=20Hojtsy,=20daffie,=20eff?=
 =?UTF-8?q?ulgentsia,=20xjm:=20Raise=20the=20minimum=20MySQL=20version=20t?=
 =?UTF-8?q?o=205.7=20and=20MariaDB=20version=20to=2010.2=20in=20Drupal=209?=
 =?UTF-8?q?"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit 39a543768ece7efcef4ef91e198779d9d5f48465.
---
 .../Core/Database/Driver/mysql/Connection.php |  47 ------
 .../Database/Driver/mysql/Install/Tasks.php   |  30 +---
 .../Drupal/Core/Database/Install/Tasks.php    |  20 ---
 .../Database/Driver/mysql/ConnectionTest.php  | 134 ------------------
 .../Driver/mysql/install/TasksTest.php        | 115 ---------------
 5 files changed, 6 insertions(+), 340 deletions(-)
 delete mode 100644 core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php
 delete mode 100644 core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php

diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
index d08fafebb375..42b5feb033e5 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
@@ -546,53 +546,6 @@ public function driver() {
     return 'mysql';
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function version() {
-    if ($this->isMariaDb()) {
-      return $this->getMariaDbVersionMatch();
-    }
-
-    return $this->getServerVersion();
-  }
-
-  /**
-   * Determines whether the MySQL distribution is MariaDB or not.
-   *
-   * @return bool
-   *   Returns TRUE if the distribution is MariaDB, or FALSE if not.
-   */
-  public function isMariaDb(): bool {
-    return (bool) $this->getMariaDbVersionMatch();
-  }
-
-  /**
-   * Gets the MariaDB portion of the server version.
-   *
-   * @return string
-   *   The MariaDB portion of the server version if present, or NULL if not.
-   */
-  protected function getMariaDbVersionMatch(): ?string {
-    // MariaDB may prefix its version string with '5.5.5-', which should be
-    // ignored.
-    // @see https://github.com/MariaDB/server/blob/f6633bf058802ad7da8196d01fd19d75c53f7274/include/mysql_com.h#L42.
-    $regex = '/^(?:(?:5\.5\.5-)|)(\d+\.\d+\.\d+.*-mariadb.*)/i';
-
-    preg_match($regex, $this->getServerVersion(), $matches);
-    return (empty($matches[1])) ? NULL : $matches[1];
-  }
-
-  /**
-   * Gets the server version.
-   *
-   * @return string
-   *   The PDO server version.
-   */
-  protected function getServerVersion(): string {
-    return $this->connection->getAttribute(\PDO::ATTR_SERVER_VERSION);
-  }
-
   public function databaseType() {
     return 'mysql';
   }
diff --git a/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php
index c83b36ccbe03..ff441d3cae8f 100644
--- a/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Driver/mysql/Install/Tasks.php
@@ -2,7 +2,6 @@
 
 namespace Drupal\Core\Database\Driver\mysql\Install;
 
-use Drupal\Core\Database\ConnectionNotDefinedException;
 use Drupal\Core\Database\Install\Tasks as InstallTasks;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Database\Driver\mysql\Connection;
@@ -13,16 +12,6 @@
  */
 class Tasks extends InstallTasks {
 
-  /**
-   * Minimum required MySQL version.
-   */
-  const MYSQL_MINIMUM_VERSION = '5.7.0';
-
-  /**
-   * Minimum required MariaDB version.
-   */
-  const MARIADB_MINIMUM_VERSION = '10.2.0';
-
   /**
    * Minimum required MySQLnd version.
    */
@@ -54,25 +43,18 @@ public function __construct() {
    * {@inheritdoc}
    */
   public function name() {
-    try {
-      if ($this->getConnection()->isMariaDb()) {
-        return $this->t('MariaDB');
-      }
-      return $this->t('MySQL, Percona Server, or equivalent');
-    }
-    catch (ConnectionNotDefinedException $e) {
-      return $this->t('MySQL, MariaDB, Percona Server, or equivalent');
-    }
+    return t('MySQL, MariaDB, Percona Server, or equivalent');
   }
 
   /**
    * {@inheritdoc}
    */
   public function minimumVersion() {
-    if ($this->getConnection()->isMariaDb()) {
-      return static::MARIADB_MINIMUM_VERSION;
-    }
-    return static::MYSQL_MINIMUM_VERSION;
+    // This can not be increased above '5.5.5' without dropping support for all
+    // MariaDB versions. MariaDB prefixes its version string with '5.5.5-'. For
+    // more information, see
+    // https://github.com/MariaDB/server/blob/f6633bf058802ad7da8196d01fd19d75c53f7274/include/mysql_com.h#L42.
+    return '5.5.3';
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Database/Install/Tasks.php b/core/lib/Drupal/Core/Database/Install/Tasks.php
index ef071efc508f..6ba3ba733c67 100644
--- a/core/lib/Drupal/Core/Database/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Install/Tasks.php
@@ -3,7 +3,6 @@
 namespace Drupal\Core\Database\Install;
 
 use Drupal\Core\Database\Database;
-use Drupal\Core\StringTranslation\TranslatableMarkup;
 
 /**
  * Database installer structure.
@@ -301,23 +300,4 @@ public function validateDatabaseSettings($database) {
     return $errors;
   }
 
-  /**
-   * Translates a string to the current language or to a given language.
-   *
-   * @see \Drupal\Core\StringTranslation\TranslatableMarkup::__construct()
-   */
-  protected function t($string, array $args = [], array $options = []) {
-    return new TranslatableMarkup($string, $args, $options);
-  }
-
-  /**
-   * Returns the database connection.
-   *
-   * @return \Drupal\Core\Database\Connection
-   *   The database connection.
-   */
-  protected function getConnection() {
-    return Database::getConnection();
-  }
-
 }
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php b/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php
deleted file mode 100644
index be9081db3d17..000000000000
--- a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-namespace Drupal\Tests\Core\Database\Driver\mysql;
-
-use Drupal\Core\Database\Driver\mysql\Connection;
-use Drupal\Tests\UnitTestCase;
-
-/**
- * Tests MySQL database connections.
- *
- * @coversDefaultClass \Drupal\Core\Database\Driver\mysql\Connection
- * @group Database
- */
-class ConnectionTest extends UnitTestCase {
-
-  /**
-   * A PDO object prophecy.
-   *
-   * @var \PDO|\Prophecy\Prophecy\ObjectProphecy
-   */
-  private $pdoConnection;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    $this->pdoConnection = $this->prophesize(\PDO::class);
-  }
-
-  /**
-   * Creates a Connection object for testing.
-   *
-   * @return \Drupal\Core\Database\Driver\mysql\Connection
-   */
-  private function createConnection(): Connection {
-    /** @var \PDO $pdo_connection */
-    $pdo_connection = $this->pdoConnection->reveal();
-
-    return new class($pdo_connection) extends Connection {
-
-      public function __construct(\PDO $connection) {
-        $this->connection = $connection;
-      }
-
-    };
-  }
-
-  /**
-   * @covers ::version
-   * @covers ::isMariaDb
-   * @dataProvider providerVersionAndIsMariaDb
-   */
-  public function testVersionAndIsMariaDb(bool $expected_is_mariadb, string $server_version, string $expected_version): void {
-    $this->pdoConnection
-      ->getAttribute(\PDO::ATTR_SERVER_VERSION)
-      ->shouldBeCalled()
-      ->willReturn($server_version);
-    $connection = $this->createConnection();
-
-    $is_mariadb = $connection->isMariaDb();
-    $version = $connection->version();
-
-    $this->assertSame($expected_is_mariadb, $is_mariadb);
-    $this->assertSame($expected_version, $version);
-  }
-
-  /**
-   * Provides test data.
-   *
-   * @return array
-   */
-  public function providerVersionAndIsMariaDb(): array {
-    return [
-      // MariaDB.
-      [
-        TRUE,
-        '10.2.0-MariaDB',
-        '10.2.0-MariaDB',
-      ],
-      [
-        TRUE,
-        '10.2.1-MARIADB',
-        '10.2.1-MARIADB',
-      ],
-      [
-        TRUE,
-        '10.2.2-alphaX-MARIADB',
-        '10.2.2-alphaX-MARIADB',
-      ],
-      [
-        TRUE,
-        '5.5.5-10.2.20-MariaDB-1:10.2.20+maria~bionic',
-        '10.2.20-MariaDB-1:10.2.20+maria~bionic',
-      ],
-      [
-        TRUE,
-        '5.5.5-10.3.22-MariaDB-0+deb10u1',
-        '10.3.22-MariaDB-0+deb10u1',
-      ],
-      [
-        TRUE,
-        '5.5.5-10.3.22-buzz+-MariaDB-0+deb10u1',
-        '10.3.22-buzz+-MariaDB-0+deb10u1',
-      ],
-      // MySQL.
-      [
-        FALSE,
-        '5.5.5-10.2.20-notMariaDB',
-        '5.5.5-10.2.20-notMariaDB',
-      ],
-      [
-        FALSE,
-        '5.5.5',
-        '5.5.5',
-      ],
-      [
-        FALSE,
-        '5.5.5-',
-        '5.5.5-',
-      ],
-      [
-        FALSE,
-        '5.7.28',
-        '5.7.28',
-      ],
-      [
-        FALSE,
-        '5.7.28-31',
-        '5.7.28-31',
-      ],
-    ];
-  }
-
-}
diff --git a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php b/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php
deleted file mode 100644
index 4dbf3a5e1f0d..000000000000
--- a/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-namespace Drupal\Tests\Core\Database\Driver\mysql\install;
-
-use Drupal\Core\Database\ConnectionNotDefinedException;
-use Drupal\Core\Database\Driver\mysql\Connection;
-use Drupal\Core\Database\Driver\mysql\Install\Tasks;
-use Drupal\Tests\UnitTestCase;
-
-/**
- * Tests the MySQL install tasks.
- *
- * @coversDefaultClass \Drupal\Core\Database\Driver\mysql\Install\Tasks
- * @group Database
- */
-class TasksTest extends UnitTestCase {
-
-  /**
-   * A connection object prophecy.
-   *
-   * @var \Drupal\Core\Database\Driver\mysql\Connection|\Prophecy\Prophecy\ObjectProphecy
-   */
-  private $connection;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function setUp() {
-    $this->connection = $this->prophesize(Connection::class);
-  }
-
-  /**
-   * Creates a Connection object for testing.
-   *
-   * @return \Drupal\Core\Database\Driver\mysql\Connection
-   */
-  private function createTasks(): Tasks {
-    /** @var \Drupal\Core\Database\Driver\mysql\Connection $connection */
-    $connection = $this->connection->reveal();
-
-    return new class($connection) extends Tasks {
-
-      private $connection;
-
-      public function __construct(Connection $connection) {
-        $this->connection = $connection;
-      }
-
-      protected function getConnection() {
-        return $this->connection;
-      }
-
-      protected function t($string, array $args = [], array $options = []) {
-        return $string;
-      }
-
-    };
-  }
-
-  /**
-   * @covers ::minimumVersion
-   * @covers ::name
-   * @dataProvider providerNameAndMinimumVersion
-   */
-  public function testNameAndMinimumVersion(bool $is_mariadb, string $expected_name, string $expected_minimum_version): void {
-    $this->connection
-      ->isMariaDb()
-      ->shouldBeCalledTimes(2)
-      ->willReturn($is_mariadb);
-    $tasks = $this->createTasks();
-
-    $minimum_version = $tasks->minimumVersion();
-    $name = $tasks->name();
-
-    $this->assertSame($expected_minimum_version, $minimum_version);
-    $this->assertSame($expected_name, $name);
-
-  }
-
-  /**
-   * Provides test data.
-   *
-   * @return array
-   */
-  public function providerNameAndMinimumVersion(): array {
-    return [
-      [
-        TRUE,
-        'MariaDB',
-        Tasks::MARIADB_MINIMUM_VERSION,
-      ],
-      [
-        FALSE,
-        'MySQL, Percona Server, or equivalent',
-        Tasks::MYSQL_MINIMUM_VERSION,
-      ],
-    ];
-  }
-
-  /**
-   * @covers ::name
-   */
-  public function testNameWithNoConnection() {
-    $this->connection
-      ->isMariaDb()
-      ->shouldBeCalledOnce()
-      ->willThrow(ConnectionNotDefinedException::class);
-    $tasks = $this->createTasks();
-
-    $name = $tasks->name();
-
-    $this->assertSame('MySQL, MariaDB, Percona Server, or equivalent', $name);
-  }
-
-}
-- 
GitLab