Changeset: 361cf4afed39 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/361cf4afed39
Modified Files:
        sql/server/rel_optimize_sel.c
Branch: Dec2023
Log Message:

use a bit less memory on reorder_joins


diffs (62 lines):

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
@@ -2360,14 +2360,20 @@ reorder_join(visitor *v, sql_rel *rel)
 {
        list *exps, *rels;
 
-       if (is_innerjoin(rel->op) && !is_single(rel) && !rel_is_ref(rel) && 
list_empty(rel->attr))
+       if (is_innerjoin(rel->op) && !is_single(rel) && !rel_is_ref(rel) && 
list_empty(rel->attr)) {
+               if (list_empty(rel->exps)) {
+                       sql_rel *l = rel->l, *r = rel->r;
+                       if (!is_innerjoin(l->op) && !is_innerjoin(r->op))
+                               return rel;
+               }
                rel->exps = push_up_join_exps(v->sql, rel);
+       }
 
        if (!is_innerjoin(rel->op) || is_single(rel) || rel_is_ref(rel) || 
list_empty(rel->exps) || !list_empty(rel->attr)) {
                if (!list_empty(rel->exps)) { /* cannot add join idxs to cross 
products */
                        exps = rel->exps;
                        rel->exps = NULL; /* should be all crosstables by now */
-                       rels = sa_list(v->sql->sa);
+                       rels = sa_list(v->sql->ta);
                        /* try to use an join index also for outer joins */
                        get_inner_relations(v->sql, rel, rels);
                        int cnt = list_length(exps);
@@ -2380,7 +2386,7 @@ reorder_join(visitor *v, sql_rel *rel)
        } else {
                exps = rel->exps;
                rel->exps = NULL; /* should be all crosstables by now */
-               rels = sa_list(v->sql->sa);
+               rels = sa_list(v->sql->ta);
                get_relations(v, rel, rels);
                if (list_length(rels) > 1) {
                        rels = push_in_join_down(v->sql, rels, exps);
@@ -2397,11 +2403,6 @@ rel_join_order_(visitor *v, sql_rel *rel
 {
        if (!rel)
                return rel;
-       /*
-       if (is_join(rel->op))
-               rel = reorder_join(v, rel);
-       return rel;
-       */
 
        switch (rel->op) {
        case op_basetable:
@@ -2458,11 +2459,9 @@ static sql_rel *
 rel_join_order(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
-       return rel_join_order_(v, rel);
-       /*
-       rel = rel_visitor_bottomup(v, rel, &rel_join_order_);
-       return rel;
-       */
+       sql_rel *r = rel_join_order_(v, rel);
+       sa_reset(v->sql->ta);
+       return r;
 }
 
 run_optimizer
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to