Changeset: 237391267472 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=237391267472
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/dotmonetdb.c
        clients/mapiclient/mclient.c
        clients/odbc/samples/arraytest.c
        clients/odbc/samples/odbcsample1.c
        clients/odbc/samples/testgetinfo.c
        common/stream/stream.c
        gdk/gdk_atoms.c
        gdk/gdk_bat.c
        gdk/gdk_bbp.c
        gdk/gdk_heap.c
        gdk/gdk_logger.c
        gdk/gdk_search.c
        gdk/gdk_storage.c
        geom/monetdb5/geom.c
        geom/monetdb5/geom_upgrade.c
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
        monetdb5/extras/rapi/rapi.c
        monetdb5/mal/mal_atom.c
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_exception.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_import.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_resolve.c
        monetdb5/mal/mal_runtime.c
        monetdb5/mal/mal_session.c
        monetdb5/mal/mal_type.c
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/blob.c
        monetdb5/modules/atoms/blob.h
        monetdb5/modules/atoms/color.c
        monetdb5/modules/atoms/identifier.c
        monetdb5/modules/atoms/inet.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/str.c
        monetdb5/modules/atoms/streams.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/atoms/uuid.c
        monetdb5/modules/atoms/xml.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/manifold.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/sysmon.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/tablet.h
        monetdb5/modules/mal/txtsim.c
        monetdb5/modules/mal/wlc.c
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_reorder.c
        monetdb5/optimizer/opt_support.c
        monetdb5/scheduler/run_adder.c
        sql/backends/monet5/UDF/pyapi/convert_loops.h
        sql/backends/monet5/UDF/pyapi/unicode.c
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statistics.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/bam/bam_export.c
        sql/backends/monet5/vaults/bam/bam_globals.h
        sql/backends/monet5/vaults/bam/bam_wrapper.c
        sql/backends/monet5/vaults/shp/shp.c
        sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
        sql/benchmarks/tpch/Tests/01-22.stable.out
        sql/common/sql_mem.c
        sql/common/sql_types.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_planner.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/storage/store.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/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out
        
sql/test/BugTracker-2017/Tests/wrong_aggregation_count.Bug-6257.stable.out
        sql/test/Dump/Tests/dump.stable.out
        sql/test/Tests/setoptimizer.stable.out
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/check.stable.out
        sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128
        sql/test/emptydb-upgrade/Tests/check.stable.out
        sql/test/emptydb-upgrade/Tests/check.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/check.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check2.stable.out.int128
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check3.stable.out.int128
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check4.stable.out.int128
        sql/test/leaks/Tests/check5.stable.out
        sql/test/leaks/Tests/check5.stable.out.int128
        sql/test/mapi/Tests/sql_int128.stable.out.int128
        sql/test/pg_regress/Tests/float8.stable.out
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/dump.stable.out.Windows
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/dump.stable.out.Windows
        sql/test/testdb/Tests/testdb-dump.stable.out.Windows
        sql/test/wlcr/Tests/wlr70.stable.err
        sql/test/wlcr/Tests/wlr70.stable.out
        tools/merovingian/client/monetdb.c
        tools/merovingian/daemon/controlrunner.c
        tools/merovingian/utils/glob.c
        tools/mserver/mserver5.c
Branch: mosaic
Log Message:

Merge with default


diffs (truncated from 5488 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
@@ -1834,8 +1834,8 @@ str SERVERstop(void *ret);
 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, 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);
+int SQLBLOBtostr(str *tostr, int *l, const blob *pin);
+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);
@@ -1932,8 +1932,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);
-void *TABLETadt_frStr(Column *c, int type, char *s, char *e, char quote);
-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);
@@ -2487,6 +2485,7 @@ int newTmpVariable(MalBlkPtr mb, malType
 int newTypeVariable(MalBlkPtr mb, malType type);
 int newVariable(MalBlkPtr mb, const char *name, size_t len, malType type);
 str nextRef;
+float nextafterf(float x, float y);
 str notRef;
 str not_ilikeRef;
 str not_likeRef;
@@ -2649,8 +2648,6 @@ str sortRef;
 str sortReverseRef;
 str soundex_impl(str *res, str *Name);
 str sqlRef;
-int sqlblob_fromstr(char *instr, int *l, blob **val);
-int sqlblob_tostr(str *tostr, int *l, const blob *p);
 str sqlcatalogRef;
 str startProfiler(void);
 str startRef;
diff --git a/clients/mapiclient/dotmonetdb.c b/clients/mapiclient/dotmonetdb.c
--- a/clients/mapiclient/dotmonetdb.c
+++ b/clients/mapiclient/dotmonetdb.c
@@ -97,8 +97,7 @@ parse_dotmonetdb(char **user, char **pas
                        } else if (strcmp(buf, "language") == 0) {
                                /* make sure we don't set garbage */
                                if (strcmp(q, "sql") != 0 &&
-                                   strcmp(q, "mal") != 0 &&
-                                   strcmp(q, "jaql") != 0) {
+                                   strcmp(q, "mal") != 0) {
                                        fprintf(stderr, "%s:%d: unsupported "
                                                "language: %s\n",
                                                cfile, line, q);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1158,7 +1158,10 @@ TESTrenderer(MapiHdl hdl)
                                   strcmp(tp, "dbl") == 0) {
                                char buf[32];
                                int j;
-                               double v = strtod(s, NULL);
+                               double v;
+                               if (strcmp(s, "-0") == 0) /* normalize -0 */
+                                       s = "0";
+                               v = strtod(s, NULL);
                                for (j = 4; j < 11; j++) {
                                        snprintf(buf, sizeof(buf), "%.*g", j, 
v);
                                        if (v == strtod(buf, NULL))
@@ -1168,10 +1171,13 @@ TESTrenderer(MapiHdl hdl)
                        } else if (strcmp(tp, "real") == 0) {
                                char buf[32];
                                int j;
+                               float v;
+                               if (strcmp(s, "-0") == 0) /* normalize -0 */
+                                       s = "0";
 #ifdef HAVE_STRTOF
-                               float v = strtof(s, NULL);
+                               v = strtof(s, NULL);
 #else
-                               float v = (float) strtod(s, NULL);
+                               v = (float) strtod(s, NULL);
 #endif
                                for (j = 4; j < 6; j++) {
                                        snprintf(buf, sizeof(buf), "%.*g", j, 
v);
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/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -2971,7 +2971,11 @@ file_rastream(FILE *fp, const char *name
                        s->isutf8 = 1;
                        return s;
                }
-               file_fsetpos(s, pos);
+               if (file_fsetpos(s, pos) < 0) {
+                       /* unlikely: we couldn't seek the file back */
+                       destroy(s);
+                       return NULL;
+               }
        }
 #ifdef _MSC_VER
        if (_fileno(fp) == 0 && _isatty(0)) {
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_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -289,7 +289,14 @@ BATattach(int tt, const char *heapfile, 
                while ((c = getc(f)) != EOF) {
                        if (n == m) {
                                m += 4096;
-                               p = GDKrealloc(p, m);
+                               s = GDKrealloc(p, m);
+                               if (s == NULL) {
+                                       GDKfree(p);
+                                       BBPreclaim(bn);
+                                       fclose(f);
+                                       return NULL;
+                               }
+                               p = s;
                                s = p + n;
                        }
                        if (c == '\n' && n > 0 && s[-1] == '\r') {
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_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -216,13 +216,13 @@ HEAPextend(Heap *h, size_t size, int may
                /* try GDKrealloc if the heap size stays within
                 * reasonable limits */
                if (!must_mmap) {
-                       void *p = h->base;
                        h->newstorage = h->storage = STORE_MEM;
                        h->base = GDKrealloc(h->base, size);
-                       HEAPDEBUG fprintf(stderr, "#HEAPextend: extending 
malloced heap " SZFMT " " SZFMT " " PTRFMT " " PTRFMT "\n", size, h->size, 
PTRFMTCAST p, PTRFMTCAST h->base);
+                       HEAPDEBUG fprintf(stderr, "#HEAPextend: extending 
malloced heap " SZFMT " " SZFMT " " PTRFMT " " PTRFMT "\n", size, h->size, 
PTRFMTCAST bak.base, PTRFMTCAST h->base);
                        h->size = size;
                        if (h->base)
                                return GDK_SUCCEED; /* success */
+                       /* bak.base is still valid and may get restored */
                        failure = "h->storage == STORE_MEM && !must_map && 
!h->base";
                }
                /* too big: convert it to a disk-based temporary heap */
@@ -631,7 +631,7 @@ HEAPload_intern(Heap *h, const char *nme
 {
        size_t minsize;
        int ret = 0;
-       char *srcpath, *dstpath;
+       char *srcpath, *dstpath, *tmp;
        int t0;
 
        h->storage = h->newstorage = h->size < 4 * GDK_mmap_pagesize ? 
STORE_MEM : STORE_MMAP;
@@ -678,7 +678,14 @@ HEAPload_intern(Heap *h, const char *nme
         * takes precedence. */
        srcpath = GDKfilepath(h->farmid, BATDIR, nme, ext);
        dstpath = GDKfilepath(h->farmid, BATDIR, nme, ext);
-       srcpath = GDKrealloc(srcpath, strlen(srcpath) + strlen(suffix) + 1);
+       if (srcpath == NULL ||
+           dstpath == NULL ||
+           (tmp = GDKrealloc(srcpath, strlen(srcpath) + strlen(suffix) + 1)) 
== NULL) {
+               GDKfree(srcpath);
+               GDKfree(dstpath);
+               return GDK_FAIL;
+       }
+       srcpath = tmp;
        strcat(srcpath, suffix);
 
        t0 = GDKms();
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);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to