use MediaWiki\Config\ServiceOptions;
use MediaWiki\Logger\LoggerFactory;
-use Wikimedia\Rdbms\LBFactory;
use Wikimedia\Rdbms\DatabaseDomain;
/**
private static $loggedDeprecations = [];
/**
- * TODO Make this a const when HHVM support is dropped (T192166)
- *
* @var array
* @since 1.34
*/
- public static $applyDefaultConfigOptions = [
+ public const APPLY_DEFAULT_CONFIG_OPTIONS = [
'DBcompress',
'DBDefaultGroup',
'DBmwschema',
* @param array $lbConf Config for LBFactory::__construct()
* @param ServiceOptions $options
* @param ConfiguredReadOnlyMode $readOnlyMode
- * @param BagOStuff $srvCace
+ * @param BagOStuff $srvCache
* @param BagOStuff $mainStash
* @param WANObjectCache $wanCache
* @return array
array $lbConf,
ServiceOptions $options,
ConfiguredReadOnlyMode $readOnlyMode,
- BagOStuff $srvCace,
+ BagOStuff $srvCache,
BagOStuff $mainStash,
WANObjectCache $wanCache
) {
- $options->assertRequiredOptions( self::$applyDefaultConfigOptions );
+ $options->assertRequiredOptions( self::APPLY_DEFAULT_CONFIG_OPTIONS );
global $wgCommandLineMode;
$options->get( 'DBprefix' )
);
- $lbConf = self::injectObjectCaches( $lbConf, $srvCace, $mainStash, $wanCache );
+ $lbConf = self::injectObjectCaches( $lbConf, $srvCache, $mainStash, $wanCache );
return $lbConf;
}
* @return array
*/
private static function getDbTypesWithSchemas() {
- return [ 'postgres', 'mssql' ];
+ return [ 'postgres' ];
}
/**
// Work around the reserved word usage in MediaWiki schema
'keywordTableMap' => [ 'user' => 'mwuser', 'text' => 'pagecontent' ]
];
- } elseif ( $server['type'] === 'oracle' ) {
- $server += [
- // Work around the reserved word usage in MediaWiki schema
- 'keywordTableMap' => [ 'user' => 'mwuser', 'text' => 'pagecontent' ]
- ];
- } elseif ( $server['type'] === 'mssql' ) {
- $server += [
- 'port' => $options->get( 'DBport' ),
- 'useWindowsAuth' => $options->get( 'DBWindowsAuthentication' )
- ];
}
if ( in_array( $server['type'], self::getDbTypesWithSchemas(), true ) ) {
$server += [ 'schema' => $options->get( 'DBmwschema' ) ];
}
- $flags = DBO_DEFAULT;
- $flags |= $options->get( 'DebugDumpSql' ) ? DBO_DEBUG : 0;
- $flags |= $options->get( 'DebugLogFile' ) ? DBO_DEBUG : 0;
+ $flags = $server['flags'] ?? DBO_DEFAULT;
+ if ( $options->get( 'DebugDumpSql' ) || $options->get( 'DebugLogFile' ) ) {
+ $flags |= DBO_DEBUG;
+ }
+ $server['flags'] = $flags;
$server += [
'tablePrefix' => $options->get( 'DBprefix' ),
- 'flags' => $flags,
'sqlMode' => $options->get( 'SQLMode' ),
];
private static function injectObjectCaches(
array $lbConf, BagOStuff $sCache, BagOStuff $mStash, WANObjectCache $wCache
) {
+ // Fallback if APC style caching is not an option
+ if ( $sCache instanceof EmptyBagOStuff ) {
+ $sCache = new HashBagOStuff( [ 'maxKeys' => 100 ] );
+ }
+
// Use APC/memcached style caching, but avoids loops with CACHE_DB (T141804)
if ( $sCache->getQoS( $sCache::ATTR_EMULATION ) > $sCache::QOS_EMULATION_SQL ) {
$lbConf['srvCache'] = $sCache;
return $class;
}
- /**
- * @param LBFactory $lbFactory
- * @param string $dbType 'mysql', 'sqlite', etc.
- * @internal For use with service wiring
- */
- public static function setSchemaAliases( LBFactory $lbFactory, $dbType ) {
- if ( $dbType === 'mysql' ) {
- /**
- * When SQLite indexes were introduced in r45764, it was noted that
- * SQLite requires index names to be unique within the whole database,
- * not just within a schema. As discussed in CR r45819, to avoid the
- * need for a schema change on existing installations, the indexes
- * were implicitly mapped from the new names to the old names.
- *
- * This mapping can be removed if DB patches are introduced to alter
- * the relevant tables in existing installations. Note that because
- * this index mapping applies to table creation, even new installations
- * of MySQL have the old names (except for installations created during
- * a period where this mapping was inappropriately removed, see
- * T154872).
- */
- $lbFactory->setIndexAliases( [
- 'ar_usertext_timestamp' => 'usertext_timestamp',
- 'un_user_id' => 'user_id',
- 'un_user_ip' => 'user_ip',
- ] );
- }
- }
-
/**
* Log a database deprecation warning
* @param string $msg Deprecation message