/** * @group DBAL-204 */ public function testCleanupForeignKeysDifferentOrder() { $config = new SchemaConfig(); $config->setName("test"); $schema = new Schema(array(), array(), $config); $testTable = $schema->createTable("test.test"); $testTable->addColumn('id', 'integer'); $fooTable = $schema->createTable("foo.bar"); $fooTable->addColumn('id', 'integer'); $testTable->addForeignKeyConstraint("foo.bar", array("id"), array("id")); $schema->visit(new RemoveNamespacedAssets()); $sql = $schema->toSql(new MySqlPlatform()); $this->assertEquals(1, count($sql), "Just one CREATE TABLE statement, no foreign key and table to foo.bar"); }
/** * @group DBAL-204 */ public function testFqnSchemaComparisionNoSchemaSame() { $config = new SchemaConfig(); $config->setName("foo"); $oldSchema = new Schema(array(), array(), $config); $oldSchema->createTable('bar'); $newSchema = new Schema(); $newSchema->createTable('bar'); $c = new Comparator(); $diff = $c->compare($oldSchema, $newSchema); $this->assertEquals(new SchemaDiff(), $c->compare($oldSchema, $newSchema)); }
/** * Creates the configuration for this schema. * * @return \Doctrine\DBAL\Schema\SchemaConfig */ public function createSchemaConfig() { $schemaConfig = new SchemaConfig(); $schemaConfig->setMaxIdentifierLength($this->_platform->getMaxIdentifierLength()); $searchPaths = $this->getSchemaSearchPaths(); if (isset($searchPaths[0])) { $schemaConfig->setName($searchPaths[0]); } $params = $this->_conn->getParams(); if (isset($params['defaultTableOptions'])) { $schemaConfig->setDefaultTableOptions($params['defaultTableOptions']); } return $schemaConfig; }
/** * Check the migration of a table on a copy so we can detect errors before messing with the real table * * @param \Doctrine\DBAL\Schema\Table $table * @throws \OC\DB\MigrationException */ protected function checkTableMigrate(Table $table) { $name = $table->getName(); $tmpName = $this->generateTemporaryTableName($name); $this->copyTable($name, $tmpName); //create the migration schema for the temporary table $tmpTable = $this->renameTableSchema($table, $tmpName); $schemaConfig = new SchemaConfig(); $schemaConfig->setName($this->connection->getDatabase()); $schema = new Schema(array($tmpTable), array(), $schemaConfig); try { $this->applySchema($schema); $this->dropTable($tmpName); } catch (DBALException $e) { // pgsql needs to commit it's failed transaction before doing anything else if ($this->connection->isTransactionActive()) { $this->connection->commit(); } $this->dropTable($tmpName); throw new MigrationException($table->getName(), $e->getMessage()); } }
private function getSchemaConfig() { $config = new SchemaConfig(); $config->setName($this->connection->getDatabase()); return $config; }
/** * Create the configuration for this schema. * * @return SchemaConfig */ public function createSchemaConfig() { $schemaConfig = new SchemaConfig(); $schemaConfig->setMaxIdentifierLength($this->_platform->getMaxIdentifierLength()); $searchPaths = $this->getSchemaSearchPaths(); if (isset($searchPaths[0])) { $schemaConfig->setName($searchPaths[0]); } return $schemaConfig; }
/** * @group DBAL-204 */ public function testFqnSchemaComparisionNoSchemaSame() { $config = new SchemaConfig(); $config->setName("foo"); $oldSchema = new Schema(array(), array(), $config); $oldSchema->createTable('bar'); $newSchema = new Schema(); $newSchema->createTable('bar'); $expected = new SchemaDiff(); $expected->fromSchema = $oldSchema; $this->assertEquals($expected, Comparator::compareSchemas($oldSchema, $newSchema)); }