DDC-1172 - Handle sequence dropping in SchemaTool.
This commit is contained in:
parent
ec748b2a16
commit
42c5382a03
@ -620,6 +620,24 @@ class SchemaTool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->_platform->supportsSequences()) {
|
||||||
|
foreach ($schema->getSequences() AS $sequence) {
|
||||||
|
$visitor->acceptSequence($sequence);
|
||||||
|
}
|
||||||
|
foreach ($schema->getTables() AS $table) {
|
||||||
|
/* @var $sequence Table */
|
||||||
|
if ($table->hasPrimaryKey()) {
|
||||||
|
$columns = $table->getPrimaryKey()->getColumns();
|
||||||
|
if (count($columns) == 1) {
|
||||||
|
$checkSequence = $table->getName() . "_" . $columns[0] . "_seq";
|
||||||
|
if ($fullSchema->hasSequence($checkSequence)) {
|
||||||
|
$visitor->acceptSequence($fullSchema->getSequence($checkSequence));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $visitor->getQueries();
|
return $visitor->getQueries();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,4 +80,25 @@ class PostgreSqlSchemaToolTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
$this->assertEquals("CREATE TABLE boolean_model (id INT NOT NULL, booleanField BOOLEAN NOT NULL, PRIMARY KEY(id))", $sql[0]);
|
$this->assertEquals("CREATE TABLE boolean_model (id INT NOT NULL, booleanField BOOLEAN NOT NULL, PRIMARY KEY(id))", $sql[0]);
|
||||||
$this->assertEquals("CREATE SEQUENCE boolean_model_id_seq INCREMENT BY 1 MINVALUE 1 START 1", $sql[1]);
|
$this->assertEquals("CREATE SEQUENCE boolean_model_id_seq INCREMENT BY 1 MINVALUE 1 START 1", $sql[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetDropSchemaSql()
|
||||||
|
{
|
||||||
|
$classes = array(
|
||||||
|
$this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsAddress'),
|
||||||
|
$this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsUser'),
|
||||||
|
$this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsPhonenumber'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$tool = new SchemaTool($this->_em);
|
||||||
|
$sql = $tool->getDropSchemaSQL($classes);
|
||||||
|
|
||||||
|
$this->assertEquals(13, count($sql));
|
||||||
|
$dropSequenceSQLs = 0;
|
||||||
|
foreach ($sql AS $stmt) {
|
||||||
|
if (strpos($stmt, "DROP SEQUENCE") === 0) {
|
||||||
|
$dropSequenceSQLs++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->assertEquals(4, $dropSequenceSQLs, "Expect 4 sequences to be dropped.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user