mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge from 5.2
This commit is contained in:
@@ -267,7 +267,7 @@ WHERE t1.f1 GROUP BY t1.f1));
|
|||||||
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 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY a system NULL NULL NULL NULL 1
|
2 SUBQUERY a system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
2 SUBQUERY t1 fulltext f1_2,f1 f1 0 1 Using where
|
||||||
PREPARE stmt FROM
|
PREPARE stmt FROM
|
||||||
'EXPLAIN SELECT 1 FROM t1
|
'EXPLAIN SELECT 1 FROM t1
|
||||||
WHERE 1 > ALL((SELECT 1 FROM t1 RIGHT OUTER JOIN t1 a
|
WHERE 1 > ALL((SELECT 1 FROM t1 RIGHT OUTER JOIN t1 a
|
||||||
@@ -277,12 +277,12 @@ EXECUTE stmt;
|
|||||||
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 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY a system NULL NULL NULL NULL 1
|
2 SUBQUERY a system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
2 SUBQUERY t1 fulltext f1_2,f1 f1 0 1 Using where
|
||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
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 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY a system NULL NULL NULL NULL 1
|
2 SUBQUERY a system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
2 SUBQUERY t1 fulltext f1_2,f1 f1 0 1 Using where
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
PREPARE stmt FROM
|
PREPARE stmt FROM
|
||||||
'EXPLAIN SELECT 1 FROM t1
|
'EXPLAIN SELECT 1 FROM t1
|
||||||
@@ -293,12 +293,12 @@ EXECUTE stmt;
|
|||||||
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 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY a system NULL NULL NULL NULL 1
|
2 SUBQUERY a system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
2 SUBQUERY t1 fulltext f1_2,f1 f1 0 1 Using where
|
||||||
EXECUTE stmt;
|
EXECUTE stmt;
|
||||||
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 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY a system NULL NULL NULL NULL 1
|
2 SUBQUERY a system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY t1 fulltext f1 f1 0 1 Using where
|
2 SUBQUERY t1 fulltext f1_2,f1 f1 0 1 Using where
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
@@ -1378,7 +1378,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
||||||
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt1` left join (`test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1))) on(1) where 1
|
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt1` left join (`test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on(((`test`.`jt6`.`f1` <> 0) and 1))) on(1) where 1
|
||||||
EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
||||||
RIGHT JOIN t1 AS jt2
|
RIGHT JOIN t1 AS jt2
|
||||||
RIGHT JOIN t1 AS jt3
|
RIGHT JOIN t1 AS jt3
|
||||||
@@ -1395,7 +1395,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
||||||
1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on(((`test`.`jt6`.`f1` <> 0) and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# Bug#49600: outer join of two single-row tables with joining attributes
|
# Bug#49600: outer join of two single-row tables with joining attributes
|
||||||
|
@@ -1387,7 +1387,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt1` left join (`test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1))) on(1) where 1
|
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt1` left join (`test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on(((`test`.`jt6`.`f1` <> 0) and 1))) on(1) where 1
|
||||||
EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
||||||
RIGHT JOIN t1 AS jt2
|
RIGHT JOIN t1 AS jt2
|
||||||
RIGHT JOIN t1 AS jt3
|
RIGHT JOIN t1 AS jt3
|
||||||
@@ -1404,7 +1404,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on(((`test`.`jt6`.`f1` <> 0) and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# Bug#49600: outer join of two single-row tables with joining attributes
|
# Bug#49600: outer join of two single-row tables with joining attributes
|
||||||
|
@@ -4,7 +4,7 @@ insert into t1 values (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
|
|||||||
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
||||||
explain select * from t1 where not(not(a));
|
explain select * from t1 where not(not(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
|
||||||
1 SIMPLE t1 index NULL a 5 NULL 21 Using where; Using index
|
1 SIMPLE t1 range a a 5 NULL 20 Using where; Using index
|
||||||
select * from t1 where not(not(a));
|
select * from t1 where not(not(a));
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
@@ -500,7 +500,7 @@ NULL NULL
|
|||||||
3 1
|
3 1
|
||||||
explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a));
|
explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(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 index NULL a 5 NULL 5 100.00 Using where; Using index
|
1 SIMPLE t1 range a a 5 NULL 4 100.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like '1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` having `test`.`t1`.`a`
|
Note 1003 select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like '1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where (`test`.`t1`.`a` <> 0) having (`test`.`t1`.`a` <> 0)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@@ -1354,7 +1354,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
3 SUBQUERY SQ1_t1 index NULL f4 5 NULL 2 Using index; Using temporary
|
3 SUBQUERY SQ1_t1 index NULL f4 5 NULL 2 Using index; Using temporary
|
||||||
3 SUBQUERY SQ1_t3 index NULL f4 5 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
3 SUBQUERY SQ1_t3 index f4 f4 5 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
#
|
#
|
||||||
# BUG#52317: Assertion failing in Field_varstring::store()
|
# BUG#52317: Assertion failing in Field_varstring::store()
|
||||||
@@ -1898,7 +1898,7 @@ WHERE SUBQUERY2_t2.col_varchar_nokey IN
|
|||||||
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 t2 index NULL col_int_key 5 NULL 2 Using index
|
1 PRIMARY t2 index NULL col_int_key 5 NULL 2 Using index
|
||||||
2 SUBQUERY SUBQUERY2_t1 index NULL col_int_key 5 NULL 2 Using index
|
2 SUBQUERY SUBQUERY2_t1 index NULL col_int_key 5 NULL 2 Using index
|
||||||
2 SUBQUERY SUBQUERY2_t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
2 SUBQUERY SUBQUERY2_t2 ALL col_varchar_key NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary
|
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary
|
||||||
SELECT col_int_key
|
SELECT col_int_key
|
||||||
FROM t2
|
FROM t2
|
||||||
@@ -1920,7 +1920,7 @@ WHERE SUBQUERY2_t2.col_varchar_nokey IN
|
|||||||
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 t2 index NULL col_int_key 5 NULL 2 Using index
|
1 PRIMARY t2 index NULL col_int_key 5 NULL 2 Using index
|
||||||
2 SUBQUERY SUBQUERY2_t1 index NULL col_int_key 5 NULL 2 Using index
|
2 SUBQUERY SUBQUERY2_t1 index NULL col_int_key 5 NULL 2 Using index
|
||||||
2 SUBQUERY SUBQUERY2_t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
2 SUBQUERY SUBQUERY2_t2 ALL col_varchar_key NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
3 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary
|
3 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary
|
||||||
SELECT col_int_key
|
SELECT col_int_key
|
||||||
FROM t2
|
FROM t2
|
||||||
|
@@ -94,7 +94,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
2 DEPENDENT SUBQUERY t1a ref c2 c2 5 test.t1b.pk 2 100.00 Using where
|
2 DEPENDENT SUBQUERY t1a ref c2 c2 5 test.t1b.pk 2 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1276 Field or reference 'test.t1.pk' of SELECT #2 was resolved in SELECT #1
|
Note 1276 Field or reference 'test.t1.pk' of SELECT #2 was resolved in SELECT #1
|
||||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`c1`,<exists>(select `test`.`t1a`.`c1` from `test`.`t1b` join `test`.`t2` left join `test`.`t1a` on((2 and (`test`.`t1a`.`c2` = `test`.`t1b`.`pk`))) where (`test`.`t1`.`pk` and (<cache>(`test`.`t1`.`c1`) = `test`.`t1a`.`c1`) and (`test`.`t1b`.`c4` = `test`.`t2`.`c3`))))
|
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`c1`,<exists>(select `test`.`t1a`.`c1` from `test`.`t1b` join `test`.`t2` left join `test`.`t1a` on((2 and (`test`.`t1a`.`c2` = `test`.`t1b`.`pk`))) where ((`test`.`t1`.`pk` <> 0) and (<cache>(`test`.`t1`.`c1`) = `test`.`t1a`.`c1`) and (`test`.`t1b`.`c4` = `test`.`t2`.`c3`))))
|
||||||
SELECT pk
|
SELECT pk
|
||||||
FROM t1
|
FROM t1
|
||||||
WHERE c1 IN
|
WHERE c1 IN
|
||||||
@@ -184,7 +184,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using filesort
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using filesort
|
||||||
1 PRIMARY alias1 eq_ref PRIMARY PRIMARY 4 test.t2.f3 1 Using index
|
1 PRIMARY alias1 eq_ref PRIMARY PRIMARY 4 test.t2.f3 1 Using index
|
||||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
|
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
|
||||||
3 DEPENDENT SUBQUERY t1 index NULL PRIMARY 4 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
3 DEPENDENT SUBQUERY t1 index PRIMARY PRIMARY 4 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
SELECT alias2.f2 AS field1
|
SELECT alias2.f2 AS field1
|
||||||
FROM t1 AS alias1 JOIN ( SELECT * FROM t2 ) AS alias2 ON alias2.f3 = alias1.f1
|
FROM t1 AS alias1 JOIN ( SELECT * FROM t2 ) AS alias2 ON alias2.f3 = alias1.f1
|
||||||
WHERE (
|
WHERE (
|
||||||
|
@@ -726,7 +726,7 @@ FROM it1 LEFT JOIN it2 ON it2.datetime_key);
|
|||||||
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 it1 index NULL int_key 4 NULL 2 Using index; Start temporary
|
1 PRIMARY it1 index NULL int_key 4 NULL 2 Using index; Start temporary
|
||||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
|
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY it2 ref int_key int_key 4 test.ot1.int_nokey 3 Using where; End temporary
|
1 PRIMARY it2 ALL int_key,datetime_key NULL NULL NULL 20 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||||
DROP TABLE ot1, it1, it2;
|
DROP TABLE ot1, it1, it2;
|
||||||
# End of BUG#38075
|
# End of BUG#38075
|
||||||
#
|
#
|
||||||
|
@@ -737,7 +737,7 @@ FROM it1 LEFT JOIN it2 ON it2.datetime_key);
|
|||||||
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 it1 index NULL int_key 4 NULL 2 Using index; Start temporary
|
1 PRIMARY it1 index NULL int_key 4 NULL 2 Using index; Start temporary
|
||||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
|
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY it2 ref int_key int_key 4 test.ot1.int_nokey 3 Using where; End temporary; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
|
1 PRIMARY it2 ALL int_key,datetime_key NULL NULL NULL 20 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||||
DROP TABLE ot1, it1, it2;
|
DROP TABLE ot1, it1, it2;
|
||||||
# End of BUG#38075
|
# End of BUG#38075
|
||||||
#
|
#
|
||||||
|
@@ -3711,7 +3711,7 @@ CREATE TABLE t1 (c INT);
|
|||||||
CREATE VIEW v1 (view_column) AS SELECT c AS alias FROM t1 HAVING alias;
|
CREATE VIEW v1 (view_column) AS SELECT c AS alias FROM t1 HAVING alias;
|
||||||
SHOW CREATE VIEW v1;
|
SHOW CREATE VIEW v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`c` AS `view_column` from `t1` having `view_column` latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`c` AS `view_column` from `t1` having (`view_column` <> 0) latin1 latin1_swedish_ci
|
||||||
SELECT * FROM v1;
|
SELECT * FROM v1;
|
||||||
view_column
|
view_column
|
||||||
|
|
||||||
@@ -3906,6 +3906,23 @@ SELECT * FROM v1;
|
|||||||
a
|
a
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# LP BUG#777809 (a retrograded condition for view ON)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( f1 int NOT NULL , f6 int NOT NULL ) ;
|
||||||
|
INSERT IGNORE INTO t1 VALUES (20, 2);
|
||||||
|
CREATE TABLE t2 ( f3 int NOT NULL ) ;
|
||||||
|
INSERT IGNORE INTO t2 VALUES (7);
|
||||||
|
CREATE OR REPLACE VIEW v2 AS SELECT * FROM t2;
|
||||||
|
PREPARE prep_stmt FROM 'SELECT t1.f6 FROM t1 RIGHT JOIN v2 ON v2.f3 WHERE t1.f1 != 0';
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
f6
|
||||||
|
2
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
f6
|
||||||
|
2
|
||||||
|
drop view v2;
|
||||||
|
drop table t1,t2;
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# -- End of 5.1 tests.
|
# -- End of 5.1 tests.
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
@@ -2624,46 +2624,6 @@ create table t1 (a int primary key, b int) engine = innodb;
|
|||||||
insert into t1 values (1,1),(2,1);
|
insert into t1 values (1,1),(2,1);
|
||||||
alter ignore table t1 add unique `main` (b);
|
alter ignore table t1 add unique `main` (b);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#
|
|
||||||
# Bug#56862 Execution of a query that uses index merge returns a wrong result
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
a int,
|
|
||||||
b int,
|
|
||||||
INDEX idx(a))
|
|
||||||
ENGINE=INNODB;
|
|
||||||
INSERT INTO t1(a,b) VALUES
|
|
||||||
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
|
||||||
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
|
||||||
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
|
||||||
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
|
||||||
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1 VALUES (1000000, 0, 0);
|
|
||||||
SET SESSION sort_buffer_size = 1024*36;
|
|
||||||
EXPLAIN
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 3537 Using sort_union(idx,PRIMARY); Using where
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
COUNT(*)
|
|
||||||
1537
|
|
||||||
SET SESSION sort_buffer_size = DEFAULT;
|
|
||||||
DROP TABLE t1;
|
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Test for bug #39932 "create table fails if column for FK is in different
|
# Test for bug #39932 "create table fails if column for FK is in different
|
||||||
|
@@ -849,50 +849,6 @@ insert into t1 values (1,1),(2,1);
|
|||||||
alter ignore table t1 add unique `main` (b);
|
alter ignore table t1 add unique `main` (b);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # Bug#56862 Execution of a query that uses index merge returns a wrong result
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
a int,
|
|
||||||
b int,
|
|
||||||
INDEX idx(a))
|
|
||||||
ENGINE=INNODB;
|
|
||||||
|
|
||||||
INSERT INTO t1(a,b) VALUES
|
|
||||||
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
|
||||||
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
|
||||||
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
|
||||||
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
|
||||||
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1 VALUES (1000000, 0, 0);
|
|
||||||
|
|
||||||
SET SESSION sort_buffer_size = 1024*36;
|
|
||||||
|
|
||||||
EXPLAIN
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
|
|
||||||
SET SESSION sort_buffer_size = DEFAULT;
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@@ -2411,41 +2411,4 @@ PACK_KEYS=0;
|
|||||||
CREATE INDEX a ON t1 (a);
|
CREATE INDEX a ON t1 (a);
|
||||||
CREATE INDEX c on t1 (c);
|
CREATE INDEX c on t1 (c);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (
|
|
||||||
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
a int,
|
|
||||||
b int,
|
|
||||||
INDEX idx(a))
|
|
||||||
ENGINE=INNODB;
|
|
||||||
INSERT INTO t1(a,b) VALUES
|
|
||||||
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
|
||||||
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
|
||||||
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
|
||||||
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
|
||||||
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1 VALUES (1000000, 0, 0);
|
|
||||||
SET SESSION sort_buffer_size = 1024*36;
|
|
||||||
EXPLAIN
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 3537 Using sort_union(idx,PRIMARY); Using where
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
COUNT(*)
|
|
||||||
1537
|
|
||||||
SET SESSION sort_buffer_size = DEFAULT;
|
|
||||||
DROP TABLE t1;
|
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@@ -647,48 +647,4 @@ CREATE INDEX c on t1 (c);
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
|
||||||
# Bug#56862 Execution of a query that uses index merge returns a wrong result
|
|
||||||
#
|
|
||||||
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
a int,
|
|
||||||
b int,
|
|
||||||
INDEX idx(a))
|
|
||||||
ENGINE=INNODB;
|
|
||||||
|
|
||||||
INSERT INTO t1(a,b) VALUES
|
|
||||||
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
|
|
||||||
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
|
|
||||||
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
|
|
||||||
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
|
|
||||||
INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1(a,b) SELECT a,b FROM t1;
|
|
||||||
INSERT INTO t1 VALUES (1000000, 0, 0);
|
|
||||||
|
|
||||||
SET SESSION sort_buffer_size = 1024*36;
|
|
||||||
|
|
||||||
EXPLAIN
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
|
|
||||||
SELECT COUNT(*) FROM
|
|
||||||
(SELECT * FROM t1 FORCE INDEX (idx,PRIMARY)
|
|
||||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
|
||||||
|
|
||||||
SET SESSION sort_buffer_size = DEFAULT;
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@@ -4,7 +4,7 @@ insert into t1 values (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
|
|||||||
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
||||||
explain select * from t1 where not(not(a));
|
explain select * from t1 where not(not(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
|
||||||
1 SIMPLE t1 index NULL a 5 NULL 21 Using where; Using index
|
1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
|
||||||
select * from t1 where not(not(a));
|
select * from t1 where not(not(a));
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
@@ -388,7 +388,7 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 analyze status OK
|
test.t1 analyze status OK
|
||||||
explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a));
|
explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(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 index NULL a 5 NULL 5 100.00 Using where; Using index
|
1 SIMPLE t1 index a a 5 NULL 5 40.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like '1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` having `test`.`t1`.`a`
|
Note 1003 select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like '1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where (`test`.`t1`.`a` <> 0) having (`test`.`t1`.`a` <> 0)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@@ -3954,6 +3954,26 @@ SELECT * FROM v1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # LP BUG#777809 (a retrograded condition for view ON)
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 ( f1 int NOT NULL , f6 int NOT NULL ) ;
|
||||||
|
INSERT IGNORE INTO t1 VALUES (20, 2);
|
||||||
|
|
||||||
|
CREATE TABLE t2 ( f3 int NOT NULL ) ;
|
||||||
|
INSERT IGNORE INTO t2 VALUES (7);
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW v2 AS SELECT * FROM t2;
|
||||||
|
|
||||||
|
PREPARE prep_stmt FROM 'SELECT t1.f6 FROM t1 RIGHT JOIN v2 ON v2.f3 WHERE t1.f1 != 0';
|
||||||
|
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
EXECUTE prep_stmt;
|
||||||
|
|
||||||
|
drop view v2;
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
--echo # -----------------------------------------------------------------
|
--echo # -----------------------------------------------------------------
|
||||||
--echo # -- End of 5.1 tests.
|
--echo # -- End of 5.1 tests.
|
||||||
--echo # -----------------------------------------------------------------
|
--echo # -----------------------------------------------------------------
|
||||||
|
@@ -1640,6 +1640,7 @@ bool add_to_list(THD *thd, SQL_I_List<ORDER> &list, Item *group,bool asc);
|
|||||||
bool push_new_name_resolution_context(THD *thd,
|
bool push_new_name_resolution_context(THD *thd,
|
||||||
TABLE_LIST *left_op,
|
TABLE_LIST *left_op,
|
||||||
TABLE_LIST *right_op);
|
TABLE_LIST *right_op);
|
||||||
|
Item *normalize_cond(Item *cond);
|
||||||
void add_join_on(TABLE_LIST *b,Item *expr);
|
void add_join_on(TABLE_LIST *b,Item *expr);
|
||||||
void add_join_natural(TABLE_LIST *a,TABLE_LIST *b,List<String> *using_fields,
|
void add_join_natural(TABLE_LIST *a,TABLE_LIST *b,List<String> *using_fields,
|
||||||
SELECT_LEX *lex);
|
SELECT_LEX *lex);
|
||||||
|
@@ -274,7 +274,6 @@ public:
|
|||||||
|
|
||||||
virtual bool reverse_sorted() = 0;
|
virtual bool reverse_sorted() = 0;
|
||||||
virtual bool unique_key_range() { return false; }
|
virtual bool unique_key_range() { return false; }
|
||||||
virtual bool clustered_pk_range() { return false; }
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Request that this quick select produces sorted output. Not all quick
|
Request that this quick select produces sorted output. Not all quick
|
||||||
@@ -593,9 +592,6 @@ public:
|
|||||||
MEM_ROOT alloc;
|
MEM_ROOT alloc;
|
||||||
THD *thd;
|
THD *thd;
|
||||||
virtual int read_keys_and_merge()= 0;
|
virtual int read_keys_and_merge()= 0;
|
||||||
|
|
||||||
bool clustered_pk_range() { return test(pk_quick_select); }
|
|
||||||
|
|
||||||
/* used to get rows collected in Unique */
|
/* used to get rows collected in Unique */
|
||||||
READ_RECORD read_record;
|
READ_RECORD read_record;
|
||||||
};
|
};
|
||||||
|
@@ -195,15 +195,6 @@ bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
|
|||||||
|
|
||||||
if (select && my_b_inited(&select->file))
|
if (select && my_b_inited(&select->file))
|
||||||
tempfile= &select->file;
|
tempfile= &select->file;
|
||||||
else if (select && select->quick && select->quick->clustered_pk_range())
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
In case of QUICK_INDEX_MERGE_SELECT with clustered pk range we have to
|
|
||||||
use its own access method(i.e QUICK_INDEX_MERGE_SELECT::get_next()) as
|
|
||||||
sort file does not contain rowids which satisfy clustered pk range.
|
|
||||||
*/
|
|
||||||
tempfile= 0;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
tempfile= table->sort.io_cache;
|
tempfile= table->sort.io_cache;
|
||||||
if (tempfile && my_b_inited(tempfile) &&
|
if (tempfile && my_b_inited(tempfile) &&
|
||||||
|
@@ -7565,21 +7565,15 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
|
|||||||
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
|
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
|
||||||
(uchar)(*passwd++) : strlen(passwd);
|
(uchar)(*passwd++) : strlen(passwd);
|
||||||
|
|
||||||
if (thd->client_capabilities & CLIENT_CONNECT_WITH_DB)
|
db= thd->client_capabilities & CLIENT_CONNECT_WITH_DB ?
|
||||||
{
|
db + passwd_len + 1 : 0;
|
||||||
db= db + passwd_len + 1;
|
|
||||||
/* strlen() can't be easily deleted without changing protocol */
|
|
||||||
db_len= strlen(db);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
db= 0;
|
|
||||||
db_len= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (passwd + passwd_len + db_len > (char *)net->read_pos + pkt_len)
|
if (passwd + passwd_len + test(db) > (char *)net->read_pos + pkt_len)
|
||||||
return packet_error;
|
return packet_error;
|
||||||
|
|
||||||
|
/* strlen() can't be easily deleted without changing protocol */
|
||||||
|
db_len= db ? strlen(db) : 0;
|
||||||
|
|
||||||
char *client_plugin= passwd + passwd_len + (db ? db_len + 1 : 0);
|
char *client_plugin= passwd + passwd_len + (db ? db_len + 1 : 0);
|
||||||
|
|
||||||
/* Since 4.1 all database names are stored in utf8 */
|
/* Since 4.1 all database names are stored in utf8 */
|
||||||
@@ -7646,8 +7640,7 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
|
|||||||
|
|
||||||
if (thd->client_capabilities & CLIENT_PLUGIN_AUTH)
|
if (thd->client_capabilities & CLIENT_PLUGIN_AUTH)
|
||||||
{
|
{
|
||||||
if ((client_plugin + strlen(client_plugin)) >
|
if (client_plugin >= (char *)net->read_pos + pkt_len)
|
||||||
(char *)net->read_pos + pkt_len)
|
|
||||||
return packet_error;
|
return packet_error;
|
||||||
client_plugin= fix_plugin_ptr(client_plugin);
|
client_plugin= fix_plugin_ptr(client_plugin);
|
||||||
}
|
}
|
||||||
|
@@ -6794,6 +6794,28 @@ push_new_name_resolution_context(THD *thd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fix condition which contains only field (f turns to f <> 0 )
|
||||||
|
|
||||||
|
@param cond The condition to fix
|
||||||
|
|
||||||
|
@return fixed condition
|
||||||
|
*/
|
||||||
|
|
||||||
|
Item *normalize_cond(Item *cond)
|
||||||
|
{
|
||||||
|
if (cond)
|
||||||
|
{
|
||||||
|
Item::Type type= cond->type();
|
||||||
|
if (type == Item::FIELD_ITEM || type == Item::REF_ITEM)
|
||||||
|
{
|
||||||
|
cond= new Item_func_ne(cond, new Item_int(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cond;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Add an ON condition to the second operand of a JOIN ... ON.
|
Add an ON condition to the second operand of a JOIN ... ON.
|
||||||
|
|
||||||
@@ -6812,6 +6834,7 @@ void add_join_on(TABLE_LIST *b, Item *expr)
|
|||||||
{
|
{
|
||||||
if (expr)
|
if (expr)
|
||||||
{
|
{
|
||||||
|
expr= normalize_cond(expr);
|
||||||
if (!b->on_expr)
|
if (!b->on_expr)
|
||||||
b->on_expr= expr;
|
b->on_expr= expr;
|
||||||
else
|
else
|
||||||
|
@@ -13082,7 +13082,7 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields,
|
|||||||
bool using_unique_constraint= 0;
|
bool using_unique_constraint= 0;
|
||||||
bool use_packed_rows= 0;
|
bool use_packed_rows= 0;
|
||||||
bool not_all_columns= !(select_options & TMP_TABLE_ALL_COLUMNS);
|
bool not_all_columns= !(select_options & TMP_TABLE_ALL_COLUMNS);
|
||||||
char *tmpname,path[FN_REFLEN], tmp_table_name[50];
|
char *tmpname,path[FN_REFLEN];
|
||||||
uchar *pos, *group_buff, *bitmaps;
|
uchar *pos, *group_buff, *bitmaps;
|
||||||
uchar *null_flags;
|
uchar *null_flags;
|
||||||
Field **reg_field, **from_field, **default_field;
|
Field **reg_field, **from_field, **default_field;
|
||||||
@@ -13113,12 +13113,12 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields,
|
|||||||
temp_pool_slot = bitmap_lock_set_next(&temp_pool);
|
temp_pool_slot = bitmap_lock_set_next(&temp_pool);
|
||||||
|
|
||||||
if (temp_pool_slot != MY_BIT_NONE) // we got a slot
|
if (temp_pool_slot != MY_BIT_NONE) // we got a slot
|
||||||
sprintf(tmp_table_name, "%s_%lx_%i", tmp_file_prefix,
|
sprintf(path, "%s_%lx_%i", tmp_file_prefix,
|
||||||
current_pid, temp_pool_slot);
|
current_pid, temp_pool_slot);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* if we run out of slots or we are not using tempool */
|
/* if we run out of slots or we are not using tempool */
|
||||||
sprintf(tmp_table_name, "%s%lx_%lx_%x", tmp_file_prefix,current_pid,
|
sprintf(path, "%s%lx_%lx_%x", tmp_file_prefix,current_pid,
|
||||||
thd->thread_id, thd->tmp_table++);
|
thd->thread_id, thd->tmp_table++);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13126,7 +13126,7 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields,
|
|||||||
No need to change table name to lower case as we are only creating
|
No need to change table name to lower case as we are only creating
|
||||||
MyISAM, Aria or HEAP tables here
|
MyISAM, Aria or HEAP tables here
|
||||||
*/
|
*/
|
||||||
fn_format(path, tmp_table_name, mysql_tmpdir, "",
|
fn_format(path, path, mysql_tmpdir, "",
|
||||||
MY_REPLACE_EXT|MY_UNPACK_FILENAME);
|
MY_REPLACE_EXT|MY_UNPACK_FILENAME);
|
||||||
|
|
||||||
if (group)
|
if (group)
|
||||||
@@ -13179,7 +13179,7 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields,
|
|||||||
sizeof(*key_part_info)*(param->group_parts+1),
|
sizeof(*key_part_info)*(param->group_parts+1),
|
||||||
¶m->start_recinfo,
|
¶m->start_recinfo,
|
||||||
sizeof(*param->recinfo)*(field_count*2+4),
|
sizeof(*param->recinfo)*(field_count*2+4),
|
||||||
&tmpname, (uint) strlen(tmp_table_name)+1,
|
&tmpname, (uint) strlen(path)+1,
|
||||||
&group_buff, (group && ! using_unique_constraint ?
|
&group_buff, (group && ! using_unique_constraint ?
|
||||||
param->group_length : 0),
|
param->group_length : 0),
|
||||||
&bitmaps, bitmap_buffer_size(field_count)*4,
|
&bitmaps, bitmap_buffer_size(field_count)*4,
|
||||||
@@ -13198,7 +13198,7 @@ create_tmp_table(THD *thd, TMP_TABLE_PARAM *param, List<Item> &fields,
|
|||||||
DBUG_RETURN(NULL); /* purecov: inspected */
|
DBUG_RETURN(NULL); /* purecov: inspected */
|
||||||
}
|
}
|
||||||
param->items_to_copy= copy_func;
|
param->items_to_copy= copy_func;
|
||||||
strmov(tmpname, tmp_table_name);
|
strmov(tmpname, path);
|
||||||
/* make table according to fields */
|
/* make table according to fields */
|
||||||
|
|
||||||
bzero((char*) table,sizeof(*table));
|
bzero((char*) table,sizeof(*table));
|
||||||
|
@@ -9426,7 +9426,7 @@ where_clause:
|
|||||||
expr
|
expr
|
||||||
{
|
{
|
||||||
SELECT_LEX *select= Select;
|
SELECT_LEX *select= Select;
|
||||||
select->where= $3;
|
select->where= normalize_cond($3);
|
||||||
select->parsing_place= NO_MATTER;
|
select->parsing_place= NO_MATTER;
|
||||||
if ($3)
|
if ($3)
|
||||||
$3->top_level_item();
|
$3->top_level_item();
|
||||||
@@ -9442,7 +9442,7 @@ having_clause:
|
|||||||
expr
|
expr
|
||||||
{
|
{
|
||||||
SELECT_LEX *sel= Select;
|
SELECT_LEX *sel= Select;
|
||||||
sel->having= $3;
|
sel->having= normalize_cond($3);
|
||||||
sel->parsing_place= NO_MATTER;
|
sel->parsing_place= NO_MATTER;
|
||||||
if ($3)
|
if ($3)
|
||||||
$3->top_level_item();
|
$3->top_level_item();
|
||||||
@@ -10909,7 +10909,7 @@ wild_and_where:
|
|||||||
}
|
}
|
||||||
| WHERE expr
|
| WHERE expr
|
||||||
{
|
{
|
||||||
Select->where= $2;
|
Select->where= normalize_cond($2);
|
||||||
if ($2)
|
if ($2)
|
||||||
$2->top_level_item();
|
$2->top_level_item();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user