diff options
author | unknown <msvensson@neptunus.(none)> | 2006-11-29 23:05:33 +0100 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-11-29 23:05:33 +0100 |
commit | e5bfeab3fd659f37b8363abd32e77d4fe29716f9 (patch) | |
tree | 7ef98504225c7262063aa7675ed7ee6fe96be2a4 /sql/field_conv.cc | |
parent | c35506f9674eab29c30332046082e15719429c62 (diff) | |
parent | 8e0614c83950b6189eb1dfc218b13546fa663c13 (diff) | |
download | mariadb-git-e5bfeab3fd659f37b8363abd32e77d4fe29716f9.tar.gz |
Merge neptunus.(none):/home/msvensson/mysql/bug19731/my50-bug19731
into neptunus.(none):/home/msvensson/mysql/bug19731/my51-bug19731
client/mysqltest.c:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/r/varbinary.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
sql/field_conv.cc:
Auto merged
sql/handler.cc:
Auto merged
Diffstat (limited to 'sql/field_conv.cc')
-rw-r--r-- | sql/field_conv.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sql/field_conv.cc b/sql/field_conv.cc index 7bc6c432d1c..593044ce7f0 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -308,6 +308,21 @@ static void do_field_string(Copy_field *copy) } +static void do_field_varbinary_pre50(Copy_field *copy) +{ + char buff[MAX_FIELD_WIDTH]; + copy->tmp.set_quick(buff,sizeof(buff),copy->tmp.charset()); + copy->from_field->val_str(©->tmp); + + /* Use the same function as in 4.1 to trim trailing spaces */ + uint length= my_lengthsp_8bit(&my_charset_bin, copy->tmp.c_ptr_quick(), + copy->from_field->field_length); + + copy->to_field->store(copy->tmp.c_ptr_quick(), length, + copy->tmp.charset()); +} + + static void do_field_int(Copy_field *copy) { longlong value= copy->from_field->val_int(); @@ -570,6 +585,15 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*) if (from->result_type() == STRING_RESULT) { /* + Detect copy from pre 5.0 varbinary to varbinary as of 5.0 and + use special copy function that removes trailing spaces and thus + repairs data. + */ + if (from->type() == MYSQL_TYPE_VAR_STRING && !from->has_charset() && + to->type() == MYSQL_TYPE_VARCHAR && !to->has_charset()) + return do_field_varbinary_pre50; + + /* If we are copying date or datetime's we have to check the dates if we don't allow 'all' dates. */ |