Commit 18343b94 authored by serg@serg.mylan's avatar serg@serg.mylan

correct not_null_tables() for XOR and AND

correct top_level_item for XOR
parent a90d2bd9
......@@ -857,4 +857,10 @@ a b a b
1 1 1 2
2 1 2 2
3 1 NULL NULL
SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1));
a b a b
1 1 1 2
2 1 2 2
3 1 NULL NULL
4 2 NULL NULL
DROP TABLE t1,t2;
......@@ -610,6 +610,7 @@ SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a;
SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t1.b=1;
SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a
WHERE t1.b=1 XOR (NOT ISNULL(t2.a) AND t2.b=1);
SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1));
DROP TABLE t1,t2;
......
......@@ -966,6 +966,8 @@ class Item_cond_and :public Item_cond
enum Functype functype() const { return COND_AND_FUNC; }
longlong val_int();
const char *func_name() const { return "and"; }
table_map not_null_tables() const
{ return abort_on_null ? not_null_tables_cache: and_tables_cache; }
Item* copy_andor_structure(THD *thd)
{
Item_cond_and *item;
......@@ -1013,7 +1015,7 @@ class Item_cond_xor :public Item_cond
enum Type type() const { return FUNC_ITEM; }
longlong val_int();
const char *func_name() const { return "xor"; }
table_map not_null_tables() const { return and_tables_cache; }
void top_level_item() {}
};
......
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