diff options
author | unknown <bar@mysql.com> | 2005-04-06 11:53:15 +0500 |
---|---|---|
committer | unknown <bar@mysql.com> | 2005-04-06 11:53:15 +0500 |
commit | 5687fe36bf21add03b96871215c58bd2e12a4666 (patch) | |
tree | e7ff1b9199a6be79542bbe6fbdf4588d1e054d48 /sql | |
parent | 81125bc8ceb2de09fb0db1851ca80edb45b290e2 (diff) | |
download | mariadb-git-5687fe36bf21add03b96871215c58bd2e12a4666.tar.gz |
Adding a new parameter for well_formed_length to
return error. We'll use it for better warnign reporting.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/field.cc | 15 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 3 |
2 files changed, 10 insertions, 8 deletions
diff --git a/sql/field.cc b/sql/field.cc index bf581e62f34..740c027350d 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4939,9 +4939,10 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs) as well as don't copy a malformed data. */ copy_length= field_charset->cset->well_formed_len(field_charset, - from,from+length, - field_length/ - field_charset->mbmaxlen); + from,from+length, + field_length/ + field_charset->mbmaxlen, + &error); memcpy(ptr,from,copy_length); if (copy_length < field_length) // Append spaces if shorter field_charset->cset->fill(field_charset,ptr+copy_length, @@ -4958,7 +4959,6 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs) } if (error) set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1); - return error; } @@ -5577,9 +5577,10 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs) the 'min()' call below. */ copy_length= field_charset->cset->well_formed_len(field_charset, - from,from + - min(length, copy_length), - copy_length); + from,from + + min(length, copy_length), + copy_length, + &error); if (copy_length < length) error= 1; Field_blob::store_length(copy_length); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 9f25e17b6fd..dcda19a7080 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -5032,9 +5032,10 @@ IDENT_sys: if (thd->charset_is_system_charset) { CHARSET_INFO *cs= system_charset_info; + int dummy_error; uint wlen= cs->cset->well_formed_len(cs, $1.str, $1.str+$1.length, - $1.length); + $1.length, &dummy_error); if (wlen < $1.length) { net_printf(YYTHD, ER_INVALID_CHARACTER_STRING, cs->csname, |