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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list