From 8adac96fdc90cfc8c667d64b95ae29845808947b Mon Sep 17 00:00:00 2001 From: Andrey Andreev Date: Mon, 28 Oct 2013 14:13:09 +0200 Subject: Fix CI_DB_query_builder::_merge_cache() triggering E_WARNINGs Kudos to kakysha for noting the bug & providing initial fix in PR #2698 --- system/database/DB_query_builder.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index a36501eb6..95c3af3a9 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2551,11 +2551,13 @@ abstract class CI_DB_query_builder extends CI_DB_driver { $qb_variable = 'qb_'.$val; $qb_cache_var = 'qb_cache_'.$val; - if (count($this->$qb_cache_var) === 0) + if (count($this->$qb_cache_var) > 0) { - continue; + foreach ($this->$qb_cache_var as &$cache_var) + { + in_array($cache_var, $this->$qb_variable, TRUE) OR $this->$qb_variable[] = $cache_var; + } } - $this->$qb_variable = array_merge($this->$qb_variable, array_diff($this->$qb_cache_var, $this->$qb_variable)); } // If we are "protecting identifiers" we need to examine the "from" -- cgit v1.2.3-24-g4f1b From 710c4ed57e916714b04bec079b03cb47621ec393 Mon Sep 17 00:00:00 2001 From: Andrey Andreev Date: Mon, 28 Oct 2013 14:37:24 +0200 Subject: Fixing the dumbest parser error ever --- system/database/DB_query_builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index 95c3af3a9..ebc9855bc 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2555,7 +2555,7 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { foreach ($this->$qb_cache_var as &$cache_var) { - in_array($cache_var, $this->$qb_variable, TRUE) OR $this->$qb_variable[] = $cache_var; + in_array($cache_var, $this->$qb_variable, TRUE) OR $this->{$qb_variable}[] = $cache_var; } } } -- cgit v1.2.3-24-g4f1b From 5e3d48c21dea8a97dcea1b820ebc14700a336312 Mon Sep 17 00:00:00 2001 From: Andrey Andreev Date: Tue, 29 Oct 2013 14:36:18 +0200 Subject: Fix a bug when multiple calls to QB's _compile_wh() or _compile_group_by() are required --- system/database/DB_query_builder.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index ebc9855bc..a73460394 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2291,7 +2291,12 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { for ($i = 0, $c = count($this->$qb_key); $i < $c; $i++) { - if ($this->{$qb_key}[$i]['escape'] === FALSE) + // Is this condition already compiled? + if (is_string($this->{$qb_key}[$i])) + { + continue; + } + elseif ($this->{$qb_key}[$i]['escape'] === FALSE) { $this->{$qb_key}[$i] = $this->{$qb_key}[$i]['condition']; continue; @@ -2361,6 +2366,12 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { for ($i = 0, $c = count($this->qb_groupby); $i < $c; $i++) { + // Is it already compiled? + if (is_string($this->qb_groupby)) + { + continue; + } + $this->qb_groupby[$i] = ($this->qb_groupby[$i]['escape'] === FALSE OR $this->_is_literal($this->qb_groupby[$i]['field'])) ? $this->qb_groupby[$i]['field'] : $this->protect_identifiers($this->qb_groupby[$i]['field']); -- cgit v1.2.3-24-g4f1b From e1b8683d7983cca11219d618f093b842429bd41c Mon Sep 17 00:00:00 2001 From: GDmac Date: Fri, 8 Nov 2013 16:52:54 +0100 Subject: Fix #2406 query builder cache Signed-off-by: GDmac --- system/database/DB_query_builder.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index a73460394..0d0421306 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2557,18 +2557,22 @@ abstract class CI_DB_query_builder extends CI_DB_driver { return; } - foreach ($this->qb_cache_exists as $val) + $parts = array_unique($this->qb_cache_exists); // select, from, etc. + + foreach ($parts as $val) { $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" -- cgit v1.2.3-24-g4f1b From 17a0528c23c4d6cf95b03299fbfe2ff789b82249 Mon Sep 17 00:00:00 2001 From: GDmac Date: Mon, 11 Nov 2013 13:18:09 +0100 Subject: Cleanup PR #2719 for Fix #2406 query builder cache Signed-off-by: GDmac --- system/database/DB_query_builder.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index 0d0421306..fb8514f5c 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2557,22 +2557,19 @@ abstract class CI_DB_query_builder extends CI_DB_driver { return; } - $parts = array_unique($this->qb_cache_exists); // select, from, etc. - - foreach ($parts as $val) + foreach (array_unique($this->qb_cache_exists) as $val) // select, from, etc. { $qb_variable = 'qb_'.$val; $qb_cache_var = 'qb_cache_'.$val; $qb_new = $this->$qb_cache_var; - foreach ($this->$qb_variable as $qb_var) + foreach ($this->$qb_variable as &$qb_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" -- cgit v1.2.3-24-g4f1b From 35e3b0bc4f723b938160da87aeb5ad9e054507c4 Mon Sep 17 00:00:00 2001 From: Andrey Andreev Date: Tue, 12 Nov 2013 16:07:08 +0200 Subject: [ci skip] Remove some whitespace chars --- system/database/DB_query_builder.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index fb8514f5c..f0fe96c35 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2561,14 +2561,13 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { $qb_variable = 'qb_'.$val; $qb_cache_var = 'qb_cache_'.$val; - - $qb_new = $this->$qb_cache_var; + $qb_new = $this->$qb_cache_var; foreach ($this->$qb_variable as &$qb_var) { in_array($qb_var, $qb_new, TRUE) OR $qb_new[] = $qb_var; } - + $this->$qb_variable = $qb_new; } -- cgit v1.2.3-24-g4f1b From c6ac748cfee049f2f456ce962bd1944e19237509 Mon Sep 17 00:00:00 2001 From: vlakoff Date: Sun, 17 Nov 2013 00:50:06 +0100 Subject: Small docblock fix --- system/database/DB_query_builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index f0fe96c35..1d41a19ba 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -1338,7 +1338,7 @@ abstract class CI_DB_query_builder extends CI_DB_driver { * returned by an Query Builder query. * * @param string - * @return string + * @return int */ public function count_all_results($table = '') { -- cgit v1.2.3-24-g4f1b From 1720a6aee782b1193454e2ec172f3e89461f83f4 Mon Sep 17 00:00:00 2001 From: Andrey Andreev Date: Mon, 6 Jan 2014 13:50:05 +0200 Subject: Fix #2579: Query Builder's "no escape" functionality didn't work properly with query cache --- system/database/DB_query_builder.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index 1d41a19ba..c543e1584 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2556,6 +2556,10 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { return; } + elseif (in_array('select', $this->qb_cache_exists, TRUE)) + { + $qb_no_escape = $this->qb_cache_no_escape; + } foreach (array_unique($this->qb_cache_exists) as $val) // select, from, etc. { @@ -2563,12 +2567,23 @@ abstract class CI_DB_query_builder extends CI_DB_driver { $qb_cache_var = 'qb_cache_'.$val; $qb_new = $this->$qb_cache_var; - foreach ($this->$qb_variable as &$qb_var) + for ($i = 0, $c = count($this->$qb_variable); $i < $c; $i++) { - in_array($qb_var, $qb_new, TRUE) OR $qb_new[] = $qb_var; + if ( ! in_array($this->{$qb_variable}[$i], $qb_new, TRUE)) + { + $qb_new[] = $this->{$qb_variable}[$i]; + if ($val === 'select') + { + $qb_no_escape[] = $this->qb_no_escape[$i]; + } + } } $this->$qb_variable = $qb_new; + if ($val === 'select') + { + $this->qb_no_escape = $qb_no_escape; + } } // If we are "protecting identifiers" we need to examine the "from" @@ -2577,8 +2592,6 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { $this->_track_aliases($this->qb_from); } - - $this->qb_no_escape = array_merge($this->qb_no_escape, array_diff($this->qb_cache_no_escape, $this->qb_no_escape)); } // -------------------------------------------------------------------- -- cgit v1.2.3-24-g4f1b From 18eba2411f5698f669397e7538af6be1c414a63f Mon Sep 17 00:00:00 2001 From: Andrey Andreev Date: Thu, 23 Jan 2014 22:52:31 +0200 Subject: Fix #2836 --- system/database/DB_query_builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index c543e1584..8223baac1 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -2367,7 +2367,7 @@ abstract class CI_DB_query_builder extends CI_DB_driver { for ($i = 0, $c = count($this->qb_groupby); $i < $c; $i++) { // Is it already compiled? - if (is_string($this->qb_groupby)) + if (is_string($this->qb_groupby[$i])) { continue; } -- cgit v1.2.3-24-g4f1b From 33578d209c8cc8a8bce5ccc6f289b6ada9d03adb Mon Sep 17 00:00:00 2001 From: Vivek Dinesh Date: Thu, 6 Feb 2014 09:46:07 +0530 Subject: Typo Fix Signed-off-by: Vivek Dinesh --- system/database/DB_query_builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index 8223baac1..ef690090f 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -263,7 +263,7 @@ abstract class CI_DB_query_builder extends CI_DB_driver { $select = explode(',', $select); } - // If the escape value was not set will will base it on the global setting + // If the escape value was not set, we will base it on the global setting is_bool($escape) OR $escape = $this->_protect_identifiers; foreach ($select as $val) -- cgit v1.2.3-24-g4f1b From 871754af60251993d640981e107d2def5f2db396 Mon Sep 17 00:00:00 2001 From: darwinel Date: Tue, 11 Feb 2014 17:34:57 +0100 Subject: 2013 > 2014 Update copyright notices from 2013 to 2014. And update one calendar example in user_guide from year 2013/2014 to 2014/2015. --- system/database/DB_query_builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'system/database/DB_query_builder.php') diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index ef690090f..085c615e5 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -18,7 +18,7 @@ * * @package CodeIgniter * @author EllisLab Dev Team - * @copyright Copyright (c) 2008 - 2013, EllisLab, Inc. (http://ellislab.com/) + * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/) * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * @link http://codeigniter.com * @since Version 1.0 -- cgit v1.2.3-24-g4f1b