Bug #13500 | sum() function returns different result based on order | ||
---|---|---|---|
Submitted: | 26 Sep 2005 20:33 | Modified: | 5 Oct 2005 5:44 |
Reporter: | Steve Meyers | Email Updates: | |
Status: | Won't fix | Impact on me: | |
Category: | MySQL Server: Optimizer | Severity: | S2 (Serious) |
Version: | 4.1.14/BK source | OS: | Linux (RHEL 3.0/Linux) |
Assigned to: | Alexander Ivanov | CPU Architecture: | Any |
[26 Sep 2005 20:33]
Steve Meyers
[26 Sep 2005 21:01]
MySQL Verification Team
You can upload at: ftp://ftp.mysql.com:/pub/mysql/upload using a name like bug13500.zip Thanks in advance.
[27 Sep 2005 4:48]
MySQL Verification Team
Thank you for the bug report and feedback. This bug not affects 5.0. mysql> select version(); +------------------+ | version() | +------------------+ | 4.1.15-debug-log | +------------------+ 1 row in set (0.02 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) -> a; +------------------+ | sum(checksum) | +------------------+ | 9977027053428912 | +------------------+ 1 row in set (1 min 23.73 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429912 | +------------------+ 1 row in set (1 min 23.38 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053430052 | +------------------+ 1 row in set (1 min 22.26 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429668 | +------------------+ 1 row in set (1 min 22.94 sec) mysql> alter table checksum_smiles engine=innodb; Query OK, 4646874 rows affected (2 min 41.70 sec) Records: 4646874 Duplicates: 0 Warnings: 0 mysql> alter table checksum_smiles2 engine=innodb; Query OK, 4646874 rows affected (5 min 36.30 sec) Records: 4646874 Duplicates: 0 Warnings: 0 mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053430240 | +------------------+ 1 row in set (2 min 1.57 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429888 | +------------------+ 1 row in set (1 min 59.57 sec) mysql> select version(); +-----------------+ | version() | +-----------------+ | 5.0.14-rc-debug | +-----------------+ 1 row in set (0.00 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429789 | +------------------+ 1 row in set (1 min 20.12 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429789 | +------------------+ 1 row in set (1 min 18.90 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429789 | +------------------+ 1 row in set (1 min 15.41 sec) mysql> select sum(checksum) from (select checksum from checksum_smiles order by rand()) a; +------------------+ | sum(checksum) | +------------------+ | 9977027053429789 | +------------------+ 1 row in set (1 min 15.12 sec)
[5 Oct 2005 5:44]
Igor Babaev
We won't fix this problem in 4.1 since in 4.1 we use a value of the double type to calculate the checksum function. In 5.0 this problem is resolved.