mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 5.3->5.5
This commit is contained in:
@@ -1930,7 +1930,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
2 SUBQUERY t3 ALL NULL NULL NULL NULL 2 100.00 Using where
|
2 SUBQUERY t3 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select NULL AS `a` from `test`.`t2`
|
Note 1003 select NULL AS `a` from `test`.`t2` where 1
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
#
|
#
|
||||||
# LP bug #817384 Wrong result with outer join + subquery in ON
|
# LP bug #817384 Wrong result with outer join + subquery in ON
|
||||||
@@ -2150,4 +2150,18 @@ INSERT INTO t2 VALUES (3,'2000-03-06'), (4,'2007-09-25');
|
|||||||
SELECT * FROM t1 LEFT JOIN t2 ON i1 = i2 WHERE d1 IS NULL AND d2 IS NULL;
|
SELECT * FROM t1 LEFT JOIN t2 ON i1 = i2 WHERE d1 IS NULL AND d2 IS NULL;
|
||||||
i1 d1 i2 d2
|
i1 d1 i2 d2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug mdev-4952: LEFT JOIN with disjunctive
|
||||||
|
# <non-nullable datetime field> IS NULL in WHERE
|
||||||
|
# causes an assert failure
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a1 int, b1 int NOT NULL) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1, 10), (2, 11);
|
||||||
|
CREATE TABLE t2 (dt datetime NOT NULL, a2 int, b2 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
('2006-10-08 09:34:54', 1, 100), ('2001-01-19 01:04:43', 2, 200);
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON a1 = a2
|
||||||
|
WHERE ( dt IS NULL OR FALSE ) AND b2 IS NULL;
|
||||||
|
a1 b1 dt a2 b2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@@ -1941,7 +1941,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
2 SUBQUERY t3 ALL NULL NULL NULL NULL 2 100.00 Using where
|
2 SUBQUERY t3 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select NULL AS `a` from `test`.`t2`
|
Note 1003 select NULL AS `a` from `test`.`t2` where 1
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
#
|
#
|
||||||
# LP bug #817384 Wrong result with outer join + subquery in ON
|
# LP bug #817384 Wrong result with outer join + subquery in ON
|
||||||
@@ -2161,6 +2161,20 @@ INSERT INTO t2 VALUES (3,'2000-03-06'), (4,'2007-09-25');
|
|||||||
SELECT * FROM t1 LEFT JOIN t2 ON i1 = i2 WHERE d1 IS NULL AND d2 IS NULL;
|
SELECT * FROM t1 LEFT JOIN t2 ON i1 = i2 WHERE d1 IS NULL AND d2 IS NULL;
|
||||||
i1 d1 i2 d2
|
i1 d1 i2 d2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug mdev-4952: LEFT JOIN with disjunctive
|
||||||
|
# <non-nullable datetime field> IS NULL in WHERE
|
||||||
|
# causes an assert failure
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a1 int, b1 int NOT NULL) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1, 10), (2, 11);
|
||||||
|
CREATE TABLE t2 (dt datetime NOT NULL, a2 int, b2 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
('2006-10-08 09:34:54', 1, 100), ('2001-01-19 01:04:43', 2, 200);
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON a1 = a2
|
||||||
|
WHERE ( dt IS NULL OR FALSE ) AND b2 IS NULL;
|
||||||
|
a1 b1 dt a2 b2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
@@ -4786,7 +4786,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1`
|
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1` where 1
|
||||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
@@ -5425,4 +5425,23 @@ Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,'k' AS `c`,'k' AS
|
|||||||
SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
||||||
a b c d
|
a b c d
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug mdev-4944: range conditition in OR formula with fields
|
||||||
|
# belonging to multiple equalities
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i1 int, j1 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1,8);
|
||||||
|
CREATE TABLE t2 (i2 int, INDEX idx (i2)) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (8), (9);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `i1`,8 AS `j1`,`test`.`t2`.`i2` AS `i2` from `test`.`t2` where 0
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
i1 j1 i2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.3 tests
|
End of 5.3 tests
|
||||||
|
@@ -4797,7 +4797,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1`
|
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1` where 1
|
||||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
@@ -5436,6 +5436,25 @@ Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,'k' AS `c`,'k' AS
|
|||||||
SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
||||||
a b c d
|
a b c d
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug mdev-4944: range conditition in OR formula with fields
|
||||||
|
# belonging to multiple equalities
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i1 int, j1 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1,8);
|
||||||
|
CREATE TABLE t2 (i2 int, INDEX idx (i2)) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (8), (9);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `i1`,8 AS `j1`,`test`.`t2`.`i2` AS `i2` from `test`.`t2` where 0
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
i1 j1 i2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.3 tests
|
End of 5.3 tests
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
@@ -4786,7 +4786,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
1 SIMPLE t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1`
|
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1` where 1
|
||||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
|
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using where
|
||||||
@@ -5425,4 +5425,23 @@ Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,'k' AS `c`,'k' AS
|
|||||||
SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
||||||
a b c d
|
a b c d
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug mdev-4944: range conditition in OR formula with fields
|
||||||
|
# belonging to multiple equalities
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i1 int, j1 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1,8);
|
||||||
|
CREATE TABLE t2 (i2 int, INDEX idx (i2)) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (8), (9);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `i1`,8 AS `j1`,`test`.`t2`.`i2` AS `i2` from `test`.`t2` where 0
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
i1 j1 i2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.3 tests
|
End of 5.3 tests
|
||||||
|
@@ -1319,7 +1319,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where 0)) AS `0 IN (SELECT 1 FROM t1 a)`
|
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where (0 = 1))) AS `0 IN (SELECT 1 FROM t1 a)`
|
||||||
INSERT INTO t1 (pseudo) VALUES ('test1');
|
INSERT INTO t1 (pseudo) VALUES ('test1');
|
||||||
SELECT 0 IN (SELECT 1 FROM t1 a);
|
SELECT 0 IN (SELECT 1 FROM t1 a);
|
||||||
0 IN (SELECT 1 FROM t1 a)
|
0 IN (SELECT 1 FROM t1 a)
|
||||||
|
@@ -1750,7 +1750,7 @@ SET @@optimizer_switch = 'in_to_exists=on,materialization=off,semijoin=off';
|
|||||||
EXPLAIN SELECT * FROM t1 WHERE a1 IN (SELECT b1 FROM t2 WHERE b1 = b2);
|
EXPLAIN SELECT * FROM t1 WHERE a1 IN (SELECT b1 FROM t2 WHERE b1 = b2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
SELECT * FROM t1 WHERE a1 IN (SELECT b1 FROM t2 WHERE b1 = b2);
|
SELECT * FROM t1 WHERE a1 IN (SELECT b1 FROM t2 WHERE b1 = b2);
|
||||||
a1 a2
|
a1 a2
|
||||||
set @@optimizer_switch=@save_optimizer_switch;
|
set @@optimizer_switch=@save_optimizer_switch;
|
||||||
|
@@ -1326,7 +1326,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where 0)) AS `0 IN (SELECT 1 FROM t1 a)`
|
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where (0 = 1))) AS `0 IN (SELECT 1 FROM t1 a)`
|
||||||
INSERT INTO t1 (pseudo) VALUES ('test1');
|
INSERT INTO t1 (pseudo) VALUES ('test1');
|
||||||
SELECT 0 IN (SELECT 1 FROM t1 a);
|
SELECT 0 IN (SELECT 1 FROM t1 a);
|
||||||
0 IN (SELECT 1 FROM t1 a)
|
0 IN (SELECT 1 FROM t1 a)
|
||||||
|
@@ -1322,7 +1322,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where 0)) AS `0 IN (SELECT 1 FROM t1 a)`
|
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where (0 = 1))) AS `0 IN (SELECT 1 FROM t1 a)`
|
||||||
INSERT INTO t1 (pseudo) VALUES ('test1');
|
INSERT INTO t1 (pseudo) VALUES ('test1');
|
||||||
SELECT 0 IN (SELECT 1 FROM t1 a);
|
SELECT 0 IN (SELECT 1 FROM t1 a);
|
||||||
0 IN (SELECT 1 FROM t1 a)
|
0 IN (SELECT 1 FROM t1 a)
|
||||||
|
@@ -1325,7 +1325,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where 0)) AS `0 IN (SELECT 1 FROM t1 a)`
|
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where (0 = 1))) AS `0 IN (SELECT 1 FROM t1 a)`
|
||||||
INSERT INTO t1 (pseudo) VALUES ('test1');
|
INSERT INTO t1 (pseudo) VALUES ('test1');
|
||||||
SELECT 0 IN (SELECT 1 FROM t1 a);
|
SELECT 0 IN (SELECT 1 FROM t1 a);
|
||||||
0 IN (SELECT 1 FROM t1 a)
|
0 IN (SELECT 1 FROM t1 a)
|
||||||
|
@@ -1322,7 +1322,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where 0)) AS `0 IN (SELECT 1 FROM t1 a)`
|
Note 1003 select <in_optimizer>(0,<exists>(select 1 from dual where (0 = 1))) AS `0 IN (SELECT 1 FROM t1 a)`
|
||||||
INSERT INTO t1 (pseudo) VALUES ('test1');
|
INSERT INTO t1 (pseudo) VALUES ('test1');
|
||||||
SELECT 0 IN (SELECT 1 FROM t1 a);
|
SELECT 0 IN (SELECT 1 FROM t1 a);
|
||||||
0 IN (SELECT 1 FROM t1 a)
|
0 IN (SELECT 1 FROM t1 a)
|
||||||
|
@@ -17,7 +17,7 @@ explain extended select t1.a from t1 left join t2 on t2.a=t1.a;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1`
|
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1
|
||||||
select t1.a from t1 left join t2 on t2.a=t1.a;
|
select t1.a from t1 left join t2 on t2.a=t1.a;
|
||||||
a
|
a
|
||||||
0
|
0
|
||||||
@@ -62,7 +62,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 4 100.00
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 4 100.00
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t0` left join (`test`.`t1`) on((`test`.`t1`.`a` = `test`.`t0`.`a`))
|
Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t0` left join (`test`.`t1`) on((`test`.`t1`.`a` = `test`.`t0`.`a`)) where 1
|
||||||
# Elimination with aggregate functions
|
# Elimination with aggregate functions
|
||||||
explain select count(*) from t1 left join t2 on t2.a=t1.a;
|
explain select count(*) from t1 left join t2 on t2.a=t1.a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
@@ -626,7 +626,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY t2 index NULL b 5 NULL 2 100.00 Using where; Using index
|
1 PRIMARY t2 index NULL b 5 NULL 2 100.00 Using where; Using index
|
||||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t2`.`b` AS `b` from `test`.`t2` where <expr_cache><`test`.`t2`.`b`>(<in_optimizer>(`test`.`t2`.`b`,<exists>(select sum(1) from dual having (<cache>(`test`.`t2`.`b`) = <ref_null_helper>(sum(1))))))
|
Note 1003 select `test`.`t2`.`b` AS `b` from `test`.`t2` where <expr_cache><`test`.`t2`.`b`>(<in_optimizer>(`test`.`t2`.`b`,<exists>(select sum(1) from dual where 1 having (<cache>(`test`.`t2`.`b`) = <ref_null_helper>(sum(1))))))
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
# MDEV-4840: Wrong result (missing rows) on LEFT JOIN with InnoDB tables
|
# MDEV-4840: Wrong result (missing rows) on LEFT JOIN with InnoDB tables
|
||||||
|
@@ -1703,4 +1703,22 @@ SELECT * FROM t1 LEFT JOIN t2 ON i1 = i2 WHERE d1 IS NULL AND d2 IS NULL;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug mdev-4952: LEFT JOIN with disjunctive
|
||||||
|
--echo # <non-nullable datetime field> IS NULL in WHERE
|
||||||
|
--echo # causes an assert failure
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a1 int, b1 int NOT NULL) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1, 10), (2, 11);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (dt datetime NOT NULL, a2 int, b2 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
('2006-10-08 09:34:54', 1, 100), ('2001-01-19 01:04:43', 2, 200);
|
||||||
|
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON a1 = a2
|
||||||
|
WHERE ( dt IS NULL OR FALSE ) AND b2 IS NULL;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@@ -4563,5 +4563,24 @@ SELECT * FROM t1, t2 WHERE c=b AND (1=2 OR ((b='h' OR a=136) AND d=b));
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug mdev-4944: range conditition in OR formula with fields
|
||||||
|
--echo # belonging to multiple equalities
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i1 int, j1 int) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1,8);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (i2 int, INDEX idx (i2)) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (8), (9);
|
||||||
|
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
SELECT * FROM t1, t2
|
||||||
|
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27 AND j1 < 100 OR j1 <= 3 ) AND j1 = i2 );
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo End of 5.3 tests
|
--echo End of 5.3 tests
|
||||||
|
|
||||||
|
@@ -1262,17 +1262,12 @@ JOIN::optimize()
|
|||||||
conds=new Item_int((longlong) 1,1); // Always true
|
conds=new Item_int((longlong) 1,1); // Always true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (const_tables && conds)
|
if (impossible_where)
|
||||||
{
|
{
|
||||||
conds= remove_eq_conds(thd, conds, &cond_value);
|
zero_result_cause=
|
||||||
if (cond_value == Item::COND_FALSE)
|
"Impossible WHERE noticed after reading const tables";
|
||||||
{
|
select_lex->mark_const_derived(zero_result_cause);
|
||||||
zero_result_cause=
|
goto setup_subq_exit;
|
||||||
"Impossible WHERE noticed after reading const tables";
|
|
||||||
select_lex->mark_const_derived(zero_result_cause);
|
|
||||||
conds=new Item_int((longlong) 0,1);
|
|
||||||
goto setup_subq_exit;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
select= make_select(*table, const_table_map,
|
select= make_select(*table, const_table_map,
|
||||||
@@ -3598,6 +3593,18 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
join->impossible_where= false;
|
||||||
|
if (conds && const_count)
|
||||||
|
{
|
||||||
|
conds= remove_eq_conds(join->thd, conds, &join->cond_value);
|
||||||
|
if (join->cond_value == Item::COND_FALSE)
|
||||||
|
{
|
||||||
|
join->impossible_where= true;
|
||||||
|
conds=new Item_int((longlong) 0,1);
|
||||||
|
}
|
||||||
|
join->conds= conds;
|
||||||
|
}
|
||||||
|
|
||||||
/* Calc how many (possible) matched records in each table */
|
/* Calc how many (possible) matched records in each table */
|
||||||
|
|
||||||
for (s=stat ; s < stat_end ; s++)
|
for (s=stat ; s < stat_end ; s++)
|
||||||
@@ -13692,7 +13699,20 @@ internal_remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
li.replace(new_item);
|
if (new_item->type() == Item::COND_ITEM &&
|
||||||
|
((Item_cond*) new_item)->functype() ==
|
||||||
|
((Item_cond*) cond)->functype())
|
||||||
|
{
|
||||||
|
List<Item> *new_item_arg_list=
|
||||||
|
((Item_cond *) new_item)->argument_list();
|
||||||
|
uint cnt= new_item_arg_list->elements;
|
||||||
|
li.replace(*new_item_arg_list);
|
||||||
|
/* Make iterator li ignore new items */
|
||||||
|
for (cnt--; cnt; cnt--)
|
||||||
|
li++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
li.replace(new_item);
|
||||||
should_fix_fields= 1;
|
should_fix_fields= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1160,6 +1160,11 @@ public:
|
|||||||
bool cleaned;
|
bool cleaned;
|
||||||
DYNAMIC_ARRAY keyuse;
|
DYNAMIC_ARRAY keyuse;
|
||||||
Item::cond_result cond_value, having_value;
|
Item::cond_result cond_value, having_value;
|
||||||
|
/**
|
||||||
|
Impossible where after reading const tables
|
||||||
|
(set in make_join_statistics())
|
||||||
|
*/
|
||||||
|
bool impossible_where;
|
||||||
List<Item> all_fields; ///< to store all fields that used in query
|
List<Item> all_fields; ///< to store all fields that used in query
|
||||||
///Above list changed to use temporary table
|
///Above list changed to use temporary table
|
||||||
List<Item> tmp_all_fields1, tmp_all_fields2, tmp_all_fields3;
|
List<Item> tmp_all_fields1, tmp_all_fields2, tmp_all_fields3;
|
||||||
|
Reference in New Issue
Block a user