Commit f656fde2 authored by unknown's avatar unknown

join_outer.result, null.result, null.test, item_cmpfunc.h:

  Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects (bug #1990).


sql/item_cmpfunc.h:
  Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects (bug #1990).
mysql-test/t/null.test:
  Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects (bug #1990).
mysql-test/r/null.result:
  Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects (bug #1990).
mysql-test/r/join_outer.result:
  Fixed inconsistency of values of used_tables_cache and
  const_item_cache for Item_func_isnull objects (bug #1990).
parent 78436e89
...@@ -91,7 +91,7 @@ grp a c id a c d ...@@ -91,7 +91,7 @@ grp a c id a c d
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
explain select t1.*,t2.* from t1,t2 where t1.a=t2.a and isnull(t2.a)=1; explain select t1.*,t2.* from t1,t2 where t1.a=t2.a and isnull(t2.a)=1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
explain select t1.*,t2.* from t1 left join t2 on t1.a=t2.a where isnull(t2.a)=1; explain select t1.*,t2.* from t1 left join t2 on t1.a=t2.a where isnull(t2.a)=1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 7 1 SIMPLE t1 ALL NULL NULL NULL NULL 7
......
...@@ -142,3 +142,14 @@ a b c d ...@@ -142,3 +142,14 @@ a b c d
0 0000-00-00 00:00:00 0 0 0000-00-00 00:00:00 0
0 0000-00-00 00:00:00 0 0 0000-00-00 00:00:00 0
drop table t1; drop table t1;
create table t1 (a int not null, b int not null, index idx(a));
insert into t1 values
(1,1), (2,2), (3,3), (4,4), (5,5), (6,6),
(7,7), (8,8), (9,9), (10,10), (11,11), (12,12);
explain select * from t1 where a between 2 and 3;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range idx idx 4 NULL 2 Using where
explain select * from t1 where a between 2 and 3 or b is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range idx idx 4 NULL 2 Using where
drop table t1;
...@@ -86,3 +86,14 @@ INSERT INTO t1 (d) values (null),(null); ...@@ -86,3 +86,14 @@ INSERT INTO t1 (d) values (null),(null);
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# Test to check elimination of IS NULL predicate for a non-nullable attribute
# (bug #1990)
#
create table t1 (a int not null, b int not null, index idx(a));
insert into t1 values
(1,1), (2,2), (3,3), (4,4), (5,5), (6,6),
(7,7), (8,8), (9,9), (10,10), (11,11), (12,12);
explain select * from t1 where a between 2 and 3;
explain select * from t1 where a between 2 and 3 or b is null;
drop table t1;
...@@ -746,6 +746,7 @@ class Item_func_isnull :public Item_bool_func ...@@ -746,6 +746,7 @@ class Item_func_isnull :public Item_bool_func
if (!args[0]->maybe_null) if (!args[0]->maybe_null)
{ {
used_tables_cache= 0; /* is always false */ used_tables_cache= 0; /* is always false */
const_item_cache= 1;
cached_value= (longlong) 0; cached_value= (longlong) 0;
} }
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment