mirror of
https://github.com/MariaDB/server.git
synced 2025-08-29 00:08:14 +03:00
Fixed bug #5500: EXPLAIN returned a wrong select_type for queries using views.
Select_type in the EXPLAIN output for the query SELECT * FROM t1 was 'SIMPLE', while for the query SELECT * FROM v1, where the view v1 was defined as SELECT * FROM t1, the EXPLAIN output contained 'PRIMARY' for the select_type column.
This commit is contained in:
@@ -49,7 +49,7 @@ select v1.b from v1;
|
||||
ERROR 42S22: Unknown column 'v1.b' in 'field list'
|
||||
explain extended select c from v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5
|
||||
Warnings:
|
||||
Note 1003 select (`test`.`t1`.`b` + 1) AS `c` from `test`.`t1`
|
||||
create algorithm=temptable view v2 (c) as select b+1 from t1;
|
||||
@@ -83,7 +83,7 @@ c
|
||||
12
|
||||
explain extended select c from v3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5
|
||||
Warnings:
|
||||
Note 1003 select ((`test`.`t1`.`b` + 1) + 1) AS `c` from `test`.`t1`
|
||||
create algorithm=temptable view v4 (c) as select c+1 from v2;
|
||||
@@ -376,7 +376,7 @@ c
|
||||
30
|
||||
explain extended select * from v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`b` AS `c` from `test`.`t1` where (`test`.`t1`.`a` < 3)
|
||||
update v1 set c=c+1;
|
||||
@@ -1391,9 +1391,9 @@ a a b
|
||||
4 NULL NULL
|
||||
explain extended select * from t3 left join v3 on (t3.a = v3.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join `test`.`t2` on((`test`.`t1`.`a` = `test`.`t2`.`a`))) on((`test`.`t3`.`a` = `test`.`t1`.`a`)) where 1
|
||||
create view v1 (a) as select a from t1;
|
||||
@@ -1406,9 +1406,9 @@ a a b
|
||||
4 NULL NULL
|
||||
explain extended select * from t3 left join v4 on (t3.a = v4.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join (`test`.`t2`) on((`test`.`t1`.`a` = `test`.`t2`.`a`))) on((`test`.`t3`.`a` = `test`.`t1`.`a`)) where 1
|
||||
prepare stmt1 from "select * from t3 left join v4 on (t3.a = v4.a);";
|
||||
@@ -2321,12 +2321,12 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref a a 10 const,test.t1.b 2 Using where; Using index
|
||||
EXPLAIN SELECT * FROM v1 WHERE a=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ref a a 5 const 1 Using where; Using index
|
||||
1 PRIMARY t2 ref a a 10 const,test.t1.b 2 Using where; Using index
|
||||
1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
|
||||
1 SIMPLE t2 ref a a 10 const,test.t1.b 2 Using where; Using index
|
||||
EXPLAIN SELECT * FROM v2 WHERE a=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ref a a 5 const 1 Using where; Using index
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 3 Using where
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
create table t1 (f1 int);
|
||||
@@ -2409,7 +2409,7 @@ insert into t1 values (1),(2);
|
||||
create view v1 as select * from t1;
|
||||
explain select id from v1 order by id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table t1(f1 int, f2 int);
|
||||
@@ -2480,7 +2480,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
EXPLAIN SELECT MAX(a) FROM v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
SELECT MIN(a) FROM t1;
|
||||
MIN(a)
|
||||
0
|
||||
@@ -2492,7 +2492,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
EXPLAIN SELECT MIN(a) FROM v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (x varchar(10));
|
||||
@@ -2879,3 +2879,22 @@ View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`f1` AS `f1` from `t1` where (`t1`.`f1` between now() and (now() + interval 1 minute))
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (s1 int);
|
||||
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||
EXPLAIN SELECT * FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
|
||||
EXPLAIN SELECT * FROM v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 0 const row not found
|
||||
INSERT INTO t1 VALUES (1), (3), (2);
|
||||
EXPLAIN SELECT * FROM t1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t ALL NULL NULL NULL NULL 3 Using where
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3
|
||||
EXPLAIN SELECT * FROM v1 t WHERE t.s1+1 < (SELECT MAX(t1.s1) FROM t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
Reference in New Issue
Block a user