Commit c813e97c authored by unknown's avatar unknown
Browse files

Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/usr/local/home/marty/MySQL/mysql-5.0

parents d925e516 ad57284c
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -1321,3 +1321,25 @@ NULL NULL NULL
18	NULL	NULL
19	NULL	NULL
DROP TABLE t1,t2,t3;
CREATE TABLE t1 (c11 int);
CREATE TABLE t2 (c21 int);
CREATE TABLE t3 (c31 int);
INSERT INTO t1 VALUES (4), (5);
SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
c11	c21
4	NULL
5	NULL
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	system	NULL	NULL	NULL	NULL	0	const row not found
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
c11	c21	c31
4	NULL	NULL
5	NULL	NULL
EXPLAIN SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	
DROP TABLE t1,t2,t3;
+18 −0
Original line number Diff line number Diff line
@@ -752,3 +752,21 @@ EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;

DROP TABLE t1,t2,t3;

#
# Test for bug #11284: empty table in a nested left join
# 

CREATE TABLE t1 (c11 int);
CREATE TABLE t2 (c21 int);
CREATE TABLE t3 (c31 int);

INSERT INTO t1 VALUES (4), (5);

SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;

SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
EXPLAIN SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;

DROP TABLE t1,t2,t3;
+1 −1
Original line number Diff line number Diff line
@@ -2158,7 +2158,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables, COND *conds,
    if (*s->on_expr_ref)
    {
      /* s is the only inner table of an outer join */
      if (!table->file->records)
      if (!table->file->records && !embedding)
      {						// Empty table
        s->dependent= 0;                        // Ignore LEFT JOIN depend.
	set_position(join,const_count++,s,(KEYUSE*) 0);