summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Andreev <narf@devilix.net>2013-11-12 14:36:53 +0100
committerAndrey Andreev <narf@devilix.net>2013-11-12 14:36:53 +0100
commit81b21ed46b8cc5cdbe8431a7e30161b2cf80be7c (patch)
treefc3b8af618e7b96b498911e3e324158c8abcf7d5
parentc761a206def7714d18623d46b05adc2bbeedce21 (diff)
parent17a0528c23c4d6cf95b03299fbfe2ff789b82249 (diff)
Merge pull request #2719 from GDmac/develop
Fix #2406 query builder cache
-rw-r--r--system/database/DB_query_builder.php13
-rw-r--r--user_guide_src/source/database/query_builder.rst4
2 files changed, 9 insertions, 8 deletions
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index a73460394..fb8514f5c 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -2557,18 +2557,19 @@ abstract class CI_DB_query_builder extends CI_DB_driver {
return;
}
- foreach ($this->qb_cache_exists as $val)
+ foreach (array_unique($this->qb_cache_exists) as $val) // select, from, etc.
{
$qb_variable = 'qb_'.$val;
$qb_cache_var = 'qb_cache_'.$val;
- if (count($this->$qb_cache_var) > 0)
+ $qb_new = $this->$qb_cache_var;
+
+ foreach ($this->$qb_variable as &$qb_var)
{
- foreach ($this->$qb_cache_var as &$cache_var)
- {
- in_array($cache_var, $this->$qb_variable, TRUE) OR $this->{$qb_variable}[] = $cache_var;
- }
+ in_array($qb_var, $qb_new, TRUE) OR $qb_new[] = $qb_var;
}
+
+ $this->$qb_variable = $qb_new;
}
// If we are "protecting identifiers" we need to examine the "from"
diff --git a/user_guide_src/source/database/query_builder.rst b/user_guide_src/source/database/query_builder.rst
index 65609c1cb..480067407 100644
--- a/user_guide_src/source/database/query_builder.rst
+++ b/user_guide_src/source/database/query_builder.rst
@@ -68,7 +68,7 @@ Example::
// Produces string: SELECT * FROM mytable
The second parameter enables you to set whether or not the query builder query
-will be reset (by default it will be&mdash;just like `$this->db->get()`)::
+will be reset (by default it will be reset, just like when using `$this->db->get()`)::
echo $this->db->limit(10,20)->get_compiled_select('mytable', FALSE);
// Produces string: SELECT * FROM mytable LIMIT 20, 10
@@ -76,7 +76,7 @@ will be reset (by default it will be&mdash;just like `$this->db->get()`)::
echo $this->db->select('title, content, date')->get_compiled_select();
- // Produces string: SELECT title, content, date FROM mytable
+ // Produces string: SELECT title, content, date FROM mytable LIMIT 20, 10
The key thing to notice in the above example is that the second query did not
utilize `$this->db->from()`_ and did not pass a table name into the first