From 31be2519f666f317c4cb7c8be12407ff5ed5a529 Mon Sep 17 00:00:00 2001 From: beberlei Date: Mon, 30 Nov 2009 21:16:29 +0000 Subject: [PATCH] [2.0] DDC-169 - Fix build, Postgres, Oracle and Sqlite made some minor troubles with regards to sequences. --- lib/Doctrine/DBAL/Platforms/OraclePlatform.php | 3 ++- lib/Doctrine/DBAL/Platforms/SqlitePlatform.php | 5 +++++ lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php | 3 ++- .../Functional/Schema/PostgreSqlSchemaManagerTest.php | 7 ------- .../DBAL/Functional/Schema/SqliteSchemaManagerTest.php | 8 -------- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/lib/Doctrine/DBAL/Platforms/OraclePlatform.php b/lib/Doctrine/DBAL/Platforms/OraclePlatform.php index fcbc140cc..cf765c08d 100644 --- a/lib/Doctrine/DBAL/Platforms/OraclePlatform.php +++ b/lib/Doctrine/DBAL/Platforms/OraclePlatform.php @@ -263,7 +263,8 @@ class OraclePlatform extends AbstractPlatform public function getListSequencesSql($database) { - return 'SELECT sequence_name, min_value, increment_by FROM sys.user_sequences'; + return "SELECT sequence_name, min_value, increment_by FROM sys.all_sequences ". + "WHERE SEQUENCE_OWNER = '".strtoupper($database)."'"; } public function getCreateTableSql($table, array $columns, array $options = array()) diff --git a/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php b/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php index 2f63c430d..cc70a1d10 100644 --- a/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php +++ b/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php @@ -444,6 +444,11 @@ class SqlitePlatform extends AbstractPlatform return false; } + public function supportsSequences() + { + return false; + } + /** * Get the platform name for this instance * diff --git a/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php b/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php index 0f384d480..9ce1ef7ec 100644 --- a/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php +++ b/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php @@ -153,7 +153,8 @@ class PostgreSqlSchemaManager extends AbstractSchemaManager protected function _getPortableSequenceDefinition($sequence) { - return $sequence['relname']; + $data = $this->_conn->fetchAll('SELECT start_value, increment_by FROM '.$sequence['relname']); + return new Sequence($sequence['relname'], $data[0]['increment_by'], $data[0]['start_value']); } protected function _getPortableTableConstraintDefinition($tableConstraint) diff --git a/tests/Doctrine/Tests/DBAL/Functional/Schema/PostgreSqlSchemaManagerTest.php b/tests/Doctrine/Tests/DBAL/Functional/Schema/PostgreSqlSchemaManagerTest.php index 61b1e45b3..be50bed4e 100644 --- a/tests/Doctrine/Tests/DBAL/Functional/Schema/PostgreSqlSchemaManagerTest.php +++ b/tests/Doctrine/Tests/DBAL/Functional/Schema/PostgreSqlSchemaManagerTest.php @@ -8,13 +8,6 @@ require_once __DIR__ . '/../../../TestInit.php'; class PostgreSqlSchemaManagerTest extends SchemaManagerFunctionalTestCase { - public function testListSequences() - { - $this->createTestTable('list_sequences_test'); - $sequences = $this->_sm->listSequences(); - $this->assertEquals(true, in_array('list_sequences_test_id_seq', $sequences)); - } - public function testListTableConstraints() { $this->createTestTable('list_table_constraints_test'); diff --git a/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php b/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php index c2197cb0f..cbabe2ff2 100644 --- a/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php +++ b/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php @@ -36,14 +36,6 @@ class SqliteSchemaManagerTest extends SchemaManagerFunctionalTestCase $this->_sm->listTriggers(); } - public function testListSequences() - { - $this->createTestTable('list_sequences_test'); - $sequences = $this->_sm->listSequences(); - $this->assertEquals('list_sequences_test', $sequences[0]['name']); - $this->assertEquals('sqlite_sequence', $sequences[1]['name']); - } - public function testListTableConstraints() { // TODO: Implement support for constraints/foreign keys to be specified