| Bug #36457 | ER_TRUNCATED_WRONG_VALUE warning raised as an error | ||
|---|---|---|---|
| Submitted: | 1 May 2008 19:52 | Modified: | 29 May 2008 3:46 | 
| Reporter: | Marc ALFF | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Errors | Severity: | S3 (Non-critical) | 
| Version: | 5.0 and up | OS: | Any | 
| Assigned to: | Marc ALFF | CPU Architecture: | Any | 
   [1 May 2008 19:52]
   Marc ALFF        
  
 
   [2 May 2008 21:33]
   Sveta Smirnova        
  Thank you for the report.
I noticed behavior changes depending from SQL Mode:
mysql> \W
Show warnings enabled.
mysql> drop table t1;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t1(f1 decimal);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t1 values('kjh'+10);
Query OK, 1 row affected, 1 warning (0.00 sec)
Warning (Code 1292): Truncated incorrect DOUBLE value: 'kjh'
mysql> set sql_mode='strict_all_tables';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t1 values('kjh'+10);
ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'kjh'
Do you think this is not correct or have you seen "ERROR" in case of not strict SQL Mode?
 
   [5 May 2008 16:00]
   Marc ALFF        
  When SQL_MODE is strict_all_tables, warnings are changed to errors,
this is expected.
The bug is that when SQL_MODE is '', the condition ER_TRUNCATED_WRONG_VALUE
is raised in different places in the code, and is not consistent:
-- test
SET SQL_MODE='';
select @@sql_mode;
select locate('lo','hello',-18446744073709551615);
CREATE TABLE t1 (a CHAR(2));
INSERT INTO t1 VALUES (10), (50), (30), ('1a'), (60), ('t');
SELECT a,(a + 0) FROM t1 ORDER BY a;
-- result
SET SQL_MODE='';
select @@sql_mode;
@@sql_mode
select locate('lo','hello',-18446744073709551615);
locate('lo','hello',-18446744073709551615)
0
Warnings:
Error   1292    Truncated incorrect DECIMAL value: ''
--> "Error" 1292, incorrect
CREATE TABLE t1 (a CHAR(2));
INSERT INTO t1 VALUES (10), (50), (30), ('1a'), (60), ('t');
SELECT a,(a + 0) FROM t1 ORDER BY a;
a       (a + 0)
10      10
1a      1
30      30
50      50
60      60
t       0
Warnings:
Warning 1292    Truncated incorrect DOUBLE value: '1a'
Warning 1292    Truncated incorrect DOUBLE value: 't '
--> Warning 1292, ok
 
   [5 May 2008 21:18]
   Sveta Smirnova        
  Thank you for the feedback. Verified as described.
   [13 May 2008 23:43]
   Bugs System        
  A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/46672 ChangeSet@1.2644, 2008-05-13 17:42:43-06:00, malff@lambda.hsd1.co.comcast.net. +4 -0 Bug#36457 (ER_TRUNCATED_WRONG_VALUE warning raised as an error) Fixed my_decimal to call push_warning(ER_TRUNCATED_WRONG_VALUE) with a level of WARN_LEVEL_WARN. Adjusted test results
   [28 May 2008 10:01]
   Bugs System        
  Pushed into 6.0.6-alpha
   [29 May 2008 3:46]
   Paul DuBois        
  Noted in 6.0.6 changelog. The ER_TRUNCATED_WRONG_VALUE warning condition was sometimes raised as an error.
