| Bug #872 | InnoDB subquery returns no results under special conditions | ||
|---|---|---|---|
| Submitted: | 18 Jul 2003 9:53 | Modified: | 21 Jul 2003 6:23 |
| Reporter: | Ronald Jeremy | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
| Version: | 4.1.1 | OS: | Linux (redhat linux 8) |
| Assigned to: | CPU Architecture: | Any | |
[18 Jul 2003 9:53]
Ronald Jeremy
[21 Jul 2003 6:23]
Heikki Tuuri
Hi!
I tested this in my local MySQL/InnoDB-4.1.1 development tree.
I got the right result with both MyISAM and InnoDB tables.
Regards,
Heikki
heikki@hundin:~/mysql-4.1/client> mysql test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.1.1-alpha-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE cust (
-> customerid int(1) PRIMARY KEY
-> )TYPE=innodb;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE orders (
-> orderid int(1) PRIMARY KEY,
-> customerid int(1),
-> takentime TIMESTAMP(+0),
-> placedtime TIMESTAMP(+0),
-> INDEX cust_fk (customerid)
-> )TYPE=innodb;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO cust (customerid) values (1);
Query OK, 1 row affected (3.74 sec)
mysql> INSERT INTO cust (customerid) values (2);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO orders (orderid,customerid,takentime,placedtime) values
-> (1,1,'20030718112400','20030718122400');
Query OK, 1 row affected (0.92 sec)
mysql> INSERT INTO orders (orderid,customerid,takentime,placedtime) values
-> (2,2,'20030718112400','20030718122400');
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT DISTINCT O.customerid, COUNT(DISTINCT O.orderid) AS cnt FROM (
-> SELECT DISTINCT C2.customerid
-> FROM cust C2 INNER JOIN orders O2 ON C2.customerid = O2.customerid
-> WHERE O2.takentime < '20030818112400'
-> ) tmp, orders O
-> WHERE O.customerid = tmp.customerid AND O.takentime < '20030918112400' AN
D
-> O.takentime > '20030518112400'
-> GROUP BY O.customerid;
+------------+-----+
| customerid | cnt |
+------------+-----+
| 1 | 1 |
| 2 | 1 |
+------------+-----+
2 rows in set (53.79 sec)
mysql>
