Changeset: c2d7ddd2809c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c2d7ddd2809c
Added Files:
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6552.stable.err
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6552.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-having-not-in.Bug-6553.stable.err
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-having-not-in.Bug-6553.stable.out
Modified Files:
clients/mapiclient/dump.c
configure.ag
gdk/gdk.h
gdk/gdk_bbp.c
gdk/gdk_heap.c
gdk/gdk_logger.c
gdk/gdk_private.h
gdk/gdk_system.c
gdk/gdk_utils.c
geom/monetdb5/geom.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/atoms/url.c
monetdb5/modules/mal/tablet.c
sql/backends/monet5/UDF/pyapi/emit.c
sql/backends/monet5/UDF/pyapi/pyapi.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/vaults/shp/shp.c
sql/backends/monet5/vaults/vault.c
sql/server/rel_select.c
sql/server/sql_scan.c
tools/mserver/mserver5.c
Branch: default
Log Message:
Merge with Mar2018 branch.
diffs (truncated from 756 to 300 lines):
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -38,7 +38,7 @@ quoted_print(stream *f, const char *s, b
break;
default:
if ((0 < *s && *s < 32) || *s == '\177')
- mnstr_printf(f, "\\%03o", *s & 0377);
+ mnstr_printf(f, "\\%03o", (uint8_t) *s);
else
mnstr_write(f, s, 1, 1);
break;
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -590,10 +590,13 @@ AS_VAR_IF([enable_strict], [yes], [
MCHECK_ADD_FLAG([-Werror-implicit-function-declaration])
MCHECK_ADD_FLAG([-Wpointer-arith])
-dnl MCHECK_ADD_FLAG([-Wdeclaration-after-statement])
MCHECK_ADD_FLAG([-Wundef])
MCHECK_ADD_FLAG([-Wformat=2])
+ MCHECK_ADD_FLAG([-Wformat-overflow=1])
+ MCHECK_ADD_FLAG([-Wno-format-truncation])
MCHECK_ADD_FLAG([-Wno-format-nonliteral])
+dnl MCHECK_ADD_FLAG([-Wformat-signedness]) -- numpy messes this up
+ MCHECK_ADD_FLAG([-Wno-cast-function-type])
MCHECK_ADD_FLAG([-Winit-self])
MCHECK_ADD_FLAG([-Winvalid-pch])
MCHECK_ADD_FLAG([-Wmissing-declarations])
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -797,15 +797,15 @@ typedef struct {
/* assert that atom width is power of 2, i.e., width == 1<<shift */
#define assert_shift_width(shift,width) assert(((shift) == 0 && (width) == 0)
|| ((unsigned)1<<(shift)) == (unsigned)(width))
-#define GDKLIBRARY_SORTEDPOS 061030 /* version where we can't trust
no(rev)sorted */
-#define GDKLIBRARY_OLDWKB 061031 /* old geom WKB format */
-#define GDKLIBRARY_INSERTED 061032 /* inserted and deleted in BBP.dir */
-#define GDKLIBRARY_HEADED 061033 /* head properties are stored */
-#define GDKLIBRARY_NOKEY 061034 /* nokey values can't be trusted */
-#define GDKLIBRARY_BADEMPTY 061035 /* possibility of duplicate empty str */
-#define GDKLIBRARY_TALIGN 061036 /* talign field in BBP.dir */
-#define GDKLIBRARY_NIL_NAN 061037 /* flt/dbl NIL not represented by NaN */
-#define GDKLIBRARY 061040
+#define GDKLIBRARY_SORTEDPOS 061030U /* version where we can't trust
no(rev)sorted */
+#define GDKLIBRARY_OLDWKB 061031U /* old geom WKB format */
+#define GDKLIBRARY_INSERTED 061032U /* inserted and deleted in BBP.dir */
+#define GDKLIBRARY_HEADED 061033U /* head properties are stored */
+#define GDKLIBRARY_NOKEY 061034U /* nokey values can't be trusted */
+#define GDKLIBRARY_BADEMPTY 061035U /* possibility of duplicate empty str */
+#define GDKLIBRARY_TALIGN 061036U /* talign field in BBP.dir */
+#define GDKLIBRARY_NIL_NAN 061037U /* flt/dbl NIL not represented by NaN */
+#define GDKLIBRARY 061040U
typedef struct BAT {
/* static bat properties */
@@ -2037,7 +2037,8 @@ gdk_export str GDKstrndup(const char *s,
fprintf(stderr, \
"#GDKmmap(%s,0x%x,%zu) -> %p" \
" %s[%s:%d]\n", \
- _path ? _path : "NULL", _mode, _len, \
+ _path ? _path : "NULL", \
+ (unsigned) _mode, _len, \
_res, \
__func__, __FILE__, __LINE__); \
_res; \
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1114,7 +1114,7 @@ headheapinit(oid *hseq, const char *buf,
}
static int
-heapinit(BAT *b, const char *buf, int *hashash, const char *HT, int
bbpversion, bat bid, const char *filename)
+heapinit(BAT *b, const char *buf, int *hashash, const char *HT, unsigned
bbpversion, bat bid, const char *filename)
{
int t;
char type[11];
@@ -1241,7 +1241,7 @@ vheapinit(BAT *b, const char *buf, int h
}
static void
-BBPreadEntries(FILE *fp, int bbpversion)
+BBPreadEntries(FILE *fp, unsigned bbpversion)
{
bat bid = 0;
char buf[4096];
@@ -1369,7 +1369,7 @@ BBPreadEntries(FILE *fp, int bbpversion)
BBP_desc(bid) = bn;
BBP_status(bid) = BBPEXISTING; /* do we need other status
bits? */
if ((s = strchr(headname, '~')) != NULL && s == headname) {
- snprintf(logical, sizeof(logical), "tmp_%o", (int) bid);
+ snprintf(logical, sizeof(logical), "tmp_%o", (unsigned)
bid);
} else {
if (s)
*s = 0;
@@ -1399,17 +1399,18 @@ BBPreadEntries(FILE *fp, int bbpversion)
#define SIZEOF_MAX_INT SIZEOF_LNG
#endif
-static int
+static unsigned
BBPheader(FILE *fp)
{
char buf[BUFSIZ];
- int sz, bbpversion, ptrsize, oidsize, intsize;
+ int sz, ptrsize, oidsize, intsize;
+ unsigned bbpversion;
char *s;
if (fgets(buf, sizeof(buf), fp) == NULL) {
GDKfatal("BBPinit: BBP.dir is empty");
}
- if (sscanf(buf, "BBP.dir, GDKversion %d\n", &bbpversion) != 1) {
+ if (sscanf(buf, "BBP.dir, GDKversion %u\n", &bbpversion) != 1) {
GDKerror("BBPinit: old BBP without version number");
GDKerror("dump the database using a compatible version,");
GDKerror("then restore into new database using this
version.\n");
@@ -1535,7 +1536,7 @@ BBPinit(void)
{
FILE *fp = NULL;
struct stat st;
- int bbpversion;
+ unsigned bbpversion;
str bbpdirstr = GDKfilepath(0, BATDIR, "BBP", "dir");
str backupbbpdirstr = GDKfilepath(0, BAKDIR, "BBP", "dir");
int i;
@@ -1803,7 +1804,7 @@ new_bbpentry(FILE *fp, bat i, const char
static gdk_return
BBPdir_header(FILE *f, int n)
{
- if (fprintf(f, "BBP.dir, GDKversion %d\n%d %d %d\nBBPsize=%d\n",
+ if (fprintf(f, "BBP.dir, GDKversion %u\n%d %d %d\nBBPsize=%d\n",
GDKLIBRARY, SIZEOF_SIZE_T, SIZEOF_OID,
#ifdef HAVE_HGE
havehge ? SIZEOF_HGE :
@@ -2303,7 +2304,7 @@ BBPinsert(BAT *bn)
#endif
if (*BBP_bak(i) == 0)
- snprintf(BBP_bak(i), sizeof(BBP_bak(i)), "tmp_%o", (int) i);
+ snprintf(BBP_bak(i), sizeof(BBP_bak(i)), "tmp_%o", (unsigned)
i);
BBP_logical(i) = BBP_bak(i);
/* Keep the physical location around forever */
@@ -2312,10 +2313,10 @@ BBPinsert(BAT *bn)
if (*dirname) /* i.e., i >= 0100 */
snprintf(BBP_physical(i), sizeof(BBP_physical(i)),
- "%s%c%o", dirname, DIR_SEP, i);
+ "%s%c%o", dirname, DIR_SEP, (unsigned) i);
else
snprintf(BBP_physical(i), sizeof(BBP_physical(i)),
- "%o", i);
+ "%o", (unsigned) i);
BATDEBUG fprintf(stderr, "#%d = new %s(%s)\n", (int) i,
BBPname(i), ATOMname(bn->ttype));
}
@@ -3431,7 +3432,7 @@ BBPsync(int cnt, bat *subcommit)
} else if (subcommit && (b = BBP_desc(i)) &&
BBP_status(i) & BBPDELETED) {
char o[10];
char *f;
- snprintf(o, sizeof(o), "%o", b->batCacheid);
+ snprintf(o, sizeof(o), "%o", (unsigned)
b->batCacheid);
f = GDKfilepath(b->theap.farmid, BAKDIR, o,
"tail");
if (access(f, F_OK) == 0)
file_move(b->theap.farmid, BAKDIR,
SUBDIR, o, "tail");
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -132,7 +132,7 @@ HEAPalloc(Heap *h, size_t nitems, size_t
char of[sizeof(h->filename)];
char *ext;
close(fd);
- strncpy(of, h->filename, sizeof(h->filename));
+ strncpy(of, h->filename, sizeof(of));
#ifdef STATIC_CODE_ANALYSIS
/* help coverity */
of[sizeof(h->filename) - 1] = 0;
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1306,7 +1306,7 @@ logger_switch_bat(BAT *old, BAT *new, co
GDKerror("Logger_new: cannot convert old %s to transient",
name);
return GDK_FAIL;
}
- snprintf(bak, sizeof(bak), "tmp_%o", old->batCacheid);
+ snprintf(bak, sizeof(bak), "tmp_%o", (unsigned) old->batCacheid);
if (BBPrename(old->batCacheid, bak) != 0) {
return GDK_FAIL;
}
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -323,7 +323,7 @@ extern MT_Lock MT_system_lock;
gdk_return _res = GDKmunmap(_ptr, _len); \
ALLOCDEBUG \
fprintf(stderr, \
- "#GDKmunmap(%p,%zu) -> %d" \
+ "#GDKmunmap(%p,%zu) -> %u" \
" %s[%s:%d]\n", \
_ptr, _len, _res, \
__func__, __FILE__, __LINE__); \
@@ -342,7 +342,7 @@ extern MT_Lock MT_system_lock;
fprintf(stderr, \
"#GDKmremap(%s,0x%x,%p,%zu,%zu > %zu) -> %p" \
" %s[%s:%d]\n", \
- _path ? _path : "NULL", _mode, \
+ _path ? _path : "NULL", (unsigned) _mode, \
_oa, _os, _ons, *_ns, \
_res, \
__func__, __FILE__, __LINE__); \
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -467,7 +467,7 @@ rm_posthread_locked(struct posthread *p)
*pp = p->next;
}
-static void
+static void *
thread_starter(void *arg)
{
struct posthread *p = (struct posthread *) arg;
@@ -480,6 +480,19 @@ thread_starter(void *arg)
if ((p = find_posthread_locked(tid)) != NULL)
p->exited = 1;
pthread_mutex_unlock(&posthread_lock);
+ return NULL;
+}
+
+static void *
+thread_starter_simple(void *arg)
+{
+ struct posthread *p = (struct posthread *) arg;
+ void (*pfunc)(void *) = p->func;
+ void *parg = p->arg;
+
+ free(p);
+ (*pfunc)(parg);
+ return NULL;
}
static void
@@ -537,6 +550,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
pthread_t newt, *newtp;
int ret;
struct posthread *p = NULL;
+ void *(*pf) (void *);
join_threads();
#ifdef HAVE_PTHREAD_SIGMASK
@@ -553,39 +567,39 @@ MT_create_thread(MT_Id *t, void (*f) (vo
pthread_attr_destroy(&attr);
return -1;
}
- if (d == MT_THR_DETACHED) {
- p = malloc(sizeof(struct posthread));
- if (p == NULL) {
+ p = malloc(sizeof(struct posthread));
+ if (p == NULL) {
#ifdef HAVE_PTHREAD_SIGMASK
- MT_thread_sigmask(&orig_mask, NULL);
+ MT_thread_sigmask(&orig_mask, NULL);
#endif
- pthread_attr_destroy(&attr);
- return -1;
- }
- p->func = f;
- p->arg = arg;
- p->exited = 0;
- f = thread_starter;
- arg = p;
+ pthread_attr_destroy(&attr);
+ return -1;
+ }
+ p->func = f;
+ p->arg = arg;
+ p->exited = 0;
+ if (d == MT_THR_DETACHED) {
+ pf = thread_starter;
newtp = &p->tid;
} else {
+ pf = thread_starter_simple;
newtp = &newt;
assert(d == MT_THR_JOINABLE);
}
- ret = pthread_create(newtp, &attr, (void *(*)(void *)) f, arg);
+ ret = pthread_create(newtp, &attr, pf, p);
if (ret == 0) {
#ifdef PTW32
*t = (MT_Id) (((size_t) newtp->p) + 1); /* use pthread-id + 1 */
#else
*t = (MT_Id) (((size_t) *newtp) + 1); /* use pthread-id + 1 */
#endif
- if (p) {
+ if (d == MT_THR_DETACHED) {
pthread_mutex_lock(&posthread_lock);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list