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

Reply via email to