summaryrefslogtreecommitdiff
path: root/sql/protocol.cc
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-03-17 21:56:34 +0400
committerunknown <bar@bar.mysql.r18.ru>2003-03-17 21:56:34 +0400
commit84f0e1172981750a85bae8090548784f0aefa1e2 (patch)
tree1220cb8b5a2d5a6f85c1ee028fa98cf95cf2f38c /sql/protocol.cc
parent3ca97c63ba7dc4533b9b8b520263a6f6ee74efc8 (diff)
downloadmariadb-git-84f0e1172981750a85bae8090548784f0aefa1e2.tar.gz
mysql-test/t/ctype_many.test:
Automatic client-server charset recoding has been added mysys/charset.c: Automatic client-server charset recoding has been added sql/item.cc: Automatic client-server charset recoding has been added sql/item.h: Automatic client-server charset recoding has been added sql/item_cmpfunc.cc: Automatic client-server charset recoding has been added sql/item_func.cc: Automatic client-server charset recoding has been added sql/item_strfunc.cc: Automatic client-server charset recoding has been added sql/mysqld.cc: Automatic client-server charset recoding has been added sql/protocol.cc: Automatic client-server charset recoding has been added sql/sql_string.cc: Automatic client-server charset recoding has been added sql/sql_yacc.yy: Automatic client-server charset recoding has been added strings/ctype-utf8.c: Automatic client-server charset recoding has been added
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r--sql/protocol.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/sql/protocol.cc b/sql/protocol.cc
index c7ce38eadac..9fb32daf57f 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -714,7 +714,6 @@ bool Protocol_simple::store(const char *from, uint length, CHARSET_INFO *cs)
#endif
if (convert)
return convert_str(from, length);
-#if 0
if (cs != this->thd->charset())
{
String tmp;
@@ -722,7 +721,6 @@ bool Protocol_simple::store(const char *from, uint length, CHARSET_INFO *cs)
return net_store_data(tmp.ptr(), tmp.length());
}
else
-#endif
return net_store_data(from, length);
}
@@ -813,11 +811,18 @@ bool Protocol_simple::store(Field *field)
field_pos++;
#endif
char buff[MAX_FIELD_WIDTH];
- String tmp(buff,sizeof(buff), &my_charset_bin);
- field->val_str(&tmp,&tmp);
+ String tmp1(buff,sizeof(buff), &my_charset_bin);
+ field->val_str(&tmp1,&tmp1);
if (convert)
- return convert_str(tmp.ptr(), tmp.length());
- return net_store_data(tmp.ptr(), tmp.length());
+ return convert_str(tmp1.ptr(), tmp1.length());
+ if (field->charset() != this->thd->charset())
+ {
+ String tmp;
+ tmp.copy(tmp1.ptr(), tmp1.length(), tmp1.charset(), this->thd->charset());
+ return net_store_data(tmp.ptr(), tmp.length());
+ }
+ else
+ return net_store_data(tmp1.ptr(), tmp1.length());
}