Merge "objectcache: Always use interim values on WAN cache tombstones"
[lhc/web/wiklou.git] / includes / installer / DatabaseInstaller.php
index 6113573..62acebf 100644 (file)
@@ -41,6 +41,16 @@ abstract class DatabaseInstaller {
         */
        public $parent;
 
+       /**
+        * @var string Set by subclasses
+        */
+       public static $minimumVersion;
+
+       /**
+        * @var string Set by subclasses
+        */
+       protected static $notMiniumumVerisonMessage;
+
        /**
         * The database connection.
         *
@@ -62,6 +72,23 @@ abstract class DatabaseInstaller {
         */
        protected $globalNames = [];
 
+       /**
+        * Whether the provided version meets the necessary requirements for this type
+        *
+        * @param string $serverVersion Output of Database::getServerVersion()
+        * @return Status
+        * @since 1.30
+        */
+       public static function meetsMinimumRequirement( $serverVersion ) {
+               if ( version_compare( $serverVersion, static::$minimumVersion ) < 0 ) {
+                       return Status::newFatal(
+                               static::$notMiniumumVerisonMessage, static::$minimumVersion, $serverVersion
+                       );
+               }
+
+               return Status::newGood();
+       }
+
        /**
         * Return the internal name, e.g. 'mysql', or 'sqlite'.
         */
@@ -336,7 +363,7 @@ abstract class DatabaseInstaller {
                $services = \MediaWiki\MediaWikiServices::getInstance();
 
                $connection = $status->value;
-               $services->redefineService( 'DBLoadBalancerFactory', function() use ( $connection ) {
+               $services->redefineService( 'DBLoadBalancerFactory', function () use ( $connection ) {
                        return LBFactorySingle::newFromConnection( $connection );
                } );
        }
@@ -697,7 +724,7 @@ abstract class DatabaseInstaller {
                }
                $this->db->selectDB( $this->getVar( 'wgDBname' ) );
 
-               if ( $this->db->selectRow( 'interwiki', '*', [], __METHOD__ ) ) {
+               if ( $this->db->selectRow( 'interwiki', '1', [], __METHOD__ ) ) {
                        $status->warning( 'config-install-interwiki-exists' );
 
                        return $status;