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