Changeset: 33e3e1fdb08d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=33e3e1fdb08d
Modified Files:
        sql/src/server/rel_select.mx
Branch: Oct2010
Log Message:

fix handling of select x from y where a < (select ..) (now handled through a 
semijoin)


diffs (32 lines):

diff -r bd70cf18b649 -r 33e3e1fdb08d sql/src/server/rel_select.mx
--- a/sql/src/server/rel_select.mx      Thu Sep 16 23:25:14 2010 +0200
+++ b/sql/src/server/rel_select.mx      Thu Sep 16 23:26:28 2010 +0200
@@ -584,7 +584,7 @@
 void
 rel_join_add_exp( sql_rel *rel, sql_exp *e)
 {
-       assert(is_join(rel->op));
+       assert(is_join(rel->op) || is_semi(rel->op));
 
        if (!rel->exps)
                rel->exps = new_exp_list();
@@ -1998,6 +1998,10 @@
                else
                        return sql_error(sql, 02, "SELECT: cannot use non GROUP 
BY column in query results without an aggregate function");
        }
+       if (is_semi(rel->op)) {
+               rel_join_add_exp(rel, e);
+               return rel;
+       }
        if (rs->card <= CARD_ATOM && exp_is_atom(rs)) {
                if (ls->card == rs->card)  /* bin compare op */
                        return rel_select(rel, e);
@@ -2096,7 +2100,7 @@
 
                                rs = exp_aggr1(rs, zero_or_one, 0, 0, 
CARD_ATOM, 0);
                        }
-                       rel = rel_crossproduct(rel, r, op_join);
+                       rel = rel_crossproduct(rel, r, op_semi);
                }
        }
        if (!rs) {
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to