Update tests/phpunit/MediaWikiTestCase.php with support for apcu
[lhc/web/wiklou.git] / includes / db / MWLBFactory.php
index bfdce39..40418fd 100644 (file)
@@ -37,6 +37,8 @@ abstract class MWLBFactory {
        public static function applyDefaultConfig( array $lbConf, Config $mainConfig ) {
                global $wgCommandLineMode;
 
+               static $typesWithSchema = [ 'postgres', 'msssql' ];
+
                $lbConf += [
                        'localDomain' => new DatabaseDomain(
                                $mainConfig->get( 'DBname' ),
@@ -64,15 +66,24 @@ abstract class MWLBFactory {
                                        if ( $server['type'] === 'sqlite' ) {
                                                $server += [ 'dbDirectory' => $mainConfig->get( 'SQLiteDataDir' ) ];
                                        } elseif ( $server['type'] === 'postgres' ) {
-                                               $server += [ 'port' => $mainConfig->get( 'DBport' ) ];
+                                               $server += [
+                                                       'port' => $mainConfig->get( 'DBport' ),
+                                                       // Work around the reserved word usage in MediaWiki schema
+                                                       'keywordTableMap' => [ 'user' => 'mwuser', 'text' => 'pagecontent' ]
+                                               ];
+                                       }
+                                       if ( in_array( $server['type'], $typesWithSchema, true ) ) {
+                                               $server += [ 'schema' => $mainConfig->get( 'DBmwschema' ) ];
                                        }
-                                       $lbConf['servers'][$i] = $server + [
-                                               'schema' => $mainConfig->get( 'DBmwschema' ),
+
+                                       $server += [
                                                'tablePrefix' => $mainConfig->get( 'DBprefix' ),
                                                'flags' => DBO_DEFAULT,
                                                'sqlMode' => $mainConfig->get( 'SQLMode' ),
                                                'utf8Mode' => $mainConfig->get( 'DBmysql5' )
                                        ];
+
+                                       $lbConf['servers'][$i] = $server;
                                }
                        } else {
                                $flags = DBO_DEFAULT;
@@ -84,7 +95,6 @@ abstract class MWLBFactory {
                                        'user' => $mainConfig->get( 'DBuser' ),
                                        'password' => $mainConfig->get( 'DBpassword' ),
                                        'dbname' => $mainConfig->get( 'DBname' ),
-                                       'schema' => $mainConfig->get( 'DBmwschema' ),
                                        'tablePrefix' => $mainConfig->get( 'DBprefix' ),
                                        'type' => $mainConfig->get( 'DBtype' ),
                                        'load' => 1,
@@ -92,10 +102,15 @@ abstract class MWLBFactory {
                                        'sqlMode' => $mainConfig->get( 'SQLMode' ),
                                        'utf8Mode' => $mainConfig->get( 'DBmysql5' )
                                ];
+                               if ( in_array( $server['type'], $typesWithSchema, true ) ) {
+                                       $server += [ 'schema' => $mainConfig->get( 'DBmwschema' ) ];
+                               }
                                if ( $server['type'] === 'sqlite' ) {
                                        $server[ 'dbDirectory'] = $mainConfig->get( 'SQLiteDataDir' );
                                } elseif ( $server['type'] === 'postgres' ) {
                                        $server['port'] = $mainConfig->get( 'DBport' );
+                                       // Work around the reserved word usage in MediaWiki schema
+                                       $server['keywordTableMap'] = [ 'user' => 'mwuser', 'text' => 'pagecontent' ];
                                }
                                $lbConf['servers'] = [ $server ];
                        }
@@ -104,7 +119,9 @@ abstract class MWLBFactory {
                        }
                } elseif ( $lbConf['class'] === 'LBFactoryMulti' ) {
                        if ( isset( $lbConf['serverTemplate'] ) ) {
-                               $lbConf['serverTemplate']['schema'] = $mainConfig->get( 'DBmwschema' );
+                               if ( in_array( $lbConf['serverTemplate']['type'], $typesWithSchema, true ) ) {
+                                       $lbConf['serverTemplate']['schema'] = $mainConfig->get( 'DBmwschema' );
+                               }
                                $lbConf['serverTemplate']['sqlMode'] = $mainConfig->get( 'SQLMode' );
                                $lbConf['serverTemplate']['utf8Mode'] = $mainConfig->get( 'DBmysql5' );
                        }