Changeset: 5fd64ed91177 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5fd64ed91177
Added Files:
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-algebra-join-not-in.Bug-6519.sql
        sql/test/BugTracker-2018/Tests/sqlitelogictest-count-not-in.Bug-6518.sql
Modified Files:
        gdk/Makefile.ag
        monetdb5/mal/mal_interpreter.c
        monetdb5/modules/mal/pcre.c
        sql/server/rel_exp.c
        sql/server/rel_rel.c
        sql/test/BugTracker-2018/Tests/All
Branch: default
Log Message:

Merge with Jul2017 branch.


diffs (truncated from 631 to 300 lines):

diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -51,6 +51,7 @@ headers_h = {
                gdk_atoms.h \
                gdk_bbp.h \
                gdk_calc.h \
+               gdk_cand.h \
                gdk_delta.h \
                gdk_posix.h \
                gdk_hash.h \
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -953,8 +953,7 @@ str runMALsequence(Client cntxt, MalBlkP
                                        for (j = 0; j < l->retc; j++)
                                                if (getArg(l, j) == 
exceptionVar)
                                                        break;
-                                               else if (getArgName(mb, l, j) ||
-                                                                
strcmp(getArgName(mb, l, j), "ANYexception") == 0)
+                                               else if (strcmp(getArgName(mb, 
l, j), "ANYexception") == 0)
                                                        break;
                                        if (j < l->retc)
                                                break;
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
@@ -27,10 +27,6 @@
 #ifdef HAVE_LIBPCRE
 #include <pcre.h>
 
-#if PCRE_MAJOR < 8 || (PCRE_MAJOR == 8 && PCRE_MINOR < 13)
-#define pcre_free_study my_pcre_free
-#endif
-
 #else
 
 #include <regex.h>
@@ -223,40 +219,12 @@ re_destroy( RE *p)
        }
 }
 
-#define m2p(p) (pcre*)(((size_t*)p)+1)
-#define p2m(p) (pcre*)(((size_t*)p)-1)
-
-#ifdef HAVE_LIBPCRE
-static void *
-my_pcre_malloc(size_t s)
-{
-       size_t *sz = (size_t *) GDKmalloc(s + sizeof(size_t));
-
-       if ( sz == NULL)
-               return NULL;
-       *sz = s + sizeof(size_t);
-       return (void *) (sz + 1);
-}
-
-static void
-my_pcre_free(void *blk)
-{
-       size_t *sz;
-
-       if (blk == NULL)
-               return;
-       sz = (size_t *) blk;
-       sz -= 1;
-       GDKfree(sz);
-}
-#endif
-
 static str
 pcre_compile_wrap(pcre **res, const char *pattern, bit insensitive)
 {
 #ifdef HAVE_LIBPCRE
        pcre *r;
-       const char err[BUFSIZ], *err_p = err;
+       const char *err_p = NULL;
        int errpos = 0;
        int options = PCRE_UTF8 | PCRE_MULTILINE;
        if (insensitive)
@@ -267,7 +235,7 @@ pcre_compile_wrap(pcre **res, const char
                        " with\n'%s'\nat %d in\n'%s'.\n",
                                err_p, errpos, pattern);
        }
-       *(pcre **) res = p2m(r);
+       *res = r;
        return MAL_SUCCEED;
 #else
        (void) res;
@@ -350,7 +318,7 @@ pcre_likeselect(BAT **bnp, BAT *b, BAT *
                          OPERATION_FAILED ": compilation of pattern \"%s\" 
failed\n", pat);
        pe = pcre_study(re, 0, &error);
        if (error != NULL) {
-               my_pcre_free(re);
+               pcre_free(re);
                pcre_free_study(pe);
                throw(MAL, "pcre.likeselect",
                          OPERATION_FAILED ": studying pattern \"%s\" 
failed\n", pat);
@@ -364,7 +332,7 @@ pcre_likeselect(BAT **bnp, BAT *b, BAT *
        bn = COLnew(0, TYPE_oid, s ? BATcount(s) : BATcount(b), TRANSIENT);
        if (bn == NULL) {
 #ifdef HAVE_LIBPCRE
-               my_pcre_free(re);
+               pcre_free(re);
                pcre_free_study(pe);
 #else
                regfree(&re);
@@ -414,7 +382,7 @@ pcre_likeselect(BAT **bnp, BAT *b, BAT *
                        scanloop(v && *v != '\200' && BODY);
        }
 #ifdef HAVE_LIBPCRE
-       my_pcre_free(re);
+       pcre_free(re);
        pcre_free_study(pe);
 #else
        regfree(&re);
@@ -432,7 +400,7 @@ pcre_likeselect(BAT **bnp, BAT *b, BAT *
   bunins_failed:
        BBPreclaim(bn);
 #ifdef HAVE_LIBPCRE
-       my_pcre_free(re);
+       pcre_free(re);
        pcre_free_study(pe);
 #else
        regfree(&re);
@@ -583,7 +551,7 @@ static str
 pcre_replace(str *res, const char *origin_str, const char *pattern, const char 
*replacement, const char *flags)
 {
 #ifdef HAVE_LIBPCRE
-       const char err[BUFSIZ], *err_p = err, *err_p2 = err;
+       const char *err_p = NULL;
        pcre *pcre_code = NULL;
        pcre_extra *extra;
        char *tmpres;
@@ -622,11 +590,11 @@ pcre_replace(str *res, const char *origi
         * worth spending more time analyzing it in order to speed up the time
         * taken for matching.
         */
-       extra = pcre_study(pcre_code, 0, &err_p2);
+       extra = pcre_study(pcre_code, 0, &err_p);
        pcre_fullinfo(pcre_code, extra, PCRE_INFO_CAPTURECOUNT, &i);
        ovecsize = (i + 1) * 3;
        if ((ovector = (int *) GDKmalloc(sizeof(int) * ovecsize)) == NULL) {
-               my_pcre_free(pcre_code);
+               pcre_free(pcre_code);
                throw(MAL, "pcre_replace", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        }
 
@@ -648,7 +616,7 @@ pcre_replace(str *res, const char *origi
        if (ncaptures > 0){
                tmpres = GDKmalloc(len_origin_str - len_del + (len_replacement 
* ncaptures) + 1);
                if (!tmpres) {
-                       my_pcre_free(pcre_code);
+                       pcre_free(pcre_code);
                        GDKfree(ovector);
                        throw(MAL, "pcre_replace", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                }
@@ -687,7 +655,7 @@ pcre_replace(str *res, const char *origi
                }
        }
 
-       my_pcre_free(pcre_code);
+       pcre_free(pcre_code);
        GDKfree(ovector);
        *res = tmpres;
        return MAL_SUCCEED;
@@ -706,7 +674,7 @@ pcre_replace_bat(BAT **res, BAT *origin_
 {
 #ifdef HAVE_LIBPCRE
        BATiter origin_strsi = bat_iterator(origin_strs);
-       const char err[BUFSIZ], *err_p = err, *err_p2 = err;
+       const char *err_p = NULL;
        int i, j, k, len, errpos = 0, offset = 0;
        int compile_options = PCRE_UTF8, exec_options = PCRE_NOTEMPTY;
        pcre *pcre_code = NULL;
@@ -745,17 +713,17 @@ pcre_replace_bat(BAT **res, BAT *origin_
        /* Since the compiled pattern is ging to be used several times, it is 
worth spending
         * more time analyzing it in order to speed up the time taken for 
matching.
         */
-       extra = pcre_study(pcre_code, 0, &err_p2);
+       extra = pcre_study(pcre_code, 0, &err_p);
        pcre_fullinfo(pcre_code, extra, PCRE_INFO_CAPTURECOUNT, &i);
        ovecsize = (i + 1) * 3;
        if ((ovector = (int *) GDKzalloc(sizeof(int) * ovecsize)) == NULL) {
-               my_pcre_free(pcre_code);
+               pcre_free(pcre_code);
                throw(MAL, "pcre_replace_bat", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        }
 
        tmpbat = COLnew(origin_strs->hseqbase, TYPE_str, BATcount(origin_strs), 
TRANSIENT);
        if( tmpbat==NULL) {
-               my_pcre_free(pcre_code);
+               pcre_free(pcre_code);
                GDKfree(ovector);
                throw(MAL,"pcre.replace", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        }
@@ -779,7 +747,7 @@ pcre_replace_bat(BAT **res, BAT *origin_
                if (ncaptures > 0){
                        replaced_str = GDKmalloc(len_origin_str - len_del + 
(len_replacement * ncaptures) + 1);
                        if (replaced_str == NULL) {
-                               my_pcre_free(pcre_code);
+                               pcre_free(pcre_code);
                                pcre_free_study(extra);
                                GDKfree(ovector);
                                BBPreclaim(tmpbat);
@@ -813,7 +781,7 @@ pcre_replace_bat(BAT **res, BAT *origin_
                        k += len;
                        replaced_str[k] = '\0';
                        if (BUNappend(tmpbat, replaced_str, FALSE) != 
GDK_SUCCEED) {
-                               my_pcre_free(pcre_code);
+                               pcre_free(pcre_code);
                                pcre_free_study(extra);
                                GDKfree(ovector);
                                GDKfree(replaced_str);
@@ -823,7 +791,7 @@ pcre_replace_bat(BAT **res, BAT *origin_
                        GDKfree(replaced_str);
                } else { /* no captured substrings, copy the original string 
into new bat */
                        if (BUNappend(tmpbat, origin_str, FALSE) != 
GDK_SUCCEED) {
-                               my_pcre_free(pcre_code);
+                               pcre_free(pcre_code);
                                pcre_free_study(extra);
                                GDKfree(ovector);
                                BBPreclaim(tmpbat);
@@ -833,7 +801,7 @@ pcre_replace_bat(BAT **res, BAT *origin_
        }
 
        pcre_free_study(extra);
-       my_pcre_free(pcre_code);
+       pcre_free(pcre_code);
        GDKfree(ovector);
        *res = tmpbat;
        return MAL_SUCCEED;
@@ -851,15 +819,6 @@ str
 pcre_init(void *ret)
 {
        (void) ret;
-#ifdef HAVE_LIBPCRE
-#if defined(HAVE_EMBEDDED) && defined(WIN32)
-       // TODO: what should we do here?
-#else
-       pcre_malloc = my_pcre_malloc;
-       pcre_free = my_pcre_free;
-#endif
-#else
-#endif
        return NULL;
 }
 
@@ -869,7 +828,7 @@ pcre_match_with_flags(bit *ret, const ch
        int i;
        int pos;
 #ifdef HAVE_LIBPCRE
-       const char err[BUFSIZ], *err_p = err;
+       const char *err_p = NULL;
        int errpos = 0;
        int options = PCRE_UTF8;
        pcre *re;
@@ -929,7 +888,7 @@ pcre_match_with_flags(bit *ret, const ch
        }
 #ifdef HAVE_LIBPCRE
        pos = pcre_exec(re, NULL, val, (int) strlen(val), 0, 0, NULL, 0);
-       my_pcre_free(re);
+       pcre_free(re);
 #else
        retval = regexec(&re, val, (size_t) 0, NULL, 0);
        pos = retval == REG_NOMATCH ? -1 : (retval == REG_ENOSYS ? -2 : 0);
@@ -1112,7 +1071,7 @@ PCREindex(int *res, const pcre *pattern,
        int v[2];
 
        v[0] = v[1] = *res = 0;
-       if (pcre_exec(m2p(pattern), NULL, *s, (int) strlen(*s), 0, 0, v, 2) >= 
0) {
+       if (pcre_exec(pattern, NULL, *s, (int) strlen(*s), 0, 0, v, 2) >= 0) {
                *res = v[1];
        }
        return MAL_SUCCEED;
@@ -1137,7 +1096,7 @@ PCREpatindex(int *ret, const str *pat, c
                return msg;
        GDKfree(ppat);
        msg = PCREindex(ret, re, val);
-       GDKfree(re);
+       pcre_free(re);
        return msg;
 }
 
@@ -1319,7 +1278,7 @@ BATPCRElike3(bat *ret, const bat *bid, c
                } else {
                        int pos;
 #ifdef HAVE_LIBPCRE
-                       const char err[BUFSIZ], *err_p = err;
+                       const char *err_p = NULL;
                        int errpos = 0;
                        int options = PCRE_UTF8 | PCRE_DOTALL;
                        pcre *re;
@@ -1385,7 +1344,7 @@ BATPCRElike3(bat *ret, const bat *bid, c
                                i++;
                        }
 #ifdef HAVE_LIBPCRE
-                       my_pcre_free(re);
+                       pcre_free(re);
 #else
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to