summaryrefslogtreecommitdiff
path: root/sql/protocol.cc
diff options
context:
space:
mode:
authormonty@mishka.local <>2004-12-22 13:54:39 +0200
committermonty@mishka.local <>2004-12-22 13:54:39 +0200
commit4f4bbfc279800923299df1fefeb2fcd299fcde90 (patch)
tree8e5f08b17957f896c2d4e931e60b57d99c260ed6 /sql/protocol.cc
parent198dc7a8ec6e220c348bb47e59a2ac7532be18b8 (diff)
parent98f2a83539735f1a69680195290adcf02861f073 (diff)
downloadmariadb-git-4f4bbfc279800923299df1fefeb2fcd299fcde90.tar.gz
Merge with 4.1
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r--sql/protocol.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/sql/protocol.cc b/sql/protocol.cc
index 4c916d78378..d537f9cf829 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -537,10 +537,18 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
pos= (char*) local_packet->ptr()+local_packet->length();
*pos++= 12; // Length of packed fields
if (item->collation.collation == &my_charset_bin || thd_charset == NULL)
+ {
+ /* No conversion */
int2store(pos, field.charsetnr);
+ int4store(pos+2, field.length);
+ }
else
- int2store(pos, thd_charset->number);
- int4store(pos+2, field.length);
+ {
+ /* With conversion */
+ int2store(pos, thd_charset->number);
+ uint char_len= field.length / item->collation.collation->mbmaxlen;
+ int4store(pos+2, char_len * thd_charset->mbmaxlen);
+ }
pos[6]= field.type;
int2store(pos+7,field.flags);
pos[9]= (char) field.decimals;