Commit 58ad5593 authored by igor@rurik.mysql.com's avatar igor@rurik.mysql.com

Merge rurik.mysql.com:/home/igor/dev/mysql-5.0-0

into  rurik.mysql.com:/home/igor/dev/mysql-5.1-0
parents d590331d f4851259
...@@ -2562,3 +2562,20 @@ my_sqrt ...@@ -2562,3 +2562,20 @@ my_sqrt
1.4142135623731 1.4142135623731
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (id int PRIMARY KEY);
CREATE TABLE t2 (id int PRIMARY KEY);
INSERT INTO t1 VALUES (1), (3);
INSERT INTO t2 VALUES (1), (2), (3);
CREATE VIEW v2 AS SELECT * FROM t2;
SELECT COUNT(*) FROM t1 LEFT JOIN t2 ON t1.id=t2.id;
COUNT(*)
2
SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id;
id id
1 1
3 3
SELECT COUNT(*) FROM t1 LEFT JOIN v2 ON t1.id=v2.id;
COUNT(*)
2
DROP VIEW v2;
DROP TABLE t1, t2;
...@@ -2418,3 +2418,24 @@ SELECT my_sqrt FROM v1 ORDER BY my_sqrt; ...@@ -2418,3 +2418,24 @@ SELECT my_sqrt FROM v1 ORDER BY my_sqrt;
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
#
# Bug #18237: invalid count optimization applied to an outer join with a view
#
CREATE TABLE t1 (id int PRIMARY KEY);
CREATE TABLE t2 (id int PRIMARY KEY);
INSERT INTO t1 VALUES (1), (3);
INSERT INTO t2 VALUES (1), (2), (3);
CREATE VIEW v2 AS SELECT * FROM t2;
SELECT COUNT(*) FROM t1 LEFT JOIN t2 ON t1.id=t2.id;
SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id;
SELECT COUNT(*) FROM t1 LEFT JOIN v2 ON t1.id=v2.id;
DROP VIEW v2;
DROP TABLE t1, t2;
...@@ -96,8 +96,14 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds) ...@@ -96,8 +96,14 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
*/ */
for (TABLE_LIST *tl= tables; tl; tl= tl->next_leaf) for (TABLE_LIST *tl= tables; tl; tl= tl->next_leaf)
{ {
TABLE_LIST *embedded;
for (embedded= tl ; embedded; embedded= embedded->embedding)
{
if (embedded->on_expr)
break;
}
if (embedded)
/* Don't replace expression on a table that is part of an outer join */ /* Don't replace expression on a table that is part of an outer join */
if (tl->on_expr)
{ {
outer_tables|= tl->table->map; outer_tables|= tl->table->map;
......
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