Changeset: 00d52f2441eb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/00d52f2441eb
Modified Files:
        monetdb5/modules/kernel/algebra.c
Branch: groupjoin
Log Message:

simplified markselect logic.


diffs (35 lines):

diff --git a/monetdb5/modules/kernel/algebra.c 
b/monetdb5/modules/kernel/algebra.c
--- a/monetdb5/modules/kernel/algebra.c
+++ b/monetdb5/modules/kernel/algebra.c
@@ -422,12 +422,11 @@ ALGmarkselect(bat *r1, bat *r2, const ba
                oid c = g->hseqbase;
                for (BUN n = 0; n < nr; n++, c++) {
                        ri1[q] = c;
-                       if (mi[n] == FALSE) /* empty */
-                               ri2[q] = FALSE;
-                       else if (pi[n] == bit_nil || mi[n] == bit_nil)
+                       ri2[q] = FALSE;
+                       if (pi[n] == TRUE && mi[n] == TRUE)
+                               ri2[q] = TRUE;
+                       else if ((mi[n] == bit_nil && pi[n] != bit_nil && !any) 
|| (mi[n] != FALSE && pi[n] == bit_nil && any))
                                ri2[q] = bit_nil;
-                       else
-                               ri2[q] = (mi[n] == TRUE && pi[n] == 
TRUE)?TRUE:FALSE;
                        q++;
                }
        } else {
@@ -447,10 +446,11 @@ ALGmarkselect(bat *r1, bat *r2, const ba
                        }
                        if (m == TRUE)
                                continue;
-                       if ((mi[n] == bit_nil && pi[n] == TRUE) /* ie has nil 
*/ || (any && mi[n] == TRUE && pi[n] == bit_nil))
+
+                       if (pi[n] == TRUE && mi[n] == TRUE)
+                               m = TRUE;
+                       else if ((mi[n] == bit_nil && pi[n] != bit_nil && !any) 
|| (mi[n] != FALSE && pi[n] == bit_nil && any))
                                has_nil = true;
-                       else if (mi[n] == TRUE && pi[n] == TRUE)
-                               m = TRUE;
                }
                if (nr) {
                        ri1[q] = c-1;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to