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.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.060 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.