Changeset: 8eae9e2d5a6b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8eae9e2d5a6b
Modified Files:
        sql/server/rel_optimize_sel.c
Branch: cmp-or-patterns
Log Message:

Removes old merge_ors impl


diffs (109 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
@@ -423,95 +423,6 @@ exps_cse( mvc *sql, list *oexps, list *l
        return res;
 }
 
-static int
-are_equality_exps( list *exps, sql_exp **L)
-{
-       sql_exp *l = *L;
-
-       if (list_length(exps) == 1) {
-               sql_exp *e = exps->h->data, *le = e->l, *re = e->r;
-
-               if (e->type == e_cmp && e->flag == cmp_equal && le->card != 
CARD_ATOM && re->card == CARD_ATOM && !is_semantics(e)) {
-                       if (!l) {
-                               *L = l = le;
-                               if (!is_column(le->type))
-                                       return 0;
-                       }
-                       return (exp_match(l, le));
-               }
-               if (e->type == e_cmp && e->flag == cmp_or && !is_anti(e) && 
!is_semantics(e))
-                       return (are_equality_exps(e->l, L) && 
are_equality_exps(e->r, L));
-       }
-       return 0;
-}
-
-static void
-get_exps( list *n, list *l )
-{
-       sql_exp *e = l->h->data, *re = e->r;
-
-       if (e->type == e_cmp && e->flag == cmp_equal && re->card == CARD_ATOM)
-               list_append(n, re);
-       if (e->type == e_cmp && e->flag == cmp_or) {
-               get_exps(n, e->l);
-               get_exps(n, e->r);
-       }
-}
-
-static sql_exp *
-equality_exps_2_in( mvc *sql, sql_exp *ce, list *l, list *r)
-{
-       list *nl = new_exp_list(sql->sa);
-
-       get_exps(nl, l);
-       get_exps(nl, r);
-
-       return exp_in( sql->sa, ce, nl, cmp_in);
-}
-
-static list *
-merge_ors(mvc *sql, list *exps, int *changes)
-{
-       /* n = 1 OR n = 2 ==> n in (1, 2) */
-       list *nexps = NULL;
-       int needed = 0;
-
-       // blindly looks for any cmp_or in the top list
-       for (node *n = exps->h; n && !needed; n = n->next) {
-               sql_exp *e = n->data;
-
-               if (e->type == e_cmp && e->flag == cmp_or && !is_anti(e))
-                       needed = 1;
-       }
-
-       if (needed) {
-               nexps = new_exp_list(sql->sa);
-               for (node *n = exps->h; n; n = n->next) {
-                       sql_exp *e = n->data, *l = NULL;
-
-                       if (e->type == e_cmp && e->flag == cmp_or && 
!is_anti(e) && are_equality_exps(e->l, &l) && are_equality_exps(e->r, &l) && l) 
{
-                               (*changes)++;
-                               append(nexps, equality_exps_2_in(sql, l, e->l, 
e->r));
-                       } else {
-                               append(nexps, e);
-                       }
-               }
-       } else {
-               nexps = exps;
-       }
-
-       for (node *n = nexps->h; n ; n = n->next) {
-               sql_exp *e = n->data;
-
-               if (e->type == e_cmp && e->flag == cmp_or) {
-                       e->l = merge_ors(sql, e->l, changes);
-                       e->r = merge_ors(sql, e->r, changes);
-               }
-       }
-
-       return nexps;
-}
-
 static inline int
 exp_col_key(sql_exp *e)
 {
@@ -1108,9 +1019,6 @@ rel_select_cse(visitor *v, sql_rel *rel)
        if ((is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) && 
rel->exps) /* cleanup equal expressions */
                rel->exps = cleanup_equal_exps(v->sql, rel, rel->exps, 
&v->changes); /* (a = b) and (a += b) */
 
-       if (NULL && is_select(rel->op) && rel->exps)
-               rel->exps = merge_ors(v->sql, rel->exps, &v->changes); /* x = 1 
or x = 2 => x in (1, 2)*/
-
        if (is_select(rel->op) && rel->exps)
                rel->exps = merge_ors_NEW(v->sql, rel->exps, &v->changes);
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to