Commit 2427f369 authored by unknown's avatar unknown
Browse files

correct not_null_tables() for XOR and AND

correct top_level_item for XOR


mysql-test/r/join_outer.result:
  one more test
mysql-test/t/join_outer.test:
  one more test
parent 7cecea52
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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;

+3 −1
Original line number Diff line number Diff line
@@ -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() {}
};