Loading mysql-test/r/insert.result +12 −12 Original line number Diff line number Diff line Loading @@ -500,23 +500,23 @@ Warnings: Warning 1265 Data truncated for column 'c' at row 1 SELECT * FROM t1; a b c 9.999999000000000748 10 10 9.999999 10 10 1.225e-05 1.2e-05 1e-0 0.0001225 0.00012 NULL 0.122499999999999998 0.1225 NULL 0.122587699999999994 0.12259 NULL 0.1225 0.1225 NULL 0.1225877 0.12259 NULL 12.25 12.25 NULL 12.25 12.25 12.2 122500 122500 NULL 12250000000 1.2e+10 NULL 1225000000000000 1.2e+15 NULL 1.225e+15 1.2e+15 NULL 5000000 5000000 NULL 1.25e+78 1.2e+78 NULL 1.25e-94 1.2e-94 NULL 1.25e+203 1e+203 NULL 1.25e-175 1e-175 NULL 1.225000000000000089 NULL 1.23 1.370000000000000107 NULL 1.37 1.225 NULL 1.23 1.37 NULL 1.37 -1.37 NULL -1.3 0.00187 NULL 0.00 -0.0187 NULL -0.0 Loading Loading @@ -554,23 +554,23 @@ INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0); INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0); SELECT * FROM t1; a b c 9.999999000000000748 10 9.999 9.999999 10 9.999 1.225e-05 1.2e-05 1e-05 0.0001225 0.00012 NULL 0.122499999999999998 0.1225 NULL 0.122587699999999994 0.12259 NULL 0.1225 0.1225 NULL 0.1225877 0.12259 NULL 12.25 12.25 NULL 12.25 12.25 12.25 122500 122500 NULL 12250000000 1.2e+10 NULL 1225000000000000 1.2e+15 NULL 1.225e+15 1.2e+15 NULL 5000000 5000000 NULL 1.25e+78 1.2e+78 NULL 1.25e-94 1.2e-94 NULL 1.25e+203 1e+203 NULL 1.25e-175 1e-175 NULL 1.225000000000000089 NULL 1.225 1.370000000000000107 NULL 1.37 1.225 NULL 1.225 1.37 NULL 1.37 -1.37 NULL -1.37 0.00187 NULL 0.002 -0.0187 NULL -0.01 Loading mysql-test/t/cast.test +2 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,8 @@ select cast(1.0e+300 as signed int); CREATE TABLE t1 (f1 double); INSERT INTO t1 SET f1 = -1.0e+30 ; INSERT INTO t1 SET f1 = +1.0e+30 ; # Expected result is +-1e+30, but Windows returns +-1e+030. --replace_result 1e+030 1e+30 SELECT f1 AS double_val, CAST(f1 AS SIGNED INT) AS cast_val FROM t1; DROP TABLE t1; Loading mysql-test/t/insert.test +3 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,9 @@ INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3); INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2); INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0); INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0); # Expected results are "12.2" and "1.2e+78", but Windows returns "12.3" and # "1.3e+78" due to different rounding rules --replace_result 12.3 12.2 1.3e+78 1.2e+78 SELECT * FROM t1; DROP TABLE t1; Loading sql/field.cc +1 −1 Original line number Diff line number Diff line Loading @@ -5954,7 +5954,7 @@ int Field_str::store(double nr) if (exp >= (int) digits || exp < -4) digits= max(0, (int) (max_length - 5 - (exp >= 100 || exp <= -100))); length= (uint) my_sprintf(buff, (buff, "%-.*g", digits, nr)); length= (uint) my_sprintf(buff, (buff, "%-.*g", min(digits, DBL_DIG ), nr)); #ifdef __WIN__ /* Loading Loading
mysql-test/r/insert.result +12 −12 Original line number Diff line number Diff line Loading @@ -500,23 +500,23 @@ Warnings: Warning 1265 Data truncated for column 'c' at row 1 SELECT * FROM t1; a b c 9.999999000000000748 10 10 9.999999 10 10 1.225e-05 1.2e-05 1e-0 0.0001225 0.00012 NULL 0.122499999999999998 0.1225 NULL 0.122587699999999994 0.12259 NULL 0.1225 0.1225 NULL 0.1225877 0.12259 NULL 12.25 12.25 NULL 12.25 12.25 12.2 122500 122500 NULL 12250000000 1.2e+10 NULL 1225000000000000 1.2e+15 NULL 1.225e+15 1.2e+15 NULL 5000000 5000000 NULL 1.25e+78 1.2e+78 NULL 1.25e-94 1.2e-94 NULL 1.25e+203 1e+203 NULL 1.25e-175 1e-175 NULL 1.225000000000000089 NULL 1.23 1.370000000000000107 NULL 1.37 1.225 NULL 1.23 1.37 NULL 1.37 -1.37 NULL -1.3 0.00187 NULL 0.00 -0.0187 NULL -0.0 Loading Loading @@ -554,23 +554,23 @@ INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0); INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0); SELECT * FROM t1; a b c 9.999999000000000748 10 9.999 9.999999 10 9.999 1.225e-05 1.2e-05 1e-05 0.0001225 0.00012 NULL 0.122499999999999998 0.1225 NULL 0.122587699999999994 0.12259 NULL 0.1225 0.1225 NULL 0.1225877 0.12259 NULL 12.25 12.25 NULL 12.25 12.25 12.25 122500 122500 NULL 12250000000 1.2e+10 NULL 1225000000000000 1.2e+15 NULL 1.225e+15 1.2e+15 NULL 5000000 5000000 NULL 1.25e+78 1.2e+78 NULL 1.25e-94 1.2e-94 NULL 1.25e+203 1e+203 NULL 1.25e-175 1e-175 NULL 1.225000000000000089 NULL 1.225 1.370000000000000107 NULL 1.37 1.225 NULL 1.225 1.37 NULL 1.37 -1.37 NULL -1.37 0.00187 NULL 0.002 -0.0187 NULL -0.01 Loading
mysql-test/t/cast.test +2 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,8 @@ select cast(1.0e+300 as signed int); CREATE TABLE t1 (f1 double); INSERT INTO t1 SET f1 = -1.0e+30 ; INSERT INTO t1 SET f1 = +1.0e+30 ; # Expected result is +-1e+30, but Windows returns +-1e+030. --replace_result 1e+030 1e+30 SELECT f1 AS double_val, CAST(f1 AS SIGNED INT) AS cast_val FROM t1; DROP TABLE t1; Loading
mysql-test/t/insert.test +3 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,9 @@ INSERT INTO t1(a,c) VALUES (1.87e-3, 1.87e-3); INSERT INTO t1(a,c) VALUES (-1.87e-2, -1.87e-2); INSERT INTO t1(a,c) VALUES (5000e+0, 5000e+0); INSERT INTO t1(a,c) VALUES (-5000e+0, -5000e+0); # Expected results are "12.2" and "1.2e+78", but Windows returns "12.3" and # "1.3e+78" due to different rounding rules --replace_result 12.3 12.2 1.3e+78 1.2e+78 SELECT * FROM t1; DROP TABLE t1; Loading
sql/field.cc +1 −1 Original line number Diff line number Diff line Loading @@ -5954,7 +5954,7 @@ int Field_str::store(double nr) if (exp >= (int) digits || exp < -4) digits= max(0, (int) (max_length - 5 - (exp >= 100 || exp <= -100))); length= (uint) my_sprintf(buff, (buff, "%-.*g", digits, nr)); length= (uint) my_sprintf(buff, (buff, "%-.*g", min(digits, DBL_DIG ), nr)); #ifdef __WIN__ /* Loading