Changeset: c406f25500ee for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c406f25500ee Modified Files: sql/server/rel_optimize_sel.c Branch: cmp-or-patterns Log Message:
Re-introduce single col cmp_eq exps in the OR tree diffs (43 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 @@ -525,6 +525,7 @@ exp_cmp_eq_unique_id(sql_exp *e) } typedef struct exp_eq_atoms { + sql_exp* first; sql_exp* e; list *l; } ea; @@ -556,10 +557,14 @@ detect_col_cmp_eqs(mvc *sql, list *eqs, eas->l = append(eas->l, re); found = col_multivalue_cmp_eq = true; } + if (eas->first) + list_remove_data(eqs, NULL, eas->first); + list_remove_node(eqs, NULL, n); } if (!found) { ea *eas = SA_NEW(sql->sa, ea); + eas->first = e; eas->l = sa_list(sql->sa); eas->l = append(eas->l, re); eas->e = le; @@ -807,6 +812,16 @@ merge_ors_NEW(mvc *sql, list *exps, int } } + if (list_length(eqs)) { + for (node *i = eqs->h; i; i = i->next) { + list *l = new_exp_list(sql->sa); + list *r = new_exp_list(sql->sa); + l = append(l, new); + r = append(r, (sql_exp*)i->data); + new = exp_or(sql->sa, l, r, 0); + } + } + if (mins) { for (node *i = ((ins) ? mins->h : mins->h->next); i; i = i->next) { list *l = new_exp_list(sql->sa); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org