diff options
-rw-r--r-- | mysql-test/r/join_outer.result | 20 | ||||
-rw-r--r-- | mysql-test/t/join_outer.test | 13 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 1 |
3 files changed, 34 insertions, 0 deletions
diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index 5778b2f9b72..d6ce93e632b 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -684,3 +684,23 @@ t1 ALL NULL NULL NULL NULL 3 t2 ALL NULL NULL NULL NULL 2 t3 ALL NULL NULL NULL NULL 2 drop table t1, t2, t3; +create table t1 ( +a int(11), +b char(10), +key (a) +); +insert into t1 (a) values (1),(2),(3),(4); +create table t2 (a int); +select * from t1 left join t2 on t1.a=t2.a where not (t2.a <=> t1.a); +a b a +1 NULL NULL +2 NULL NULL +3 NULL NULL +4 NULL NULL +select * from t1 left join t2 on t1.a=t2.a having not (t2.a <=> t1.a); +a b a +1 NULL NULL +2 NULL NULL +3 NULL NULL +4 NULL NULL +drop table t1,t2; diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test index bed4d4b033b..f32cc9d56ac 100644 --- a/mysql-test/t/join_outer.test +++ b/mysql-test/t/join_outer.test @@ -450,3 +450,16 @@ select * from t1 left join t2 on b1 = a1 left join t3 on c1 = a1 and b1 is explain select * from t1 left join t2 on b1 = a1 left join t3 on c1 = a1 and b1 is null; drop table t1, t2, t3; + +# Test for BUG#8711 '<=>' was considered to be a NULL-rejecting predicate. +create table t1 ( + a int(11), + b char(10), + key (a) +); +insert into t1 (a) values (1),(2),(3),(4); +create table t2 (a int); + +select * from t1 left join t2 on t1.a=t2.a where not (t2.a <=> t1.a); +select * from t1 left join t2 on t1.a=t2.a having not (t2.a <=> t1.a); +drop table t1,t2; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 8f1aa525190..a1977e76f67 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -78,6 +78,7 @@ public: Item_func_equal(Item *a,Item *b) :Item_bool_func2(a,b) { }; longlong val_int(); void fix_length_and_dec(); + table_map not_null_tables() const { return 0; } enum Functype functype() const { return EQUAL_FUNC; } enum Functype rev_functype() const { return EQUAL_FUNC; } cond_result eq_cmp_result() const { return COND_TRUE; } |