From ffa7ff54a8aa8b434ee66d0205dd04bcff60d6e9 Mon Sep 17 00:00:00 2001 From: zYne Date: Sun, 21 Jan 2007 22:10:45 +0000 Subject: [PATCH] Fixed pgsql and sqlite sequence handlers and test cases --- lib/Doctrine/Sequence/Pgsql.php | 2 +- lib/Doctrine/Sequence/Sqlite.php | 7 +++---- tests/DriverTestCase.php | 9 +++++++-- tests/Query/AggregateValueTestCase.php | 4 ++++ tests/Sequence/PgsqlTestCase.php | 4 ++-- tests/Sequence/SqliteTestCase.php | 2 ++ 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/Doctrine/Sequence/Pgsql.php b/lib/Doctrine/Sequence/Pgsql.php index aec46cd75..da6069126 100644 --- a/lib/Doctrine/Sequence/Pgsql.php +++ b/lib/Doctrine/Sequence/Pgsql.php @@ -69,7 +69,7 @@ class Doctrine_Sequence_Pgsql extends Doctrine_Sequence */ public function lastInsertId($table = null, $field = null) { - $seq = $table.(empty($field) ? '' : '_'.$field); + $seqName = $table . (empty($field) ? '' : '_' . $field); $sequenceName = $this->conn->quoteIdentifier($this->conn->getSequenceName($seqName), true); return (int) $this->conn->fetchOne("SELECT CURRVAL('" . $sequenceName . "')"); diff --git a/lib/Doctrine/Sequence/Sqlite.php b/lib/Doctrine/Sequence/Sqlite.php index 64dd47491..ab728931e 100644 --- a/lib/Doctrine/Sequence/Sqlite.php +++ b/lib/Doctrine/Sequence/Sqlite.php @@ -67,16 +67,15 @@ class Doctrine_Sequence_Sqlite extends Doctrine_Sequence } } - $value = $this->conn->getDbh()->lastInsertID(); + $value = $this->conn->getDbh()->lastInsertId(); if (is_numeric($value)) { $query = 'DELETE FROM ' . $sequenceName . ' WHERE ' . $seqcolName . ' < ' . $value; + $this->conn->exec($query); /** TODO: is the following needed ? - if (PEAR::isError($result)) { - $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name; - } + $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name; */ } return $value; diff --git a/tests/DriverTestCase.php b/tests/DriverTestCase.php index 9adc6d943..33e55fb86 100644 --- a/tests/DriverTestCase.php +++ b/tests/DriverTestCase.php @@ -68,8 +68,13 @@ class AdapterMock implements Doctrine_Adapter_Interface { return 0; } - public function forceLastInsertIdFail() { - $this->lastInsertIdFail = true; + public function forceLastInsertIdFail($fail = true) + { + if ($fail) { + $this->lastInsertIdFail = true; + } else { + $this->lastInsertIdFail = false; + } } public function lastInsertId() { diff --git a/tests/Query/AggregateValueTestCase.php b/tests/Query/AggregateValueTestCase.php index 8042bb6a6..3dc3cf9cd 100644 --- a/tests/Query/AggregateValueTestCase.php +++ b/tests/Query/AggregateValueTestCase.php @@ -127,6 +127,10 @@ class Doctrine_Query_AggregateValue_TestCase extends Doctrine_UnitTestCase $users = $q->execute(); $this->assertEqual($users->count(), 1); + } + public function testAggregateValueMappingSupportsLeftJoins3() + { + } public function testAggregateValueMappingSupportsInnerJoins() { diff --git a/tests/Sequence/PgsqlTestCase.php b/tests/Sequence/PgsqlTestCase.php index bb78c73f0..2d355f91f 100644 --- a/tests/Sequence/PgsqlTestCase.php +++ b/tests/Sequence/PgsqlTestCase.php @@ -34,7 +34,7 @@ class Doctrine_Sequence_Pgsql_TestCase extends Doctrine_UnitTestCase { public function testCurrIdExecutesSql() { $this->sequence->currId('user'); - $q = "SELECT (last_number-1) FROM user_sequences WHERE sequence_name='user_seq' OR sequence_name='USER_SEQ'"; + $q = "SELECT last_value FROM user_seq"; $this->assertEqual($this->adapter->pop(), $q); } @@ -49,6 +49,6 @@ class Doctrine_Sequence_Pgsql_TestCase extends Doctrine_UnitTestCase { { $this->sequence->lastInsertId('user'); - $this->assertEqual($this->adapter->pop(), 'SELECT user_seq.currval'); + $this->assertEqual($this->adapter->pop(), "SELECT CURRVAL('user_seq')"); } } diff --git a/tests/Sequence/SqliteTestCase.php b/tests/Sequence/SqliteTestCase.php index b8c270dae..792f3a831 100644 --- a/tests/Sequence/SqliteTestCase.php +++ b/tests/Sequence/SqliteTestCase.php @@ -34,6 +34,8 @@ class Doctrine_Sequence_Sqlite_TestCase extends Doctrine_UnitTestCase { public function testCurrIdExecutesSql() { + $this->adapter->forceLastInsertIdFail(false); + $this->sequence->currId('user'); $this->assertEqual($this->adapter->pop(), 'SELECT MAX(id) FROM user_seq');