Commit d433fe55 authored by unknown's avatar unknown

Proposed bugfix for #717

Current table is placed into read_tables set of the current join_tab->select
so get_mm_parts function thinks that current table's record is read and
tries to calculate WHERE condition with the fields of the record.
Result of these calculations is unpredictable.
Looks funny - outcome of the SELECT depends on the queries executed before.

Anyway i think we should have testcase on this part of the code.


mysql-test/r/sel000001.result:
  appropriate result added
mysql-test/t/sel000001.test:
  testcase added
sql/sql_select.cc:
  I think we should count current table out of read_tables set
parent adcd7be9
......@@ -5,3 +5,17 @@ SELECT s, id FROM t1 WHERE s = 'mouse';
s id
mouse 3
drop table t1;
CREATE TABLE t1 (
node int(11) NOT NULL default '0',
maxchild int(11) NOT NULL default '0',
PRIMARY KEY (`node`)
);
INSERT INTO t1 (node, maxchild) VALUES (4,4),(5,5),(1,244);
SELECT * FROM t1 g1, t1 g2
WHERE g1.node <= g2.node and g2.node <= g1.maxchild and g2.node = g2.maxchild;
node maxchild node maxchild
4 4 4 4
5 5 5 5
1 244 4 4
1 244 5 5
DROP TABLE t1;
......@@ -16,3 +16,16 @@ CREATE TABLE t1 (s CHAR(20) PRIMARY KEY, id INT);
INSERT INTO t1 VALUES ('cat', 1), ('mouse', 3), ('dog', 2), ('snake', 77);
SELECT s, id FROM t1 WHERE s = 'mouse';
drop table t1;
#
#test for bug #717
#
CREATE TABLE t1 (
node int(11) NOT NULL default '0',
maxchild int(11) NOT NULL default '0',
PRIMARY KEY (`node`)
);
INSERT INTO t1 (node, maxchild) VALUES (4,4),(5,5),(1,244);
SELECT * FROM t1 g1, t1 g2
WHERE g1.node <= g2.node and g2.node <= g1.maxchild and g2.node = g2.maxchild;
DROP TABLE t1;
......@@ -2683,7 +2683,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
(select->quick &&
(select->quick->records >= 100L)))) ?
2 : 1;
sel->read_tables= used_tables;
sel->read_tables= used_tables & ~current_map;
}
if (i != join->const_tables && tab->use_quick != 2)
{ /* Read with cache */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment