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