diff options
author | Andreas Fischer <bantu@phpbb.com> | 2012-12-01 00:35:16 +0100 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2012-12-01 00:35:16 +0100 |
commit | b5fe1242e9d7c539efb0a706c6000ebca46aac70 (patch) | |
tree | bfd39d8327b7cb5caa23759ef45b58565ea766fd | |
parent | 3c4a0c8577efa67da3eccbbb7a247b2861d7041b (diff) | |
parent | 0c06ac466f61cdab1c647cec23ea66ef70b2ad7e (diff) | |
download | forums-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.php | 12 | ||||
-rw-r--r-- | phpBB/includes/cache/driver/memory.php | 2 | ||||
-rw-r--r-- | tests/cache/cache_test.php | 41 |
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(); } |