From 35550e8d9a7239c66457fc1533462fd5949d9d2d Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 14 Mar 2014 16:28:56 +0100 Subject: [PATCH] Fix migrator for postgres --- lib/private/db/migrator.php | 4 +++- tests/lib/db/migrator.php | 10 +++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/private/db/migrator.php b/lib/private/db/migrator.php index 63fddd9c28a..3f32e8c603e 100644 --- a/lib/private/db/migrator.php +++ b/lib/private/db/migrator.php @@ -81,6 +81,8 @@ class Migrator { $this->applySchema($schema); $this->dropTable($tmpName); } catch (DBALException $e) { + // pgsql needs to commit it's failed transaction before doing anything else + $this->connection->commit(); $this->dropTable($tmpName); throw new MigrationException($table->getName(), $e->getMessage()); } @@ -153,7 +155,7 @@ class Migrator { $quotedSource = $this->connection->quoteIdentifier($sourceName); $quotedTarget = $this->connection->quoteIdentifier($targetName); - $this->connection->exec('CREATE TABLE ' . $quotedTarget . ' LIKE ' . $quotedSource); + $this->connection->exec('CREATE TABLE ' . $quotedTarget . ' (LIKE ' . $quotedSource . ')'); $this->connection->exec('INSERT INTO ' . $quotedTarget . ' SELECT * FROM ' . $quotedSource); } diff --git a/tests/lib/db/migrator.php b/tests/lib/db/migrator.php index 258d6451847..88f6d7dcc63 100644 --- a/tests/lib/db/migrator.php +++ b/tests/lib/db/migrator.php @@ -20,25 +20,21 @@ class Migrator extends \PHPUnit_Framework_TestCase { private $tableName; - private $fullTableName; - public function setUp() { $this->tableName = 'test_' . uniqid(); $this->connection = \OC_DB::getConnection(); if ($this->connection->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) { $this->markTestSkipped('Migration tests dont function on sqlite since sqlite doesnt give an error on existing duplicate data'); - } else { - $this->fullTableName = $this->connection->getDatabase() . '.' . $this->tableName; } } public function tearDown() { - $this->connection->exec('DROP TABLE ' . $this->fullTableName); + $this->connection->exec('DROP TABLE ' . $this->tableName); } private function getInitialSchema() { $schema = new Schema(array(), array(), $this->getSchemaConfig()); - $table = $schema->createTable($this->fullTableName); + $table = $schema->createTable($this->tableName); $table->addColumn('id', 'integer'); $table->addColumn('name', 'string'); $table->addIndex(array('id'), $this->tableName . '_id'); @@ -47,7 +43,7 @@ class Migrator extends \PHPUnit_Framework_TestCase { private function getNewSchema() { $schema = new Schema(array(), array(), $this->getSchemaConfig()); - $table = $schema->createTable($this->fullTableName); + $table = $schema->createTable($this->tableName); $table->addColumn('id', 'integer'); $table->addColumn('name', 'string'); $table->addUniqueIndex(array('id'), $this->tableName . '_id'); -- 2.39.5