summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2014-12-03 11:37:26 +0100
committerSergei Golubchik <serg@mariadb.org>2014-12-03 11:37:26 +0100
commitec4137c62b00a2bad91dd108f5782b206fe86a8b (patch)
treeb284d929d1a498df14aafffd0c31831f2b4e9fd5 /sql/sql_delete.cc
parent1caee393076dc642a7d8e1283377b59ef8f52dbd (diff)
parentbafe529af76a915f43dbf6a3fb8dc610a4ea121b (diff)
downloadmariadb-git-ec4137c62b00a2bad91dd108f5782b206fe86a8b.tar.gz
Merge branch '10.1' into bb-10.1-merge
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc26
1 files changed, 13 insertions, 13 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index c85068e5d10..65c748cc590 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -52,7 +52,7 @@
invoked on a running DELETE statement.
*/
-void Delete_plan::save_explain_data(Explain_query *query)
+void Delete_plan::save_explain_data(MEM_ROOT *mem_root, Explain_query *query)
{
Explain_delete* explain= new Explain_delete;
@@ -65,22 +65,23 @@ void Delete_plan::save_explain_data(Explain_query *query)
else
{
explain->deleting_all_rows= false;
- Update_plan::save_explain_data_intern(query, explain);
+ Update_plan::save_explain_data_intern(mem_root, query, explain);
}
query->add_upd_del_plan(explain);
}
-void Update_plan::save_explain_data(Explain_query *query)
+void Update_plan::save_explain_data(MEM_ROOT *mem_root, Explain_query *query)
{
Explain_update* explain= new Explain_update;
- save_explain_data_intern(query, explain);
+ save_explain_data_intern(mem_root, query, explain);
query->add_upd_del_plan(explain);
}
-void Update_plan::save_explain_data_intern(Explain_query *query,
+void Update_plan::save_explain_data_intern(MEM_ROOT *mem_root,
+ Explain_query *query,
Explain_update *explain)
{
explain->select_type= "SIMPLE";
@@ -142,10 +143,12 @@ void Update_plan::save_explain_data_intern(Explain_query *query,
}
explain->using_where= MY_TEST(select && select->cond);
+ explain->where_cond= select? select->cond: NULL;
explain->using_filesort= using_filesort;
explain->using_io_buffer= using_io_buffer;
- make_possible_keys_line(table, possible_keys, &explain->possible_keys_line);
+ append_possible_keys(mem_root, explain->possible_keys, table,
+ possible_keys);
explain->quick_info= NULL;
@@ -158,11 +161,8 @@ void Update_plan::save_explain_data_intern(Explain_query *query,
{
if (index != MAX_KEY)
{
- explain->key_str.append(table->key_info[index].name);
- char buf[64];
- size_t length;
- length= longlong10_to_str(table->key_info[index].key_length, buf, 10) - buf;
- explain->key_len_str.append(buf, length);
+ explain->key.set(mem_root, &table->key_info[index],
+ table->key_info[index].key_length);
}
}
explain->rows= scanned_rows;
@@ -461,7 +461,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
if (thd->lex->describe)
goto produce_explain_and_leave;
- query_plan.save_explain_data(thd->lex->explain);
+ query_plan.save_explain_data(thd->mem_root, thd->lex->explain);
DBUG_EXECUTE_IF("show_explain_probe_delete_exec_start",
dbug_serve_apcs(thd, 1););
@@ -699,7 +699,7 @@ produce_explain_and_leave:
We come here for various "degenerate" query plans: impossible WHERE,
no-partitions-used, impossible-range, etc.
*/
- query_plan.save_explain_data(thd->lex->explain);
+ query_plan.save_explain_data(thd->mem_root, thd->lex->explain);
send_nothing_and_leave:
/*