MDEV-3798: EXPLAIN UPDATE/DELETE
- Address review feedback: rename files
This commit is contained in:
parent
fedf769f0b
commit
6a7f8af3f9
@ -99,7 +99,7 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
||||
../sql/sql_expression_cache.cc
|
||||
../sql/my_apc.cc ../sql/my_apc.h
|
||||
../sql/rpl_gtid.cc
|
||||
../sql/opt_qpf.cc ../sql/opt_qpf.h
|
||||
../sql/sql_explain.cc ../sql/sql_explain.h
|
||||
${GEN_SOURCES}
|
||||
${MYSYS_LIBWRAP_SOURCE}
|
||||
)
|
||||
|
@ -80,7 +80,7 @@ SET (SQL_SOURCE
|
||||
sql_reload.cc
|
||||
|
||||
# added in MariaDB:
|
||||
opt_qpf.h opt_qpf.cc
|
||||
sql_explain.h sql_explain.cc
|
||||
sql_lifo_buffer.h sql_join_cache.h sql_join_cache.cc
|
||||
create_options.cc multi_range_read.cc
|
||||
opt_index_cond_pushdown.cc opt_subselect.cc
|
||||
|
@ -3516,14 +3516,14 @@ bool st_select_lex::optimize_unflattened_subqueries(bool const_only)
|
||||
inner_join->select_options= save_options;
|
||||
un->thd->lex->current_select= save_select;
|
||||
|
||||
Explain_query *qpf;
|
||||
if ((qpf= inner_join->thd->lex->explain))
|
||||
Explain_query *eq;
|
||||
if ((eq= inner_join->thd->lex->explain))
|
||||
{
|
||||
Explain_select *qp_sel;
|
||||
if ((qp_sel= qpf->get_select(inner_join->select_lex->select_number)))
|
||||
Explain_select *expl_sel;
|
||||
if ((expl_sel= eq->get_select(inner_join->select_lex->select_number)))
|
||||
{
|
||||
sl->set_explain_type(TRUE);
|
||||
qp_sel->select_type= sl->type;
|
||||
expl_sel->select_type= sl->type;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2328,14 +2328,6 @@ void join_save_qpf(JOIN *join)
|
||||
|
||||
void JOIN::exec()
|
||||
{
|
||||
/*
|
||||
Enable SHOW EXPLAIN only if we're in the top-level query.
|
||||
*/
|
||||
|
||||
/*
|
||||
psergey: we can produce SHOW explain at this point. This means, we're ready
|
||||
to save the query plan.
|
||||
*/
|
||||
thd->apc_target.enable();
|
||||
DBUG_EXECUTE_IF("show_explain_probe_join_exec_start",
|
||||
if (dbug_user_var_equals_int(thd,
|
||||
@ -2343,7 +2335,6 @@ void JOIN::exec()
|
||||
select_lex->select_number))
|
||||
dbug_serve_apcs(thd, 1);
|
||||
);
|
||||
|
||||
exec_inner();
|
||||
|
||||
if (!exec_saved_explain)
|
||||
@ -22505,15 +22496,15 @@ int JOIN::save_explain_data(Explain_query *output, bool need_tmp_table,
|
||||
|
||||
if (message)
|
||||
{
|
||||
Explain_select *qp_sel;
|
||||
qp_node= qp_sel= new (output->mem_root) Explain_select;
|
||||
Explain_select *xpl_sel;
|
||||
qp_node= xpl_sel= new (output->mem_root) Explain_select;
|
||||
join->select_lex->set_explain_type(true);
|
||||
|
||||
qp_sel->select_id= join->select_lex->select_number;
|
||||
qp_sel->select_type= join->select_lex->type;
|
||||
qp_sel->message= message;
|
||||
/* Setting qp_sel->message means that all other members are invalid */
|
||||
output->add_node(qp_sel);
|
||||
xpl_sel->select_id= join->select_lex->select_number;
|
||||
xpl_sel->select_type= join->select_lex->type;
|
||||
xpl_sel->message= message;
|
||||
/* Setting xpl_sel->message means that all other members are invalid */
|
||||
output->add_node(xpl_sel);
|
||||
}
|
||||
else if (join->select_lex == join->unit->fake_select_lex)
|
||||
{
|
||||
@ -22522,13 +22513,13 @@ int JOIN::save_explain_data(Explain_query *output, bool need_tmp_table,
|
||||
else if (!join->select_lex->master_unit()->derived ||
|
||||
join->select_lex->master_unit()->derived->is_materialized_derived())
|
||||
{
|
||||
Explain_select *qp_sel;
|
||||
qp_node= qp_sel= new (output->mem_root) Explain_select;
|
||||
Explain_select *xpl_sel;
|
||||
qp_node= xpl_sel= new (output->mem_root) Explain_select;
|
||||
table_map used_tables=0;
|
||||
|
||||
join->select_lex->set_explain_type(true);
|
||||
qp_sel->select_id= join->select_lex->select_number;
|
||||
qp_sel->select_type= join->select_lex->type;
|
||||
xpl_sel->select_id= join->select_lex->select_number;
|
||||
xpl_sel->select_type= join->select_lex->type;
|
||||
|
||||
JOIN_TAB* const first_top_tab= first_breadth_first_tab(join, WALK_OPTIMIZATION_TABS);
|
||||
|
||||
@ -22572,7 +22563,7 @@ int JOIN::save_explain_data(Explain_query *output, bool need_tmp_table,
|
||||
}
|
||||
|
||||
Explain_table_access *qpt= new (output->mem_root) Explain_table_access;
|
||||
qp_sel->add_table(qpt);
|
||||
xpl_sel->add_table(qpt);
|
||||
qpt->key.set(thd->mem_root, NULL, (uint)-1);
|
||||
qpt->quick_info= NULL;
|
||||
|
||||
@ -22583,7 +22574,7 @@ int JOIN::save_explain_data(Explain_query *output, bool need_tmp_table,
|
||||
qpt->sjm_nest_select_id= 0;
|
||||
|
||||
/* select_type */
|
||||
qp_sel->select_type= join->select_lex->type;
|
||||
xpl_sel->select_type= join->select_lex->type;
|
||||
|
||||
/* table */
|
||||
if (table->derived_select_number)
|
||||
@ -22893,12 +22884,12 @@ int JOIN::save_explain_data(Explain_query *output, bool need_tmp_table,
|
||||
if (need_tmp_table)
|
||||
{
|
||||
need_tmp_table=0;
|
||||
qp_sel->using_temporary= true;
|
||||
xpl_sel->using_temporary= true;
|
||||
}
|
||||
if (need_order)
|
||||
{
|
||||
need_order=0;
|
||||
qp_sel->using_filesort= true;
|
||||
xpl_sel->using_filesort= true;
|
||||
}
|
||||
if (distinct & test_all_bits(used_tables,
|
||||
join->select_list_used_tables))
|
||||
@ -22956,7 +22947,7 @@ int JOIN::save_explain_data(Explain_query *output, bool need_tmp_table,
|
||||
// For next iteration
|
||||
used_tables|=table->map;
|
||||
}
|
||||
output->add_node(qp_sel);
|
||||
output->add_node(xpl_sel);
|
||||
}
|
||||
|
||||
for (SELECT_LEX_UNIT *unit= join->select_lex->first_inner_unit();
|
||||
|
@ -198,7 +198,7 @@ int rr_sequential(READ_RECORD *info);
|
||||
int rr_sequential_and_unpack(READ_RECORD *info);
|
||||
|
||||
|
||||
#include "opt_qpf.h"
|
||||
#include "sql_explain.h"
|
||||
|
||||
/**************************************************************************************
|
||||
* New EXPLAIN structures END
|
||||
|
Loading…
x
Reference in New Issue
Block a user