From 9ba3c23e1511c11f77937ef5b2769336520d6261 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 8 Oct 2004 19:13:09 +0400 Subject: Deployment of centralized Item change registry, step 2: Item_ref doesn't need to have it's own recovery mechanism. sql/item.cc: Deployment of centralized Item change registry, step 2: Item_ref doesn't need to have it's own recovery mechanism, so it was simplified. sql/item.h: Deployment of centralized Item change registry, step 2: Item_ref doesn't need to have it's own recovery mechanism, so it was simplified. sql/item_cmpfunc.cc: - Item::split_sum_func now requires THD - use THD::register_item_tree_change sql/item_cmpfunc.h: - Item::split_sum_func now requires THD sql/item_func.cc: - Item::split_sum_func now requires THD - use THD::register_item_tree_change sql/item_func.h: - Item::split_sum_func now requires THD sql/item_row.cc: - Item::split_sum_func now requires THD - use THD::register_item_tree_change sql/item_row.h: - Item::split_sum_func now requires THD sql/item_strfunc.cc: - Item::split_sum_func now requires THD - use THD::register_item_tree_change to register changes in the item tree sql/item_strfunc.h: - Item::split_sum_func now requires THD sql/item_subselect.cc: - use updated Item_ref constructor sql/sql_base.cc: - Item::split_sum_func now requires THD sql/sql_select.cc: - Item::split_sum_func now requires THD sql/sql_yacc.yy: - use updated Item_ref constructor --- sql/item_row.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sql/item_row.cc') diff --git a/sql/item_row.cc b/sql/item_row.cc index f6623e80734..b746029947f 100644 --- a/sql/item_row.cc +++ b/sql/item_row.cc @@ -84,19 +84,21 @@ bool Item_row::fix_fields(THD *thd, TABLE_LIST *tabl, Item **ref) return 0; } -void Item_row::split_sum_func(Item **ref_pointer_array, List &fields) +void Item_row::split_sum_func(THD *thd, Item **ref_pointer_array, + List &fields) { Item **arg, **arg_end; for (arg= items, arg_end= items+arg_count; arg != arg_end ; arg++) { if ((*arg)->with_sum_func && (*arg)->type() != SUM_FUNC_ITEM) - (*arg)->split_sum_func(ref_pointer_array, fields); + (*arg)->split_sum_func(thd, ref_pointer_array, fields); else if ((*arg)->used_tables() || (*arg)->type() == SUM_FUNC_ITEM) { uint el= fields.elements; fields.push_front(*arg); ref_pointer_array[el]= *arg; - *arg= new Item_ref(ref_pointer_array + el, arg, 0, (*arg)->name); + thd->register_item_tree_change(arg, *arg, &thd->mem_root); + *arg= new Item_ref(ref_pointer_array + el, 0, (*arg)->name); } } } -- cgit v1.2.1 From c90fd2c4d4a78bd529a6b2aa72b94351c5626938 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 10 Oct 2004 03:10:00 +0400 Subject: A small simplification: perform two actions at once, register a change, and perform it (the new Item changes registry). sql/item.cc: A small simplification: perform two actions at once, register a change, and perform it. sql/item_cmpfunc.cc: register_item_tree_change -> change_item_tree sql/item_func.cc: register_item_tree_change -> change_item_tree sql/item_row.cc: register_item_tree_change -> change_item_tree sql/item_strfunc.cc: register_item_tree_change -> change_item_tree sql/sql_class.h: register_item_tree_change -> change_item_tree sql/sql_select.cc: register_item_tree_change -> change_item_tree --- sql/item_row.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sql/item_row.cc') diff --git a/sql/item_row.cc b/sql/item_row.cc index b746029947f..289efe45300 100644 --- a/sql/item_row.cc +++ b/sql/item_row.cc @@ -95,10 +95,10 @@ void Item_row::split_sum_func(THD *thd, Item **ref_pointer_array, else if ((*arg)->used_tables() || (*arg)->type() == SUM_FUNC_ITEM) { uint el= fields.elements; + Item *new_item= new Item_ref(ref_pointer_array + el, 0, (*arg)->name); fields.push_front(*arg); ref_pointer_array[el]= *arg; - thd->register_item_tree_change(arg, *arg, &thd->mem_root); - *arg= new Item_ref(ref_pointer_array + el, 0, (*arg)->name); + thd->change_item_tree(arg, new_item); } } } -- cgit v1.2.1