diff options
author | unknown <monty@mysql.com> | 2005-03-16 16:11:01 +0200 |
---|---|---|
committer | unknown <monty@mysql.com> | 2005-03-16 16:11:01 +0200 |
commit | 1637a873e837efc40b137047ce226aa1a4efa2fd (patch) | |
tree | 91072764c1f84696f62c39d4e54fea6a1c35c516 /sql/field.cc | |
parent | 592ee30c8861c035e52dddbb11ac3fdd4a0bb782 (diff) | |
download | mariadb-git-1637a873e837efc40b137047ce226aa1a4efa2fd.tar.gz |
Cleanup during reviews
Removed some optional arguments
Fixed portability problem in federated tests
client/sql_string.cc:
update from sql/sql_string.cc
client/sql_string.h:
update from sql/sql_string.h
mysql-test/r/federated.result:
Fixed error message
sql/field.cc:
Cleanup during review
Remove const in 'const unsigned int'
sql/field.h:
Remove const in 'const unsigned int'
sql/ha_federated.cc:
Better error string. Add missing argument to error (before 'errno' was picked up from stack)
sql/handler.cc:
Removed compiler warning
sql/item_func.cc:
Cleanup during review
sql/item_sum.cc:
Cleanup during review
sql/lock.cc:
Remove optional arguments
sql/log_event.cc:
Remove optional arguments
sql/mysql_priv.h:
Remove optional arguments
cahnge preapre_create_fields to use pointers instead of references
sql/opt_range.cc:
Fix arguments so that return value is last
sql/sql_base.cc:
Remove optional arguments
sql/sql_delete.cc:
Remove optional arguments
sql/sql_error.cc:
Remove optional arguments
sql/sql_help.cc:
Remove optional arguments
sql/sql_parse.cc:
Remove optional arguments
sql/sql_prepare.cc:
Remove optional arguments
sql/sql_rename.cc:
Remove optional arguments
sql/sql_select.cc:
Remove optional arguments
sql/sql_show.cc:
Cleanup during review
sql/sql_string.cc:
Simple optimization
sql/sql_table.cc:
Remove optional arguments
Fixed indentation
sql/sql_update.cc:
Remove optional arguments
sql/sql_yacc.yy:
Change references to pointers
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/sql/field.cc b/sql/field.cc index 26575d97f69..b6dd00d62a7 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5328,11 +5328,11 @@ Field *Field_string::new_field(MEM_ROOT *root, struct st_table *new_table) int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs) { - int error= 0; uint32 not_used, copy_length; char buff[STRING_BUFFER_USUAL_SIZE]; String tmpstr(buff,sizeof(buff), &my_charset_bin); - bool lost_only_spaces= FALSE; + int error_code= 0; + enum MYSQL_ERROR::enum_warning_level level= MYSQL_ERROR::WARN_LEVEL_WARN; /* Convert character set if necessary */ if (String::needs_conversion(length, cs, field_charset, ¬_used)) @@ -5342,7 +5342,7 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs) from= tmpstr.ptr(); length= tmpstr.length(); if (conv_errors) - error= 1; + error_code= WARN_DATA_TRUNCATED; } /* Make sure we don't break a multibyte sequence @@ -5359,30 +5359,26 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs) int2store(ptr, copy_length); // Check if we lost something other than just trailing spaces - if ((copy_length < length) && table->in_use->count_cuted_fields) + if ((copy_length < length) && table->in_use->count_cuted_fields && + !error_code) { const char *end= from + length; from+= copy_length; from+= field_charset->cset->scan(field_charset, from, end, MY_SEQ_SPACES); - /* - If we lost only spaces then produce a NOTE, not a WARNING. - But if we have already had errors (e.g with charset conversion), - then don't reset level to NOTE. - */ - if (from == end && !error) - lost_only_spaces= TRUE; - error= 1; + /* If we lost only spaces then produce a NOTE, not a WARNING */ + if (from == end) + level= MYSQL_ERROR::WARN_LEVEL_NOTE; + error_code= WARN_DATA_TRUNCATED; } - if (error) + if (error_code) { - if (lost_only_spaces) - set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1); - else if (table->in_use->abort_on_warning) - set_warning(MYSQL_ERROR::WARN_LEVEL_ERROR, ER_DATA_TOO_LONG, 1); - else - set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, 1); + if (level == MYSQL_ERROR::WARN_LEVEL_WARN && + table->in_use->abort_on_warning) + error_code= ER_DATA_TOO_LONG; + set_warning(level, error_code, 1); + return 1; } - return error; + return 0; } @@ -7562,7 +7558,7 @@ create_field::create_field(Field *old_field,Field *orig_field) false - otherwise */ bool -Field::set_warning(const uint level, const uint code, int cuted_increment) +Field::set_warning(uint level, uint code, int cuted_increment) { THD *thd= table->in_use; if (thd->count_cuted_fields) |