Changeset: a4bc50e7ce6d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a4bc50e7ce6d
Modified Files:
        sql/server/rel_optimizer.c
        sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out
Branch: sq2default
Log Message:

fix reorder optimizer (ie protect agains multiple referenced relations)


diffs (34 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1104,7 +1104,7 @@ reorder_join(mvc *sql, sql_rel *rel)
        list *exps;
        list *rels;
 
-       if (rel->op == op_join)
+       if (rel->op == op_join && !rel_is_ref(rel))
                rel->exps = push_up_join_exps(sql, rel);
 
        exps = rel->exps;
@@ -1189,7 +1189,8 @@ rel_join_order(mvc *sql, sql_rel *rel)
        }
        if (is_join(rel->op) && rel->exps && !rel_is_ref(rel)) {
                rel = rewrite(sql, rel, &rel_remove_empty_select, &e_changes); 
-               rel = reorder_join(sql, rel);
+               if (!rel_is_ref(rel))
+                       rel = reorder_join(sql, rel);
        } else if (is_join(rel->op)) {
                rel->l = rel_join_order(sql, rel->l);
                rel->r = rel_join_order(sql, rel->r);
diff --git 
a/sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out 
b/sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out
--- a/sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out
+++ b/sql/test/BugTracker-2013/Tests/rangejoin_optimizer.Bug-3411.stable.out
@@ -37,7 +37,7 @@ project (
 | join (
 | | table(sys.t4311) [ "t4311"."a" as "t2"."a" ] COUNT ,
 | | table(sys.t4311) [ "t4311"."a" as "t1"."a", "t4311"."b" as "t1"."b" ] 
COUNT 
-| ) [ "t1"."a" <= "t2"."a" <= "t1"."b" ASC ]
+| ) [ "t1"."a" <= "t2"."a" <= "t1"."b" BETWEEN  ]
 ) [ "t2"."a" ]
 #plan 
 #SELECT t2.a
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to