diff options
author | unknown <ramil/ram@ramil.myoffice.izhnet.ru> | 2007-10-23 15:13:47 +0500 |
---|---|---|
committer | unknown <ramil/ram@ramil.myoffice.izhnet.ru> | 2007-10-23 15:13:47 +0500 |
commit | a2c064207bbfea9ac95bbb45215b7b15ab22b264 (patch) | |
tree | 57e59c3bef7babb12fee0c7fe97b094cb9aa1adc | |
parent | b04df8fdb5d622652cb7998ba7ca61bb5af270f3 (diff) | |
parent | 355d55ad0f4d33254b6b49c68ed6dad4d7675de6 (diff) | |
download | mariadb-git-a2c064207bbfea9ac95bbb45215b7b15ab22b264.tar.gz |
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into mysql.com:/home/ram/work/b31349/b31349.5.1
-rw-r--r-- | mysql-test/r/insert.result | 14 | ||||
-rw-r--r-- | mysql-test/t/insert.test | 15 | ||||
-rw-r--r-- | strings/ctype-simple.c | 14 |
3 files changed, 38 insertions, 5 deletions
diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result index 8dbba4d454a..a884b51eada 100644 --- a/mysql-test/r/insert.result +++ b/mysql-test/r/insert.result @@ -499,4 +499,18 @@ i 2 2 DROP TABLE t1, t2; +CREATE TABLE t1 (c1 INT NOT NULL); +INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500), +('4188.32999999999992724042385816574096679687500'), (4188); +SELECT * FROM t1; +c1 +4188 +4188 +4188 +CREATE TABLE t2 (c1 BIGINT); +INSERT INTO t2 VALUES('15449237462.0000000000'); +SELECT * FROM t2; +c1 +15449237462 +DROP TABLE t1, t2; End of 5.0 tests. diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index 3d32da9c3b7..59da875bb24 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -387,5 +387,20 @@ SELECT * FROM t2; DROP TABLE t1, t2; +# +# Bug #30453: String not cast to int correctly +# + +CREATE TABLE t1 (c1 INT NOT NULL); +INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500), +('4188.32999999999992724042385816574096679687500'), (4188); +SELECT * FROM t1; + +CREATE TABLE t2 (c1 BIGINT); +INSERT INTO t2 VALUES('15449237462.0000000000'); +SELECT * FROM t2; + +DROP TABLE t1, t2; + --echo End of 5.0 tests. diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index 6b71f29f0d2..b5e5e2184ba 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -1561,14 +1561,18 @@ my_strntoull10rnd_8bit(CHARSET_INFO *cs __attribute__((unused)), } else addon= (*str >= '5'); - for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++) + if (!dot) { - if (!dot) - shift++; + for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; shift++, str++); + if (str < end && *str == '.') + { + str++; + for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++); + } } - if (str < end && *str == '.' && !dot) + else { - str++; + shift= dot - str; for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++); } goto exp; |