Bug #30453 | String not cast to int correctly | ||
---|---|---|---|
Submitted: | 16 Aug 2007 13:17 | Modified: | 14 Dec 2007 18:07 |
Reporter: | Baron Schwartz (Basic Quality Contributor) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.40/5.1 | OS: | Any |
Assigned to: | Alexey Kopytov | CPU Architecture: | Any |
[16 Aug 2007 13:17]
Baron Schwartz
[16 Aug 2007 13:44]
MySQL Verification Team
Thank you for the bug report. Verified with 5.0/5.1 according as described. Below 4.1 result: [miguel@skybr 4.1]$ bin/mysql -uroot test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.24-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create table trunc_test(i int not null); Query OK, 0 rows affected (0.05 sec) mysql> insert into trunc_test(i) values(4188.32999999999992724042385816574096679687500), ('4188.32999999999992724042385816574096679687500'), (4188); Query OK, 3 rows affected, 1 warning (0.03 sec) Records: 3 Duplicates: 0 Warnings: 1 mysql> select * from trunc_test; +------+ | i | +------+ | 4188 | | 4188 | | 4188 | +------+ 3 rows in set (0.04 sec) mysql>
[12 Oct 2007 14:03]
Konstantin Osipov
Upgrading since it's a regression.
[15 Oct 2007 6:34]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/35542 ChangeSet@1.2528, 2007-10-15 10:34:34+04:00, kaa@polly.(none) +3 -0 Fix for bug #30453: String not cast to int correctly. Problem: my_strntoull10rnd_8bit() handled incorrectly cases when the input string contains a decimal point and is long enough to overrun the 'unsigned long long' type. The position of the decimal point was not taken into account which resulted in miscalculated numbers and truncation to appropriate SQL data type limits. Solution: Fix my_strntoull10rnd_8bit() to take the position of a decimal point into account in such cases.
[15 Oct 2007 6:43]
Alexey Kopytov
Bug #31104 was marked as a duplicate of this one.
[23 Oct 2007 7:40]
Alexander Barkov
The patch http://lists.mysql.com/commits/35542 is ok to push.
[23 Oct 2007 9:02]
Tatiana Azundris Nuernberg
OK to push
[7 Dec 2007 23:08]
Bugs System
Pushed into 6.0.5-alpha
[7 Dec 2007 23:09]
Bugs System
Pushed into 5.1.23-rc
[7 Dec 2007 23:10]
Bugs System
Pushed into 5.0.54
[14 Dec 2007 18:07]
Jon Stephens
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release. If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at http://dev.mysql.com/doc/en/installing-source.html Documented in the 5.0.54, 5.1.23, and 6.0.5 changelogs as follows: When casting a string value to an integer, cases where the input string contained a decimal point and was long enough to overrun the unsigned long long type were not handled correctly. The position of the decimal point was not taken into account which resulted in miscalculated numbers and incorrect truncation to appropriate SQL data type limits.