mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#53334 Incorrect result for InnoDB in LEFT JOIN with impossible condition
The fix actually reverts the change introduced by the patch for bug 51494. The fact is that patches for bugs 52177&48419 fix bugs 51194&50575 as well. mysql-test/r/innodb_mysql.result: test case mysql-test/t/innodb_mysql.test: test case sql/sql_select.cc: reverted wrong fix for bug 51494
This commit is contained in:
@ -2378,4 +2378,34 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
|
|||||||
SECOND(c)-@bug47453
|
SECOND(c)-@bug47453
|
||||||
0
|
0
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug #53334: wrong result for outer join with impossible ON condition
|
||||||
|
# (see the same test case for MyISAM in join.test)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY);
|
||||||
|
CREATE TABLE t2 (id INT);
|
||||||
|
INSERT INTO t1 VALUES (75);
|
||||||
|
INSERT INTO t1 VALUES (79);
|
||||||
|
INSERT INTO t1 VALUES (78);
|
||||||
|
INSERT INTO t1 VALUES (77);
|
||||||
|
REPLACE INTO t1 VALUES (76);
|
||||||
|
REPLACE INTO t1 VALUES (76);
|
||||||
|
INSERT INTO t1 VALUES (104);
|
||||||
|
INSERT INTO t1 VALUES (103);
|
||||||
|
INSERT INTO t1 VALUES (102);
|
||||||
|
INSERT INTO t1 VALUES (101);
|
||||||
|
INSERT INTO t1 VALUES (105);
|
||||||
|
INSERT INTO t1 VALUES (106);
|
||||||
|
INSERT INTO t1 VALUES (107);
|
||||||
|
INSERT INTO t2 VALUES (107),(75),(1000);
|
||||||
|
SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
|
||||||
|
WHERE t2.id=75 AND t1.id IS NULL;
|
||||||
|
id id
|
||||||
|
NULL 75
|
||||||
|
EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
|
||||||
|
WHERE t2.id=75 AND t1.id IS NULL;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -618,5 +618,35 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
|
|||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #53334: wrong result for outer join with impossible ON condition
|
||||||
|
--echo # (see the same test case for MyISAM in join.test)
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY);
|
||||||
|
CREATE TABLE t2 (id INT);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (75);
|
||||||
|
INSERT INTO t1 VALUES (79);
|
||||||
|
INSERT INTO t1 VALUES (78);
|
||||||
|
INSERT INTO t1 VALUES (77);
|
||||||
|
REPLACE INTO t1 VALUES (76);
|
||||||
|
REPLACE INTO t1 VALUES (76);
|
||||||
|
INSERT INTO t1 VALUES (104);
|
||||||
|
INSERT INTO t1 VALUES (103);
|
||||||
|
INSERT INTO t1 VALUES (102);
|
||||||
|
INSERT INTO t1 VALUES (101);
|
||||||
|
INSERT INTO t1 VALUES (105);
|
||||||
|
INSERT INTO t1 VALUES (106);
|
||||||
|
INSERT INTO t1 VALUES (107);
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES (107),(75),(1000);
|
||||||
|
|
||||||
|
SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
|
||||||
|
WHERE t2.id=75 AND t1.id IS NULL;
|
||||||
|
EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
|
||||||
|
WHERE t2.id=75 AND t1.id IS NULL;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -2967,8 +2967,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables_arg, COND *conds,
|
|||||||
s->quick=select->quick;
|
s->quick=select->quick;
|
||||||
s->needed_reg=select->needed_reg;
|
s->needed_reg=select->needed_reg;
|
||||||
select->quick=0;
|
select->quick=0;
|
||||||
if (records == 0 && s->table->reginfo.impossible_range &&
|
if (records == 0 && s->table->reginfo.impossible_range)
|
||||||
(s->table->file->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT))
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Impossible WHERE or ON expression
|
Impossible WHERE or ON expression
|
||||||
|
Reference in New Issue
Block a user