Changeset: fafbf477601e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fafbf477601e
Modified Files:
        sql/server/rel_optimizer.c
Branch: Apr2011
Log Message:

Implemented missing cases for comparison.
This fixes crashes on Solaris.


diffs (32 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1083,6 +1083,14 @@
                        if (!l || !r) 
                                return NULL;
                        return exp_or(sql->sa, l, r);
+               } else if (e->flag == cmp_in || e->flag == cmp_notin) {
+                       list *r;
+
+                       l = _exp_push_down(sql, e->l, f, t);
+                       r = exps_push_down(sql, e->r, f, t);
+                       if (!l || !r)
+                               return NULL;
+                       return exp_in(sql->sa, l, r, e->flag);
                } else {
                        l = _exp_push_down(sql, e->l, f, t);
                        r = _exp_push_down(sql, e->r, f, t);
@@ -2933,6 +2941,13 @@
                        l = e->r;
                        for (n = l->h; n != NULL; n = n->next) 
                                exp_mark_used(subrel, n->data);
+               } else if (e->flag == cmp_in || e->flag == cmp_notin) {
+                       list *l = e->r;
+                       node *n;
+
+                       exp_mark_used(subrel, e->l);
+                       for (n = l->h; n != NULL; n = n->next)
+                               exp_mark_used(subrel, n->data);
                } else {
                        exp_mark_used(subrel, e->l);
                        exp_mark_used(subrel, e->r);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to