Commit 688baf83 authored by unknown's avatar unknown

right join print fixed


mysql-test/r/join_nested.result:
  right join test
mysql-test/t/join_nested.test:
  right join test
parent 148eecbd
...@@ -845,6 +845,20 @@ a b a b a b a b ...@@ -845,6 +845,20 @@ a b a b a b a b
1 3 5 3 2 2 NULL NULL 1 3 5 3 2 2 NULL NULL
2 2 5 3 1 2 NULL NULL 2 2 5 3 1 2 NULL NULL
2 2 5 3 2 2 NULL NULL 2 2 5 3 2 2 NULL NULL
EXPLAIN EXTENDED
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t1, t3, t4
RIGHT JOIN
t2
ON t3.a=1 AND t2.b=t4.b
WHERE t1.a <= 2;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t3 ALL NULL NULL NULL NULL 2
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
1 SIMPLE t4 ALL NULL NULL NULL NULL 2
Warnings:
Note 1003 select test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b` from test.t1 join test.t3 join test.t2 left join test.t4 on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) where (test.t1.a <= 2)
CREATE INDEX idx_b ON t2(b); CREATE INDEX idx_b ON t2(b);
EXPLAIN EXTENDED EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
......
...@@ -458,6 +458,14 @@ SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b ...@@ -458,6 +458,14 @@ SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
ON t3.a=1 AND t2.b=t4.b ON t3.a=1 AND t2.b=t4.b
WHERE t1.a <= 2; WHERE t1.a <= 2;
EXPLAIN EXTENDED
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t1, t3, t4
RIGHT JOIN
t2
ON t3.a=1 AND t2.b=t4.b
WHERE t1.a <= 2;
CREATE INDEX idx_b ON t2(b); CREATE INDEX idx_b ON t2(b);
EXPLAIN EXTENDED EXPLAIN EXTENDED
......
...@@ -11201,17 +11201,14 @@ static void print_join(THD *thd, String *str, List<TABLE_LIST> *tables) ...@@ -11201,17 +11201,14 @@ static void print_join(THD *thd, String *str, List<TABLE_LIST> *tables)
*t= ti++; *t= ti++;
DBUG_ASSERT(tables->elements >= 1); DBUG_ASSERT(tables->elements >= 1);
TABLE_LIST *prev= *table; (*table)->print(thd, str);
prev->print(thd, str);
TABLE_LIST **end= table + tables->elements; TABLE_LIST **end= table + tables->elements;
for(TABLE_LIST **tbl= table + 1; tbl < end; tbl++) for(TABLE_LIST **tbl= table + 1; tbl < end; tbl++)
{ {
TABLE_LIST *curr= *tbl; TABLE_LIST *curr= *tbl;
if (prev->outer_join & JOIN_TYPE_RIGHT) if (curr->outer_join)
str->append(" right join ", 12); str->append(" left join ", 11); // MySQL converg right to left joins
else if (curr->outer_join & JOIN_TYPE_LEFT)
str->append(" left join ", 11);
else if (curr->straight) else if (curr->straight)
str->append(" straight_join ", 15); str->append(" straight_join ", 15);
else else
...@@ -11223,7 +11220,6 @@ static void print_join(THD *thd, String *str, List<TABLE_LIST> *tables) ...@@ -11223,7 +11220,6 @@ static void print_join(THD *thd, String *str, List<TABLE_LIST> *tables)
curr->on_expr->print(str); curr->on_expr->print(str);
str->append(')'); str->append(')');
} }
prev= curr;
} }
} }
......
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