diff options
author | unknown <ramil@mysql.com> | 2005-05-13 13:22:27 +0500 |
---|---|---|
committer | unknown <ramil@mysql.com> | 2005-05-13 13:22:27 +0500 |
commit | dba09923b730c0006af71c73012d98f3169bb448 (patch) | |
tree | 1293215185aee096bc0f5b518fffccdf90efa465 /sql/field.cc | |
parent | 4acfc0b6111fb069cc718b6b87d821407190999e (diff) | |
download | mariadb-git-dba09923b730c0006af71c73012d98f3169bb448.tar.gz |
a fix (bug #6961: Traditional: assignment of string to numeric column should fail).
sql/field.cc:
a fix (bug #6961: Traditional: assignment of string to numeric column should fail).
Should issue errors in strict modes instead of warnings.
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sql/field.cc b/sql/field.cc index 34c5210b43c..54ed4044de5 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2365,9 +2365,20 @@ int Field_new_decimal::store(const char *from, uint length, my_decimal decimal_value; DBUG_ENTER("Field_new_decimal::store(char*)"); - switch ((err= str2my_decimal(E_DEC_FATAL_ERROR & - ~(E_DEC_OVERFLOW | E_DEC_BAD_NUM), - from, length, charset, &decimal_value))) { + if ((err= str2my_decimal(E_DEC_FATAL_ERROR & + ~(E_DEC_OVERFLOW | E_DEC_BAD_NUM), + from, length, charset, &decimal_value)) && + table->in_use->abort_on_warning) + { + push_warning_printf(table->in_use, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, + ER(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD), + "decimal", from, field_name, + (ulong) table->in_use->row_count); + DBUG_RETURN(err); + } + + switch (err) { case E_DEC_TRUNCATED: set_warning(MYSQL_ERROR::WARN_LEVEL_NOTE, WARN_DATA_TRUNCATED, 1); break; |