From 5f1165698b6f1f94f43571283d9644394ec03315 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 19 Jan 2009 05:12:28 +0000 Subject: Change ORM and the MySql driver to clear static caches using clear_cache(). This supercedes the TEST_MODE checks. Upstream ticket: http://dev.kohanaphp.com/ticket/1062 --- kohana/libraries/drivers/Database/Mysql.php | 34 +++++++++++++++++++---------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'kohana/libraries/drivers/Database/Mysql.php') diff --git a/kohana/libraries/drivers/Database/Mysql.php b/kohana/libraries/drivers/Database/Mysql.php index 461bda90..c24dfec3 100644 --- a/kohana/libraries/drivers/Database/Mysql.php +++ b/kohana/libraries/drivers/Database/Mysql.php @@ -21,6 +21,12 @@ class Database_Mysql_Driver extends Database_Driver { */ protected $db_config; + /** + * Performance caches. + */ + private $tables_cache; + private $fields_cache; + /** * Sets the config for the class. * @@ -29,6 +35,8 @@ class Database_Mysql_Driver extends Database_Driver { public function __construct($config) { $this->db_config = $config; + $this->tables_cache = array(); + $this->fields_cache = array(); Kohana::log('debug', 'MySQL Database Driver Initialized'); } @@ -262,11 +270,7 @@ class Database_Mysql_Driver extends Database_Driver { public function list_tables(Database $db) { - if (!TEST_MODE) { - static $tables; - } else { - $tables = array(); - } + $tables =& $this->tables_cache; if (empty($tables) AND $query = $db->query('SHOW TABLES FROM '.$this->escape_table($this->db_config['connection']['database']))) { @@ -286,11 +290,7 @@ class Database_Mysql_Driver extends Database_Driver { public function list_fields($table) { - if (!TEST_MODE) { - static $tables; - } else { - $tables = array(); - } + $tables =& $this->fields_cache; if (empty($tables[$table])) { @@ -337,6 +337,18 @@ class Database_Mysql_Driver extends Database_Driver { return $columns; } + /** + * Clears the internal query cache. + * + * @param string SQL query + */ + public function clear_cache($sql = NULL) + { + parent::clear_cache($sql); + $this->tables_cache = array(); + $this->fields_cache = array(); + } + } // End Database_Mysql_Driver Class /** @@ -497,4 +509,4 @@ class Mysql_Result extends Database_Result { } } -} // End Mysql_Result Class \ No newline at end of file +} // End Mysql_Result Class -- cgit v1.2.3