Bug #86830 Silent UNSIGNED - SIGNED conversion with STRICT mode
Submitted: 26 Jun 2017 21:07 Modified: 26 Jun 2017 22:32
Reporter: Sveta Smirnova (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Stored Routines Severity:S3 (Non-critical)
Version:5.5, 5.6, 5.7, 8.0 OS:Any
Assigned to: CPU Architecture:Any

[26 Jun 2017 21:07] Sveta Smirnova
Description:
With STRICT mode if stored routine called with unsigned int argument and tries to use it update signed column in a table update succeeds and no warning issued.

How to repeat:
set sql_mode='strict_all_tables';

Warnings:
Warning	3135	'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
Warning	3090	Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.

create table t1(f1 int) engine=innodb;

delimiter |
create procedure p1(v1 int unsigned)
begin
insert into t1 values(v1);
end
|
delimiter ;

call p1(2280017636);

select * from t1;
f1
-2014949660

drop procedure p1;
drop table t1;
[26 Jun 2017 22:32] Miguel Solorzano
Thank you for the bug report. Verified as described.