Changeset: 4c987ba62284 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4c987ba62284
Modified Files:
        monetdb5/modules/mal/pcre.c
Branch: Jun2020
Log Message:

Better loop


diffs (43 lines):

diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c
--- a/monetdb5/modules/mal/pcre.c
+++ b/monetdb5/modules/mal/pcre.c
@@ -852,15 +852,22 @@ re_likeselect(BAT **bnp, BAT *b, BAT *s,
 
 #define proj_scanloop(TEST)    \
        do {    \
-               BATloop (b, p, q) {     \
-                       v = BUNtvar(bi, p);     \
-                       if (*v == '\200') { \
-                               res[p] = bit_nil; \
-                               bn->tnonil = false; \
-                               bn->tnil = true; \
-                       } else \
+               if (bn->tnonil) { \
+                       BATloop (b, p, q) {     \
+                               v = BUNtail(bi, p);     \
                                res[p] = TEST; \
-               }       \
+                       }       \
+               } else { \
+                       BATloop (b, p, q) {     \
+                               v = BUNtail(bi, p);     \
+                               if (*v == '\200') { \
+                                       res[p] = bit_nil; \
+                                       bn->tnonil = false; \
+                                       bn->tnil = true; \
+                               } else \
+                                       res[p] = TEST; \
+                       }       \
+               } \
        } while (0)
 
 static str
@@ -868,7 +875,7 @@ re_like_proj(BAT **bnp, BAT *b, const ch
 {
        BATiter bi = bat_iterator(b);
        BAT *bn;
-       const char *v;
+       const char *restrict v;
        RE *re = NULL;
        uint32_t *wpat = NULL;
        BUN p, q;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to