diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2013-08-24 12:20:51 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2013-08-24 12:20:51 +0400 |
commit | d2d9eb65e46f9afe10cd09d1b69f3d238e364c19 (patch) | |
tree | e79d183611f6fe499ee3674fdb14d3d49ff159eb /sql/sql_union.cc | |
parent | f9c2b402f437a2278b04d971054fcacc57eb07aa (diff) | |
parent | 662bfed027dbf29d1d185ae677f0b5c79920287b (diff) | |
download | mariadb-git-d2d9eb65e46f9afe10cd09d1b69f3d238e364c19.tar.gz |
[SHOW] EXPLAIN UPDATE/DELETE, code re-structuring
- Merge with current 10.0-base
Diffstat (limited to 'sql/sql_union.cc')
-rw-r--r-- | sql/sql_union.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 0950cd371eb..a6e935f5cfd 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -620,6 +620,7 @@ bool st_select_lex_unit::exec() ulonglong add_rows=0; ha_rows examined_rows= 0; DBUG_ENTER("st_select_lex_unit::exec"); + bool was_executed= executed; if (executed && !uncacheable && !describe) DBUG_RETURN(FALSE); @@ -629,6 +630,9 @@ bool st_select_lex_unit::exec() saved_error= optimize(); + if (!was_executed && thd->lex->query_plan_footprint) + save_union_qpf(thd->lex->query_plan_footprint); + if (uncacheable || !item || !item->assigned() || describe) { for (SELECT_LEX *sl= select_cursor; sl; sl= sl->next_select()) @@ -775,6 +779,9 @@ bool st_select_lex_unit::exec() */ if (!fake_select_lex->ref_pointer_array) fake_select_lex->n_child_sum_items+= global_parameters->n_sum_items; + + if (!was_executed && thd->lex->query_plan_footprint) + save_union_qpf_part2(thd->lex->query_plan_footprint); saved_error= mysql_select(thd, &fake_select_lex->ref_pointer_array, &result_table_list, |