aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2012-12-01 00:35:16 +0100
committerAndreas Fischer <bantu@phpbb.com>2012-12-01 00:35:16 +0100
commitb5fe1242e9d7c539efb0a706c6000ebca46aac70 (patch)
treebfd39d8327b7cb5caa23759ef45b58565ea766fd
parent3c4a0c8577efa67da3eccbbb7a247b2861d7041b (diff)
parent0c06ac466f61cdab1c647cec23ea66ef70b2ad7e (diff)
downloadforums-b5fe1242e9d7c539efb0a706c6000ebca46aac70.tar
forums-b5fe1242e9d7c539efb0a706c6000ebca46aac70.tar.gz
forums-b5fe1242e9d7c539efb0a706c6000ebca46aac70.tar.bz2
forums-b5fe1242e9d7c539efb0a706c6000ebca46aac70.tar.xz
forums-b5fe1242e9d7c539efb0a706c6000ebca46aac70.zip
Merge remote-tracking branch 'p/ticket/10875' into ticket/10875
* p/ticket/10875: [ticket/10875] Test for null cache driver and sql cache. [ticket/10875] Revise sql cache test. [ticket/10875] Must return query result on failure. [ticket/10875] More documentation. [ticket/10875] Spelling fix.
-rw-r--r--phpBB/includes/cache/driver/interface.php12
-rw-r--r--phpBB/includes/cache/driver/memory.php2
-rw-r--r--tests/cache/cache_test.php41
3 files changed, 47 insertions, 8 deletions
diff --git a/phpBB/includes/cache/driver/interface.php b/phpBB/includes/cache/driver/interface.php
index 6adc95a86a..d403bbcd71 100644
--- a/phpBB/includes/cache/driver/interface.php
+++ b/phpBB/includes/cache/driver/interface.php
@@ -63,12 +63,12 @@ interface phpbb_cache_driver_interface
public function destroy($var_name, $table = '');
/**
- * Check if a given cache entry exist
+ * Check if a given cache entry exists
*/
public function _exists($var_name);
/**
- * Load cached sql query
+ * Load result of an SQL query from cache.
*
* @param string $query SQL query
*
@@ -79,7 +79,11 @@ interface phpbb_cache_driver_interface
public function sql_load($query);
/**
- * Save sql query
+ * Save result of an SQL query in cache.
+ *
+ * In persistent cache stores, this function stores the query
+ * result to persistent storage. In other words, there is no need
+ * to call save() afterwards.
*
* @param string $query SQL query, should be used for generating storage key
* @param mixed $query_result The result from dbal::sql_query, to be passed to
@@ -94,7 +98,7 @@ interface phpbb_cache_driver_interface
public function sql_save($query, $query_result, $ttl);
/**
- * Ceck if a given sql query exist in cache
+ * Check if result for a given SQL query exists in cache.
*
* @param int $query_id
* @return bool
diff --git a/phpBB/includes/cache/driver/memory.php b/phpBB/includes/cache/driver/memory.php
index bc08494c0c..e4da5767cf 100644
--- a/phpBB/includes/cache/driver/memory.php
+++ b/phpBB/includes/cache/driver/memory.php
@@ -294,7 +294,7 @@ abstract class phpbb_cache_driver_memory extends phpbb_cache_driver_base
if (!preg_match('/FROM \\(?(`?\\w+`?(?: \\w+)?(?:, ?`?\\w+`?(?: \\w+)?)*)\\)?/', $query, $regs))
{
// Bail out if the match fails.
- return;
+ return $query_result;
}
$tables = array_map('trim', explode(',', $regs[1]));
diff --git a/tests/cache/cache_test.php b/tests/cache/cache_test.php
index c5f5fac88c..c904aa6c41 100644
--- a/tests/cache/cache_test.php
+++ b/tests/cache/cache_test.php
@@ -89,20 +89,55 @@ class phpbb_cache_test extends phpbb_database_test_case
WHERE config_name = 'foo'";
$result = $db->sql_query($sql, 300);
$first_result = $db->sql_fetchrow($result);
+ $expected = array('config_name' => 'foo', 'config_value' => '23', 'is_dynamic' => 0);
+ $this->assertEquals($expected, $first_result);
$this->assertFileExists($this->cache_dir . 'sql_' . md5(preg_replace('/[\n\r\s\t]+/', ' ', $sql)) . '.php');
+ $sql = "DELETE FROM phpbb_config";
+ $result = $db->sql_query($sql);
+
$sql = "SELECT * FROM phpbb_config
WHERE config_name = 'foo'";
$result = $db->sql_query($sql, 300);
- $this->assertEquals($first_result, $db->sql_fetchrow($result));
+ $this->assertEquals($expected, $db->sql_fetchrow($result));
$sql = "SELECT * FROM phpbb_config
- WHERE config_name = 'bar'";
+ WHERE config_name = 'foo'";
+ $result = $db->sql_query($sql);
+
+ $no_cache_result = $db->sql_fetchrow($result);
+ $this->assertSame(false, $no_cache_result);
+
+ $db->sql_close();
+ }
+
+ public function test_null_cache_sql()
+ {
+ $driver = new phpbb_cache_driver_null($this->cache_dir);
+
+ global $db, $cache;
+ $db = $this->new_dbal();
+ $cache = new phpbb_cache_service($driver);
+
+ $sql = "SELECT * FROM phpbb_config
+ WHERE config_name = 'foo'";
+ $result = $db->sql_query($sql, 300);
+ $first_result = $db->sql_fetchrow($result);
+ $expected = array('config_name' => 'foo', 'config_value' => '23', 'is_dynamic' => 0);
+ $this->assertEquals($expected, $first_result);
+
+ $sql = "DELETE FROM phpbb_config";
+ $result = $db->sql_query($sql);
+
+ // As null cache driver does not actually cache,
+ // this should return no results
+ $sql = "SELECT * FROM phpbb_config
+ WHERE config_name = 'foo'";
$result = $db->sql_query($sql, 300);
- $this->assertNotEquals($first_result, $db->sql_fetchrow($result));
+ $this->assertSame(false, $db->sql_fetchrow($result));
$db->sql_close();
}