Description:
My script:
----------
--source include/master-slave.inc
CREATE TABLE t1 ( f1 DECIMAL(10,0), pk INT , PRIMARY KEY (pk)) ENGINE = MyISAM;
let $my_value= 17313807292449161216;
eval SET @aux = $my_value;
INSERT INTO t1 ( f1 , pk ) VALUES ( @aux , 1 );
eval INSERT INTO t1 ( f1 , pk ) VALUES ( $my_value , 2 );
SELECT * FROM t1 ORDER BY pk;
sync_slave_with_master;
connection slave;
SELECT * FROM t1 ORDER BY pk;
The result when running with binlog_format STATEMENT OR MIXED:
--------------------------------------------------------------
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
CREATE TABLE t1 ( f1 DECIMAL(10,0), pk INT , PRIMARY KEY (pk)) ENGINE = MyISAM;
SET @aux = 17313807292449161216;
INSERT INTO t1 ( f1 , pk ) VALUES ( @aux , 1 );
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
INSERT INTO t1 ( f1 , pk ) VALUES ( 17313807292449161216 , 2 );
Warnings:
Warning 1264 Out of range value for column 'f1' at row 1
SELECT * FROM t1 ORDER BY pk;
f1 pk
9999999999 1
9999999999 2
SELECT * FROM t1 ORDER BY pk;
f1 pk
-9999999999 1 <================
9999999999 2
Observations:
-------------
1. The result is correct when using binlog_format ROW
2. The following source trees show the bug
mysql-5.1-bugteam revno: 3200 2009-11-13
mysql-5.1-rep+3 revno: 3124 2009-12-02
mysql-6.0-codebase-bugfixing revno: 3755 2009-12-04
3. This bug is not storage engine specific
An InnoDB table shows the same effect.
How to repeat:
See above