Changeset: d0a394e5a53c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d0a394e5a53c
Modified Files:
        sql/server/rel_optimize_sel.c
        sql/server/rel_unnest.c
Branch: manti
Log Message:

only disable pushdowns for pipeline
only enable rewrite into markjoin for pipeline


diffs (32 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
@@ -3066,7 +3066,7 @@ rel_push_select_down(visitor *v, sql_rel
        exps = rel->exps;
 
        /* push select through join */
-       if (is_select(rel->op) && r && is_join(r->op) && list_empty(r->attr) && 
(MT_thread_get_qry_ctx()->pipeline_mode) && !rel_is_ref(r) && !is_single(r)){
+       if (is_select(rel->op) && r && is_join(r->op) && 
(!(MT_thread_get_qry_ctx()->pipeline_mode) || list_empty(r->attr)) && 
!rel_is_ref(r) && !is_single(r)) {
                sql_rel *jl = r->l, *ojl = jl, *jr = r->r, *ojr = jr;
                int left = r->op == op_join || r->op == op_left;
                int right = r->op == op_join || r->op == op_right;
@@ -3108,7 +3108,7 @@ rel_push_select_down(visitor *v, sql_rel
        }
 
        /* merge select and cross product ? TODO a more precies way to check if 
we can merge a select and a group-join than simply disable it with 
list_empty(r->attr) */
-       if (is_select(rel->op) && r && r->op == op_join && list_empty(r->attr) 
&& (MT_thread_get_qry_ctx()->pipeline_mode) && !rel_is_ref(r) && !is_single(r) 
&& !exps_have_unsafe(exps, false, true)) {
+       if (is_select(rel->op) && r && r->op == op_join && 
(!(MT_thread_get_qry_ctx()->pipeline_mode) || list_empty(r->attr)) && 
!rel_is_ref(r) && !is_single(r) && !exps_have_unsafe(exps, false, true)) {
                for (n = exps->h; n;) {
                        node *next = n->next;
                        sql_exp *e = n->data;
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
@@ -2371,6 +2371,7 @@ rewrite_anyequal(visitor *v, sql_rel *re
                                        (void)rewrite_inner(sql, rel, rsq, op, 
&rewrite, NULL);
                                        exp_reset_props(rewrite, re, 
is_left(rewrite->op));
                                }
+                               tomarkjoin &= 
(MT_thread_get_qry_ctx()->pipeline_mode);
                                if (!rewrite)
                                        return NULL;
                                sql_exp *inexp;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to