mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
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.
This commit is contained in:
commit
b5fe1242e9
3 changed files with 47 additions and 8 deletions
12
phpBB/includes/cache/driver/interface.php
vendored
12
phpBB/includes/cache/driver/interface.php
vendored
|
@ -63,12 +63,12 @@ interface phpbb_cache_driver_interface
|
||||||
public function destroy($var_name, $table = '');
|
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);
|
public function _exists($var_name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load cached sql query
|
* Load result of an SQL query from cache.
|
||||||
*
|
*
|
||||||
* @param string $query SQL query
|
* @param string $query SQL query
|
||||||
*
|
*
|
||||||
|
@ -79,7 +79,11 @@ interface phpbb_cache_driver_interface
|
||||||
public function sql_load($query);
|
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 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
|
* @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);
|
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
|
* @param int $query_id
|
||||||
* @return bool
|
* @return bool
|
||||||
|
|
2
phpBB/includes/cache/driver/memory.php
vendored
2
phpBB/includes/cache/driver/memory.php
vendored
|
@ -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))
|
if (!preg_match('/FROM \\(?(`?\\w+`?(?: \\w+)?(?:, ?`?\\w+`?(?: \\w+)?)*)\\)?/', $query, $regs))
|
||||||
{
|
{
|
||||||
// Bail out if the match fails.
|
// Bail out if the match fails.
|
||||||
return;
|
return $query_result;
|
||||||
}
|
}
|
||||||
$tables = array_map('trim', explode(',', $regs[1]));
|
$tables = array_map('trim', explode(',', $regs[1]));
|
||||||
|
|
||||||
|
|
41
tests/cache/cache_test.php
vendored
41
tests/cache/cache_test.php
vendored
|
@ -89,20 +89,55 @@ class phpbb_cache_test extends phpbb_database_test_case
|
||||||
WHERE config_name = 'foo'";
|
WHERE config_name = 'foo'";
|
||||||
$result = $db->sql_query($sql, 300);
|
$result = $db->sql_query($sql, 300);
|
||||||
$first_result = $db->sql_fetchrow($result);
|
$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');
|
$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
|
$sql = "SELECT * FROM phpbb_config
|
||||||
WHERE config_name = 'foo'";
|
WHERE config_name = 'foo'";
|
||||||
$result = $db->sql_query($sql, 300);
|
$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
|
$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);
|
$result = $db->sql_query($sql, 300);
|
||||||
|
|
||||||
$this->assertNotEquals($first_result, $db->sql_fetchrow($result));
|
$this->assertSame(false, $db->sql_fetchrow($result));
|
||||||
|
|
||||||
$db->sql_close();
|
$db->sql_close();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue