From 31e365efae28ba3208e80511c4d18fe11a79541a Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Tue, 11 Aug 2015 11:18:38 +0400 Subject: MDEV-8010 - Avoid sql_alloc() in Items (Patch #1) Added mandatory thd parameter to Item (and all derivative classes) constructor. Added thd parameter to all routines that may create items. Also removed "current_thd" from Item::Item. This reduced number of pthread_getspecific() calls from 290 to 177 per OLTP RO transaction. --- sql/sql_analyse.cc | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'sql/sql_analyse.cc') diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index 32b447797cf..e9f43a50fce 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -1166,23 +1166,23 @@ int collect_ulonglong(ulonglong *element, } // collect_ulonglong -bool analyse::change_columns(List &field_list) +bool analyse::change_columns(THD *thd, List &field_list) { field_list.empty(); - func_items[0] = new Item_proc_string("Field_name", 255); - func_items[1] = new Item_proc_string("Min_value", 255); + func_items[0] = new Item_proc_string(thd, "Field_name", 255); + func_items[1] = new Item_proc_string(thd, "Min_value", 255); func_items[1]->maybe_null = 1; - func_items[2] = new Item_proc_string("Max_value", 255); + func_items[2] = new Item_proc_string(thd, "Max_value", 255); func_items[2]->maybe_null = 1; - func_items[3] = new Item_proc_int("Min_length"); - func_items[4] = new Item_proc_int("Max_length"); - func_items[5] = new Item_proc_int("Empties_or_zeros"); - func_items[6] = new Item_proc_int("Nulls"); - func_items[7] = new Item_proc_string("Avg_value_or_avg_length", 255); - func_items[8] = new Item_proc_string("Std", 255); + func_items[3] = new Item_proc_int(thd, "Min_length"); + func_items[4] = new Item_proc_int(thd, "Max_length"); + func_items[5] = new Item_proc_int(thd, "Empties_or_zeros"); + func_items[6] = new Item_proc_int(thd, "Nulls"); + func_items[7] = new Item_proc_string(thd, "Avg_value_or_avg_length", 255); + func_items[8] = new Item_proc_string(thd, "Std", 255); func_items[8]->maybe_null = 1; - func_items[9] = new Item_proc_string("Optimal_fieldtype", + func_items[9] = new Item_proc_string(thd, "Optimal_fieldtype", MY_MAX(64, output_str_length)); for (uint i = 0; i < array_elements(func_items); i++) -- cgit v1.2.1