diff options
-rw-r--r-- | mysql-test/r/group_by.result | 9 | ||||
-rw-r--r-- | mysql-test/r/olap.result | 1 | ||||
-rw-r--r-- | mysql-test/t/group_by.test | 10 | ||||
-rw-r--r-- | mysql-test/t/olap.test | 1 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 2 | ||||
-rw-r--r-- | sql/item_sum.cc | 2 | ||||
-rw-r--r-- | sql/sql_class.cc | 5 |
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); |