summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-01-09 14:17:14 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-01-09 14:17:14 +0100
commit1f1643b35fef94b64e6997e1af2a3ca87fe0d889 (patch)
tree8f8a766aa872e9350d4633e52bbee4af3485e19c /lib
parentd2ca9e9c0faa3f6838482c14318a60b6c9e2a800 (diff)
parent95374e1404e6342dcd34d40bcb4d8acb197bf831 (diff)
downloadnextcloud-server-1f1643b35fef94b64e6997e1af2a3ca87fe0d889.tar.gz
nextcloud-server-1f1643b35fef94b64e6997e1af2a3ca87fe0d889.zip
Merge pull request #12995 from owncloud/tbelau666-master
Use Doctrines filter by table name
Diffstat (limited to 'lib')
-rw-r--r--lib/private/db/mdb2schemamanager.php16
-rw-r--r--lib/private/db/mdb2schemawriter.php14
-rw-r--r--lib/private/db/migrator.php12
-rw-r--r--lib/private/db/pgsqltools.php15
-rw-r--r--lib/private/db/sqlitemigrator.php16
5 files changed, 43 insertions, 30 deletions
diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php
index 78267094d0e..358360d0b46 100644
--- a/lib/private/db/mdb2schemamanager.php
+++ b/lib/private/db/mdb2schemamanager.php
@@ -36,9 +36,7 @@ class MDB2SchemaManager {
* TODO: write more documentation
*/
public function getDbStructure($file, $mode = MDB2_SCHEMA_DUMP_STRUCTURE) {
- $sm = $this->conn->getSchemaManager();
-
- return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm);
+ return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $this->conn);
}
/**
@@ -60,19 +58,19 @@ class MDB2SchemaManager {
public function getMigrator() {
$random = \OC::$server->getSecureRandom()->getMediumStrengthGenerator();
$platform = $this->conn->getDatabasePlatform();
+ $config = \OC::$server->getConfig();
if ($platform instanceof SqlitePlatform) {
- $config = \OC::$server->getConfig();
return new SQLiteMigrator($this->conn, $random, $config);
} else if ($platform instanceof OraclePlatform) {
- return new OracleMigrator($this->conn, $random);
+ return new OracleMigrator($this->conn, $random, $config);
} else if ($platform instanceof MySqlPlatform) {
- return new MySQLMigrator($this->conn, $random);
+ return new MySQLMigrator($this->conn, $random, $config);
} else if ($platform instanceof SQLServerPlatform) {
- return new MsSqlMigrator($this->conn, $random);
+ return new MsSqlMigrator($this->conn, $random, $config);
} else if ($platform instanceof PostgreSqlPlatform) {
- return new Migrator($this->conn, $random);
+ return new Migrator($this->conn, $random, $config);
} else {
- return new NoCheckMigrator($this->conn, $random);
+ return new NoCheckMigrator($this->conn, $random, $config);
}
}
diff --git a/lib/private/db/mdb2schemawriter.php b/lib/private/db/mdb2schemawriter.php
index a2a62a81475..a42cd86ba54 100644
--- a/lib/private/db/mdb2schemawriter.php
+++ b/lib/private/db/mdb2schemawriter.php
@@ -10,16 +10,22 @@ class OC_DB_MDB2SchemaWriter {
/**
* @param string $file
- * @param \Doctrine\DBAL\Schema\AbstractSchemaManager $sm
+ * @param \OC\DB\Connection $conn
* @return bool
*/
- static public function saveSchemaToFile($file, $sm) {
+ static public function saveSchemaToFile($file, \OC\DB\Connection $conn) {
+ $config = \OC::$server->getConfig();
+
$xml = new SimpleXMLElement('<database/>');
- $xml->addChild('name', OC_Config::getValue( "dbname", "owncloud" ));
+ $xml->addChild('name', $config->getSystemValue('dbname', 'owncloud'));
$xml->addChild('create', 'true');
$xml->addChild('overwrite', 'false');
$xml->addChild('charset', 'utf8');
- foreach ($sm->listTables() as $table) {
+
+ $conn->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^' . $config->getSystemValue('dbtableprefix', 'oc_') . '/');
+
+ foreach ($conn->getSchemaManager()->listTables() as $table) {
self::saveTable($table, $xml->addChild('table'));
}
file_put_contents($file, $xml->asXML());
diff --git a/lib/private/db/migrator.php b/lib/private/db/migrator.php
index 31c648a9b65..8ccc02e36a5 100644
--- a/lib/private/db/migrator.php
+++ b/lib/private/db/migrator.php
@@ -14,6 +14,7 @@ use \Doctrine\DBAL\Schema\Table;
use \Doctrine\DBAL\Schema\Schema;
use \Doctrine\DBAL\Schema\SchemaConfig;
use \Doctrine\DBAL\Schema\Comparator;
+use OCP\IConfig;
use OCP\Security\ISecureRandom;
class Migrator {
@@ -28,13 +29,18 @@ class Migrator {
*/
private $random;
+ /** @var IConfig */
+ protected $config;
+
/**
* @param \Doctrine\DBAL\Connection $connection
* @param ISecureRandom $random
+ * @param IConfig $config
*/
- public function __construct(\Doctrine\DBAL\Connection $connection, ISecureRandom $random) {
+ public function __construct(\Doctrine\DBAL\Connection $connection, ISecureRandom $random, IConfig $config) {
$this->connection = $connection;
$this->random = $random;
+ $this->config = $config;
}
/**
@@ -70,6 +76,8 @@ class Migrator {
*/
$tables = $targetSchema->getTables();
+ $this->connection->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
$existingTables = $this->connection->getSchemaManager()->listTableNames();
foreach ($tables as $table) {
@@ -153,6 +161,8 @@ class Migrator {
}
protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
+ $connection->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
$sourceSchema = $connection->getSchemaManager()->createSchema();
// remove tables we don't know about
diff --git a/lib/private/db/pgsqltools.php b/lib/private/db/pgsqltools.php
index c3ac140594d..f3204d4c7b6 100644
--- a/lib/private/db/pgsqltools.php
+++ b/lib/private/db/pgsqltools.php
@@ -8,11 +8,23 @@
*/
namespace OC\DB;
+use OCP\IConfig;
/**
* Various PostgreSQL specific helper functions.
*/
class PgSqlTools {
+
+ /** @var \OCP\IConfig */
+ private $config;
+
+ /**
+ * @param \OCP\IConfig $config
+ */
+ public function __construct(IConfig $config) {
+ $this->config = $config;
+ }
+
/**
* @brief Resynchronizes all sequences of a database after using INSERTs
* without leaving out the auto-incremented column.
@@ -21,6 +33,9 @@ class PgSqlTools {
*/
public function resynchronizeDatabaseSequences(Connection $conn) {
$databaseName = $conn->getDatabase();
+ $conn->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
+
foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
$sequenceName = $sequence->getName();
$sqlInfo = 'SELECT table_schema, table_name, column_name
diff --git a/lib/private/db/sqlitemigrator.php b/lib/private/db/sqlitemigrator.php
index 848e4986571..42b65634645 100644
--- a/lib/private/db/sqlitemigrator.php
+++ b/lib/private/db/sqlitemigrator.php
@@ -10,26 +10,10 @@ namespace OC\DB;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Schema\Schema;
-use OCP\Security\ISecureRandom;
class SQLiteMigrator extends Migrator {
/**
- * @var \OCP\IConfig
- */
- private $config;
-
- /**
- * @param \Doctrine\DBAL\Connection $connection
- * @param ISecureRandom $random
- * @param \OCP\IConfig $config
- */
- public function __construct(\Doctrine\DBAL\Connection $connection, ISecureRandom $random, \OCP\IConfig $config) {
- parent::__construct($connection, $random);
- $this->config = $config;
- }
-
- /**
* @param \Doctrine\DBAL\Schema\Schema $targetSchema
* @throws \OC\DB\MigrationException
*