diff options
author | unknown <gkodinov@dl145s.mysql.com> | 2006-12-04 18:05:42 +0100 |
---|---|---|
committer | unknown <gkodinov@dl145s.mysql.com> | 2006-12-04 18:05:42 +0100 |
commit | 85b1701ab7292eeee4ce4b253909ae68345be43c (patch) | |
tree | 46a31b2bef250102b516c7290f0df0de7c5317a8 /sql | |
parent | 1172c8ae5568374de74037644a9a082722df9fab (diff) | |
parent | 818bec7fb89cdad25357f9d657bb72150fa5f06e (diff) | |
download | mariadb-git-85b1701ab7292eeee4ce4b253909ae68345be43c.tar.gz |
Merge dl145s.mysql.com:/data0/bk/team_tree_merge/mysql-5.0-opt
into dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE2/mysql-5.0
sql/item_func.cc:
Auto merged
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_func.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index 6ddd0111b39..659a214e9c2 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -900,7 +900,8 @@ void Item_func_signed::print(String *str) longlong Item_func_signed::val_int_from_str(int *error) { - char buff[MAX_FIELD_WIDTH], *end; + char buff[MAX_FIELD_WIDTH], *end, *start; + uint32 length; String tmp(buff,sizeof(buff), &my_charset_bin), *res; longlong value; @@ -916,13 +917,21 @@ longlong Item_func_signed::val_int_from_str(int *error) return 0; } null_value= 0; - end= (char*) res->ptr()+ res->length(); - value= my_strtoll10(res->ptr(), &end, error); - if (*error > 0 || end != res->ptr()+ res->length()) + start= (char *)res->ptr(); + length= res->length(); + + end= start + length; + value= my_strtoll10(start, &end, error); + if (*error > 0 || end != start+ length) + { + char err_buff[128]; + String err_tmp(err_buff,(uint32) sizeof(err_buff), system_charset_info); + err_tmp.copy(start, length, system_charset_info); push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_TRUNCATED_WRONG_VALUE, ER(ER_TRUNCATED_WRONG_VALUE), "INTEGER", - res->c_ptr()); + err_tmp.c_ptr()); + } return value; } |