diff options
author | Sergey Glukhov <sergey.glukhov@oracle.com> | 2012-08-09 15:50:29 +0400 |
---|---|---|
committer | Sergey Glukhov <sergey.glukhov@oracle.com> | 2012-08-09 15:50:29 +0400 |
commit | 51672ec2d4d37e701b595ac74cde9abc37916a2d (patch) | |
tree | 0dc77d97fc835d2a6e62c405b6a4b0ad58a2a827 | |
parent | 6e4b8b02528f0210703238452231f566d3e75111 (diff) | |
parent | 2f30b34095e286877cda7156ae9622a4154147bd (diff) | |
download | mariadb-git-51672ec2d4d37e701b595ac74cde9abc37916a2d.tar.gz |
5.1 -> 5.5 merge
-rw-r--r-- | sql/item.cc | 7 | ||||
-rw-r--r-- | sql/item_subselect.cc | 2 | ||||
-rw-r--r-- | sql/sql_select.cc | 4 |
3 files changed, 7 insertions, 6 deletions
diff --git a/sql/item.cc b/sql/item.cc index 53776782205..95563e31887 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -6429,7 +6429,12 @@ bool Item_ref::fix_fields(THD *thd, Item **reference) if (from_field != not_found_field) { Item_field* fld; - if (!(fld= new Item_field(thd, last_checked_context, from_field))) + Query_arena backup, *arena; + arena= thd->activate_stmt_arena_if_needed(&backup); + fld= new Item_field(thd, last_checked_context, from_field); + if (arena) + thd->restore_active_arena(arena, &backup); + if (!fld) goto error; thd->change_item_tree(reference, fld); mark_as_dependent(thd, last_checked_context->select_lex, diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 97b8dbbe113..bc81e5b01c1 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -1146,7 +1146,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) { diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 8f4439c4dc1..7169a834ff7 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -557,8 +557,6 @@ JOIN::prepare(Item ***rref_pointer_array, if (having) { - Query_arena backup, *arena; - arena= thd->activate_stmt_arena_if_needed(&backup); nesting_map save_allow_sum_func= thd->lex->allow_sum_func; thd->where="having clause"; thd->lex->allow_sum_func|= 1 << select_lex_arg->nest_level; @@ -568,8 +566,6 @@ JOIN::prepare(Item ***rref_pointer_array, having->check_cols(1))); select_lex->having_fix_field= 0; select_lex->having= having; - if (arena) - thd->restore_active_arena(arena, &backup); if (having_fix_rc || thd->is_error()) DBUG_RETURN(-1); /* purecov: inspected */ |