1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

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.
This commit is contained in:
Sergey Vojtovich
2015-08-11 11:18:38 +04:00
parent 4374da63f0
commit 31e365efae
71 changed files with 2724 additions and 2474 deletions

View File

@ -1166,23 +1166,23 @@ int collect_ulonglong(ulonglong *element,
} // collect_ulonglong
bool analyse::change_columns(List<Item> &field_list)
bool analyse::change_columns(THD *thd, List<Item> &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++)