Commit 098d02eb authored by unknown's avatar unknown
Browse files

join_outer.result, join_outer.test:

  Added a test case for bug #11285.
sql_select.cc:
  Fixed bug #11285.
  The problem occurred with Item_equal in an 'on expression'
  that was evaluated to false.


sql/sql_select.cc:
  Fixed bug #11285.
  The problem occurred with Item_equal in an 'on expression'
  that was evaluated to false.
mysql-test/t/join_outer.test:
  Added a test case for bug #11285.
mysql-test/r/join_outer.result:
  Added a test case for bug #11285.
parent d5600efd
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -975,3 +975,11 @@ EMPNUM NAME GRP
0	KERI	10
9	BARRY	NULL
DROP TABLE t1,t2;
CREATE TABLE t1 (c11 int);
CREATE TABLE t2 (c21 int);
INSERT INTO t1 VALUES (30), (40), (50);
INSERT INTO t2 VALUES (300), (400), (500);
SELECT * FROM t1 LEFT JOIN t2 ON (c11=c21 AND c21=30) WHERE c11=40;
c11	c21
40	NULL
DROP TABLE t1, t2;
+12 −0
Original line number Diff line number Diff line
@@ -698,4 +698,16 @@ SELECT * FROM v1 WHERE EMPNUM < 10;

DROP TABLE t1,t2;

#
# Test for bug #11285: false Item_equal on expression in outer join
# 

CREATE TABLE t1 (c11 int);
CREATE TABLE t2 (c21 int);
INSERT INTO t1 VALUES (30), (40), (50);
INSERT INTO t2 VALUES (300), (400), (500);

SELECT * FROM t1 LEFT JOIN t2 ON (c11=c21 AND c21=30) WHERE c11=40;

DROP TABLE t1, t2;
+1 −1
Original line number Diff line number Diff line
@@ -7064,7 +7064,7 @@ static COND* substitute_for_best_equal_field(COND *cond,
      List_iterator_fast<Item_equal> it(cond_equal->current_level);
      while ((item_equal= it++))
      {
        eliminate_item_equal(cond, cond_equal->upper_levels, item_equal);
        cond= eliminate_item_equal(cond, cond_equal->upper_levels, item_equal);
      }
    }
  }