summaryrefslogtreecommitdiff
path: root/sql/item_subselect.cc
diff options
context:
space:
mode:
authorSergey Glukhov <sergey.glukhov@oracle.com>2012-08-09 15:34:52 +0400
committerSergey Glukhov <sergey.glukhov@oracle.com>2012-08-09 15:34:52 +0400
commit2f30b34095e286877cda7156ae9622a4154147bd (patch)
tree45667344474d3cdd896bdb5596f052371ec18359 /sql/item_subselect.cc
parenteede4140163d12b892ff140e6a4abc40df5ff87a (diff)
downloadmariadb-git-2f30b34095e286877cda7156ae9622a4154147bd.tar.gz
Bug #14409015 MEMORY LEAK WHEN REFERENCING OUTER FIELD IN HAVING
When resolving outer fields, Item_field::fix_outer_fields() creates new Item_refs for each execution of a prepared statement, so these must be allocated in the runtime memroot. The memroot switching before resolving JOIN::having causes these to be allocated in the statement root, leaking memory for each PS execution. sql/item_subselect.cc: addon, fix for 11829691, item could be created in runtime memroot, so we need to use real_item instead.
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r--sql/item_subselect.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 46d49797b9c..2c91d0573c1 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -1135,7 +1135,7 @@ Item_in_subselect::single_value_transformer(JOIN *join,
}
else
{
- Item *item= (Item*) select_lex->item_list.head();
+ Item *item= (Item*) select_lex->item_list.head()->real_item();
if (select_lex->table_list.elements)
{