summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc30
1 files changed, 18 insertions, 12 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 6e3707726d0..c624ebfef73 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -2397,18 +2397,21 @@ const char *Item_ident::full_name() const
char *tmp;
if (!table_name || !field_name)
return field_name ? field_name : name ? name : "tmp_field";
+
if (db_name && db_name[0])
{
- tmp=(char*) sql_alloc((uint) strlen(db_name)+(uint) strlen(table_name)+
- (uint) strlen(field_name)+3);
+ THD *thd= current_thd;
+ tmp=(char*) thd->alloc((uint) strlen(db_name)+(uint) strlen(table_name)+
+ (uint) strlen(field_name)+3);
strxmov(tmp,db_name,".",table_name,".",field_name,NullS);
}
else
{
if (table_name[0])
{
- tmp= (char*) sql_alloc((uint) strlen(table_name) +
- (uint) strlen(field_name) + 2);
+ THD *thd= current_thd;
+ tmp= (char*) thd->alloc((uint) strlen(table_name) +
+ (uint) strlen(field_name) + 2);
strxmov(tmp, table_name, ".", field_name, NullS);
}
else
@@ -6276,10 +6279,11 @@ inline uint char_val(char X)
}
-void Item_hex_constant::hex_string_init(const char *str, uint str_length)
+void Item_hex_constant::hex_string_init(THD *thd, const char *str,
+ uint str_length)
{
max_length=(str_length+1)/2;
- char *ptr=(char*) sql_alloc(max_length+1);
+ char *ptr=(char*) thd->alloc(max_length+1);
if (!ptr)
{
str_value.set("", 0, &my_charset_bin);
@@ -6372,12 +6376,12 @@ Item_bin_string::Item_bin_string(THD *thd, const char *str, uint str_length):
Item_hex_hybrid(thd)
{
const char *end= str + str_length - 1;
+ char *ptr;
uchar bits= 0;
uint power= 1;
max_length= (str_length + 7) >> 3;
- char *ptr= (char*) sql_alloc(max_length + 1);
- if (!ptr)
+ if (!(ptr= (char*) thd->alloc(max_length + 1)))
return;
str_value.set(ptr, max_length, &my_charset_bin);
@@ -8260,9 +8264,10 @@ bool Item_default_value::fix_fields(THD *thd, Item **items)
my_error(ER_NO_DEFAULT_FOR_FIELD, MYF(0), field_arg->field->field_name);
goto error;
}
- if (!(def_field= (Field*) sql_alloc(field_arg->field->size_of())))
+ if (!(def_field= (Field*) thd->alloc(field_arg->field->size_of())))
goto error;
- memcpy((void *)def_field, (void *)field_arg->field, field_arg->field->size_of());
+ memcpy((void *)def_field, (void *)field_arg->field,
+ field_arg->field->size_of());
def_field->move_field_offset((my_ptrdiff_t)
(def_field->table->s->default_values -
def_field->table->record[0]));
@@ -8402,10 +8407,11 @@ bool Item_insert_value::fix_fields(THD *thd, Item **items)
if (field_arg->field->table->insert_values)
{
- Field *def_field= (Field*) sql_alloc(field_arg->field->size_of());
+ Field *def_field= (Field*) thd->alloc(field_arg->field->size_of());
if (!def_field)
return TRUE;
- memcpy((void *)def_field, (void *)field_arg->field, field_arg->field->size_of());
+ memcpy((void *)def_field, (void *)field_arg->field,
+ field_arg->field->size_of());
def_field->move_field_offset((my_ptrdiff_t)
(def_field->table->insert_values -
def_field->table->record[0]));