Changeset: 99aa0caa3cb2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/99aa0caa3cb2
Modified Files:
        sql/backends/monet5/sql_statement.c
Branch: setjoins
Log Message:

make sure we handle notin properly


diffs (36 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -1454,13 +1454,16 @@ stmt_uselect(backend *be, stmt *op1, stm
                const char *mod = calcRef;
                const char *op = "=";
                int k;
+               int notin = 0;
 
                switch (cmptype) {
                case mark_in:
-               case mark_notin:
                case cmp_equal:
                        op = "=";
                        break;
+               case mark_notin:
+                       notin = 1;
+                       /* fall through */
                case cmp_notequal:
                        op = "!=";
                        break;
@@ -1498,6 +1501,14 @@ stmt_uselect(backend *be, stmt *op1, stm
                        q = pushBit(mb, q, TRUE);
                k = getDestVar(q);
 
+               if (notin) {
+                       q = newStmt(mb, batcalcRef, "ifthenelse");
+                       q = pushArgument(mb, q, k);
+                       q = pushBit(mb, q, FALSE);
+                       q = pushBit(mb, q, TRUE);
+                       k = getDestVar(q);
+               }
+
                q = newStmtArgs(mb, algebraRef, selectRef, 9);
                q = pushArgument(mb, q, k);
                if (sub)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to