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

Reply via email to