$useIndexes = ( isset( $options['USE INDEX'] ) && is_array( $options['USE INDEX'] ) )
? $options['USE INDEX']
: [];
- $ignoreIndexes = ( isset( $options['IGNORE INDEX'] ) && is_array( $options['IGNORE INDEX'] ) )
+ $ignoreIndexes = (
+ isset( $options['IGNORE INDEX'] ) &&
+ is_array( $options['IGNORE INDEX'] )
+ )
? $options['IGNORE INDEX']
: [];
if ( is_array( $table ) ) {
$from = ' FROM ' .
- $this->tableNamesWithIndexClauseOrJOIN( $table, $useIndexes, $ignoreIndexes, $join_conds );
+ $this->tableNamesWithIndexClauseOrJOIN(
+ $table, $useIndexes, $ignoreIndexes, $join_conds );
} elseif ( $table != '' ) {
if ( $table[0] == ' ' ) {
$from = ' FROM ' . $table;
} else {
$from = ' FROM ' .
- $this->tableNamesWithIndexClauseOrJOIN( [ $table ], $useIndexes, $ignoreIndexes, [] );
+ $this->tableNamesWithIndexClauseOrJOIN(
+ [ $table ], $useIndexes, $ignoreIndexes, [] );
}
} else {
$from = '';
if ( is_array( $conds ) ) {
$conds = $this->makeList( $conds, self::LIST_AND );
}
- $sql = "SELECT $startOpts $vars $from $useIndex $ignoreIndex WHERE $conds $preLimitTail";
+ $sql = "SELECT $startOpts $vars $from $useIndex $ignoreIndex " .
+ "WHERE $conds $preLimitTail";
} else {
$sql = "SELECT $startOpts $vars $from $useIndex $ignoreIndex $preLimitTail";
}
}
}
if ( isset( $ignore_index[$alias] ) ) { // has IGNORE INDEX?
- $ignore = $this->ignoreIndexClause( implode( ',', (array)$ignore_index[$alias] ) );
+ $ignore = $this->ignoreIndexClause(
+ implode( ',', (array)$ignore_index[$alias] ) );
if ( $ignore != '' ) {
$tableClause .= ' ' . $ignore;
}
$srcTable = $this->tableName( $srcTable );
}
- $sql = "INSERT $insertOptions INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
+ $sql = "INSERT $insertOptions" .
+ " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
" SELECT $startOpts " . implode( ',', $varMap ) .
" FROM $srcTable $useIndex $ignoreIndex ";
}
} else {
if ( !$this->mTrxLevel ) {
- $this->queryLogger->error( "$fname: No transaction to commit, something got out of sync." );
+ $this->queryLogger->error(
+ "$fname: No transaction to commit, something got out of sync." );
return; // nothing to do
} elseif ( $this->mTrxAutomatic ) {
// @TODO: make this an exception at some point
* @throws Exception
*/
public function sourceFile(
- $filename, $lineCallback = false, $resultCallback = false, $fname = false, $inputCallback = false
+ $filename,
+ $lineCallback = false,
+ $resultCallback = false,
+ $fname = false,
+ $inputCallback = false
) {
MediaWiki\suppressWarnings();
$fp = fopen( $filename, 'r' );
}
try {
- $error = $this->sourceStream( $fp, $lineCallback, $resultCallback, $fname, $inputCallback );
+ $error = $this->sourceStream(
+ $fp, $lineCallback, $resultCallback, $fname, $inputCallback );
} catch ( Exception $e ) {
fclose( $fp );
throw $e;
* @param bool|callable $inputCallback Optional function called for each complete query sent
* @return bool|string
*/
- public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
- $fname = __METHOD__, $inputCallback = false
+ public function sourceStream(
+ $fp,
+ $lineCallback = false,
+ $resultCallback = false,
+ $fname = __METHOD__,
+ $inputCallback = false
) {
$cmd = '';
if ( $done || feof( $fp ) ) {
$cmd = $this->replaceVars( $cmd );
- if ( ( $inputCallback && call_user_func( $inputCallback, $cmd ) ) || !$inputCallback ) {
+ if ( !$inputCallback || call_user_func( $inputCallback, $cmd ) ) {
$res = $this->query( $cmd, $fname );
if ( $resultCallback ) {
public function streamStatementEnd( &$sql, &$newLine ) {
if ( $this->delimiter ) {
$prev = $newLine;
- $newLine = preg_replace( '/' . preg_quote( $this->delimiter, '/' ) . '$/', '', $newLine );
+ $newLine = preg_replace(
+ '/' . preg_quote( $this->delimiter, '/' ) . '$/', '', $newLine );
if ( $newLine != $prev ) {
return true;
}
public function getServerInfo();
/**
- * Turns buffering of SQL result sets on (true) or off (false). Default is
- * "on".
+ * Turns buffering of SQL result sets on (true) or off (false). Default is "on".
*
* Unbuffered queries are very troublesome in MySQL:
*
* - If another query is executed while the first query is being read
* out, the first query is killed. This means you can't call normal
- * MediaWiki functions while you are reading an unbuffered query result
- * from a normal wfGetDB() connection.
+ * Database functions while you are reading an unbuffered query result
+ * from a normal Database connection.
*
* - Unbuffered queries cause the MySQL server to use large amounts of
* memory and to hold broad locks which block other queries.
*
* - OFFSET: Skip this many rows at the start of the result set. OFFSET
* with LIMIT can theoretically be used for paging through a result set,
- * but this is discouraged in MediaWiki for performance reasons.
+ * but this is discouraged for performance reasons.
*
* - LIMIT: Integer: return at most this many rows. The rows are sorted
* and then the first rows are taken until the limit is reached. LIMIT
* The goal of this function is to create an atomic section of SQL queries
* without having to start a new transaction if it already exists.
*
- * Atomic sections are more strict than transactions. With transactions,
- * attempting to begin a new transaction when one is already running results
- * in MediaWiki issuing a brief warning and doing an implicit commit. All
- * atomic levels *must* be explicitly closed using IDatabase::endAtomic(),
+ * All atomic levels *must* be explicitly closed using IDatabase::endAtomic(),
* and any database transactions cannot be began or committed until all atomic
* levels are closed. There is no such thing as implicitly opening or closing
* an atomic section.