summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <ramil@mysql.com>2005-05-13 13:22:27 +0500
committerunknown <ramil@mysql.com>2005-05-13 13:22:27 +0500
commitdba09923b730c0006af71c73012d98f3169bb448 (patch)
tree1293215185aee096bc0f5b518fffccdf90efa465 /sql/field.cc
parent4acfc0b6111fb069cc718b6b87d821407190999e (diff)
downloadmariadb-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.cc17
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;