Fix for BUG#8711: "<=>" may have true value for NULL arguments, so make
Item_func_equal::not_null_tables() always return 0.
This commit is contained in:
parent
4559fb998b
commit
5d865045c9
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user