diff options
author | unknown <serg@serg.mylan> | 2005-01-24 19:41:42 +0100 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2005-01-24 19:41:42 +0100 |
commit | a82fd1eaec9067bbed9cceb9294734a8d09b72da (patch) | |
tree | 0c73a61f5c88d003eae464001af7656745e9ba4e /sql/item_timefunc.cc | |
parent | 7eb825a07280dfeb1bae3def25a3bc0add544a74 (diff) | |
parent | 7109999b92ec8541a61ca5babc5b06f4315478a8 (diff) | |
download | mariadb-git-a82fd1eaec9067bbed9cceb9294734a8d09b72da.tar.gz |
merged
BitKeeper/deleted/.del-sort.c~e2e56b5a37ce86f4:
Auto merged
client/mysql.cc:
Auto merged
client/mysqlbinlog.cc:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqltest.c:
Auto merged
myisam/ft_boolean_search.c:
Auto merged
myisam/mi_packrec.c:
Auto merged
myisam/sort.c:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
sql/item_create.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/log.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_analyse.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_db.cc:
Auto merged
sql/tztime.cc:
Auto merged
tests/client_test.c:
Auto merged
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r-- | sql/item_timefunc.cc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 0c1cd3cbad3..32813454fef 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -2131,20 +2131,25 @@ void Item_char_typecast::print(String *str) String *Item_char_typecast::val_str(String *str) { DBUG_ASSERT(fixed == 1); - String *res, *res1; + String *res; uint32 length; - if (!charset_conversion && !(res= args[0]->val_str(str))) +#if 0 + if (!charset_conversion) { - null_value= 1; - return 0; + if (!(res= args[0]->val_str(str))) + { + null_value= 1; + return 0; + } } else +#endif { // Convert character set if differ uint dummy_errors; - if (!(res1= args[0]->val_str(&tmp_value)) || - str->copy(res1->ptr(), res1->length(), res1->charset(), + if (!(res= args[0]->val_str(&tmp_value)) || + str->copy(res->ptr(), res->length(), res->charset(), cast_cs, &dummy_errors)) { null_value= 1; @@ -2154,13 +2159,13 @@ String *Item_char_typecast::val_str(String *str) } res->set_charset(cast_cs); - + /* Cut the tail if cast with length and the result is longer than cast length, e.g. CAST('string' AS CHAR(1)) */ - if (cast_length >= 0 && + if (cast_length >= 0 && (res->length() > (length= (uint32) res->charpos(cast_length)))) { // Safe even if const arg if (!res->alloced_length()) @@ -2169,7 +2174,7 @@ String *Item_char_typecast::val_str(String *str) res= &str_value; } res->length((uint) length); - } + } null_value= 0; return res; } |