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