Bug #5907 Traditional mode: invalid value can be inserted via a stored procedure
Submitted: 5 Oct 2004 20:24 Modified: 5 Apr 2005 0:07
Reporter: Trudy Pelzer
Status: Closed
Category:Server Severity:S3 (Non-critical)
Version:5.0.2-alpha-debug OS:Linux (SuSE 9.1)
Assigned to: Bugs System Target Version:

[5 Oct 2004 20:24] Trudy Pelzer
Description:
When sql_mode='traditional', values that are out 
of range for a numeric date type must be rejected. 
But if a stored procedure is inserting an invalid value, 
it still gets silently changed to an in-range value and 
accepted. 

How to repeat:
mysql> set sql_mode='traditional'; 
Query OK, 0 rows affected (0.00 sec) 
 
mysql> create table t1 (col1 tinyint) engine=innodb; 
Query OK, 0 rows affected (0.01 sec) 
 
mysql> delimiter // 
 
mysql> create procedure p () begin declare exit handler for sqlexception 
    -> select 'a'; insert into t1 values (200); end;// 
Query OK, 0 rows affected (0.03 sec) 
 
mysql> call p()// 
+---+ 
| a | 
+---+ 
| a | 
+---+ 
1 row in set (0.00 sec) 
Query OK, 0 rows affected (0.00 sec) 
 
mysql> select * from t1// 
+------+ 
| col1 | 
+------+ 
|  127 | 
+------+ 
1 row in set (0.00 sec) 
-- This INSERT should not have happened. The call 
to the procedure should have ended by returning 'a'.
[6 Oct 2004 3:31] Miguel Solorzano
Verified against latest BK source tree.
[4 Apr 2005 23:20] 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/internals/23635
[5 Apr 2005 0:07] Michael Widenius
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html

Additional info:

Fixed in 5.0.4
[5 Apr 2005 16:08] 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/internals/23671