summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorbar@bar.mysql.r18.ru <>2002-11-06 17:01:12 +0400
committerbar@bar.mysql.r18.ru <>2002-11-06 17:01:12 +0400
commit86b633379cdee7707b5dd69a3658e7ba1afa0946 (patch)
tree51f69fc95a2c0f5cb568b1512cae6655412ab345 /sql/item.cc
parent5d45eae0c5d865bee9907d88d20781b93c1277bf (diff)
downloadmariadb-git-86b633379cdee7707b5dd69a3658e7ba1afa0946.tar.gz
Some charset code clean-ups
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc18
1 files changed, 8 insertions, 10 deletions
diff --git a/sql/item.cc b/sql/item.cc
index d97f8dc4b71..9c70dad045c 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -313,15 +313,15 @@ void Item_param::set_double(double value)
}
-void Item_param::set_value(const char *str, uint length)
+void Item_param::set_value(const char *str, uint length, CHARSET_INFO *cs)
{
- str_value.set(str,length,default_charset_info);
+ str_value.set(str,length,cs);
item_result_type = STRING_RESULT;
item_type = STRING_ITEM;
}
-void Item_param::set_longdata(const char *str, ulong length)
+void Item_param::set_longdata(const char *str, ulong length, CHARSET_INFO *cs)
{
/* TODO: Fix this for binary handling by making use of
buffer_type..
@@ -346,10 +346,8 @@ int Item_param::save_in_field(Field *field)
double nr=val();
return (field->store(nr)) ? -1 : 0;
}
- String *result;
- CHARSET_INFO *cs=default_charset_info; //fix this
- result=val_str(&str_value);
- return (field->store(result->ptr(),result->length(),cs)) ? -1 : 0;
+ String *result=val_str(&str_value);
+ return (field->store(result->ptr(),result->length(),field->charset())) ? -1 : 0;
}
@@ -658,7 +656,7 @@ int Item::save_in_field(Field *field)
field->result_type() == STRING_RESULT)
{
String *result;
- CHARSET_INFO *cs=field->binary()?my_charset_bin:((Field_str*)field)->charset();
+ CHARSET_INFO *cs=field->charset();
char buff[MAX_FIELD_WIDTH]; // Alloc buffer for small columns
str_value.set_quick(buff,sizeof(buff),cs);
result=val_str(&str_value);
@@ -690,7 +688,7 @@ int Item::save_in_field(Field *field)
int Item_string::save_in_field(Field *field)
{
String *result;
- CHARSET_INFO *cs=field->binary()?my_charset_bin:((Field_str*)field)->charset();
+ CHARSET_INFO *cs=field->charset();
result=val_str(&str_value);
if (null_value)
return set_field_to_null(field);
@@ -763,7 +761,7 @@ longlong Item_varbinary::val_int()
int Item_varbinary::save_in_field(Field *field)
{
int error;
- CHARSET_INFO *cs=field->binary()?default_charset_info:((Field_str*)field)->charset();
+ CHARSET_INFO *cs=field->charset();
field->set_notnull();
if (field->result_type() == STRING_RESULT)
{