Changeset: 8690afd61734 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8690afd61734
Modified Files:
sql/server/rel_unnest.c
Branch: octbugs
Log Message:
Don't re-write a right join into a left join twice
diffs (32 lines):
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -3119,20 +3119,6 @@ include_tid(sql_rel *r)
}
static sql_rel *
-rewrite_dependent_right2left(visitor *v, sql_rel *rel)
-{
- (void) v;
- /* The unnest code assumes freevars belong to the tables on the left
side, so at a right join, re-write it to a left join */
- if (is_right(rel->op) && is_dependent(rel)) {
- sql_rel *l = rel->l;
- rel->l = rel->r;
- rel->r = l;
- rel->op = op_left;
- }
- return rel;
-}
-
-static sql_rel *
rewrite_outer2inner_union(visitor *v, sql_rel *rel)
{
if (is_outerjoin(rel->op) && !list_empty(rel->exps) &&
(((is_left(rel->op) || is_full(rel->op)) && rel_has_freevar(v->sql,rel->l)) ||
@@ -3310,7 +3296,6 @@ rel_unnest(mvc *sql, sql_rel *rel)
rel = rel_visitor_bottomup(&v, rel, &rewrite_simplify); /* as
expressions got merged before, lets try to simplify again */
if (v.changes > 0)
rel = rel_visitor_bottomup(&v, rel, &rel_remove_empty_select);
- rel = rel_visitor_bottomup(&v, rel, &rewrite_dependent_right2left);
rel = rel_visitor_bottomup(&v, rel, &_rel_unnest);
rel = rel_visitor_bottomup(&v, rel, &rewrite_fix_count); /* fix
count inside a left join (adds a project (if (cnt IS null) then (0) else (cnt))
*/
rel = rel_visitor_bottomup(&v, rel, &rewrite_reset_used); /*
rewrite_fix_count uses 'used' property from sql_rel, reset it after it's done */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list