Update of /cvsroot/monetdb/sql/src/server
In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17964

Modified Files:
      Tag: Feb2010
        rel_select.mx 
Log Message:
fix bug in IN handling



Index: rel_select.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_select.mx,v
retrieving revision 1.168
retrieving revision 1.168.2.1
diff -u -d -r1.168 -r1.168.2.1
--- rel_select.mx       12 Jan 2010 09:17:35 -0000      1.168
+++ rel_select.mx       10 Mar 2010 20:46:32 -0000      1.168.2.1
@@ -2527,7 +2527,7 @@
                    l->card != CARD_ATOM && has_nil(l)) {
                        e = rel_unop_(sql, exp_dup(l), NULL, "isnull", 0);
                        e = exp_compare( e, exp_atom_bool(0), cmp_equal);
-                       if (!is_select(rel->op))
+                       if (!is_select(rel->op) && !rel_is_ref(rel))
                                left = rel = rel_select(rel, e);
                        else
                                rel_select_add_exp(rel, e);
@@ -2605,10 +2605,7 @@
                                        l = exp_dup(l);
                                        if (sc->token == SQL_NOT_IN) {
                                                ne = exp_compare( l, r, 
cmp_notequal);
-                                               if (!is_select(rel->op))
-                                                       rel = rel_select(rel, 
ne);
-                                               else
-                                                       rel_select_add_exp(rel, 
ne);
+                                               rel = rel_select(rel, ne);
                                        } else { 
                                                ne = exp_compare( l, r, 
cmp_equal);
                                                if (!e) 
@@ -2620,12 +2617,8 @@
                                                        );
                                        }
                                }
-                               if (e && sc->token == SQL_IN) {
-                                       if (!is_select(rel->op))
-                                               rel = rel_select(rel, e);
-                                       else
-                                               rel_select_add_exp(rel, e);
-                               }
+                               if (e && sc->token == SQL_IN) 
+                                       rel = rel_select(rel, e);
                                exp_destroy(l);
                                list_destroy(vals);
                                return rel;


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to