Changeset: 0d1cdbcc9ea7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0d1cdbcc9ea7
Modified Files:
        monetdb5/modules/mal/pcre.c
Branch: ascii-flag
Log Message:

Some cleanup; also check for timeouts a bit more often.


diffs (86 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
@@ -1162,39 +1162,30 @@ re_like_build(struct RE **re, const char
        return MAL_SUCCEED;
 }
 
-#define proj_scanloop(TEST)    \
-       do {                                    \
-               if (strNil(s))          \
-                       return bit_nil; \
-               else                            \
-                       return TEST;    \
-       } while (0)
-
 static inline bit
 re_like_proj_apply(const char *s, const struct RE *restrict re,
                                   const char *pat,
                                   bool caseignore, bool anti, bool use_strcmp)
 {
+       if (strNil(s))
+               return bit_nil;
        if (use_strcmp) {
                if (caseignore) {
                        if (anti)
-                               proj_scanloop(GDKstrcasecmp(s, pat) != 0);
+                               return GDKstrcasecmp(s, pat) != 0;
                        else
-                               proj_scanloop(GDKstrcasecmp(s, pat) == 0);
+                               return GDKstrcasecmp(s, pat) == 0;
                } else {
                        if (anti)
-                               proj_scanloop(strcmp(s, pat) != 0);
+                               return strcmp(s, pat) != 0;
                        else
-                               proj_scanloop(strcmp(s, pat) == 0);
+                               return strcmp(s, pat) == 0;
                }
        } else {
-               /* Use re_match_ignore only if the pattern is UTF-8
-                * and we need to ignore case
-                */
                if (anti)
-                       proj_scanloop(!re_match(s, re));
+                       return !re_match(s, re);
                else
-                       proj_scanloop(re_match(s, re));
+                       return re_match(s, re);
        }
 }
 
@@ -1825,8 +1816,6 @@ PCRElikeselect(bat *ret, const bat *bid,
 #define pcre_join_loop(STRCMP, RE_MATCH, PCRE_COND)                            
                \
        do {                                                                    
                                                        \
                for (BUN ridx = 0; ridx < rci.ncand; ridx++) {                  
                \
-                       GDK_CHECK_TIMEOUT(qry_ctx, counter,                     
                                \
-                                                         
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
                        ro = canditer_next(&rci);                               
                                        \
                        vr = VALUE(r, ro - rbase);                              
                                        \
                        nl = 0;                                                 
                                                        \
@@ -1844,7 +1833,7 @@ PCRElikeselect(bat *ret, const bat *bid,
                                        pcrepat = NULL;                         
                                                \
                                }                                               
                                                                \
                                canditer_reset(&lci);                           
                                        \
-                               for (BUN lidx = 0; lidx < lci.ncand; lidx++) {  
                \
+                               TIMEOUT_LOOP_IDX_DECL(lidx, lci.ncand, qry_ctx) 
{               \
                                        lo = canditer_next(&lci);               
                                        \
                                        vl = VALUE(l, lo - lbase);              
                                        \
                                        if (strNil(vl)) {                       
                                                \
@@ -1899,6 +1888,8 @@ PCRElikeselect(bat *ret, const bat *bid,
                                }                                               
                                                                \
                                re_like_clean(&re);                             
                                                \
                                pcre_clean(&pcrere, &pcreex);                   
                                \
+                               TIMEOUT_CHECK(qry_ctx,                          
                                        \
+                                                         
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
                        }                                                       
                                                                \
                        if (r2) {                                               
                                                        \
                                if (nl > 1) {                                   
                                                \
@@ -1939,7 +1930,6 @@ pcrejoin(BAT *r1, BAT *r2, BAT *l, BAT *
 #endif
        lng t0 = 0;
 
-       size_t counter = 0;
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
        qry_ctx = qry_ctx ? qry_ctx : &(QryCtx) {.endtime = 0};
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to