Loading mysql-test/r/type_decimal.result +9 −0 Original line number Diff line number Diff line Loading @@ -646,3 +646,12 @@ a 9999.999 0000.000 drop table t1; create table t1(a decimal(10,5), b decimal(10,1)); insert into t1 values(123.12345, 123.12345); update t1 set b=a; Warnings: Warning 1265 Data truncated for column 'b' at row 1 select * from t1; a b 123.12345 123.1 drop table t1; mysql-test/r/union.result +0 −15 Original line number Diff line number Diff line Loading @@ -780,21 +780,6 @@ t1 CREATE TABLE `t1` ( `b` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1,t2; create table t1 (d decimal(10,1)); create table t2 (d decimal(10,9)); insert into t1 values ("100000000.0"); insert into t2 values ("1.23456780"); create table t3 select * from t2 union select * from t1; select * from t3; d 1.234567800 100000000.0 show create table t3; Table Create Table t3 CREATE TABLE `t3` ( `d` decimal(10,9) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1,t2,t3; create table t1 select 1 union select -1; select * from t1; 1 Loading mysql-test/t/type_decimal.test +10 −0 Original line number Diff line number Diff line Loading @@ -266,4 +266,14 @@ insert into t1 values ('1'),('+1'),('-1'),('0000000001'),('+0000000001'),('-0000 select * from t1; drop table t1; # # Bug #7589: a problem with update from column # create table t1(a decimal(10,5), b decimal(10,1)); insert into t1 values(123.12345, 123.12345); update t1 set b=a; select * from t1; drop table t1; # End of 4.1 tests mysql-test/t/union.test +0 −8 Original line number Diff line number Diff line Loading @@ -425,14 +425,6 @@ create table t1 SELECT b from t2 UNION select tx from t2; select * from t1; show create table t1; drop table t1,t2; create table t1 (d decimal(10,1)); create table t2 (d decimal(10,9)); insert into t1 values ("100000000.0"); insert into t2 values ("1.23456780"); create table t3 select * from t2 union select * from t1; select * from t3; show create table t3; drop table t1,t2,t3; create table t1 select 1 union select -1; select * from t1; show create table t1; Loading sql/field_conv.cc +3 −0 Original line number Diff line number Diff line Loading @@ -599,6 +599,9 @@ void field_conv(Field *to,Field *from) !(to->flags & UNSIGNED_FLAG && !(from->flags & UNSIGNED_FLAG)) && to->real_type() != FIELD_TYPE_ENUM && to->real_type() != FIELD_TYPE_SET && (to->real_type() != FIELD_TYPE_DECIMAL || (to->field_length == from->field_length && (((Field_num*) to)->dec == ((Field_num*) from)->dec))) && from->charset() == to->charset() && to->table->db_low_byte_first == from->table->db_low_byte_first) { // Identical fields Loading Loading
mysql-test/r/type_decimal.result +9 −0 Original line number Diff line number Diff line Loading @@ -646,3 +646,12 @@ a 9999.999 0000.000 drop table t1; create table t1(a decimal(10,5), b decimal(10,1)); insert into t1 values(123.12345, 123.12345); update t1 set b=a; Warnings: Warning 1265 Data truncated for column 'b' at row 1 select * from t1; a b 123.12345 123.1 drop table t1;
mysql-test/r/union.result +0 −15 Original line number Diff line number Diff line Loading @@ -780,21 +780,6 @@ t1 CREATE TABLE `t1` ( `b` longblob ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1,t2; create table t1 (d decimal(10,1)); create table t2 (d decimal(10,9)); insert into t1 values ("100000000.0"); insert into t2 values ("1.23456780"); create table t3 select * from t2 union select * from t1; select * from t3; d 1.234567800 100000000.0 show create table t3; Table Create Table t3 CREATE TABLE `t3` ( `d` decimal(10,9) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1,t2,t3; create table t1 select 1 union select -1; select * from t1; 1 Loading
mysql-test/t/type_decimal.test +10 −0 Original line number Diff line number Diff line Loading @@ -266,4 +266,14 @@ insert into t1 values ('1'),('+1'),('-1'),('0000000001'),('+0000000001'),('-0000 select * from t1; drop table t1; # # Bug #7589: a problem with update from column # create table t1(a decimal(10,5), b decimal(10,1)); insert into t1 values(123.12345, 123.12345); update t1 set b=a; select * from t1; drop table t1; # End of 4.1 tests
mysql-test/t/union.test +0 −8 Original line number Diff line number Diff line Loading @@ -425,14 +425,6 @@ create table t1 SELECT b from t2 UNION select tx from t2; select * from t1; show create table t1; drop table t1,t2; create table t1 (d decimal(10,1)); create table t2 (d decimal(10,9)); insert into t1 values ("100000000.0"); insert into t2 values ("1.23456780"); create table t3 select * from t2 union select * from t1; select * from t3; show create table t3; drop table t1,t2,t3; create table t1 select 1 union select -1; select * from t1; show create table t1; Loading
sql/field_conv.cc +3 −0 Original line number Diff line number Diff line Loading @@ -599,6 +599,9 @@ void field_conv(Field *to,Field *from) !(to->flags & UNSIGNED_FLAG && !(from->flags & UNSIGNED_FLAG)) && to->real_type() != FIELD_TYPE_ENUM && to->real_type() != FIELD_TYPE_SET && (to->real_type() != FIELD_TYPE_DECIMAL || (to->field_length == from->field_length && (((Field_num*) to)->dec == ((Field_num*) from)->dec))) && from->charset() == to->charset() && to->table->db_low_byte_first == from->table->db_low_byte_first) { // Identical fields Loading