From dba09923b730c0006af71c73012d98f3169bb448 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 13 May 2005 13:22:27 +0500 Subject: 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. --- sql/field.cc | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'sql/field.cc') 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; -- cgit v1.2.1