if ( $class === 'LBFactorySimple' ) {
if ( is_array( $mainConfig->get( 'DBservers' ) ) ) {
foreach ( $mainConfig->get( 'DBservers' ) as $i => $server ) {
+ if ( $server['type'] === 'sqlite' ) {
+ $server += [ 'dbDirectory' => $mainConfig->get( 'SQLiteDataDir' ) ];
+ }
$lbConf['servers'][$i] = $server + [
'schema' => $mainConfig->get( 'DBmwschema' ),
'tablePrefix' => $mainConfig->get( 'DBprefix' ),
$flags |= $mainConfig->get( 'DebugDumpSql' ) ? DBO_DEBUG : 0;
$flags |= $mainConfig->get( 'DBssl' ) ? DBO_SSL : 0;
$flags |= $mainConfig->get( 'DBcompress' ) ? DBO_COMPRESS : 0;
- $lbConf['servers'] = [
- [
- 'host' => $mainConfig->get( 'DBserver' ),
- '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,
- 'flags' => $flags,
- 'sqlMode' => $mainConfig->get( 'SQLMode' ),
- 'utf8Mode' => $mainConfig->get( 'DBmysql5' )
- ]
+ $server = [
+ 'host' => $mainConfig->get( 'DBserver' ),
+ '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,
+ 'flags' => $flags,
+ 'sqlMode' => $mainConfig->get( 'SQLMode' ),
+ 'utf8Mode' => $mainConfig->get( 'DBmysql5' )
];
+ if ( $server['type'] === 'sqlite' ) {
+ $server[ 'dbDirectory'] = $mainConfig->get( 'SQLiteDataDir' );
+ }
+ $lbConf['servers'] = [ $server ];
}
+
$lbConf['externalServers'] = $mainConfig->get( 'ExternalServers' );
}
* @param array $p
*/
function __construct( array $p ) {
- global $wgSQLiteDataDir;
-
- $this->dbDir = isset( $p['dbDirectory'] ) ? $p['dbDirectory'] : $wgSQLiteDataDir;
-
if ( isset( $p['dbFilePath'] ) ) {
parent::__construct( $p );
// Standalone .sqlite file mode.
// which is derived from the file path in this case.
$this->openFile( $p['dbFilePath'] );
$lockDomain = md5( $p['dbFilePath'] );
+ } elseif ( !isset( $p['dbDirectory'] ) ) {
+ throw new InvalidArgumentException( "Need 'dbDirectory' or 'dbFilePath' parameter." );
} else {
+ $this->dbDir = $p['dbDirectory'];
$this->mDBname = $p['dbname'];
$lockDomain = $this->mDBname;
// Stock wiki mode using standard file names per DB.
!in_array( $this->trxMode, [ 'DEFERRED', 'IMMEDIATE', 'EXCLUSIVE' ] )
) {
$this->trxMode = null;
- wfWarn( "Invalid SQLite transaction mode provided." );
+ $this->queryLogger->warning( "Invalid SQLite transaction mode provided." );
}
$this->lockMgr = new FSLockManager( [
}
if ( !$this->mConn ) {
- wfDebug( "DB connection error: $err\n" );
+ $this->queryLogger->debug( "DB connection error: $err\n" );
throw new DBConnectionError( $this, $err );
}
return $ver;
}
- /**
- * @return string User-friendly database information
- */
- public function getServerInfo() {
- return wfMessage( self::getFulltextSearchModule()
- ? 'sqlite-has-fts'
- : 'sqlite-no-fts', $this->getServerVersion() )->text();
- }
-
/**
* Get information about a given field
* Returns false if the field does not exist.
// There is an additional bug regarding sorting this data after insert
// on older versions of sqlite shipped with ubuntu 12.04
// https://phabricator.wikimedia.org/T74367
- wfDebugLog(
- __CLASS__,
+ $this->queryLogger->debug(
__FUNCTION__ .
- ': Quoting value containing null byte. ' .
- 'For consistency all binary data should have been ' .
- 'first processed with self::encodeBlob()'
+ ': Quoting value containing null byte. ' .
+ 'For consistency all binary data should have been ' .
+ 'first processed with self::encodeBlob()'
);
return "x'" . bin2hex( $s ) . "'";
} else {
);
if ( $temporary ) {
if ( preg_match( '/^\\s*CREATE\\s+VIRTUAL\\s+TABLE\b/i', $sql ) ) {
- wfDebug( "Table $oldName is virtual, can't create a temporary duplicate.\n" );
+ $this->queryLogger->debug(
+ "Table $oldName is virtual, can't create a temporary duplicate.\n" );
} else {
$sql = str_replace( 'CREATE TABLE', 'CREATE TEMPORARY TABLE', $sql );
}
"htmlform-user-not-exists": "<strong>$1</strong> does not exist.",
"htmlform-user-not-valid": "<strong>$1</strong> isn't a valid username.",
"rawmessage": "$1",
- "sqlite-has-fts": "$1 with full-text search support",
- "sqlite-no-fts": "$1 without full-text search support",
"logentry-delete-delete": "$1 {{GENDER:$2|deleted}} page $3",
"logentry-delete-restore": "$1 {{GENDER:$2|restored}} page $3",
"logentry-delete-event": "$1 {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a log event|$5 log events}} on $3: $4",
"htmlform-user-not-exists": "Error message shown if a user with the name provided by the user does not exist. $1 is the username.",
"htmlform-user-not-valid": "Error message shown if the name provided by the user isn't a valid username. $1 is the username.",
"rawmessage": "{{notranslate}} Used to pass arbitrary text as a message specifier array",
- "sqlite-has-fts": "Shown on [[Special:Version]].\nParameters:\n* $1 - version",
- "sqlite-no-fts": "Shown on [[Special:Version]].\nParameters:\n* $1 - version",
"logentry-delete-delete": "{{Logentry|[[Special:Log/delete]]}}",
"logentry-delete-restore": "{{Logentry|[[Special:Log/delete]]}}",
"logentry-delete-event": "{{Logentry|[[Special:Log/delete]]}}\n{{Logentryparam}}\n* $5 - count of affected log events",