Bug#11760726: LEFT JOIN OPTIMIZED INTO JOIN LEADS TO

INCORRECT RESULTS

This is a backport of fix for Bug#13068506.

mysql-test/r/join_outer.result:
  Added test result for Bug#13068506
mysql-test/t/join_outer.test:
  Added test case for Bug#13068506
sql/item.h:
  Implement Item_outer_ref::not_null_tables()
This commit is contained in:
Chaithra Gopalareddy 2013-01-10 16:17:13 +05:30
parent 5e399d1cd0
commit 8b41f491c8
3 changed files with 64 additions and 0 deletions

View file

@ -1485,4 +1485,36 @@ EXECUTE prep_stmt;
f
1
DROP TABLE t1;
#
# Bug#13068506 - QUERY WITH GROUP BY ON NON-AGGR COLUMN RETURNS
# WRONG RESULT
#
CREATE TABLE t1 (i1 int);
INSERT INTO t1 VALUES (100), (101);
CREATE TABLE t2 (i2 int, i3 int);
INSERT INTO t2 VALUES (20,1),(10,2);
CREATE TABLE t3 (i4 int(11));
INSERT INTO t3 VALUES (1),(2);
SELECT (
SELECT MAX( t2.i2 )
FROM t3 RIGHT JOIN t2 ON ( t2.i3 = 2 )
WHERE t2.i3 <> t1.i1
) AS field1
FROM t1;;
field1
20
20
SELECT (
SELECT MAX( t2.i2 )
FROM t3 RIGHT JOIN t2 ON ( t2.i3 = 2 )
WHERE t2.i3 <> t1.i1
) AS field1
FROM t1 GROUP BY field1;;
field1
20
drop table t1,t2,t3;
# End of test for Bug#13068506
End of 5.1 tests

View file

@ -1067,5 +1067,35 @@ EXECUTE prep_stmt;
DROP TABLE t1;
--echo #
--echo # Bug#13068506 - QUERY WITH GROUP BY ON NON-AGGR COLUMN RETURNS
--echo # WRONG RESULT
--echo #
CREATE TABLE t1 (i1 int);
INSERT INTO t1 VALUES (100), (101);
CREATE TABLE t2 (i2 int, i3 int);
INSERT INTO t2 VALUES (20,1),(10,2);
CREATE TABLE t3 (i4 int(11));
INSERT INTO t3 VALUES (1),(2);
let $query= SELECT (
SELECT MAX( t2.i2 )
FROM t3 RIGHT JOIN t2 ON ( t2.i3 = 2 )
WHERE t2.i3 <> t1.i1
) AS field1
FROM t1;
--echo
--eval $query;
--echo
--eval $query GROUP BY field1;
--echo
drop table t1,t2,t3;
--echo # End of test for Bug#13068506
--echo End of 5.1 tests

View file

@ -2448,6 +2448,8 @@ public:
{
return (*ref)->const_item() ? 0 : OUTER_REF_TABLE_BIT;
}
table_map not_null_tables() const { return 0; }
virtual Ref_Type ref_type() { return OUTER_REF; }
};