diff options
-rw-r--r-- | mysql-test/r/sel000001.result | 14 | ||||
-rw-r--r-- | mysql-test/t/sel000001.test | 13 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
3 files changed, 28 insertions, 1 deletions
diff --git a/mysql-test/r/sel000001.result b/mysql-test/r/sel000001.result index 28f6d3d1d5a..6b6b9b7dffc 100644 --- a/mysql-test/r/sel000001.result +++ b/mysql-test/r/sel000001.result @@ -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; diff --git a/mysql-test/t/sel000001.test b/mysql-test/t/sel000001.test index 77355f8d535..ad4af1f92fb 100644 --- a/mysql-test/t/sel000001.test +++ b/mysql-test/t/sel000001.test @@ -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; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 5b5972be384..bde5392d299 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -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 */ |