summaryrefslogtreecommitdiff
path: root/sql/item_row.cc
diff options
context:
space:
mode:
authorkonstantin@mysql.com <>2004-10-08 19:13:09 +0400
committerkonstantin@mysql.com <>2004-10-08 19:13:09 +0400
commit234c80b6895314206b2631bfe0825f5787890cb3 (patch)
tree340f7d7161a03919e35c9d1d393b1ee8b23a5fbf /sql/item_row.cc
parentb0154e21dc2804788d3a81a2d90ca29afef5bd5d (diff)
downloadmariadb-git-234c80b6895314206b2631bfe0825f5787890cb3.tar.gz
Deployment of centralized Item change registry, step 2: Item_ref
doesn't need to have it's own recovery mechanism.
Diffstat (limited to 'sql/item_row.cc')
-rw-r--r--sql/item_row.cc8
1 files changed, 5 insertions, 3 deletions
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<Item> &fields)
+void Item_row::split_sum_func(THD *thd, Item **ref_pointer_array,
+ List<Item> &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);
}
}
}