Bug #16260 | VIEW MERGE fails (connection lost) for some select | ||
---|---|---|---|
Submitted: | 6 Jan 2006 18:36 | Modified: | 21 Feb 2006 22:16 |
Reporter: | haroon chaudhry | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.17/5.0.19 BK | OS: | Linux (Linux) |
Assigned to: | Igor Babaev | CPU Architecture: | Any |
[6 Jan 2006 18:36]
haroon chaudhry
[8 Jan 2006 3:00]
MySQL Verification Team
Thank you for the bug report I was able to repeat the behavior reported. mysql> select * from prod p left outer join classbb cbb on p.prodid=cbb.prodid left -> outer join prodclass pc on cbb.prodclassid=pc.prodclassid where p.prodid=1; ERROR 2013 (HY000): Lost connection to MySQL server during query miguel@hegel:~/dbs/5.0> libexec/mysqld 030408 0:56:32 InnoDB: Started; log sequence number 0 259212368 030408 0:56:32 [Note] libexec/mysqld: ready for connections. Version: '5.0.19-debug' socket: '/tmp/mysql.sock' port: 3306 Source distribution mysqld got signal 11; <cut> Trying to get some variables. Some pointers may be invalid and cause the dump to abort... thd->query at 0x8e792c0 = select * from prod p left outer join classbb cbb on p.prodid=cbb.prodid left outer join prodclass pc on cbb.prodclassid=pc.prodclassid where p.prodid=1 thd->thread_id=2
[28 Jan 2006 3:53]
Igor Babaev
This problem manifests itself in the cases when we have a nested outer join for which it can be inferred that one of the inner tables is a single row table. The problem can be demonstrated with a simpler test: CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10)); CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10)); CREATE TABLE t3 (cid int NOT NULL PRIMARY KEY, id int NOT NULL, pid int NOT NULL); INSERT INTO t1 VALUES (1, 'A'), (3, 'C'); INSERT INTO t2 VALUES (1, 'A'), (3, 'C'); INSERT INTO t3 VALUES (1, 1, 1), (3, 3, 3); SELECT * FROM t1 p LEFT JOIN (t3 JOIN t1) ON (t1.id=t3.id AND t1.type='B' AND p.id=t3.id) LEFT JOIN t2 ON (t3.pid=t2.pid) WHERE p.id=1; Instead of the above query that causes a crash we can use the following sequence: CREATE VIEW v1 AS SELECT t3.* FROM t3 JOIN t1 ON t1.id=t3.id AND t1.type='B'; SELECT * FROM t1 p LEFT JOIN v1 ON p.id=v1.id LEFT JOIN t2 ON v1.pid=t2.pid WHERE p.id=1; These commands crash the server by same reason.
[28 Jan 2006 5:21]
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/1768
[10 Feb 2006 5:19]
Igor Babaev
ChangeSet 1.2010 06/01/27 21:20:28 igor@rurik.mysql.com +3 -0 Fixed bug #16260. The problem has manifested itself in the cases when we have a nested outer join for which it can be inferred that one of the inner tables is a single row table. sql/sql_select.cc 1.389 06/01/27 21:20:09 igor@rurik.mysql.com +2 -1 Fixed bug #16260. The problem has manifested itself in the cases when we have a nested outer join for which it can be inferred that one of the inner tables is a single row table. A table is never considered as a const table if it is used in a nested join that serves as an inner operand of an outer join. mysql-test/t/join_nested.test 1.18 06/01/27 21:20:09 igor@rurik.mysql.com +28 -0 Added a test case for bug #16260. mysql-test/r/join_nested.result 1.22 06/01/27 21:20:09 igor@rurik.mysql.com +23 -0 Added a test case for bug #16260. The fix will appear in 5.0.19 and 5.1.7
[21 Feb 2006 22:16]
Mike Hillyer
Documented in 5.0.19 and 5.1.7 changelogs: <listitem> <para> MySQL server dropped client connection for certain SELECT statements against views defined that used <literal>MERGE</literal> algorithm. (Bug #16260) </para> </listitem>