Browse files

Fixing execute() $this->_result was not instance of PDOStatement afte…

…r queries other then SELECT, lastAffected() now returns correct integer
  • Loading branch information...
1 parent a7404e8 commit 2890e6659ecb6f315c82253e6985ece0e6dc489d @ceeram ceeram committed Oct 20, 2011
View
4 lib/Cake/Model/Datasource/DboSource.php
@@ -440,7 +440,9 @@ protected function _execute($sql, $params = array(), $prepareOptions = array())
}
if (!$query->columnCount()) {
$query->closeCursor();
- return true;
+ if (!$query->rowCount()) {
+ return true;
+ }
}
return $query;
} catch (PDOException $e) {
View
26 lib/Cake/Test/Case/Model/Datasource/Database/MysqlTest.php
@@ -225,6 +225,30 @@ public function testTinyintCasting() {
$this->Dbo->rawQuery('DROP TABLE ' . $this->Dbo->fullTableName($tableName));
}
+/**
+ * testLastAffected method
+ *
+ *
+ * @return void
+ */
+ public function testLastAffected() {
+ $this->Dbo->cacheSources = false;
+ $tableName = 'tinyint_' . uniqid();
+ $this->Dbo->rawQuery('CREATE TABLE ' . $this->Dbo->fullTableName($tableName) . ' (id int(11) AUTO_INCREMENT, bool tinyint(1), small_int tinyint(2), primary key(id));');
+
+ $this->model = new CakeTestModel(array(
+ 'name' => 'Tinyint', 'table' => $tableName, 'ds' => 'test'
+ ));
+
+ $this->assertTrue((bool)$this->model->save(array('bool' => 5, 'small_int' => 5)));
+ $this->assertEqual(1, $this->model->find('count'));
+ $this->model->deleteAll(true);
+ $result = $this->Dbo->lastAffected();
+ $this->assertEqual(1, $result);
+ $this->assertEqual(0, $this->model->find('count'));
+
+ $this->Dbo->rawQuery('DROP TABLE ' . $this->Dbo->fullTableName($tableName));
+ }
/**
* testIndexDetection method
@@ -2554,7 +2578,7 @@ public function testSchema() {
*/
public function testDropSchemaNoSchema() {
$result = $this->Dbo->dropSchema(null);
- }
+ }
/**
* testOrderParsing method

0 comments on commit 2890e66

Please sign in to comment.