summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authortbelau666 <thomas.belau@gmx.de>2014-11-30 23:17:09 +0100
committerMorris Jobke <hey@morrisjobke.de>2014-12-22 10:45:32 +0100
commitad8d55c3274e81dd4fd92b41ac5d6ef5c39febf3 (patch)
tree02d1ebe0f029d0bfa0371b9961e2a47988c719ba /lib
parent5d296aa6b1fca69cfa14cc29eeb5f757a4b7dfad (diff)
downloadnextcloud-server-ad8d55c3274e81dd4fd92b41ac5d6ef5c39febf3.tar.gz
nextcloud-server-ad8d55c3274e81dd4fd92b41ac5d6ef5c39febf3.zip
Use Doctrines filter by table name
Doctrine's SchemaManager can filter table names by regular expression. On this way it picks up only ownClouds's tables in a database. by tbelau666
Diffstat (limited to 'lib')
-rw-r--r--lib/private/db/mdb2schemamanager.php4
-rw-r--r--lib/private/db/mdb2schemawriter.php8
-rw-r--r--lib/private/db/migrator.php6
-rw-r--r--lib/private/db/pgsqltools.php3
4 files changed, 15 insertions, 6 deletions
diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php
index 78267094d0e..d90c8525a7b 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);
}
/**
diff --git a/lib/private/db/mdb2schemawriter.php b/lib/private/db/mdb2schemawriter.php
index a2a62a81475..3c91f3c784a 100644
--- a/lib/private/db/mdb2schemawriter.php
+++ b/lib/private/db/mdb2schemawriter.php
@@ -13,13 +13,17 @@ class OC_DB_MDB2SchemaWriter {
* @param \Doctrine\DBAL\Schema\AbstractSchemaManager $sm
* @return bool
*/
- static public function saveSchemaToFile($file, $sm) {
+ static public function saveSchemaToFile($file, $conn) {
$xml = new SimpleXMLElement('<database/>');
$xml->addChild('name', OC_Config::getValue( "dbname", "owncloud" ));
$xml->addChild('create', 'true');
$xml->addChild('overwrite', 'false');
$xml->addChild('charset', 'utf8');
- foreach ($sm->listTables() as $table) {
+
+ $conn->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^'.\OCP\Config::getSystemValue('dbtableprefix'.'/'));
+
+ 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..903e9b8a716 100644
--- a/lib/private/db/migrator.php
+++ b/lib/private/db/migrator.php
@@ -69,7 +69,9 @@ class Migrator {
* @var \Doctrine\DBAL\Schema\Table[] $tables
*/
$tables = $targetSchema->getTables();
-
+
+ $this->connection->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^'.\OCP\Config::getSystemValue('dbtableprefix').'/');
$existingTables = $this->connection->getSchemaManager()->listTableNames();
foreach ($tables as $table) {
@@ -153,6 +155,8 @@ class Migrator {
}
protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
+ $connection->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^'.\OCP\Config::getSystemValue('dbtableprefix').'/');
$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..6d17f8f40f8 100644
--- a/lib/private/db/pgsqltools.php
+++ b/lib/private/db/pgsqltools.php
@@ -21,6 +21,9 @@ class PgSqlTools {
*/
public function resynchronizeDatabaseSequences(Connection $conn) {
$databaseName = $conn->getDatabase();
+ $conn->getConfiguration()->
+ setFilterSchemaAssetsExpression('/^'.\OCP\Config::getSystemValue('dbtableprefix').'/');
+
foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
$sequenceName = $sequence->getName();
$sqlInfo = 'SELECT table_schema, table_name, column_name