diff options
author | unknown <sanja@montyprogram.com> | 2014-03-14 09:31:16 +0200 |
---|---|---|
committer | unknown <sanja@montyprogram.com> | 2014-03-14 09:31:16 +0200 |
commit | f9b3cc11bc7a2851731b1cf4055c16069b17ad76 (patch) | |
tree | a10f73d292d2df59052f9cc148670585aaed5997 | |
parent | e63c03db8d620765b7a1bc769150a04a230b9353 (diff) | |
download | mariadb-git-f9b3cc11bc7a2851731b1cf4055c16069b17ad76.tar.gz |
MDEV-5819: MySQL Bug #13500371 63704: CONVERSION OF '1.' TO A NUMBER GIVES ERROR 1265 (WARN_DATA_TRUNCATED)
Fix by MySQL ported
-rw-r--r-- | mysql-test/r/type_float.result | 18 | ||||
-rw-r--r-- | mysql-test/t/type_float.test | 12 | ||||
-rw-r--r-- | strings/dtoa.c | 2 |
3 files changed, 31 insertions, 1 deletions
diff --git a/mysql-test/r/type_float.result b/mysql-test/r/type_float.result index f41c2e7688b..f498b6889a5 100644 --- a/mysql-test/r/type_float.result +++ b/mysql-test/r/type_float.result @@ -447,3 +447,21 @@ End of 5.0 tests select format(truncate('1.7976931348623157E+308',-12),1,'fr_BE') as foo; foo 0 +# +# Bug #13500371 63704: CONVERSION OF '1.' TO A NUMBER GIVES ERROR 1265 +# (WARN_DATA_TRUNCATED) +# +CREATE TABLE t1 (f FLOAT); +INSERT INTO t1 VALUES ('1.'); +INSERT INTO t1 VALUES ('2.0.'); +Warnings: +Warning 1265 Data truncated for column 'f' at row 1 +INSERT INTO t1 VALUES ('.'); +Warnings: +Warning 1265 Data truncated for column 'f' at row 1 +SELECT * FROM t1 ORDER BY f; +f +0 +1 +2 +DROP TABLE t1; diff --git a/mysql-test/t/type_float.test b/mysql-test/t/type_float.test index b33c51566a0..96ce1bcbd9e 100644 --- a/mysql-test/t/type_float.test +++ b/mysql-test/t/type_float.test @@ -331,3 +331,15 @@ eval select concat((truncate((-1.7976931348623157E+307),(0x1e))), --echo # select format(truncate('1.7976931348623157E+308',-12),1,'fr_BE') as foo; + +--echo # +--echo # Bug #13500371 63704: CONVERSION OF '1.' TO A NUMBER GIVES ERROR 1265 +--echo # (WARN_DATA_TRUNCATED) +--echo # + +CREATE TABLE t1 (f FLOAT); +INSERT INTO t1 VALUES ('1.'); +INSERT INTO t1 VALUES ('2.0.'); +INSERT INTO t1 VALUES ('.'); +SELECT * FROM t1 ORDER BY f; +DROP TABLE t1; diff --git a/strings/dtoa.c b/strings/dtoa.c index f3498a7bb1e..c3ab347f94c 100644 --- a/strings/dtoa.c +++ b/strings/dtoa.c @@ -1410,7 +1410,7 @@ static double my_strtod_int(const char *s00, char **se, int *error, char *buf, s else if (nd < 16) z= 10*z + c - '0'; nd0= nd; - if (s < end - 1 && c == '.') + if (s < end && c == '.') { ++s; if (!nd) |