| 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.
