diff options
author | Sergei Golubchik <serg@mariadb.org> | 2014-12-03 11:37:26 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2014-12-03 11:37:26 +0100 |
commit | ec4137c62b00a2bad91dd108f5782b206fe86a8b (patch) | |
tree | b284d929d1a498df14aafffd0c31831f2b4e9fd5 /sql/sql_delete.cc | |
parent | 1caee393076dc642a7d8e1283377b59ef8f52dbd (diff) | |
parent | bafe529af76a915f43dbf6a3fb8dc610a4ea121b (diff) | |
download | mariadb-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.cc | 26 |
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: /* |