Changeset: 794e7c822537 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=794e7c822537
Added Files:
sql/test/BugTracker-2016/Tests/simpletest.stable.err
sql/test/BugTracker-2016/Tests/simpletest.stable.out
Modified Files:
configure.ag
gdk/gdk_firstn.c
gdk/gdk_group.c
gdk/gdk_logger.c
gdk/gdk_posix.c
gdk/gdk_private.h
gdk/gdk_project.c
gdk/gdk_system.c
gdk/gdk_system.h
gdk/gdk_system_private.h
gdk/gdk_utils.c
gdk/gdk_value.c
java/ChangeLog
java/src/main/java/nl/cwi/monetdb/client/JdbcClient.java
java/src/main/java/nl/cwi/monetdb/util/CmdLineOpts.java
java/src/main/java/nl/cwi/monetdb/util/OptionsException.java
java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_function.c
monetdb5/mal/mal_import.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_resolve.c
monetdb5/mal/mal_session.c
monetdb5/mal/mal_stack.h
monetdb5/modules/atoms/blob.c
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/streams.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/mal/inspect.c
monetdb5/modules/mal/mal_mapi.c
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tokenizer.c
monetdb5/optimizer/opt_pipes.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_scenario.c
sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
sql/server/rel_optimizer.c
sql/server/rel_select.c
sql/test/BugTracker-2016/Tests/like_in_non_sys_schema.Bug-4062.stable.err
sql/test/BugTracker-2016/Tests/like_in_non_sys_schema.Bug-4062.stable.out
sql/test/BugTracker-2016/Tests/simpletest.sql
Branch: HTM
Log Message:
Merge with default
diffs (truncated from 1928 to 300 lines):
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -1147,6 +1147,13 @@ AS_VAR_IF([have_perl], [no],
PERL_LIBDIR=`"$PERL" -MConfig -e
'$x=$Config{installvendorarch}; $x =~ s|$Config{vendorprefix}/||; print $x;'
2>/dev/null`
# On Darwin this starts with a slash, remove it
PERL_LIBDIR="${PERL_LIBDIR@%:@/}"
+ AS_VAR_IF([PERL_LIBDIR], [], [
+ # if empty (e.g. on FreeBSD) try something else
+ PERL_LIBDIR=`"$PERL" -MConfig -e
'$x=$Config{sitelib}; $x =~ s|$Config{prefix}/||; print $x;' 2>/dev/null`
+ AS_VAR_IF([PERL_LIBDIR], [], [
+ # if still empty, give up
+ have_perl=no
+ why_have_perl='(cannot
determine location for files)'])])
],
[no], [],
[
diff --git a/gdk/gdk_firstn.c b/gdk/gdk_firstn.c
--- a/gdk/gdk_firstn.c
+++ b/gdk/gdk_firstn.c
@@ -656,6 +656,8 @@ BATfirstn_grouped(BAT **topn, BAT **gids
* can use the base type */
tpe = ATOMbasetype(tpe); /* takes care of oid */
groups = GDKmalloc(sizeof(*groups) * n);
+ if( groups == NULL)
+ return GDK_FAIL;
oldcand = cand;
if (asc) {
switch (tpe) {
@@ -960,6 +962,8 @@ BATfirstn_grouped_with_groups(BAT **topn
* can use the base type */
tpe = ATOMbasetype(tpe); /* takes care of oid */
groups = GDKmalloc(sizeof(*groups) * n);
+ if( groups == NULL)
+ return GDK_FAIL;
gv = (const oid *) Tloc(g, 0);
oldcand = cand;
if (asc) {
diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c
--- a/gdk/gdk_group.c
+++ b/gdk/gdk_group.c
@@ -711,6 +711,9 @@ BATgroup_internal(BAT **groups, BAT **ex
unsigned char *restrict bgrps = GDKmalloc(256);
const unsigned char *restrict w = (const unsigned char *)
Tloc(b, 0);
unsigned char v;
+
+ if( bgrps == NULL)
+ goto error;
memset(bgrps, 0xFF, 256);
if (histo)
memset(cnts, 0, maxgrps * sizeof(lng));
@@ -737,6 +740,9 @@ BATgroup_internal(BAT **groups, BAT **ex
unsigned short *restrict sgrps = GDKmalloc(65536 *
sizeof(short));
const unsigned short *restrict w = (const unsigned short *)
Tloc(b, 0);
unsigned short v;
+
+ if( sgrps == NULL)
+ goto error;
memset(sgrps, 0xFF, 65536 * sizeof(short));
if (histo)
memset(cnts, 0, maxgrps * sizeof(lng));
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1227,6 +1227,9 @@ bm_subcommit(logger *lg, BAT *list_bid,
BATiter iter = (list_nme)?bat_iterator(list_nme):bat_iterator(list_bid);
gdk_return res;
+ if( n == NULL)
+ return GDK_FAIL;
+
n[i++] = 0; /* n[0] is not used */
BATloop(list_bid, p, q) {
bat col = *(log_bid *) Tloc(list_bid, p);
diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -582,6 +582,12 @@ MT_mremap(const char *path, int mode, vo
if (fd >= 0)
close(fd);
p = malloc(strlen(path) + 5);
+ if ( p == NULL){
+ GDKsyserror("MT_mremap:
malloc() failed\n");
+ fprintf(stderr, "= %s:%d:
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): fd < 0\n", __FILE__, __LINE__, path,
PTRFMTCAST old_address, old_size, *new_size);
+ return NULL;
+ }
+
strcat(strcpy(p, path), ".tmp");
fd = open(p, O_RDWR | O_CREAT,
MONETDB_MODE);
@@ -1048,6 +1054,8 @@ reduce_dir_name(const char *src, char *d
if (len >= cap)
buf = malloc(len + 1);
+ if( buf == NULL)
+ return NULL;
while (--len > 0 && src[len - 1] != ':' && src[len] == DIR_SEP)
;
for (buf[++len] = 0; len > 0; buf[len] = src[len])
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -161,8 +161,6 @@ void BBPdump(void); /* never called: fo
__hidden void IMPSprint(BAT *b)
__attribute__((__visibility__("hidden")));
#endif
-__hidden gdk_return unshare_string_heap(BAT *b)
- __attribute__((__visibility__("hidden")));
__hidden void MT_init_posix(void)
__attribute__((__visibility__("hidden")));
__hidden void *MT_mremap(const char *path, int mode, void *old_address, size_t
old_size, size_t *new_size)
@@ -189,6 +187,8 @@ void BBPdump(void); /* never called: fo
__attribute__((__visibility__("hidden")));
__hidden var_t strLocate(Heap *h, const char *v)
__attribute__((__visibility__("hidden")));
+__hidden gdk_return unshare_string_heap(BAT *b)
+ __attribute__((__visibility__("hidden")));
__hidden void VIEWdestroy(BAT *b)
__attribute__((__visibility__("hidden")));
__hidden gdk_return VIEWreset(BAT *b)
diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c
--- a/gdk/gdk_project.c
+++ b/gdk/gdk_project.c
@@ -443,6 +443,8 @@ BATprojectchain(BAT **bats)
for (n = 0; bats[n]; n++)
;
ba = GDKmalloc(sizeof(*ba) * n);
+ if( ba == NULL)
+ return NULL;
b = *bats++;
cnt = BATcount(b); /* this will be the size of the output */
hseq = b->hseqbase; /* this will be the seqbase of the output */
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -497,6 +497,30 @@ join_threads(void)
pthread_mutex_unlock(&posthread_lock);
}
+void
+join_detached_threads(void)
+{
+ struct posthread *p;
+ int waited;
+ pthread_t tid;
+
+ pthread_mutex_lock(&posthread_lock);
+ do {
+ waited = 0;
+ for (p = posthreads; p; p = p->next) {
+ tid = p->tid;
+ rm_posthread_locked(p);
+ free(p);
+ pthread_mutex_unlock(&posthread_lock);
+ pthread_join(tid, NULL);
+ pthread_mutex_lock(&posthread_lock);
+ waited = 1;
+ break;
+ }
+ } while (waited);
+ pthread_mutex_unlock(&posthread_lock);
+}
+
int
MT_create_thread(MT_Id *t, void (*f) (void *), void *arg, enum MT_thr_detach d)
{
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -228,11 +228,13 @@ gdk_export ATOMIC_TYPE volatile GDKlocks
MT_Lock * volatile _p; \
/* save a copy for statistical purposes */ \
_p = GDKmalloc(sizeof(MT_Lock)); \
- memcpy(_p, l, sizeof(MT_Lock)); \
while (ATOMIC_TAS(GDKlocklistlock, dummy) != 0) \
; \
- _p->next = GDKlocklist; \
- GDKlocklist = _p; \
+ if( _p) { \
+ memcpy(_p, l, sizeof(MT_Lock)); \
+ _p->next = GDKlocklist; \
+ GDKlocklist = _p; \
+ } \
for (_p = GDKlocklist; _p; _p = _p->next) \
if (_p->next == (l)) { \
_p->next = (l)->next; \
diff --git a/gdk/gdk_system_private.h b/gdk/gdk_system_private.h
--- a/gdk/gdk_system_private.h
+++ b/gdk/gdk_system_private.h
@@ -12,6 +12,8 @@
#error this file should not be included outside its source directory
#endif
+__hidden void join_detached_threads(void)
+ __attribute__((__visibility__("hidden")));
__declspec(noreturn) void MT_exit_thread(int status)
__attribute__((__noreturn__));
__hidden void MT_global_exit(int status)
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -687,6 +687,7 @@ GDKreset(int status)
GDKfree(st);
}
MT_lock_unset(&GDKthreadLock);
+ join_detached_threads();
if (status == 0) {
/* they had their chance, now kill them */
diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c
--- a/gdk/gdk_value.c
+++ b/gdk/gdk_value.c
@@ -157,7 +157,8 @@ VALcopy(ValPtr d, const ValRecord *s)
d->vtype = s->vtype;
d->len = ATOMlen(d->vtype, p);
d->val.pval = GDKmalloc(d->len);
- memcpy(d->val.pval, p, d->len);
+ if( d->val.pval)
+ memcpy(d->val.pval, p, d->len);
}
return d;
}
@@ -208,7 +209,8 @@ VALinit(ValPtr d, int tpe, const void *s
assert(ATOMextern(ATOMstorage(tpe)));
d->len = ATOMlen(tpe, s);
d->val.pval = GDKmalloc(d->len);
- memcpy(d->val.pval, s, d->len);
+ if( d->val.pval)
+ memcpy(d->val.pval, s, d->len);
break;
}
return d;
diff --git a/java/ChangeLog b/java/ChangeLog
--- a/java/ChangeLog
+++ b/java/ChangeLog
@@ -1,3 +1,7 @@
# ChangeLog file for java
# This file is updated with Maddlog
+* Thu Sep 1 2016 Martin van Dinther <[email protected]>
+- Improved fetching and output speed of JdbcClient program for query results.
+ Added also timing information for JdbcClient query results (like in mclient).
+
diff --git a/java/src/main/java/nl/cwi/monetdb/client/JdbcClient.java
b/java/src/main/java/nl/cwi/monetdb/client/JdbcClient.java
--- a/java/src/main/java/nl/cwi/monetdb/client/JdbcClient.java
+++ b/java/src/main/java/nl/cwi/monetdb/client/JdbcClient.java
@@ -73,7 +73,7 @@ public class JdbcClient {
"Suppress printing the welcome header.");
// arguments which have zero to many arguments
- copts.addOption("D", "dump", CmdLineOpts.CAR_ZERO_MANY, null,
+ copts.addOption("D", "dump", CmdLineOpts.CAR_ZERO_MANY, null,
"Dumps the given table(s), or the complete
database if " +
"none given.");
@@ -161,7 +161,7 @@ copts.produceHelpMessage()
// We cannot use the DatabaseMetaData here, because we
// cannot get a Connection. So instead, we just get the
// values we want out of the Driver directly.
- System.out.println("Driver: v" +
+ System.out.println("Driver: v" +
nl.cwi.monetdb.jdbc.MonetDriver.getDriverVersion());
System.exit(0);
}
@@ -295,7 +295,7 @@ copts.produceHelpMessage()
if (copts.getOption("dump").getArgumentCount() > 0) {
// yes we do
String[] dumpers =
copts.getOption("dump").getArguments();
for (int i = 0; i < tables.size(); i++) {
- Table ttmp = (Table)(tables.get(i));
+ Table ttmp = tables.get(i);
for (int j = 0; j < dumpers.length;
j++) {
if
(ttmp.getName().equalsIgnoreCase(dumpers[j].toString()) ||
ttmp.getFqname().equalsIgnoreCase(dumpers[j].toString()))
@@ -794,7 +794,6 @@ copts.produceHelpMessage()
}
}
- out.println();
out.flush();
} while ((nextRslt = stmt.getMoreResults()) ||
(aff = stmt.getUpdateCount()) != -1);
@@ -1189,7 +1188,7 @@ class Table {
static void checkForLoop(Table table, List<Table> parents) throws
Exception {
parents.add(table);
for (int i = 0; i < table.needs.size(); i++) {
- Table child = (Table)(table.needs.get(i));
+ Table child = table.needs.get(i);
if (parents.contains(child))
throw new Exception("Cyclic dependancy graphs
are not supported (cycle detected for " + child.fqname + ")");
checkForLoop(child, parents);
diff --git a/java/src/main/java/nl/cwi/monetdb/util/CmdLineOpts.java
b/java/src/main/java/nl/cwi/monetdb/util/CmdLineOpts.java
--- a/java/src/main/java/nl/cwi/monetdb/util/CmdLineOpts.java
+++ b/java/src/main/java/nl/cwi/monetdb/util/CmdLineOpts.java
@@ -112,10 +112,10 @@ public class CmdLineOpts {
String tmp = args[i].substring(2);
int pos = tmp.indexOf('=');
if (pos == -1) {
- option =
(OptionContainer)(opts.get(tmp));
+ option = opts.get(tmp);
moreData = false;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list