summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <ramil/ram@ramil.myoffice.izhnet.ru>2007-10-23 15:13:47 +0500
committerunknown <ramil/ram@ramil.myoffice.izhnet.ru>2007-10-23 15:13:47 +0500
commita2c064207bbfea9ac95bbb45215b7b15ab22b264 (patch)
tree57e59c3bef7babb12fee0c7fe97b094cb9aa1adc
parentb04df8fdb5d622652cb7998ba7ca61bb5af270f3 (diff)
parent355d55ad0f4d33254b6b49c68ed6dad4d7675de6 (diff)
downloadmariadb-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.result14
-rw-r--r--mysql-test/t/insert.test15
-rw-r--r--strings/ctype-simple.c14
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;