Changeset: 50ae2d43314b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=50ae2d43314b
Modified Files:
clients/Tests/exports.stable.out
clients/odbc/samples/arraytest.c
clients/odbc/samples/odbcsample1.c
clients/odbc/samples/testgetinfo.c
gdk/gdk_atoms.c
gdk/gdk_bbp.c
gdk/gdk_search.c
gdk/gdk_storage.c
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
monetdb5/mal/mal_atom.c
monetdb5/mal/mal_function.c
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/atoms/inet.c
monetdb5/modules/atoms/str.c
monetdb5/modules/mal/manifold.c
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tablet.h
monetdb5/modules/mal/wlc.c
sql/backends/monet5/UDF/pyapi/unicode.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statistics.c
sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
sql/benchmarks/tpch/Tests/01-22.stable.out
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_planner.c
sql/server/rel_rel.c
sql/server/rel_select.c
sql/test/BugTracker-2015/Tests/sys_tracelog.Bug-3887.stable.err
sql/test/BugTracker-2015/Tests/sys_tracelog.Bug-3887.stable.out
sql/test/BugTracker-2017/Tests/All
sql/test/mapi/Tests/sql_int128.stable.out.int128
tools/merovingian/client/monetdb.c
tools/merovingian/utils/glob.c
Branch: malparsing
Log Message:
Merge with default
diffs (truncated from 906 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1704,7 +1704,7 @@ str SERVERsuspend(void *ret);
str SERVERtrace(void *ret, int *mid, int *flag);
int SQLBLOBfromstr(char *instr, int *l, blob **val);
int SQLBLOBtostr(str *tostr, int *l, const blob *pin);
-BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, char
*csep, char *rsep, char quote, lng skip, lng maxrow, int best);
+BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best);
str STRBytes(int *res, const str *arg1);
str STRConcat(str *res, const str *val1, const str *val2);
str STRFromWChr(str *res, const int *at);
@@ -1801,7 +1801,6 @@ str SYSmem_usage(bat *ret, bat *ret2, co
str SYSsetmem_maxsize(void *ret, const lng *num);
str SYSsetvm_maxsize(void *ret, const lng *num);
str SYSvm_usage(bat *ret, bat *ret2, const lng *minsize);
-int TABLETadt_toStr(void *extra, char **buf, int *len, int type, ptr a);
str TABLETcollect(BAT **bats, Tablet *as);
str TABLETcollect_parts(BAT **bats, Tablet *as, BUN offset);
str TABLETcreate_bats(Tablet *as, BUN est);
diff --git a/clients/odbc/samples/arraytest.c b/clients/odbc/samples/arraytest.c
--- a/clients/odbc/samples/arraytest.c
+++ b/clients/odbc/samples/arraytest.c
@@ -36,6 +36,7 @@ prerr(SQLSMALLINT tpe, SQLHANDLE hnd, co
case SQL_SUCCESS_WITH_INFO:
if (msglen >= (signed int) sizeof msg)
fprintf(stderr, "(message truncated)\n");
+ /* fall through */
case SQL_SUCCESS:
fprintf(stderr,
"%s: %s: SQLstate %s, Errnr %d, Message %s\n",
diff --git a/clients/odbc/samples/odbcsample1.c
b/clients/odbc/samples/odbcsample1.c
--- a/clients/odbc/samples/odbcsample1.c
+++ b/clients/odbc/samples/odbcsample1.c
@@ -34,6 +34,7 @@ prerr(SQLSMALLINT tpe, SQLHANDLE hnd, co
case SQL_SUCCESS_WITH_INFO:
if (msglen >= (signed int) sizeof(msg))
fprintf(stderr, "(message truncated)\n");
+ /* fall through */
case SQL_SUCCESS:
fprintf(stderr, "%s: %s: SQLstate %s, Errnr %d, Message %s\n",
func, pref, (char*)state, (int)errnr, (char*)msg);
break;
diff --git a/clients/odbc/samples/testgetinfo.c
b/clients/odbc/samples/testgetinfo.c
--- a/clients/odbc/samples/testgetinfo.c
+++ b/clients/odbc/samples/testgetinfo.c
@@ -31,6 +31,7 @@ prerr(SQLSMALLINT tpe, SQLHANDLE hnd, co
case SQL_SUCCESS_WITH_INFO:
if (msglen >= (signed int) sizeof(msg))
fprintf(stderr, "(message truncated)\n");
+ /* fall through */
case SQL_SUCCESS:
fprintf(stderr, "%s: %s: SQLstate %s, Errnr %d, Message %s\n",
func, pref, (char*)state, (int)errnr, (char*)msg);
break;
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -165,20 +165,25 @@ ATOMallocate(const char *id)
{
int t;
+ if (strlen(id) >= IDLENGTH) {
+ GDKerror("ATOMallocate: name too long");
+ return int_nil;
+ }
+
MT_lock_set(&GDKthreadLock);
t = ATOMindex(id);
-
if (t < 0) {
t = -t;
if (t == GDKatomcnt) {
+ if (GDKatomcnt == MAXATOMS) {
+ MT_lock_unset(&GDKthreadLock);
+ GDKerror("ATOMallocate: too many types");
+ return int_nil;
+ }
GDKatomcnt++;
}
- if (GDKatomcnt == MAXATOMS)
- GDKfatal("ATOMallocate: too many types");
- if (strlen(id) >= IDLENGTH)
- GDKfatal("ATOMallocate: name too long");
memset(BATatoms + t, 0, sizeof(atomDesc));
- snprintf(BATatoms[t].name, sizeof(BATatoms[t].name), "%s", id);
+ strcpy(BATatoms[t].name, id);
BATatoms[t].size = sizeof(int); /* default */
BATatoms[t].align = sizeof(int); /* default */
BATatoms[t].linear = 1; /* default */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -284,7 +284,7 @@ BBPunlock(void)
}
-static void
+static gdk_return
BBPinithash(int j)
{
bat i = (bat) ATOMIC_GET(BBPsize, BBPsizeLock);
@@ -293,8 +293,10 @@ BBPinithash(int j)
for (BBP_mask = 1; (BBP_mask << 1) <= BBPlimit; BBP_mask <<= 1)
;
BBP_hash = (bat *) GDKzalloc(BBP_mask * sizeof(bat));
- if (BBP_hash == NULL)
- GDKfatal("BBPinithash: cannot allocate memory\n");
+ if (BBP_hash == NULL) {
+ GDKerror("BBPinithash: cannot allocate memory\n");
+ return GDK_FAIL;
+ }
BBP_mask--;
while (--i > 0) {
@@ -311,6 +313,7 @@ BBPinithash(int j)
j = 0;
}
}
+ return GDK_SUCCEED;
}
int
@@ -360,7 +363,8 @@ BBPextend(int idx, int buildhash)
BBP_hash = NULL;
for (i = 0; i <= BBP_THREADMASK; i++)
BBP_free(i) = 0;
- BBPinithash(idx);
+ if (BBPinithash(idx) != GDK_SUCCEED)
+ return GDK_FAIL;
}
return GDK_SUCCEED;
}
@@ -1402,7 +1406,8 @@ BBPinit(void)
BBPreadEntries(fp, bbpversion);
fclose(fp);
- BBPinithash(0);
+ if (BBPinithash(0) != GDK_SUCCEED)
+ GDKfatal("BBPinit: BBPinithash failed");
/* will call BBPrecover if needed */
if (BBPprepare(FALSE) != GDK_SUCCEED)
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -798,6 +798,7 @@ BATload_intern(bat bid, int lock)
/* LOAD bun heap */
if (b->ttype != TYPE_void) {
if (HEAPload(&b->theap, nme, "tail", b->batRestricted ==
BAT_READ) != GDK_SUCCEED) {
+ HEAPfree(&b->theap, 0);
return NULL;
}
assert(b->theap.size >> b->tshift <= BUN_MAX);
@@ -810,6 +811,7 @@ BATload_intern(bat bid, int lock)
if (ATOMvarsized(b->ttype)) {
if (HEAPload(b->tvheap, nme, "theap", b->batRestricted ==
BAT_READ) != GDK_SUCCEED) {
HEAPfree(&b->theap, 0);
+ HEAPfree(b->tvheap, 0);
return NULL;
}
if (ATOMstorage(b->ttype) == TYPE_str) {
diff --git
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
---
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
+++
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
@@ -55,22 +55,22 @@ Ready.
% .L1 # table_name
% def # name
% clob # type
-% 538 # length
-[
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.jit();optimizer.garbageCollector();"
]
+% 503 # length
+[
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.garbageCollector();"
]
#explain copy into ttt from 'a:\tmp/xyz';
% .explain # table_name
% mal # name
% clob # type
-% 149 # length
+% 161 # length
function user.s10_1():void;
- X_0:void := querylog.define("explain copy into ttt from
\\'a:\\\\tmp/xyz\\';","sequential_pipe",4:int);
- X_3 := sql.mvc();
- (X_24:bat[:int],X_25:bat[:int],X_26:bat[:int]) :=
sql.copy_from(nil:ptr,"|","\\n",nil:str,"null","a:\\tmp/xyz",-1:lng,0:lng,0:int,0:int,nil:str);
- X_28 := sql.append(X_3,"sys","ttt","a",X_24);
- X_33 := sql.append(X_28,"sys","ttt","b",X_25);
- X_36 := sql.append(X_33,"sys","ttt","c",X_26);
- X_38 := aggr.count(X_26);
- sql.affectedRows(X_36,X_38);
+ X_1:void := querylog.define("explain copy into ttt from
\\'a:\\\\tmp/xyz\\';", "sequential_pipe", 21:int);
+ X_4 := sql.mvc();
+ (X_25:bat[:int], X_26:bat[:int], X_27:bat[:int]) := sql.copy_from(nil:ptr,
"|", "\\n", nil:str, "null", "a:\\tmp/xyz", -1:lng, 0:lng, 0:int, 0:int,
nil:str);
+ X_29 := sql.append(X_4, "sys", "ttt", "a", X_25);
+ X_34 := sql.append(X_29, "sys", "ttt", "b", X_26);
+ X_37 := sql.append(X_34, "sys", "ttt", "c", X_27);
+ X_39 := aggr.count(X_27);
+ sql.affectedRows(X_37, X_39);
end user.s10_1;
#inline actions= 0 time=1 usec
#remap actions= 0 time=5 usec
@@ -109,22 +109,22 @@ end user.s10_1;
% .L1 # table_name
% def # name
% clob # type
-% 561 # length
-[
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.jit();optimizer.sql_append();optimizer.garbageCollector();"
]
+% 526 # length
+[
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.reorder();optimizer.deadcode();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.sql_append();optimizer.garbageCollector();"
]
#explain copy into ttt from 'Z:/tmp/xyz';
% .explain # table_name
% mal # name
% clob # type
-% 148 # length
+% 160 # length
function user.s26_1():void;
- X_0:void := querylog.define("explain copy into ttt from
\\'Z:/tmp/xyz\\';","user_1",4:int);
- X_3 := sql.mvc();
- (X_24:bat[:int],X_25:bat[:int],X_26:bat[:int]) :=
sql.copy_from(nil:ptr,"|","\\n",nil:str,"null","Z:/tmp/xyz",-1:lng,0:lng,0:int,0:int,nil:str);
- X_28 := sql.append(X_3,"sys","ttt","a",X_24);
- X_33 := sql.append(X_28,"sys","ttt","b",X_25);
- X_38 := aggr.count(X_26);
- X_36 := sql.append(X_33,"sys","ttt","c",X_26);
- sql.affectedRows(X_36,X_38);
+ X_1:void := querylog.define("explain copy into ttt from
\\'Z:/tmp/xyz\\';", "user_1", 21:int);
+ X_4 := sql.mvc();
+ (X_25:bat[:int], X_26:bat[:int], X_27:bat[:int]) := sql.copy_from(nil:ptr,
"|", "\\n", nil:str, "null", "Z:/tmp/xyz", -1:lng, 0:lng, 0:int, 0:int,
nil:str);
+ X_29 := sql.append(X_4, "sys", "ttt", "a", X_25);
+ X_34 := sql.append(X_29, "sys", "ttt", "b", X_26);
+ X_39 := aggr.count(X_27);
+ X_37 := sql.append(X_34, "sys", "ttt", "c", X_27);
+ sql.affectedRows(X_37, X_39);
end user.s26_1;
#inline actions= 0 time=1 usec
#remap actions= 0 time=4 usec
diff --git a/monetdb5/mal/mal_atom.c b/monetdb5/mal/mal_atom.c
--- a/monetdb5/mal/mal_atom.c
+++ b/monetdb5/mal/mal_atom.c
@@ -182,6 +182,8 @@ malAtomDefinition(str name, int tpe)
throw(TYPE, "atomDefinition", "Atom name too long '%s'", name);
i = ATOMallocate(name);
+ if (i == int_nil)
+ throw(TYPE,"atomDefinition", MAL_MALLOC_FAIL);
/* overload atom ? */
if (tpe) {
BATatoms[i] = BATatoms[tpe];
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -168,6 +168,7 @@ chkFlow(MalBlkPtr mb)
}
yieldseen= TRUE;
}
+ /* fall through */
case RETURNsymbol:
{
InstrPtr ps = getInstrPtr(mb, 0);
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -712,6 +712,8 @@ static void
CLEANUPprofile(TRACE_id_event);
CLEANUPprofile(TRACE_id_time);
CLEANUPprofile(TRACE_id_pc);
+ CLEANUPprofile(TRACE_id_thread);
+ CLEANUPprofile(TRACE_id_ticks);
CLEANUPprofile(TRACE_id_rssMB);
CLEANUPprofile(TRACE_id_tmpspace);
CLEANUPprofile(TRACE_id_inblock);
@@ -719,7 +721,6 @@ static void
CLEANUPprofile(TRACE_id_minflt);
CLEANUPprofile(TRACE_id_majflt);
CLEANUPprofile(TRACE_id_nvcsw);
- CLEANUPprofile(TRACE_id_thread);
CLEANUPprofile(TRACE_id_stmt);
TRACE_init = 0;
}
diff --git a/monetdb5/modules/atoms/inet.c b/monetdb5/modules/atoms/inet.c
--- a/monetdb5/modules/atoms/inet.c
+++ b/monetdb5/modules/atoms/inet.c
@@ -170,8 +170,10 @@ INETfromString(const char *src, int *len
switch (type) {
case 1:
(*retval)->q2 = (unsigned char)
0;
+ /* fall through */
case 2:
(*retval)->q3 = (unsigned char)
0;
+ /* fall through */
case 3:
(*retval)->q4 = (unsigned char)
0;
break;
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -2340,30 +2340,39 @@ STRSubstitute(str *res, const str *arg1,
int repeat = *g;
size_t lsrc = src ? strlen(src) : 0;
size_t ldst = dst ? strlen(dst) : 0;
- size_t l = s ? strLen(s) : 0;
- size_t n = l + ldst;
- str buf, fnd, end;
+ size_t l = strLen(s);
+ size_t n;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list