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

Reply via email to