Commit cdc9a117 authored by Sergey Petrunya's avatar Sergey Petrunya

MWL#182: Explain running statements:

Make SHOW EXPLAIN work for queries that do "Using temporary" and/or "Using filesort"
- Patch#1: Don't lose "Using temporary/filesort" in the SHOW EXPLAIN output.
parent ff40705f
...@@ -209,4 +209,79 @@ a SUBQ ...@@ -209,4 +209,79 @@ a SUBQ
1 0 1 0
2 0 2 0
drop table t2; drop table t2;
#
# SHOW EXPLAIN for SELECT ... ORDER BY with "Using filesort"
#
explain select * from t0 order by a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using filesort
set debug='d,show_explain_probe_1';
set @show_explain_probe_select_id=1;
select * from t0 order by a;
show explain for $thr2;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using filesort
Warnings:
Note 1003 select * from t0 order by a
a
0
1
2
3
4
5
6
7
8
9
#
# SHOW EXPLAIN for SELECT ... with "Using temporary"
#
explain select distinct a from t0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using temporary
set debug='d,show_explain_probe_1';
set @show_explain_probe_select_id=1;
select distinct a from t0;
show explain for $thr2;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using temporary
Warnings:
Note 1003 select distinct a from t0
a
0
1
2
3
4
5
6
7
8
9
#
# SHOW EXPLAIN for SELECT ... with "Using temporary; Using filesort"
#
explain select distinct a from t0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using temporary
set debug='d,show_explain_probe_1';
set @show_explain_probe_select_id=1;
select distinct a from t0;
show explain for $thr2;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using temporary
Warnings:
Note 1003 select distinct a from t0
a
0
1
2
3
4
5
6
7
8
9
drop table t0,t1; drop table t0,t1;
...@@ -255,6 +255,52 @@ connection con1; ...@@ -255,6 +255,52 @@ connection con1;
reap; reap;
drop table t2; drop table t2;
--echo #
--echo # SHOW EXPLAIN for SELECT ... ORDER BY with "Using filesort"
--echo #
explain select * from t0 order by a;
set debug='d,show_explain_probe_1';
set @show_explain_probe_select_id=1;
send select * from t0 order by a;
connection default;
--source include/wait_condition.inc
evalp show explain for $thr2;
connection con1;
reap;
--echo #
--echo # SHOW EXPLAIN for SELECT ... with "Using temporary"
--echo #
connection default;
explain select distinct a from t0;
connection con1;
set debug='d,show_explain_probe_1';
set @show_explain_probe_select_id=1;
send select distinct a from t0;
connection default;
--source include/wait_condition.inc
evalp show explain for $thr2;
connection con1;
reap;
--echo #
--echo # SHOW EXPLAIN for SELECT ... with "Using temporary; Using filesort"
--echo #
connection default;
explain select distinct a from t0;
connection con1;
set debug='d,show_explain_probe_1';
set @show_explain_probe_select_id=1;
send select distinct a from t0;
connection default;
--source include/wait_condition.inc
evalp show explain for $thr2;
connection con1;
reap;
## TODO: Test this: have several SHOW EXPLAIN requests be queued up for a ## TODO: Test this: have several SHOW EXPLAIN requests be queued up for a
## thread and served together. ## thread and served together.
......
...@@ -3752,9 +3752,9 @@ int st_select_lex::print_explain(select_result_sink *output) ...@@ -3752,9 +3752,9 @@ int st_select_lex::print_explain(select_result_sink *output)
if (join && join->optimized == 2) if (join && join->optimized == 2)
{ {
res= join->print_explain(output, TRUE, res= join->print_explain(output, TRUE,
FALSE, // need_tmp_table, join->need_tmp, // need_tmp_table
FALSE, // bool need_order, (join->order != 0 && !join->skip_sort_order), // bool need_order
FALSE, // bool distinct, join->select_distinct, // bool distinct
NULL); //const char *message NULL); //const char *message
if (res) if (res)
goto err; goto err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment