From 875c18b115e649dae3a633d197ec8e2c156bbcb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 10 Jun 2013 11:07:41 +0200 Subject: [PATCH] fix fetchRow checks to also work with MDB2 --- lib/files/cache/cache.php | 8 +++++++- tests/lib/db.php | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php index 6c2ef71098b..5b2fcfaadf9 100644 --- a/lib/files/cache/cache.php +++ b/lib/files/cache/cache.php @@ -96,7 +96,7 @@ class Cache { * get the stored metadata of a file or folder * * @param string/int $file - * @return array + * @return array | false */ public function get($file) { if (is_string($file) or $file == '') { @@ -115,6 +115,12 @@ class Cache { $result = $query->execute($params); $data = $result->fetchRow(); + //FIXME hide this HACK in the next database layer, or just use doctrine and get rid of MDB2 and PDO + //PDO returns false, MDB2 returns null, oracle always uses MDB2, so convert null to false + if ($data === null) { + $data = false; + } + //merge partial data if (!$data and is_string($file)) { if (isset($this->partial[$file])) { diff --git a/tests/lib/db.php b/tests/lib/db.php index 7b2a5e309f0..df390929978 100644 --- a/tests/lib/db.php +++ b/tests/lib/db.php @@ -37,7 +37,7 @@ class Test_DB extends PHPUnit_Framework_TestCase { $result = $query->execute(array('uri_1')); $this->assertTrue((bool)$result); $row = $result->fetchRow(); - $this->assertFalse($row); + $this->assertFalse((bool)$row); //PDO returns false, MDB2 returns null $query = OC_DB::prepare('INSERT INTO `*PREFIX*'.$this->table2.'` (`fullname`,`uri`) VALUES (?,?)'); $result = $query->execute(array('fullname test', 'uri_1')); $this->assertTrue((bool)$result); @@ -48,7 +48,7 @@ class Test_DB extends PHPUnit_Framework_TestCase { $this->assertArrayHasKey('fullname', $row); $this->assertEquals($row['fullname'], 'fullname test'); $row = $result->fetchRow(); - $this->assertFalse($row); + $this->assertFalse((bool)$row); //PDO returns false, MDB2 returns null } public function testNOW() {