Changeset: 43ef6cda34b1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/43ef6cda34b1
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/rel_physical.c
        sql/server/rel_optimize_sel.c
        sql/test/miscellaneous/Tests/simple_plans.test
Branch: default
Log Message:

merged with mar2025


diffs (77 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -3766,7 +3766,7 @@ rel2bin_semijoin(backend *be, sql_rel *r
 
                                        if (!l || !r)
                                                return NULL;
-                                       if (be->no_mitosis && 
list_length(jexps) == 1 && list_empty(sexps) && rel->op == op_semi && 
!is_anti(e) && is_equi_exp_(e)) {
+                                       if (/*be->no_mitosis &&*/ 
list_length(jexps) == 1 && list_empty(sexps) && rel->op == op_semi && 
!is_anti(e) && is_equi_exp_(e)) {
                                                join = stmt_semijoin(be, 
column(be, l), column(be, r), left->cand, NULL/*right->cand*/, is_semantics(e), 
false);
                                                semijoin_only = 1;
                                                en = NULL;
diff --git a/sql/backends/monet5/rel_physical.c 
b/sql/backends/monet5/rel_physical.c
--- a/sql/backends/monet5/rel_physical.c
+++ b/sql/backends/monet5/rel_physical.c
@@ -225,7 +225,9 @@ rel_partition(mvc *sql, sql_rel *rel)
                break;
        case op_semi:
        case op_anti:
-
+               if (rel->l)
+                       rel_partition(sql, rel->l);
+               break;
        case op_inter:
        case op_except:
                if (rel->l)
diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -1636,6 +1636,15 @@ rel_uses_exp_outside_subrel(sql_rel *rel
 static inline sql_rel *
 rel_join2semijoin(visitor *v, sql_rel *rel)
 {
+       if (!rel_is_ref(rel) && is_simple_project(rel->op) && 
need_distinct(rel) && rel->l) {
+               sql_rel *l = rel->l;
+
+               if (!rel_is_ref(l) && l->op == op_join && 
rel_has_all_exps(l->l, rel->exps)) {
+                       l->op = op_semi;
+                       v->changes++;
+                       return rel;
+               }
+       }
        if ((is_simple_project(rel->op) || is_groupby(rel->op)) && rel->l) {
                bool swap = false;
                sql_rel *l = rel->l;
diff --git a/sql/test/bugs/Tests/rtrim_bug.test 
b/sql/test/bugs/Tests/rtrim_bug.test
--- a/sql/test/bugs/Tests/rtrim_bug.test
+++ b/sql/test/bugs/Tests/rtrim_bug.test
@@ -80,7 +80,7 @@ select count(*) from sys.tracelog() wher
 0
 
 query I rowsort
-select count(*) from sys.tracelog() where stmt like '% algebra.join%'
+select count(*) from sys.tracelog() where stmt like '% algebra.intersect%'
 ----
 1
 
diff --git a/sql/test/miscellaneous/Tests/simple_plans.test 
b/sql/test/miscellaneous/Tests/simple_plans.test
--- a/sql/test/miscellaneous/Tests/simple_plans.test
+++ b/sql/test/miscellaneous/Tests/simple_plans.test
@@ -505,16 +505,12 @@ explain select t1.a, t1.b from t1 inner 
 ----
 algebra.intersect
 1
-algebra.join
-1
 algebra.likejoin
 1
 algebra.projection
 4
 algebra.projectionpath
 1
-bat.mirror
-1
 bat.pack
 5
 bat.single
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to