Bug #28337 NOT EXISTS with GROUP BY behaves different in 5.0.40 (regression)
| Submitted: | 9 May 2007 16:58 | Modified: | 27 May 2007 18:19 |
|---|---|---|---|
| Reporter: | Morgan Tocker | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S2 (Serious) |
| Version: | 5.0.40 | OS: | Any |
| Assigned to: | Igor Babaev | CPU Architecture: | Any |
| Tags: | regression | ||
[9 May 2007 16:58]
Morgan Tocker
[9 May 2007 16:58]
Morgan Tocker
Testcase data
Attachment: testcase_data.sql (application/octet-stream, text), 9.48 KiB.
[16 May 2007 6:39]
Travers Carter
We have had problems with what appears to be the same bug in version 5.0.41 (on Linux x86_64), but only with InnoDB tables, if the table is created as MyISAM the problem doesn't occur.
This test case is the simplest we could isolate:
------------------- Test Case -----------------
USE test;
DROP TABLE IF EXISTS menu;
CREATE TABLE menu (
id int
) ENGINE=InnoDB;
INSERT INTO menu (id) VALUES (1);
SELECT m1.*
FROM menu m1
JOIN menu m2
WHERE EXISTS (SELECT * FROM menu m3 WHERE m1.id = m3.id)
GROUP BY m1.id;
---------- MySQL 5.0.27 Gives ------------
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
----------- MySQL 5.0.41 Gives ------------
Empty set (0.00 sec)
[16 May 2007 23:35]
Igor Babaev
This problem can be demonstrated with the following test case:
mysql> SELECT VERSION();
+--------------+
| VERSION() |
+--------------+
| 5.0.42-debug |
+--------------+
1 row in set (0.00 sec)
mysql> CREATE TABLE t1 (id int NOT NULL, st CHAR(2), INDEX idx(id));
Query OK, 0 rows affected (0.07 sec)
mysql> INSERT INTO t1 VALUES
-> (3,'FL'), (2,'GA'), (4,'FL'), (1,'GA'), (5,'NY'), (7,'FL'), (6,'NY');
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> CREATE TABLE t2 (id int NOT NULL, INDEX idx(id));
Query OK, 0 rows affected (0.05 sec)
mysql> INSERT INTO t2 VALUES (7), (5), (1), (3);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT id, st FROM t1
-> WHERE st IN ('GA','FL') AND EXISTS(SELECT 1 FROM t2 WHERE t2.id=t1.id);
+----+------+
| id | st |
+----+------+
| 3 | FL |
| 1 | GA |
| 7 | FL |
+----+------+
3 rows in set (0.00 sec)
mysql>
mysql> SELECT id, st FROM t1
-> WHERE st IN ('GA','FL') AND EXISTS(SELECT 1 FROM t2 WHERE t2.id=t1.id)
-> GROUP BY id;
Empty set (0.00 sec)
mysql> SELECT id, st FROM t1
-> WHERE st IN ('GA','FL') AND NOT EXISTS(SELECT 1 FROM t2 WHERE t2.id=t1.id);
+----+------+
| id | st |
+----+------+
| 2 | GA |
| 4 | FL |
+----+------+
2 rows in set (0.00 sec)
mysql> SELECT id, st FROM t1
-> WHERE st IN ('GA','FL') AND NOT EXISTS(SELECT 1 FROM t2 WHERE t2.id=t1.id)
-> GROUP BY id;
+----+------+
| id | st |
+----+------+
| 3 | FL |
+----+------+
1 row in set (0.00 sec)
[17 May 2007 5:41]
Igor Babaev
This problem appeared after the patch for bug #27321 had been applied. The problem is a result of a bug in this patch. It affects only versions 5.0.40 and 5.1.18. The bug has nothing to do with the patch for bug #27659.
[17 May 2007 8:07]
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/26885 ChangeSet@1.2490, 2007-05-16 23:42:10-07:00, igor@olga.mysql.com +3 -0 Fixed bug #28337: wrong results for grouping queries with correlated subqueries in WHERE conditions. This bug was introduced by the patch for bug 27321.
[17 May 2007 8:23]
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/26888 ChangeSet@1.2490, 2007-05-16 23:00:28-07:00, igor@olga.mysql.com +3 -0 Fixed bug #28337: wrong results for grouping queries with correlated subqueries in WHERE conditions. This bug was introduced by the patch for bug 27321.
[20 May 2007 17:11]
Bugs System
Pushed into 5.0.44
[20 May 2007 17:13]
Bugs System
Pushed into 5.1.19-beta
[27 May 2007 18:19]
Paul DuBois
Noted in 5.0.40, 5.1.19 changelogs. Grouping queries with correlated subqueries in WHERE conditions could produce incorrect results.
[31 May 2007 6:04]
Igor Babaev
Bug #28378 and bug #28526 are marked as duplicates of this bug.
[15 Dec 2007 7:30]
Igor Babaev
Bug #30928 is marked as a duplicate of this bug.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.047 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.