Remove remainings of mssql

This commit is contained in:
Thomas Müller 2015-07-29 18:19:31 +02:00
parent 3ef680d966
commit 5ed38a75d6
14 changed files with 9 additions and 282 deletions

View File

@ -115,11 +115,6 @@ class ConvertType extends Command {
'Converting to SQLite (sqlite3) is currently not supported.'
);
}
if ($type === 'mssql') {
throw new \InvalidArgumentException(
'Converting to Microsoft SQL Server (mssql) is currently not supported.'
);
}
if ($type === $this->config->getSystemValue('dbtype', '')) {
throw new \InvalidArgumentException(sprintf(
'Can not convert from %1$s to %1$s.',

View File

@ -4,8 +4,7 @@ $(document).ready(function() {
sqlite:!!$('#hasSQLite').val(),
mysql:!!$('#hasMySQL').val(),
postgresql:!!$('#hasPostgreSQL').val(),
oracle:!!$('#hasOracle').val(),
mssql:!!$('#hasMSSQL').val()
oracle:!!$('#hasOracle').val()
};
$('#selectDbType').buttonset();
@ -28,7 +27,7 @@ $(document).ready(function() {
$('#dbname').attr('pattern','[0-9a-zA-Z$_-]+');
});
$('#mysql,#pgsql,#mssql').click(function() {
$('#mysql,#pgsql').click(function() {
$('#use_other_db').slideDown(250);
$('#use_oracle_db').slideUp(250);
$('#sqliteInformation').hide();

View File

@ -8,7 +8,6 @@ script('core', [
<input type='hidden' id='hasSQLite' value='<?php p($_['hasSQLite']) ?>'>
<input type='hidden' id='hasPostgreSQL' value='<?php p($_['hasPostgreSQL']) ?>'>
<input type='hidden' id='hasOracle' value='<?php p($_['hasOracle']) ?>'>
<input type='hidden' id='hasMSSQL' value='<?php p($_['hasMSSQL']) ?>'>
<form action="index.php" method="post">
<input type="hidden" name="install" value="true">
<?php if(count($_['errors']) > 0): ?>
@ -79,7 +78,7 @@ script('core', [
<?php if(!$_['dbIsSet'] OR count($_['errors']) > 0): ?>
<fieldset id='databaseBackend'>
<?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'] or $_['hasMSSQL'])
<?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'])
$hasOtherDB = true; else $hasOtherDB =false; //other than SQLite ?>
<legend><?php p($l->t( 'Configure the database' )); ?></legend>
<div id="selectDbType">

View File

@ -121,7 +121,7 @@ class OC_DB {
if (is_string($stmt)) {
// convert to an array with 'sql'
if (stripos($stmt, 'LIMIT') !== false) { //OFFSET requires LIMIT, so we only need to check for LIMIT
// TODO try to convert LIMIT OFFSET notation to parameters, see fixLimitClauseForMSSQL
// TODO try to convert LIMIT OFFSET notation to parameters
$message = 'LIMIT and OFFSET are forbidden for portability reasons,'
. ' pass an array with \'limit\' and \'offset\' instead';
throw new \OC\DatabaseException($message);

View File

@ -39,12 +39,6 @@ class ConnectionFactory {
* \Doctrine\DBAL\DriverManager::getConnection().
*/
protected $defaultConnectionParams = array(
'mssql' => array(
'adapter' => '\OC\DB\AdapterSQLSrv',
'charset' => 'UTF8',
'driver' => 'pdo_sqlsrv',
'wrapperClass' => 'OC\DB\Connection',
),
'mysql' => array(
'adapter' => '\OC\DB\AdapterMySQL',
'charset' => 'UTF8',

View File

@ -32,7 +32,6 @@ use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Platforms\OraclePlatform;
use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
use Doctrine\DBAL\Platforms\SqlitePlatform;
use Doctrine\DBAL\Platforms\SQLServerPlatform;
class MDB2SchemaManager {
/**
@ -85,8 +84,6 @@ class MDB2SchemaManager {
return new OracleMigrator($this->conn, $random, $config);
} else if ($platform instanceof MySqlPlatform) {
return new MySQLMigrator($this->conn, $random, $config);
} else if ($platform instanceof SQLServerPlatform) {
return new MsSqlMigrator($this->conn, $random, $config);
} else if ($platform instanceof PostgreSqlPlatform) {
return new Migrator($this->conn, $random, $config);
} else {

View File

@ -1,37 +0,0 @@
<?php
/**
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OC\DB;
use Doctrine\DBAL\Schema\Schema;
class MsSqlMigrator extends Migrator {
/**
* @param \Doctrine\DBAL\Schema\Schema $targetSchema
*/
public function migrate(Schema $targetSchema) {
throw new MigrationException('',
'Database migration is required to continue operation. This feature is provided within the Enterprise Edition.');
}
}

View File

@ -69,7 +69,6 @@ class Setup {
'mysql' => '\OC\Setup\MySQL',
'pgsql' => '\OC\Setup\PostgreSQL',
'oci' => '\OC\Setup\OCI',
'mssql' => '\OC\Setup\MSSQL',
'sqlite' => '\OC\Setup\Sqlite',
'sqlite3' => '\OC\Setup\Sqlite',
);
@ -120,11 +119,6 @@ class Setup {
'type' => 'function',
'call' => 'oci_connect',
'name' => 'Oracle'
),
'mssql' => array(
'type' => 'function',
'call' => 'sqlsrv_connect',
'name' => 'MS SQL'
)
);
if ($allowAllDatabases) {
@ -218,7 +212,6 @@ class Setup {
'hasMySQL' => isset($databases['mysql']),
'hasPostgreSQL' => isset($databases['pgsql']),
'hasOracle' => isset($databases['oci']),
'hasMSSQL' => isset($databases['mssql']),
'databases' => $databases,
'directory' => $dataDir,
'htaccessWorking' => $htAccessWorking,

View File

@ -1,203 +0,0 @@
<?php
/**
* @author Bart Visscher <bartv@thisnet.nl>
* @author Joas Schilling <nickvergessen@owncloud.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Thomas Müller <thomas.mueller@tmit.eu>
*
* @copyright Copyright (c) 2015, ownCloud, Inc.
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OC\Setup;
class MSSQL extends AbstractDatabase {
public $dbprettyname = 'MS SQL Server';
public function setupDatabase($username) {
//check if the database user has admin right
$masterConnectionInfo = array( "Database" => "master", "UID" => $this->dbuser, "PWD" => $this->dbpassword);
$masterConnection = @sqlsrv_connect($this->dbhost, $masterConnectionInfo);
if(!$masterConnection) {
$entry = '';
if( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
}
throw new \OC\DatabaseSetupException($this->trans->t('MS SQL username and/or password not valid: %s', array($entry)),
$this->trans->t('You need to enter either an existing account or the administrator.'));
}
\OC_Config::setValues([
'dbuser' => $this->dbuser,
'dbpassword' => $this->dbpassword,
]);
$this->createDBLogin($masterConnection);
$this->createDatabase($masterConnection);
$this->createDBUser($masterConnection);
sqlsrv_close($masterConnection);
$this->createDatabaseStructure();
}
private function createDBLogin($connection) {
$query = "SELECT * FROM master.sys.server_principals WHERE name = '".$this->dbuser."';";
$result = sqlsrv_query($connection, $query);
if ($result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
} else {
$row = sqlsrv_fetch_array($result);
if ($row === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
} else {
if ($row == null) {
$query = "CREATE LOGIN [".$this->dbuser."] WITH PASSWORD = '".$this->dbpassword."';";
$result = sqlsrv_query($connection, $query);
if (!$result or $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
}
}
}
}
}
private function createDBUser($connection) {
$query = "SELECT * FROM [".$this->dbname."].sys.database_principals WHERE name = '".$this->dbuser."';";
$result = sqlsrv_query($connection, $query);
if ($result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
} else {
$row = sqlsrv_fetch_array($result);
if ($row === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
} else {
if ($row == null) {
$query = "USE [".$this->dbname."]; CREATE USER [".$this->dbuser."] FOR LOGIN [".$this->dbuser."];";
$result = sqlsrv_query($connection, $query);
if (!$result || $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry = 'DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
}
}
$query = "USE [".$this->dbname."]; EXEC sp_addrolemember 'db_owner', '".$this->dbuser."';";
$result = sqlsrv_query($connection, $query);
if (!$result || $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
}
}
}
}
private function createDatabase($connection) {
$query = "CREATE DATABASE [".$this->dbname."];";
$result = sqlsrv_query($connection, $query);
if (!$result || $result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
}
}
private function createDatabaseStructure() {
$connectionInfo = array( "Database" => $this->dbname, "UID" => $this->dbuser, "PWD" => $this->dbpassword);
$connection = @sqlsrv_connect($this->dbhost, $connectionInfo);
//fill the database if needed
$query = "SELECT * FROM INFORMATION_SCHEMA.TABLES"
." WHERE TABLE_SCHEMA = '".$this->dbname."'"
." AND TABLE_NAME = '".$this->tableprefix."users'";
$result = sqlsrv_query($connection, $query);
if ($result === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
} else {
$row = sqlsrv_fetch_array($result);
if ($row === false) {
if ( ($errors = sqlsrv_errors() ) != null) {
$entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
} else {
$entry = '';
}
$entry.='Offending command was: '.$query.'<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
} else {
if ($row == null) {
\OC_DB::createDbFromStructure($this->dbDefinitionFile);
}
}
}
sqlsrv_close($connection);
}
}

View File

@ -103,7 +103,7 @@ class MySQL extends AbstractDatabase {
if(!$result) {
$entry = $this->trans->t('DB Error: "%s"', array(mysql_error($connection))) . '<br />';
$entry .= $this->trans->t('Offending command was: "%s"', array($query)) . '<br />';
\OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
\OCP\Util::writeLog('setup.mysql', $entry, \OCP\Util::WARN);
}
$query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'";

View File

@ -10,7 +10,6 @@
namespace Test\DB;
use Doctrine\DBAL\Platforms\OraclePlatform;
use Doctrine\DBAL\Platforms\SQLServerPlatform;
class MDB2SchemaManager extends \Test\TestCase {
@ -30,9 +29,6 @@ class MDB2SchemaManager extends \Test\TestCase {
if ($connection->getDatabasePlatform() instanceof OraclePlatform) {
$this->markTestSkipped('Adding auto increment columns in Oracle is not supported.');
}
if ($connection->getDatabasePlatform() instanceof SQLServerPlatform) {
$this->markTestSkipped('DB migration tests are not supported on MSSQL');
}
$manager = new \OC\DB\MDB2SchemaManager($connection);

View File

@ -11,9 +11,9 @@ namespace Test\DB;
use \Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Platforms\OraclePlatform;
use Doctrine\DBAL\Platforms\SQLServerPlatform;
use \Doctrine\DBAL\Schema\Schema;
use \Doctrine\DBAL\Schema\SchemaConfig;
use OCP\IConfig;
class Migrator extends \Test\TestCase {
/**
@ -31,6 +31,7 @@ class Migrator extends \Test\TestCase {
**/
private $config;
/** @var string */
private $tableName;
protected function setUp() {
@ -41,9 +42,6 @@ class Migrator extends \Test\TestCase {
if ($this->connection->getDatabasePlatform() instanceof OraclePlatform) {
$this->markTestSkipped('DB migration tests are not supported on OCI');
}
if ($this->connection->getDatabasePlatform() instanceof SQLServerPlatform) {
$this->markTestSkipped('DB migration tests are not supported on MSSQL');
}
$this->manager = new \OC\DB\MDB2SchemaManager($this->connection);
$this->tableName = strtolower($this->getUniqueID($this->config->getSystemValue('dbtableprefix', 'oc_') . 'test_'));
}

View File

@ -47,9 +47,6 @@ class Test_DBSchema extends \Test\TestCase {
*/
public function testSchema() {
$platform = \OC_DB::getConnection()->getDatabasePlatform();
if ($platform instanceof \Doctrine\DBAL\Platforms\SQLServerPlatform) {
$this->markTestSkipped("Test not relevant on MSSQL");
}
$this->doTestSchemaCreating();
$this->doTestSchemaChanging();
$this->doTestSchemaDumping();

View File

@ -81,7 +81,7 @@ class Test_OC_Setup extends \Test\TestCase {
->expects($this->once())
->method('getSystemValue')
->will($this->returnValue(
array('sqlite', 'mysql', 'pgsql', 'oci', 'mssql')
array('sqlite', 'mysql', 'pgsql', 'oci')
));
$this->setupClass
->expects($this->once())
@ -96,8 +96,7 @@ class Test_OC_Setup extends \Test\TestCase {
'sqlite' => 'SQLite',
'mysql' => 'MySQL/MariaDB',
'pgsql' => 'PostgreSQL',
'oci' => 'Oracle',
'mssql' => 'MS SQL'
'oci' => 'Oracle'
);
$this->assertSame($expectedResult, $result);
}