use Wikimedia\Rdbms\TransactionProfiler;
use Wikimedia\Rdbms\LikeMatch;
use Wikimedia\Rdbms\DatabaseDomain;
+use Wikimedia\Rdbms\ResultWrapper;
use Wikimedia\Rdbms\DBMasterPos;
use Wikimedia\Rdbms\Blob;
+use Wikimedia\Timestamp\ConvertibleTimestamp;
+use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\IMaintainableDatabase;
/**
* Relational database abstraction object
}
$class = 'Database' . ucfirst( $driver );
- if ( class_exists( $class ) && is_subclass_of( $class, 'IDatabase' ) ) {
+ if ( class_exists( $class ) && is_subclass_of( $class, IDatabase::class ) ) {
// Resolve some defaults for b/c
$p['host'] = isset( $p['host'] ) ? $p['host'] : false;
$p['user'] = isset( $p['user'] ) ? $p['user'] : false;
) {
$rows = 0;
$sql = $this->selectSQLText( $tables, '1', $conds, $fname, $options, $join_conds );
- $res = $this->query( "SELECT COUNT(*) AS rowcount FROM ($sql) tmp_count", $fname );
+ // The identifier quotes is primarily for MSSQL.
+ $rowCountCol = $this->addIdentifierQuotes( "rowcount" );
+ $tableName = $this->addIdentifierQuotes( "tmp_count" );
+ $res = $this->query( "SELECT COUNT(*) AS $rowCountCol FROM ($sql) $tableName", $fname );
if ( $res ) {
$row = $this->fetchRow( $res );
$sql .= " WHERE " . $this->makeList( $conds, self::LIST_AND );
}
- return $this->query( $sql, $fname );
+ return (bool)$this->query( $sql, $fname );
}
public function makeList( $a, $mode = self::LIST_COMMA ) {
*/
public function __clone() {
$this->connLogger->warning(
- "Cloning " . get_class( $this ) . " is not recomended; forking connection:\n" .
+ "Cloning " . static::class . " is not recomended; forking connection:\n" .
( new RuntimeException() )->getTraceAsString()
);