diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2013-10-16 12:13:51 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2013-10-16 12:13:51 +0400 |
commit | 4bed7aa858e7946471fb37ce30f3273ec28867ce (patch) | |
tree | 88ed0acf75fcb99839ea364e418d2bc19c0705b8 /sql/sql_lex.h | |
parent | 207f0082202fd822fe1d0d3083c7fff5de6d8847 (diff) | |
download | mariadb-git-4bed7aa858e7946471fb37ce30f3273ec28867ce.tar.gz |
MDEV-3798: [SHOW] EXPLAIN UPDATE/DELETE, Memory leak in binlog.binlog_base64_flag:
- It turns out, there are statements that will call lex_start(thd->lex)
after parsing has been finished. lex_start() will set lex->explain=NULL,
which will lose the pointer to already allocated Explain_plan object.
- To get rid of this, switch to lazy creation of lex->explain. Now, it is
created only when we get a part ot query plan.
Diffstat (limited to 'sql/sql_lex.h')
-rw-r--r-- | sql/sql_lex.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sql_lex.h b/sql/sql_lex.h index c033c0f990b..18be450caf2 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -622,6 +622,7 @@ class Explain_query; void delete_explain_query(LEX *lex); void create_explain_query(LEX *lex, MEM_ROOT *mem_root); +void create_explain_query_if_not_exists(LEX *lex, MEM_ROOT *mem_root); bool print_explain_query(LEX *lex, THD *thd, String *str); class st_select_lex_unit: public st_select_lex_node { |