Changeset: 17838718818a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=17838718818a Modified Files: sql/backends/monet5/rel_bin.c Branch: default Log Message:
Merged with Jun2020 diffs (63 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 @@ -2222,7 +2222,7 @@ rel2bin_join(backend *be, sql_rel *rel, if (e->type <= e_cmp) { int flag = e->flag & ~CMP_BETWEEN; /* check if its a select or join expression, ie use only expressions of one relation left and of the other right (than join) */ - if (flag <= cmp_filter && !e->f) { /* theta join */ + if (flag < cmp_filter && !e->f) { /* theta join */ /* join or select ? */ if ((rel_find_exp(rel->l, e->l) && !rel_find_exp(rel->r, e->l) && rel_find_exp(rel->r, e->r) && !rel_find_exp(rel->l, e->r)) || @@ -2231,7 +2231,7 @@ rel2bin_join(backend *be, sql_rel *rel, append(jexps, e); continue; } - } else if (flag <= cmp_filter && e->f) { /* range */ + } else if (flag < cmp_filter && e->f) { /* range */ int nrcr1 = 0, nrcr2 = 0, nrcl1 = 0, nrcl2 = 0; if ((rel_find_exp(rel->l, e->l) && !rel_find_exp(rel->r, e->l) && ((rel_find_exp(rel->r, e->r) && !rel_find_exp(rel->l, e->r)) || (nrcr1 = exp_is_atom(e->r))) && @@ -2315,36 +2315,13 @@ rel2bin_join(backend *be, sql_rel *rel, } if (join_idx != sql->opt_stats[0]) idx = 1; - - if (s->type != st_join && - s->type != st_join2 && - s->type != st_joinN) { - assert(0); - - /* predicate */ - if (!list_length(lje) && s->nrcols == 0) { - assert(0); - stmt *l = bin_first_column(be, left); - stmt *r = bin_first_column(be, right); - - l = stmt_uselect(be, stmt_const(be, l, stmt_bool(be, 1)), s, cmp_equal, NULL, 0, 0); - join = stmt_join(be, l, r, 0, cmp_all, 0, false); - continue; - } - if (!join) { - assert(0); - stmt *l = bin_first_column(be, left); - stmt *r = bin_first_column(be, right); - join = stmt_join(be, l, r, 0, cmp_all, 0, false); - en = rel->exps->h; - } + assert(s->type == st_join || s->type == st_join2 || s->type == st_joinN); + if (!join) + join = s; + if (e->flag != cmp_equal) { /* only collect equi joins */ + en = en->next; break; } - - if (!join) - join = s; - if (e->flag != cmp_equal) /* only collect equi joins */ - break; list_append(lje, s->op1); list_append(rje, s->op2); list_append(exps, e); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list