summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/group_by.result9
-rw-r--r--mysql-test/r/olap.result1
-rw-r--r--mysql-test/t/group_by.test10
-rw-r--r--mysql-test/t/olap.test1
-rw-r--r--sql/item_cmpfunc.h2
-rw-r--r--sql/item_sum.cc2
-rw-r--r--sql/sql_class.cc5
7 files changed, 23 insertions, 7 deletions
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result
index f4cf5217fa7..bfde408343e 100644
--- a/mysql-test/r/group_by.result
+++ b/mysql-test/r/group_by.result
@@ -758,6 +758,15 @@ select date(left(f1+0,8)) from t1 group by 1;
date(left(f1+0,8))
2005-06-06
drop table t1;
+create table t1(f1 varchar(5) key);
+insert into t1 values (1),(2);
+select sql_buffer_result max(f1) is null from t1;
+max(f1) is null
+0
+select sql_buffer_result max(f1)+1 from t1;
+max(f1)+1
+3
+drop table t1;
CREATE TABLE t1 (n int);
INSERT INTO t1 VALUES (1);
SELECT n+1 AS n FROM t1 GROUP BY n;
diff --git a/mysql-test/r/olap.result b/mysql-test/r/olap.result
index df0ee09ea8e..73dd3fc8aa2 100644
--- a/mysql-test/r/olap.result
+++ b/mysql-test/r/olap.result
@@ -579,7 +579,6 @@ a LENGTH(a) COUNT(*)
1 1 1
2 1 1
NULL NULL 2
-DROP TABLE t1;
CREATE TABLE t1(id int, type char(1));
INSERT INTO t1 VALUES
(1,"A"),(2,"C"),(3,"A"),(4,"A"),(5,"B"),
diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test
index 8300b502518..4631fad3352 100644
--- a/mysql-test/t/group_by.test
+++ b/mysql-test/t/group_by.test
@@ -575,6 +575,16 @@ CREATE TABLE t1 (id varchar(20) NOT NULL);
INSERT INTO t1 VALUES ('trans1'), ('trans2');
CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL);
INSERT INTO t2 VALUES ('trans1', 'a problem');
+#
+# BUG#12695: Item_func_isnull::update_used_tables
+# did not update const_item_cache
+#
+create table t1(f1 varchar(5) key);
+insert into t1 values (1),(2);
+select sql_buffer_result max(f1) is null from t1;
+select sql_buffer_result max(f1)+1 from t1;
+drop table t1;
+
SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment
FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
diff --git a/mysql-test/t/olap.test b/mysql-test/t/olap.test
index 3a6a5e46f37..adaf6883d43 100644
--- a/mysql-test/t/olap.test
+++ b/mysql-test/t/olap.test
@@ -262,7 +262,6 @@ SELECT a, b, a AS c, COUNT(*) AS count FROM t1 GROUP BY a, b, c WITH ROLLUP;
DROP TABLE t1;
-#
# Bug #12885(1): derived table specified by a subquery with
# ROLLUP over expressions on not nullable group by attributes
#
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index 3bbc78f5db8..09a0fa8c357 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -910,7 +910,7 @@ public:
else
{
args[0]->update_used_tables();
- if (!(used_tables_cache=args[0]->used_tables()))
+ if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())))
{
/* Remember if the value is always NULL or never NULL */
cached_value= (longlong) args[0]->is_null();
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 13587d8a4c3..4f991615bfa 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -2743,7 +2743,7 @@ int dump_leaf_key(byte* key, element_count count __attribute__((unused)),
if (item->no_appended)
item->no_appended= FALSE;
else
- item->result.append(*item->separator);
+ result->append(*item->separator);
tmp.length(0);
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 497d20c2ab8..975014b9780 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -383,8 +383,10 @@ void THD::cleanup(void)
my_free((char*) variables.time_format, MYF(MY_ALLOW_ZERO_PTR));
my_free((char*) variables.date_format, MYF(MY_ALLOW_ZERO_PTR));
my_free((char*) variables.datetime_format, MYF(MY_ALLOW_ZERO_PTR));
+
sp_cache_clear(&sp_proc_cache);
sp_cache_clear(&sp_func_cache);
+
if (global_read_lock)
unlock_global_read_lock(this);
if (ull)
@@ -424,9 +426,6 @@ THD::~THD()
ha_close_connection(this);
- sp_cache_clear(&sp_proc_cache);
- sp_cache_clear(&sp_func_cache);
-
DBUG_PRINT("info", ("freeing host"));
if (host != my_localhost) // If not pointer to constant
safeFree(host);