summaryrefslogtreecommitdiff
path: root/sql/sql_class.cc
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2012-04-26 08:48:31 +0530
committerSergey Petrunya <psergey@askmonty.org>2012-04-26 08:48:31 +0530
commitff40705f89b977d966427710e1b32a0774a2f0b3 (patch)
treea9e2c51dd41a128cc22dfdf3ccbe3140e38b4386 /sql/sql_class.cc
parent9b269ea11b49c186a12f1a877c1d7cfa26b8b5c1 (diff)
downloadmariadb-git-ff40705f89b977d966427710e1b32a0774a2f0b3.tar.gz
Make SHOW EXPLAIN FOR produce a warning with the original text of query
that the EXPLAIN is for.
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r--sql/sql_class.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 545c9aff5e9..4e9a0507bba 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -3030,14 +3030,20 @@ void Show_explain_request::get_explain_data(void *arg)
//TODO: change mem_root to point to request_thd->mem_root.
// Actually, change the ARENA, because we're going to allocate items!
Query_arena backup_arena;
- req->target_thd->set_n_backup_active_arena((Query_arena*)req->request_thd,
- &backup_arena);
+ THD *target_thd= req->target_thd;
- if (req->target_thd->lex->unit.print_explain(req->explain_buf))
+ target_thd->set_n_backup_active_arena((Query_arena*)req->request_thd,
+ &backup_arena);
+
+ req->query_str.copy(target_thd->query(),
+ target_thd->query_length(),
+ &my_charset_bin);
+
+ if (target_thd->lex->unit.print_explain(req->explain_buf))
req->failed_to_produce= TRUE;
- req->target_thd->restore_active_arena((Query_arena*)req->request_thd,
- &backup_arena);
+ target_thd->restore_active_arena((Query_arena*)req->request_thd,
+ &backup_arena);
}