summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortianhe1986 <w1s2j3229@163.com>2017-01-17 08:07:09 +0100
committertianhe1986 <w1s2j3229@163.com>2017-01-17 08:07:09 +0100
commit1f4df78b5fae3251b9c0c5617946ab959cad4cd2 (patch)
tree60b29f35a015781e719aab28caf42657d3e8a68a
parentf41b4e33d1d5fe8d17b3d572b9676b0fdfedc8f7 (diff)
Add aliased tables cache.
Signed-off-by: tianhe1986 <w1s2j3229@163.com>
-rw-r--r--system/database/DB_query_builder.php40
1 files changed, 23 insertions, 17 deletions
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index ab19d97a2..407b0d5d8 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -215,6 +215,13 @@ abstract class CI_DB_query_builder extends CI_DB_driver {
protected $qb_cache_join = array();
/**
+ * QB Cache aliased tables list data
+ *
+ * @var array
+ */
+ protected $qb_cache_aliased_tables = array();
+
+ /**
* QB Cache WHERE data
*
* @var array
@@ -2284,6 +2291,11 @@ abstract class CI_DB_query_builder extends CI_DB_driver {
if ( ! in_array($table, $this->qb_aliased_tables))
{
$this->qb_aliased_tables[] = $table;
+ if ($this->qb_caching === TRUE && ! in_array($table, $this->qb_cache_aliased_tables))
+ {
+ $this->qb_cache_aliased_tables[] = $table;
+ $this->qb_cache_exists[] = 'aliased_tables';
+ }
}
}
}
@@ -2616,16 +2628,17 @@ abstract class CI_DB_query_builder extends CI_DB_driver {
public function flush_cache()
{
$this->_reset_run(array(
- 'qb_cache_select' => array(),
- 'qb_cache_from' => array(),
- 'qb_cache_join' => array(),
- 'qb_cache_where' => array(),
- 'qb_cache_groupby' => array(),
- 'qb_cache_having' => array(),
- 'qb_cache_orderby' => array(),
- 'qb_cache_set' => array(),
- 'qb_cache_exists' => array(),
- 'qb_cache_no_escape' => array()
+ 'qb_cache_select' => array(),
+ 'qb_cache_from' => array(),
+ 'qb_cache_join' => array(),
+ 'qb_cache_aliased_tables' => array(),
+ 'qb_cache_where' => array(),
+ 'qb_cache_groupby' => array(),
+ 'qb_cache_having' => array(),
+ 'qb_cache_orderby' => array(),
+ 'qb_cache_set' => array(),
+ 'qb_cache_exists' => array(),
+ 'qb_cache_no_escape' => array()
));
return $this;
@@ -2676,13 +2689,6 @@ abstract class CI_DB_query_builder extends CI_DB_driver {
$this->qb_no_escape = $qb_no_escape;
}
}
-
- // If we are "protecting identifiers" we need to examine the "from"
- // portion of the query to determine if there are any aliases
- if ($this->_protect_identifiers === TRUE && count($this->qb_cache_from) > 0)
- {
- $this->_track_aliases($this->qb_from);
- }
}
// --------------------------------------------------------------------