diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-03-18 13:42:45 +0400 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-03-18 13:42:45 +0400 |
commit | ff35e04745ce5ecc8b69557e0ae577788daaebac (patch) | |
tree | 654a6c026a9f32264dd951b278c97e12c4456e3a /sql/sql_string.cc | |
parent | bd99e946ad46e46f32feed33c3be4b1071dead63 (diff) | |
download | mariadb-git-ff35e04745ce5ecc8b69557e0ae577788daaebac.tar.gz |
SHOW CREATE TABLE didn't display field names in the proper charset
mysys/charset.c:
Clear all fields at the end of previous charset
Diffstat (limited to 'sql/sql_string.cc')
-rw-r--r-- | sql/sql_string.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/sql/sql_string.cc b/sql/sql_string.cc index ae3875834f0..54a76319be7 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -338,6 +338,34 @@ bool String::append(const char *s,uint32 arg_length) } +/* + Append a string in the given charset to the string + with character set recoding +*/ + + +bool String::append(const char *s,uint32 arg_length, CHARSET_INFO *cs) +{ + if (!arg_length) // Default argument + if (!(arg_length= (uint32) strlen(s))) + return FALSE; + if (str_charset->mbmaxlen > 1) + { + uint32 add_length=arg_length * str_charset->mbmaxlen; + if (realloc(str_length+ add_length)) + return TRUE; + str_length+= copy_and_convert(Ptr+str_length, add_length, str_charset, + s, arg_length, cs); + return FALSE; + } + if (realloc(str_length+arg_length)) + return TRUE; + memcpy(Ptr+str_length,s,arg_length); + str_length+=arg_length; + return FALSE; +} + + #ifdef TO_BE_REMOVED bool String::append(FILE* file, uint32 arg_length, myf my_flags) { |