mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
right join print fixed
This commit is contained in:
@ -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
|
|||||||
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)
|
|||||||
*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)
|
|||||||
curr->on_expr->print(str);
|
curr->on_expr->print(str);
|
||||||
str->append(')');
|
str->append(')');
|
||||||
}
|
}
|
||||||
prev= curr;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user