MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-12-03 Thread Sjoerd Mullender
Changeset: 7e448c0ea191 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7e448c0ea191
Modified Files:
gdk/gdk_batop.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (21 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -420,7 +420,7 @@ BATappend(BAT *b, BAT *n, bit force)
OIDXdestroy(b);
 
/* append two void,void bats */
-   if (b->ttype == TYPE_void && BATtdense(n)) {
+   if (b->ttype == TYPE_void && BATtdense(b)) {
oid f = n->tseqbase;
 
if (n->ttype != TYPE_void)
@@ -428,7 +428,7 @@ BATappend(BAT *b, BAT *n, bit force)
 
if (BATcount(b) == 0 && f != oid_nil)
BATtseqbase(b, f);
-   if (BATcount(b) + b->tseqbase == f) {
+   if (BATtdense(n) && BATcount(b) + b->tseqbase == f) {
sz += BATcount(b);
BATsetcount(b, sz);
if (b->tunique)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-12-02 Thread Sjoerd Mullender
Changeset: 99aabb9cfcc6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=99aabb9cfcc6
Modified Files:
monetdb5/modules/atoms/json.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (12 lines):

diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -2175,7 +2175,7 @@ JSONjsonaggr(BAT **bnp, BAT *b, BAT *g, 
freeg = 1;
if (t2->ttype == TYPE_void) {
map = NULL;
-   mapoff = b->tseqbase;
+   mapoff = t2->tseqbase;
} else {
map = (const oid *) Tloc(t2, 0);
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-12-02 Thread Sjoerd Mullender
Changeset: ce667e504110 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ce667e504110
Modified Files:
gdk/gdk_batop.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (21 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -420,7 +420,7 @@ BATappend(BAT *b, BAT *n, bit force)
OIDXdestroy(b);
 
/* append two void,void bats */
-   if (b->ttype == TYPE_void && BATtdense(b)) {
+   if (b->ttype == TYPE_void && BATtdense(n)) {
oid f = n->tseqbase;
 
if (n->ttype != TYPE_void)
@@ -428,7 +428,7 @@ BATappend(BAT *b, BAT *n, bit force)
 
if (BATcount(b) == 0 && f != oid_nil)
BATtseqbase(b, f);
-   if (BATtdense(n) && BATcount(b) + b->tseqbase == f) {
+   if (BATcount(b) + b->tseqbase == f) {
sz += BATcount(b);
BATsetcount(b, sz);
if (b->tunique)
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-12-01 Thread Sjoerd Mullender
Changeset: b9aff809d5ae for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b9aff809d5ae
Modified Files:
gdk/gdk_batop.c
gdk/gdk_system.c
sql/storage/store.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (44 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -209,7 +209,8 @@ insert_string_bat(BAT *b, BAT *n, int fo
}
b->tvarsized = 0;
}
-   }
+   } else if (unshare_string_heap(b) != GDK_SUCCEED)
+   return GDK_FAIL;
if (toff == 0 && n->twidth == b->twidth) {
/* we don't need to do any translation of offset
 * values, so we can use fast memcpy */
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -420,7 +420,6 @@ pthread_sema_down(pthread_sema_t *s)
 
 #else  /* !defined(HAVE_PTHREAD_H) && defined(_MSC_VER) */
 
-#ifdef HAVE_PTHREAD_SIGMASK
 static struct posthread {
struct posthread *next;
pthread_t tid;
@@ -455,6 +454,7 @@ find_posthread(pthread_t tid)
 }
 #endif
 
+#ifdef HAVE_PTHREAD_SIGMASK
 static void
 MT_thread_sigmask(sigset_t * new_mask, sigset_t * orig_mask)
 {
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1583,7 +1583,7 @@ store_init(int debug, store_type store, 
/* get the set shared_drift_threshold
 * we will need it later in store_manager */
shared_drift_threshold = log_settings->shared_drift_threshold;
-   /* get the set shared_drift_threshold
+   /* get the set keep_persisted_log_files
 * we will need it later when calling logger_cleanup */
keep_persisted_log_files = log_settings->keep_persisted_log_files;
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-11-30 Thread Sjoerd Mullender
Changeset: 5d781336bfd2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d781336bfd2
Modified Files:
gdk/gdk_batop.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (179 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -58,10 +58,8 @@ static gdk_return
 insert_string_bat(BAT *b, BAT *n, int force)
 {
BATiter ni; /* iterator */
-   int tt; /* tail type */
size_t toff = ~(size_t) 0;  /* tail offset */
BUN p, q;   /* loop variables */
-   oid o = 0;  /* in case we're appending */
const void *tp; /* tail value pointer */
unsigned char tbv;  /* tail value-as-bte */
unsigned short tsv; /* tail value-as-sht */
@@ -71,18 +69,20 @@ insert_string_bat(BAT *b, BAT *n, int fo
var_t v;/* value */
size_t off; /* offset within n's string heap */
 
+   assert(b->ttype == TYPE_str);
+   /* only transient bats can use some other bat's string heap */
+   assert(b->batRole == TRANSIENT ||
+  b->tvheap->parentid == abs(b->batCacheid));
if (n->batCount == 0)
return GDK_SUCCEED;
ni = bat_iterator(n);
tp = NULL;
-   tt = b->ttype;
-   if (tt == TYPE_str &&
-   (!GDK_ELIMDOUBLES(b->tvheap) || b->batCount == 0) &&
+   if ((!GDK_ELIMDOUBLES(b->tvheap) || b->batCount == 0) &&
!GDK_ELIMDOUBLES(n->tvheap) &&
b->tvheap->hashash == n->tvheap->hashash &&
/* if needs to be kept unique, take slow path */
(b->tkey & BOUND2BTRUE) == 0) {
-   if (b->batRole == TRANSIENT) {
+   if (b->batRole == TRANSIENT || b->tvheap == n->tvheap) {
/* If b is in the transient farm (i.e. b will
 * never become persistent), we try some
 * clever tricks to avoid copying:
@@ -90,14 +90,16 @@ insert_string_bat(BAT *b, BAT *n, int fo
  *   string heap with n;
 * - otherwise, if b's string heap and n's
  *   string heap are the same (i.e. shared),
- *   we leave it that way;
+ *   we leave it that way (this includes the
+ *   case that b is persistent and n shares
+ *   its string heap with b);
 * - otherwise, if b shares its string heap
  *   with some other bat, we materialize it
  *   and we will have to copy strings.
 */
bat bid = b->batCacheid;
 
-   if (b->batCount == 0) {
+   if (b->batCount == 0 && b->tvheap != n->tvheap) {
if (b->tvheap->parentid != bid) {
BBPunshare(b->tvheap->parentid);
} else {
@@ -151,8 +153,8 @@ insert_string_bat(BAT *b, BAT *n, int fo
/* make sure we get alignment right */
toff = (toff + GDK_VARALIGN - 1) & 
~(GDK_VARALIGN - 1);
assert(((toff >> GDK_VARSHIFT) << GDK_VARSHIFT) 
== toff);
-   /* if in "force" mode, the heap may be shared 
when
-* memory mapped */
+   /* if in "force" mode, the heap may be
+* shared when memory mapped */
if (HEAPextend(b->tvheap, toff + 
n->tvheap->size, force) != GDK_SUCCEED) {
toff = ~(size_t) 0;
goto bunins_failed;
@@ -182,25 +184,25 @@ insert_string_bat(BAT *b, BAT *n, int fo
}
switch (b->twidth) {
case 1:
-   tt = TYPE_bte;
+   b->ttype = TYPE_bte;
tp = &tbv;
break;
case 2:
-   tt = TYPE_sht;
+   b->ttype = TYPE_sht;
tp = &tsv;
break;
 #if SIZEOF_VAR_T == 8
case 4:
-   tt = TYPE_int;
+   b->ttype = TYPE_int;
tp = &tiv;
break;
case 8:
-   tt = TYPE_lng;
+   b->ttype = TYPE_lng;
tp = &v;
break;
 #else
case 4:
-

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-11-30 Thread Sjoerd Mullender
Changeset: 702993d1f2e0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=702993d1f2e0
Added Files:
sql/test/BugTracker-2016/Tests/case-column-when-null-Bug-6124.sql
sql/test/BugTracker-2016/Tests/case-column-when-null-Bug-6124.stable.err
sql/test/BugTracker-2016/Tests/case-column-when-null-Bug-6124.stable.out
sql/test/BugTracker-2016/Tests/nested-subquery-in-select.Bug-6125.sql

sql/test/BugTracker-2016/Tests/nested-subquery-in-select.Bug-6125.stable.err

sql/test/BugTracker-2016/Tests/nested-subquery-in-select.Bug-6125.stable.out
sql/test/BugTracker-2016/Tests/select-in-from.Bug-6119.sql
sql/test/BugTracker-2016/Tests/select-in-from.Bug-6119.stable.err
sql/test/BugTracker-2016/Tests/select-in-from.Bug-6119.stable.out
sql/test/BugTracker-2016/Tests/select-in-from.Bug-6121.sql
sql/test/BugTracker-2016/Tests/select-in-from.Bug-6121.stable.err
sql/test/BugTracker-2016/Tests/select-in-from.Bug-6121.stable.out
Modified Files:
configure.ag
gdk/gdk_calc_compare.h
monetdb5/extras/rapi/Tests/rapi02.stable.out
monetdb5/modules/kernel/aggr.mal
monetdb5/modules/kernel/aggr.mal.sh
sql/test/BugTracker-2016/Tests/All
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 1014 to 300 lines):

diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2478,7 +2478,7 @@ AS_CASE([$enable_int128],
why_have_hge='(128-bit integer support disabled)'])
 AM_CONDITIONAL([HAVE_HGE], [test "x$have_hge" = xyes])
 
-AC_CHECK_TYPES([ptrdiff_t])
+AC_CHECK_TYPES([ptrdiff_t],,,[@%:@include ])
 AC_CHECK_TYPES([intptr_t])
 AC_CHECK_TYPES([uintptr_t])
 
@@ -2489,8 +2489,8 @@ AC_CHECK_SIZEOF([long])
 AC_CHECK_SIZEOF([void *])
 AC_CHECK_SIZEOF([size_t])
 AC_CHECK_SIZEOF([ssize_t])
-AC_CHECK_SIZEOF([ptrdiff_t])
-AC_CHECK_SIZEOF([wchar_t])
+AC_CHECK_SIZEOF([ptrdiff_t],,[@%:@include ])
+AC_CHECK_SIZEOF([wchar_t],,[@%:@include ])
 AC_CHECK_SIZEOF([long long])
 AC_CHECK_SIZEOF([__int64])
 AC_CHECK_SIZEOF([__int128])
diff --git a/gdk/gdk_calc_compare.h b/gdk/gdk_calc_compare.h
--- a/gdk/gdk_calc_compare.h
+++ b/gdk/gdk_calc_compare.h
@@ -599,10 +599,10 @@ BATcalcop(BAT *b1, BAT *b2, BAT *s)
return BATconstant(b1->hseqbase, TYPE_TPE, &res, cnt, 
TRANSIENT);
}
 
-   bn = BATcalcop_intern(b1->ttype == TYPE_void ? (void *) &b1->tseqbase : 
(void *) Tloc(b1, 0), ATOMbasetype(b1->ttype), 1,
+   bn = BATcalcop_intern(b1->ttype == TYPE_void ? (void *) &b1->tseqbase : 
(void *) Tloc(b1, 0), ATOMtype(b1->ttype) == TYPE_oid ? b1->ttype : 
ATOMbasetype(b1->ttype), 1,
  b1->tvheap ? b1->tvheap->base : NULL,
  b1->twidth,
- b2->ttype == TYPE_void ? (void *) &b2->tseqbase : 
(void *) Tloc(b2, 0), ATOMbasetype(b2->ttype), 1,
+ b2->ttype == TYPE_void ? (void *) &b2->tseqbase : 
(void *) Tloc(b2, 0), ATOMtype(b2->ttype) == TYPE_oid ? b2->ttype : 
ATOMbasetype(b2->ttype), 1,
  b2->tvheap ? b2->tvheap->base : NULL,
  b2->twidth,
  cnt, start, end, cand, candend, b1->hseqbase,
diff --git a/monetdb5/extras/rapi/Tests/rapi02.stable.out 
b/monetdb5/extras/rapi/Tests/rapi02.stable.out
--- a/monetdb5/extras/rapi/Tests/rapi02.stable.out
+++ b/monetdb5/extras/rapi/Tests/rapi02.stable.out
@@ -103,7 +103,7 @@ Ready.
 [ 0@0, 4   ]
 [ 1@0, 20  ]
 [ 2@0, 0   ]
-[ 3@0, 2   ]
+[ 3@0, nil ]
 [ "asdf"   ]
 #--#
 # ht  # name
diff --git a/monetdb5/modules/kernel/aggr.mal b/monetdb5/modules/kernel/aggr.mal
--- a/monetdb5/modules/kernel/aggr.mal
+++ b/monetdb5/modules/kernel/aggr.mal
@@ -886,7 +886,7 @@ address AGGRquantile3
 comment "Grouped quantile aggregate";
 
 function quantile(b:bat[:any_1],q:bat[:dbl]) :any_1;
-   bn := subquantile(b, q, false);
+   bn := subquantile(b, q, true);
return algebra.fetch(bn, 0@0);
 end aggr.quantile;
 
diff --git a/monetdb5/modules/kernel/aggr.mal.sh 
b/monetdb5/modules/kernel/aggr.mal.sh
--- a/monetdb5/modules/kernel/aggr.mal.sh
+++ b/monetdb5/modules/kernel/aggr.mal.sh
@@ -242,7 +242,7 @@ address AGGRquantile3
 comment "Grouped quantile aggregate";
 
 function quantile(b:bat[:any_1],q:bat[:dbl]) :any_1;
-   bn := subquantile(b, q, false);
+   bn := subquantile(b, q, true);
return algebra.fetch(bn, 0@0);
 end aggr.quantile;
 
diff --git a/sql/test/BugTracker-2016/Tests/All 
b/sql/test/BugTracker-2016/Tests/All
--- a/sql/test/BugTracker-2016/Tests/All
+++ b/sql/test/BugTracker-2016/Tests/All
@@ -61,3 +61,11 @@ assert-on-push-project-up.Bug-6077
 assert-on-project.Bug-6078
 crash.Bug-6081
 merge-table-edit.Bug-6084
+dce.Bug-6114
+dce2.Bug-6115
+semijoin.Bug-6116
+split_project.Bug-6117
+case-column-when-null-Bug-6124
+select-in-

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-11-09 Thread Sjoerd Mullender
Changeset: 55237f6c03b8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=55237f6c03b8
Modified Files:
monetdb5/mal/mal_instruction.c
sql/backends/monet5/sql_scenario.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (33 lines):

diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -735,15 +735,14 @@ makeVarSpace(MalBlkPtr mb)
VarPtr *new;
int s = mb->vsize * 2;
 
-   new = (VarPtr *) GDKzalloc(s * sizeof(VarPtr));
+   new = GDKrealloc(mb->var, s * sizeof(VarPtr));
if (new == NULL) {
mb->errors++;
showScriptException(GDKout, mb, 0, MAL, "newMalBlk:no 
storage left\n");
assert(0);
return -1;
}
-   memcpy((char *) new, (char *) mb->var, sizeof(VarPtr) * 
mb->vtop);
-   GDKfree(mb->var);
+   memset(new + mb->vsize, 0, (s - mb->vsize) * sizeof(VarPtr));
mb->vsize = s;
mb->var = new;
}
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1161,7 +1161,7 @@ SQLparser(Client c)
showErrors(c);
/* restore the state */
MSresetInstructions(c->curprg->def, oldstop);
-   freeVariables(c, c->curprg->def, c->glb, oldvtop);
+   freeVariables(c, c->curprg->def, NULL, oldvtop);
c->curprg->def->errors = 0;
msg = createException(PARSE, "SQLparser", 
"M0M27!Semantic errors");
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-11-04 Thread Sjoerd Mullender
Changeset: 8c32ca8d22fc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8c32ca8d22fc
Added Files:
sql/test/BugTracker-2016/Tests/crash.Bug-6081.sql
sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.err
sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.out
Modified Files:
sql/server/rel_optimizer.c
sql/test/BugTracker-2016/Tests/All
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (127 lines):

diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -2123,7 +2123,7 @@ exps_unique( list *exps )
 
if (e && (p = find_prop(e->p, PROP_HASHCOL)) != NULL) {
sql_ukey *k = p->value;
-   if (list_length(k->k.columns) <= 1)
+   if (k && list_length(k->k.columns) <= 1)
return 1;
}
}
diff --git a/sql/test/BugTracker-2016/Tests/All 
b/sql/test/BugTracker-2016/Tests/All
--- a/sql/test/BugTracker-2016/Tests/All
+++ b/sql/test/BugTracker-2016/Tests/All
@@ -59,4 +59,5 @@ ifthenelse-void.Bug-6075
 assert-on-table-producing-function.Bug-6076
 assert-on-push-project-up.Bug-6077
 assert-on-project.Bug-6078
+crash.Bug-6081
 merge-table-edit.Bug-6084
diff --git a/sql/test/BugTracker-2016/Tests/crash.Bug-6081.sql 
b/sql/test/BugTracker-2016/Tests/crash.Bug-6081.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2016/Tests/crash.Bug-6081.sql
@@ -0,0 +1,10 @@
+select distinct 
+  ref_1.dependency_type_name as c0, 
+  ref_1.dependency_type_id as c1, 
+  ref_1.dependency_type_name as c2, 
+  ref_1.dependency_type_name as c3, 
+  ref_1.dependency_type_id as c4
+from 
+  sys.dependency_types as ref_1
+where ref_1.dependency_type_name is NULL
+limit 96;
diff --git a/sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.err 
b/sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'crash.Bug-6081` in directory 'sql/test/BugTracker-2016` itself:
+
+
+# 10:17:31 >  
+# 10:17:31 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36589" "--set" 
"mapi_usock=/var/tmp/mtest-6720/.s.monetdb.36589" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2016"
 "--set" "embedded_r=yes"
+# 10:17:31 >  
+
+# builtin opt  gdk_dbpath = 
/home/niels/scratch/rc-monetdb/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 5
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 36589
+# cmdline opt  mapi_usock = /var/tmp/mtest-6720/.s.monetdb.36589
+# cmdline opt  monet_prompt = 
+# cmdline opt  gdk_dbpath = 
/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2016
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 10:17:32 >  
+# 10:17:32 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-6720" "--port=36589"
+# 10:17:32 >  
+
+
+# 10:17:32 >  
+# 10:17:32 >  "Done."
+# 10:17:32 >  
+
diff --git a/sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.out 
b/sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2016/Tests/crash.Bug-6081.stable.out
@@ -0,0 +1,46 @@
+stdout of test 'crash.Bug-6081` in directory 'sql/test/BugTracker-2016` itself:
+
+
+# 10:17:31 >  
+# 10:17:31 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36589" "--set" 
"mapi_usock=/var/tmp/mtest-6720/.s.monetdb.36589" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2016"
 "--set" "embedded_r=yes"
+# 10:17:31 >  
+
+# MonetDB 5 server v11.23.14
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2016', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit 
integers dynamically linked
+# Found 7.332 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2016 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://localhost.nes.nl:36589/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-6720/.s.monetdb.36589
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R   module loaded
+
+Ready.
+

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-11-01 Thread Sjoerd Mullender
Changeset: 10747c3398e4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=10747c3398e4
Modified Files:
monetdb5/modules/kernel/bat5.c
sql/server/rel_updates.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (33 lines):

diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -1056,7 +1056,7 @@ BKCshrinkBAT(bat *ret, const bat *bid, c
BBPunfix(b->batCacheid);
throw(MAL, "bat.shrink", RUNTIME_OBJECT_MISSING);
}
-   bn= COLnew(0, b->ttype, BATcount(b) - BATcount(d) , TRANSIENT);
+   bn= COLnew(0, b->ttype, BATcount(b) - BATcount(d), b->batRole);
if (bn == NULL) {
BBPunfix(b->batCacheid);
BBPunfix(d->batCacheid);
@@ -1221,7 +1221,7 @@ BKCreuseBAT(bat *ret, const bat *bid, co
BBPunfix(b->batCacheid);
throw(MAL, "bat.reuse", RUNTIME_OBJECT_MISSING);
}
-   bn= COLnew(b->hseqbase, b->ttype, BATcount(b) - BATcount(d), TRANSIENT);
+   bn= COLnew(b->hseqbase, b->ttype, BATcount(b) - BATcount(d), 
b->batRole);
if (bn == NULL) {
BBPunfix(b->batCacheid);
BBPunfix(d->batCacheid);
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -1275,6 +1275,8 @@ copyfrom(mvc *sql, dlist *qname, dlist *
}
/* lock the store, for single user/transaction */
if (locked) { 
+   if (headers)
+   return sql_error(sql, 02, "COPY INTO .. LOCKED: not 
allowed with column lists");
store_lock();
while (store_nr_active > 1) {
store_unlock();
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-31 Thread Sjoerd Mullender
Changeset: c33c1522eaae for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c33c1522eaae
Modified Files:
tools/merovingian/client/monetdb.c
tools/merovingian/daemon/discoveryrunner.c
tools/merovingian/daemon/multiplex-funnel.c
tools/merovingian/utils/glob.c
tools/merovingian/utils/glob.h
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (87 lines):

diff --git a/tools/merovingian/client/monetdb.c 
b/tools/merovingian/client/monetdb.c
--- a/tools/merovingian/client/monetdb.c
+++ b/tools/merovingian/client/monetdb.c
@@ -479,7 +479,7 @@ globMatchDBS(int argc, char *argv[], sab
if (argv[i] != NULL) {
prev = NULL;
for (stats = *orig; stats != NULL; stats = stats->next) 
{
-   if (glob(argv[i], stats->dbname)) {
+   if (db_glob(argv[i], stats->dbname)) {
matched = 1;
/* move out of orig into w, such that 
we can't
 * get double matches in the same 
output list
@@ -918,7 +918,7 @@ command_discover(int argc, char *argv[])
 
snprintf(path, sizeof(path), "%s%s", q, p);
 
-   if (match == NULL || glob(match, path)) {
+   if (match == NULL || db_glob(match, path)) {
if (twidth > 0) {
/* cut too long location name */
abbreviateString(location, path, 
twidth);
diff --git a/tools/merovingian/daemon/discoveryrunner.c 
b/tools/merovingian/daemon/discoveryrunner.c
--- a/tools/merovingian/daemon/discoveryrunner.c
+++ b/tools/merovingian/daemon/discoveryrunner.c
@@ -177,7 +177,7 @@ getRemoteDB(char *database)
pdb = &dummy;
while (rdb != NULL) {
snprintf(mfullname, sizeof(mfullname), "%s/", rdb->fullname);
-   if (glob(mdatabase, mfullname) == 1) {
+   if (db_glob(mdatabase, mfullname) == 1) {
/* create a fake sabdb struct, chain where necessary */
if (walk != NULL) {
walk = walk->next = malloc(sizeof(sabdb));
diff --git a/tools/merovingian/daemon/multiplex-funnel.c 
b/tools/merovingian/daemon/multiplex-funnel.c
--- a/tools/merovingian/daemon/multiplex-funnel.c
+++ b/tools/merovingian/daemon/multiplex-funnel.c
@@ -105,7 +105,7 @@ MFconnectionManager(void *d)
if (len >= 4 &&
buf[len - 3] == 
'*' && buf[len - 4] == '/')
buf[len - 2] = '\0';
-   if (glob(buf, msg + 1) == 1) {
+   if (db_glob(buf, msg + 1) == 1) 
{
sabdb *stats;
Mapi tm = NULL;
/* match! eat away 
trailing / (for matching) */
@@ -154,7 +154,7 @@ MFconnectionManager(void *d)
if (len >= 4 &&
buf[len - 3] == 
'*' && buf[len - 4] == '/')
buf[len - 2] = '\0';
-   if (glob(buf, msg + 1) == 1) {
+   if (db_glob(buf, msg + 1) == 1) 
{
/* reevaluate, to see 
if connection is still
 * available */
sabdb *walk;
diff --git a/tools/merovingian/utils/glob.c b/tools/merovingian/utils/glob.c
--- a/tools/merovingian/utils/glob.c
+++ b/tools/merovingian/utils/glob.c
@@ -22,7 +22,7 @@
  * Returns if haystack matches expr, using tag globbing.
  */
 char
-glob(const char *expr, const char *haystack)
+db_glob(const char *expr, const char *haystack)
 {
const char *haymem = NULL;
const char *exprmem = NULL;
@@ -73,7 +73,7 @@ glob(const char *expr, const char *hayst
default:
if (*expr != *haystack) {
if (haymem != NULL) {
-   return(glob(exprmem, haymem));
+   return(db_glob(exprmem, 
haymem));
} else {
return(0);
}
diff --git a/tools/merovingian/utils/glob.h b/tools/merovingian/utils/glob.h
--- a/tools/merovingian/utils/g

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-26 Thread Sjoerd Mullender
Changeset: 0c1a30b41fb7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0c1a30b41fb7
Modified Files:
debian/monetdb5-sql.init.d
tools/merovingian/daemon/argvcmds.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (125 lines):

diff --git a/debian/monetdb5-sql.init.d b/debian/monetdb5-sql.init.d
--- a/debian/monetdb5-sql.init.d
+++ b/debian/monetdb5-sql.init.d
@@ -37,16 +37,16 @@ set -e
 init() {
 if [ ! -d ${DBFARM} ]; then
 mkdir ${DBFARM}
-   echo "${DBFARM} doesn't exist, creating..."
+   echo "${DBFARM} doesn't exist, creating..."
 fi
 
-   chown -R monetdb.monetdb ${DBFARM}
-   chmod 770 ${DBFARM}
+chown -R monetdb.monetdb ${DBFARM}
+chmod 770 ${DBFARM}
 
-   if [ ! -f ${DBFARM}/.merovingian_properties ]; then
-   echo "${DBFARM} not initialized, initializing..."
-   sudo -u monetdb ${DAEMON} create ${DBFARM} || exit 1
-   fi
+if [ ! -f ${DBFARM}/.merovingian_properties ]; then
+   echo "${DBFARM} not initialized, initializing..."
+   sudo -u monetdb ${DAEMON} create ${DBFARM} || exit 1
+fi
 }
 
 running_pid() {
@@ -70,42 +70,41 @@ running() {
 }
 
 case "$1" in
-  start)
-if [ "$STARTUP" != "yes" ]; then
-echo "can't start, should be enabled first by changing STARTUP to 
yes in /etc/default/monetdb5-sql"
-exit 0
-fi
+start)
+if [ "$STARTUP" != "yes" ]; then
+echo "can't start, should be enabled first by changing STARTUP to yes 
in /etc/default/monetdb5-sql"
+exit 0
+fi
 
-if running; then
-echo "$NAME is already running"
-exit 0
-fi
+if running; then
+echo "$NAME is already running"
+exit 0
+fi
 
-init
+init
 
-echo -n "Starting $DESC: "
-start-stop-daemon --start --exec $DAEMON -c monetdb:monetdb -- start 
$DAEMON_OPTS $DBFARM
-if running ; then
-echo "$NAME."
-else
-echo " ERROR, $NAME didn't start"
-fi
-;;
-  stop)
-if running ;  then
-echo -n "Stopping $DESC: "
-start-stop-daemon --stop --pidfile $PIDFILE --exec $DAEMON -c 
monetdb:monetdb -- stop ${DBFARM}
-echo "$NAME."
-   else
-   echo "$NAME not running."
-fi
-;;
-  restart)
-$0 stop
-sleep 5
-$0 start
-;;
-  status)
+echo -n "Starting $DESC: "
+start-stop-daemon --start --exec $DAEMON -c monetdb:monetdb -- start 
$DAEMON_OPTS $DBFARM
+if running ; then
+echo "$NAME."
+else
+echo " ERROR, $NAME didn't start"
+fi
+;;
+stop)
+if running ;  then
+echo -n "Stopping $DESC: "
+start-stop-daemon --stop --pidfile $PIDFILE --exec $DAEMON --retry 60 
--signal TERM
+echo "$NAME."
+else
+   echo "$NAME not running."
+fi
+;;
+restart)
+$0 stop
+$0 start
+;;
+status)
 echo -n "$NAME is "
 if running ;  then
 echo "running"
@@ -114,7 +113,7 @@ case "$1" in
 exit 1
 fi
 ;;
-  *)
+*)
 echo "Usage: $0 {start|stop|restart|status}" >&2
 exit 1
 ;;
diff --git a/tools/merovingian/daemon/argvcmds.c 
b/tools/merovingian/daemon/argvcmds.c
--- a/tools/merovingian/daemon/argvcmds.c
+++ b/tools/merovingian/daemon/argvcmds.c
@@ -501,8 +501,8 @@ command_stop(confkeyval *ckv, int argc, 
return(1);
}
 
-   /* wait up to 5 seconds for monetdbd to actually stop */
-   for (i = 0; i < 10; i++) {
+   /* wait up to 30 seconds for monetdbd to actually stop */
+   for (i = 0; i < 60; i++) {
tv.tv_sec = 0;
tv.tv_usec = 50;
select(0, NULL, NULL, NULL, &tv);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-25 Thread Sjoerd Mullender
Changeset: 37c487721219 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=37c487721219
Modified Files:
gdk/gdk_logger.c
tools/merovingian/daemon/controlrunner.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (91 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1377,8 +1377,6 @@ logger_load(int debug, const char* fn, c
/* this is intentional - even if catalog_bid is 0, but the logger is 
shared,
 * force it to find the persistent catalog */
if (catalog_bid == 0 && !lg->shared) {
-   log_bid bid = 0;
-
/* catalog does not exist, so the log file also
 * shouldn't exist */
if (fp != NULL) {
@@ -1401,22 +1399,19 @@ logger_load(int debug, const char* fn, c
 
/* give the catalog bats names so we can find them
 * next time */
-   bid = lg->catalog_bid->batCacheid;
-   BBPincref(bid, TRUE);
+   BBPincref(lg->catalog_bid->batCacheid, TRUE);
snprintf(bak, sizeof(bak), "%s_catalog_bid", fn);
if (BBPrename(lg->catalog_bid->batCacheid, bak) < 0)
logger_fatal("logger_load: BBPrename to %s failed",
 bak, 0, 0);
 
-   bid = lg->catalog_nme->batCacheid;
-   BBPincref(bid, TRUE);
+   BBPincref(lg->catalog_nme->batCacheid, TRUE);
snprintf(bak, sizeof(bak), "%s_catalog_nme", fn);
if (BBPrename(lg->catalog_nme->batCacheid, bak) < 0)
logger_fatal("logger_load: BBPrename to %s failed",
 bak, 0, 0);
 
-   bid = lg->dcatalog->batCacheid;
-   BBPincref(bid, TRUE);
+   BBPincref(lg->dcatalog->batCacheid, TRUE);
snprintf(bak, sizeof(bak), "%s_dcatalog", fn);
if (BBPrename(lg->dcatalog->batCacheid, bak) < 0)
logger_fatal("logger_load: BBPrename to %s failed",
@@ -1484,7 +1479,6 @@ logger_load(int debug, const char* fn, c
if (d == NULL)
logger_fatal("Logger_new: cannot create "
 "dcatalog bat", 0, 0, 0);
-   BBPincref(d->batCacheid, TRUE);
if (BBPrename(d->batCacheid, bak) < 0)
logger_fatal("logger_load: BBPrename to %s 
failed", bak, 0, 0);
}
@@ -1503,6 +1497,9 @@ logger_load(int debug, const char* fn, c
lg->catalog_bid = b;
lg->catalog_nme = n;
lg->dcatalog = d;
+   BBPincref(lg->catalog_bid->batCacheid, TRUE);
+   BBPincref(lg->catalog_nme->batCacheid, TRUE);
+   BBPincref(lg->dcatalog->batCacheid, TRUE);
BATloop(b, p, q) {
bat bid = *(log_bid *) Tloc(b, p);
oid pos = p;
diff --git a/tools/merovingian/daemon/controlrunner.c 
b/tools/merovingian/daemon/controlrunner.c
--- a/tools/merovingian/daemon/controlrunner.c
+++ b/tools/merovingian/daemon/controlrunner.c
@@ -338,13 +338,17 @@ static void ctl_handle_client(
dp = _mero_topdp->next; /* don't need the 
console/log */
while (dp != NULL) {
if (dp->type == MERODB && 
strcmp(dp->dbname, q) == 0) {
-   
pthread_mutex_unlock(&_mero_topdp_lock);
if (strcmp(p, "stop") == 0) {
-   
terminateProcess(dp->pid, strdup(dp->dbname), dp->type, 1);
+   pid_t pid = dp->pid;
+   char *dbname = 
strdup(dp->dbname);
+   mtype type = dp->type;
+   
pthread_mutex_unlock(&_mero_topdp_lock);
+   terminateProcess(pid, 
dbname, type, 1);
Mfprintf(_mero_ctlout, 
"%s: stopped "

"database '%s'\n", origin, q);
} else {
kill(dp->pid, SIGKILL);
+   
pthread_mutex_unlock(&_mero_topdp_lock);
Mfprintf(_mero_ctlout, 
"%s: killed "

"database '%s'\n", origin, q);
}
@@ -3

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-24 Thread Sjoerd Mullender
Changeset: d05eca35fe87 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d05eca35fe87
Modified Files:
tools/merovingian/daemon/handlers.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (13 lines):

diff --git a/tools/merovingian/daemon/handlers.c 
b/tools/merovingian/daemon/handlers.c
--- a/tools/merovingian/daemon/handlers.c
+++ b/tools/merovingian/daemon/handlers.c
@@ -76,7 +76,8 @@ handler(int sig)
strcpy(buf + 7, "some signal");
}
strcpy(buf + strlen(buf), ", starting shutdown sequence\n");
-   write(1, buf, strlen(buf));
+   if (write(1, buf, strlen(buf)) < 0)
+   perror("write failed");
_mero_keep_listening = 0;
 }
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-24 Thread Sjoerd Mullender
Changeset: 64ed78fd35b7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=64ed78fd35b7
Modified Files:
tools/merovingian/daemon/controlrunner.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (46 lines):

diff --git a/tools/merovingian/daemon/controlrunner.c 
b/tools/merovingian/daemon/controlrunner.c
--- a/tools/merovingian/daemon/controlrunner.c
+++ b/tools/merovingian/daemon/controlrunner.c
@@ -930,6 +930,17 @@ control_handleclient(const char *host, i
ctl_handle_client(host, sock, fdin, fout);
 }
 
+static void *
+handle_client(void *p)
+{
+   int msgsock = * (int *) p;
+
+   ctl_handle_client("(local)", msgsock, NULL, NULL);
+   shutdown(msgsock, SHUT_RDWR);
+   closesocket(msgsock);
+   return NULL;
+}
+
 void *
 controlRunner(void *d)
 {
@@ -939,7 +950,7 @@ controlRunner(void *d)
fd_set fds;
struct timeval tv;
int msgsock;
-   char origin[128];
+   pthread_t tid;
 
do {
FD_ZERO(&fds);
@@ -975,11 +986,10 @@ controlRunner(void *d)
continue;
}
 
-   snprintf(origin, sizeof(origin), "(local)");
-
-   ctl_handle_client(origin, msgsock, NULL, NULL);
-   shutdown(msgsock, SHUT_RDWR);
-   closesocket(msgsock);
+   if (pthread_create(&tid, NULL, handle_client, &msgsock) != 0)
+   closesocket(msgsock);
+   else
+   pthread_detach(tid);
} while (_mero_keep_listening);
shutdown(usock, SHUT_RDWR);
closesocket(usock);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-24 Thread Sjoerd Mullender
Changeset: 38fc8010364a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38fc8010364a
Modified Files:
common/utils/msabaoth.c
sql/benchmarks/tpch/Tests/01-explain.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out
sql/benchmarks/tpch/Tests/05-explain.stable.out
sql/benchmarks/tpch/Tests/06-explain.stable.out
sql/benchmarks/tpch/Tests/07-explain.stable.out
sql/benchmarks/tpch/Tests/08-explain.stable.out
sql/benchmarks/tpch/Tests/09-explain.stable.out
sql/benchmarks/tpch/Tests/10-explain.stable.out
sql/benchmarks/tpch/Tests/11-explain.stable.out
sql/benchmarks/tpch/Tests/14-explain.stable.out
sql/benchmarks/tpch/Tests/15-explain.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out
sql/benchmarks/tpch/Tests/19-explain.stable.out
tools/merovingian/daemon/client.c
tools/merovingian/daemon/connections.c
tools/merovingian/daemon/controlrunner.c
tools/merovingian/daemon/discoveryrunner.c
tools/merovingian/daemon/forkmserver.c
tools/merovingian/daemon/handlers.c
tools/merovingian/daemon/handlers.h
tools/merovingian/daemon/merovingian.c
tools/merovingian/daemon/merovingian.h
tools/merovingian/daemon/multiplex-funnel.c
tools/merovingian/utils/properties.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 1137 to 300 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -594,6 +594,85 @@ msab_getSingleStatus(const char *pathbuf
sdb->path = strdup(buf);
sdb->dbname = sdb->path + strlen(sdb->path) - strlen(dbname);
 
+
+   /* check the state of the server by looking at its gdk lock:
+* - if we can lock it, the server has crashed or isn't running
+* - if we can't open it because it's locked, the server is
+*   running
+* - to distinguish between a crash and proper shutdown, consult
+*   the uplog
+* - one exception to all above; if this is the same process, we
+*   cannot lock (it always succeeds), hence, if we have the
+*   same signature, we assume running if the uplog states so.
+*/
+   snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname,
+_sabaoth_internal_uuid);
+   if (stat(buf, &statbuf) != -1) {
+   /* database has the same process signature as ours, which
+* means, it must be us, rely on the uplog state */
+   snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
+   if ((f = fopen(log, "r")) != NULL) {
+   (void)fseek(f, -1, SEEK_END);
+   if (fread(data, 1, 1, f) != 1) {
+   /* the log is empty, assume no crash */
+   sdb->state = SABdbInactive;
+   } else if (data[0] == '\t') {
+   /* see if the database has finished starting */
+   snprintf(buf, sizeof(buf), "%s/%s/%s",
+pathbuf, dbname, STARTEDFILE);
+   if (stat(buf, &statbuf) == -1) {
+   sdb->state = SABdbStarting;
+   } else {
+   sdb->state = SABdbRunning;
+   }
+   } else { /* should be \n */
+   sdb->state = SABdbInactive;
+   }
+   (void)fclose(f);
+   }
+   } else if ((snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
".gdk_lock") > 0) & /* no typo */
+  ((fd = MT_lockf(buf, F_TEST, 4, 1)) == -2)) {
+   /* Locking failed; this can be because the lockfile couldn't
+* be created.  Probably there is no Mserver running for
+* that case also.
+*/
+   sdb->state = SABdbInactive;
+   } else if (fd == -1) {
+   /* file is locked, so mserver is running, see if the database
+* has finished starting */
+   snprintf(buf, sizeof(buf), "%s/%s/%s",
+pathbuf, dbname, STARTEDFILE);
+   if (stat(buf, &statbuf) == -1) {
+   sdb->state = SABdbStarting;
+   } else {
+   sdb->state = SABdbRunning;
+   }
+   } else {
+   /* file is not locked, check for a crash in the uplog */
+   snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
+   if ((f = fopen(log, "r")) != NULL) {
+   (void)fseek(f, -1, SEEK_END);
+   if (fread(data,

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-20 Thread Sjoerd Mullender
Changeset: 75271988a344 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=75271988a344
Removed Files:
tools/merovingian/daemon/peering.c
tools/merovingian/daemon/peering.h
Modified Files:
common/utils/msabaoth.c
common/utils/mutils.c
common/utils/mutils.h
monetdb5/modules/mal/mal_mapi.c
tools/merovingian/client/monetdb.c
tools/merovingian/daemon/Makefile.ag
tools/merovingian/daemon/client.c
tools/merovingian/daemon/controlrunner.c
tools/merovingian/daemon/discoveryrunner.h
tools/merovingian/daemon/forkmserver.c
tools/merovingian/daemon/handlers.c
tools/merovingian/daemon/handlers.h
tools/merovingian/daemon/merovingian.c
tools/merovingian/daemon/multiplex-funnel.c
tools/merovingian/daemon/multiplex-funnel.h
tools/merovingian/daemon/proxy.c
tools/merovingian/utils/control.c
tools/merovingian/utils/utils.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 1182 to 300 lines):

diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -675,7 +675,7 @@ msab_getSingleStatus(const char *pathbuf
(void)fclose(f);
}
} else if ((snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
".gdk_lock") > 0) & /* no typo */
-  ((fd = MT_lockf(buf, F_TLOCK, 4, 1)) == -2)) {
+  ((fd = MT_lockf(buf, F_TEST, 4, 1)) == -2)) {
/* Locking failed; this can be because the lockfile couldn't
 * be created.  Probably there is no Mserver running for
 * that case also.
@@ -694,7 +694,7 @@ msab_getSingleStatus(const char *pathbuf
} else {
/* locking succeed, check for a crash in the uplog */
snprintf(log, sizeof(log), "%s/%s/%s", pathbuf, dbname, 
UPLOGFILE);
-   if ((f = fdopen(fd, "r+")) != NULL) {
+   if ((f = fopen(log, "r")) != NULL) {
(void)fseek(f, -1, SEEK_END);
if (fread(data, 1, 1, f) != 1) {
/* the log is empty, assume no crash */
@@ -704,12 +704,10 @@ msab_getSingleStatus(const char *pathbuf
} else { /* should be \t */
sdb->state = SABdbCrashed;
}
-   /* release the lock */
-   MT_lockf(buf, F_ULOCK, 4, 1);
(void)fclose(f);
} else {
-   /* shouldn't happen */
-   close(fd);
+   /* no uplog, so presumably never started */
+   sdb->state = SABdbInactive;
}
}
snprintf(buf, sizeof(buf), "%s/%s/%s", pathbuf, dbname, 
MAINTENANCEFILE);
diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -356,6 +356,13 @@ MT_lockf(char *filename, int mode, off_t
ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY | 
LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &ov);
} else if (mode == F_LOCK) {
ret = LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &ov);
+   } else if (mode == F_TEST) {
+   ret = LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY | 
LOCKFILE_EXCLUSIVE_LOCK, 0, len, 0, &ov);
+   if (ret != 0) {
+   UnlockFileEx(fh, 0, len, 0, &ov);
+   close(fd);
+   return 0;
+   }
} else {
close(fd);
errno = EINVAL;
@@ -408,6 +415,7 @@ lockf(int fd, int cmd, off_t len)
 #endif
 /* returns -1 when locking failed,
  * returns -2 when the lock file could not be opened/created
+ * returns 0 when mode is F_TEST and the lock file was not locked
  * returns the (open) file descriptor to the file when locking
  * returns 0 when unlocking */
 int
@@ -420,7 +428,7 @@ MT_lockf(char *filename, int mode, off_t
 
if (lseek(fd, off, SEEK_SET) >= 0 &&
lockf(fd, mode, len) == 0) {
-   if (mode == F_ULOCK) {
+   if (mode == F_ULOCK || mode == F_TEST) {
close(fd);
return 0;
}
diff --git a/common/utils/mutils.h b/common/utils/mutils.h
--- a/common/utils/mutils.h
+++ b/common/utils/mutils.h
@@ -56,9 +56,10 @@ mutils_export char *dirname(char *path);
 
 #define MONETDB_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | 
S_IWOTH)
 
-#define F_TLOCK 2  /* test and lock a region for exclusive use */
-#define F_ULOCK 0  /* unlock a previously locked region */
-#define F_LOCK 1   /* lock a region for exclusive use */
+#define F_TEST 3   /* test a region for other processes lo

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-19 Thread Sjoerd Mullender
Changeset: 5083b232dd71 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5083b232dd71
Modified Files:
gdk/gdk_bbp.c
gdk/gdk_select.c
tools/merovingian/daemon/argvcmds.c
tools/merovingian/daemon/client.c
tools/merovingian/daemon/controlrunner.c
tools/merovingian/daemon/controlrunner.h
tools/merovingian/daemon/discoveryrunner.c
tools/merovingian/daemon/discoveryrunner.h
tools/merovingian/daemon/merovingian.c
tools/merovingian/daemon/merovingian.h
tools/merovingian/daemon/multiplex-funnel.c
tools/merovingian/daemon/proxy.c
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 740 to 300 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1210,7 +1210,10 @@ BBPheader(FILE *fp, oid *BBPoid, int *OI
bbpversion != GDKLIBRARY_OLDWKB &&
bbpversion != GDKLIBRARY_INSERTED &&
bbpversion != GDKLIBRARY_HEADED) {
-   GDKfatal("BBPinit: incompatible BBP version: expected 0%o, got 
0%o.", GDKLIBRARY, bbpversion);
+   GDKfatal("BBPinit: incompatible BBP version: expected 0%o, got 
0%o.\n"
+"This database was probably created by %s version of 
MonetDB.",
+GDKLIBRARY, bbpversion,
+bbpversion > GDKLIBRARY ? "a newer" : "a too old");
}
if (fgets(buf, sizeof(buf), fp) == NULL) {
GDKfatal("BBPinit: short BBP");
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -287,9 +287,10 @@ do {   
\
}   \
}   \
} else {\
-   while (p <= q && o < e) {   \
+   while (p < q && o < e) {\
p++;\
-   CAND;   \
+   if (p < q)  \
+   CAND;   \
}   \
}   \
 } while (0)
diff --git a/tools/merovingian/daemon/argvcmds.c 
b/tools/merovingian/daemon/argvcmds.c
--- a/tools/merovingian/daemon/argvcmds.c
+++ b/tools/merovingian/daemon/argvcmds.c
@@ -504,15 +504,16 @@ command_stop(confkeyval *ckv, int argc, 
/* wait up to 5 seconds for monetdbd to actually stop */
for (i = 0; i < 10; i++) {
tv.tv_sec = 0;
-   tv.tv_usec = 500;
+   tv.tv_usec = 50;
select(0, NULL, NULL, NULL, &tv);
-   if (kill(daemon, 0) == -1)
-   break;
-   if (i == 9) {
-   /* done waiting, use harsher measures */
-   kill(daemon, SIGKILL);
+   if (kill(daemon, 0) == -1) {
+   /* daemon has died */
+   return(0);
}
}
 
+   /* done waiting, use harsher measures */
+   kill(daemon, SIGKILL);
+
return(0);
 }
diff --git a/tools/merovingian/daemon/client.c 
b/tools/merovingian/daemon/client.c
--- a/tools/merovingian/daemon/client.c
+++ b/tools/merovingian/daemon/client.c
@@ -411,7 +411,7 @@ handleClient(void *data)
free(algos);
self->dead = 1;
return(e);
-   };
+   }
}
 
msab_freeStatus(&top);
@@ -532,34 +532,35 @@ acceptConnections(int sock, int usock)
}
 
switch (*buf) {
-   case '0':
-   /* nothing special, nothing to do */
+   case '0':
+   /* nothing special, nothing to do */
break;
-   case '1':
-   /* filedescriptor, no way */
-   close(msgsock);
-   Mfprintf(stderr, "client error: fd 
passing not supported\n");
+   case '1':
+   /* filedescriptor, no way */
+   close(msgsock);
+   Mfprintf(stderr, "client error: fd passing not 
supported\n");
continue;
-   default:
-   /* some unknown state */
-   close(msgsock);
-   Mfprintf(stderr, "client error: unknown 
initial byte\n");
+   default:
+

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-17 Thread Sjoerd Mullender
Changeset: a42b28ca118d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a42b28ca118d
Added Files:
sql/test/BugTracker-2016/Tests/ifthenelse-void.Bug-6075.sql
sql/test/BugTracker-2016/Tests/ifthenelse-void.Bug-6075.stable.err
sql/test/BugTracker-2016/Tests/ifthenelse-void.Bug-6075.stable.out
Modified Files:
gdk/gdk_calc.c
sql/test/BugTracker-2016/Tests/All
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 321 to 300 lines):

diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -13092,13 +13092,30 @@ VARcalcbetween(ValPtr ret, const ValReco
l += incr2; \
}   \
} while (0)
+#define IFTHENELSELOOP_oid()   \
+   do {\
+   for (i = 0; i < cnt; i++) { \
+   if (src[i] == bit_nil) {\
+   ((oid *) dst)[i] = oid_nil; \
+   nils++; \
+   } else if (src[i]) {\
+   ((oid *) dst)[i] = col1 ? ((oid *) col1)[k] : 
seq1; \
+   } else {\
+   ((oid *) dst)[i] = col2 ? ((oid *) col2)[k] : 
seq2; \
+   }   \
+   k += incr1; \
+   l += incr2; \
+   seq1 += incr1;  \
+   seq2 += incr2;  \
+   }   \
+   } while (0)
 
 static BAT *
 BATcalcifthenelse_intern(BAT *b,
 const void *col1, int incr1, const char *heap1,
-int width1, int nonil1,
+int width1, int nonil1, oid seq1,
 const void *col2, int incr2, const char *heap2,
-int width2, int nonil2,
+int width2, int nonil2, oid seq2,
 int tpe)
 {
BAT *bn;
@@ -13110,9 +13127,15 @@ BATcalcifthenelse_intern(BAT *b,
const bit *src;
BUN cnt = b->batCount;
 
-   assert(col2 != NULL);
-
-   bn = COLnew(b->hseqbase, tpe, cnt, TRANSIENT);
+   /* col1 and col2 can only be NULL for void columns */
+   assert(col1 != NULL || ATOMtype(tpe) == TYPE_oid);
+   assert(col2 != NULL || ATOMtype(tpe) == TYPE_oid);
+   assert(col1 != NULL || heap1 == NULL);
+   assert(col2 != NULL || heap2 == NULL);
+   assert(col1 != NULL || incr1 == 1);
+   assert(col2 != NULL || incr2 == 1);
+
+   bn = COLnew(b->hseqbase, ATOMtype(tpe), cnt, TRANSIENT);
if (bn == NULL)
return NULL;
 
@@ -13146,38 +13169,42 @@ BATcalcifthenelse_intern(BAT *b,
} else {
assert(heap1 == NULL);
assert(heap2 == NULL);
-   switch (bn->twidth) {
-   case 1:
-   IFTHENELSELOOP(bte);
-   break;
-   case 2:
-   IFTHENELSELOOP(sht);
-   break;
-   case 4:
-   IFTHENELSELOOP(int);
-   break;
-   case 8:
-   IFTHENELSELOOP(lng);
-   break;
-#ifdef HAVE_HGE
-   case 16:
-   IFTHENELSELOOP(hge);
-   break;
-#endif
-   default:
-   for (i = 0; i < cnt; i++) {
-   if (src[i] == bit_nil) {
-   p = nil;
-   nils++;
-   } else if (src[i]) {
-   p = ((const char *) col1) + k * width1;
-   } else {
-   p = ((const char *) col2) + l * width2;
+   if (ATOMtype(tpe) == TYPE_oid) {
+   IFTHENELSELOOP_oid();
+   } else {
+   switch (bn->twidth) {
+   case 1:
+   IFTHENELSELOOP(bte);
+   break;
+   case 2:
+   IFTHENELSELOOP(sht);
+   break;
+   case 4:
+   IFTHENELSELOOP(int);
+   break;
+   case 8:
+

MonetDB: Dec2016 - Merge with Jun2016 branch.

2016-10-14 Thread Sjoerd Mullender
Changeset: f7301d22c7d9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f7301d22c7d9
Added Files:
sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
sql/test/emptydb-upgrade/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.32bit
Modified Files:
sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/check.stable.out
sql/test/emptydb-upgrade-chain/Tests/check.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.int128
sql/test/emptydb/Tests/All
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.int128
Branch: Dec2016
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 14182 to 300 lines):

diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
@@ -39,10 +39,16 @@ Ready.
 \dSv
 \dSs
 \dSf
+\dn bam
 \dn json
 \dn profiler
 \dn sys
 \dn tmp
+\dSt bam.export
+\dSt bam.files
+\dSt bam.pg
+\dSt bam.rg
+\dSt bam.sq
 \dSt sys._columns
 \dSt sys._tables
 \dSt sys.args
@@ -55,6 +61,11 @@ Ready.
 \dSt sys.idxs
 \dSt sys.keys
 \dSt sys.keywords
+\dSt sys.netcdf_attrs
+\dSt sys.netcdf_dims
+\dSt sys.netcdf_files
+\dSt sys.netcdf_vardim
+\dSt sys.netcdf_vars
 \dSt sys.objects
 \dSt sys.privileges
 \dSt sys.schemas
@@ -94,6 +105,7 @@ Ready.
 \dSf sys."analyze"
 \dSf sys."bbp"
 \dSf sys."broadcast"
+\dSf sys."chi2prob"
 \dSf sys."clearrejects"
 \dSf sys."columnsize"
 \dSf sys."contains"
@@ -125,6 +137,8 @@ Ready.
 \dSf sys."environment"
 \dSf sys."epoch"
 \dSf sys."evalalgebra"
+\dSf sys."fitsattach"
+\dSf sys."fitsload"
 \dSf sys."flush_log"
 \dSf sys."fuse"
 \dSf sys."generate_series"
@@ -157,7 +171,12 @@ Ready.
 \dSf sys."isauuid"
 \dSf sys."left_shift"
 \dSf sys."left_shift_assign"
+\dSf sys."lidarattach"
+\dSf sys."lidarexport"
+\dSf sys."lidarload"
 \dSf sys."like"
+\dSf sys."listdir"
+\dSf sys."listdirpat"
 \dSf sys."malfunctions"
 \dSf sys."masklen"
 \dSf sys."mbr"
@@ -167,6 +186,8 @@ Ready.
 \dSf sys."ms_str"
 \dSf sys."ms_stuff"
 \dSf sys."ms_trunc"
+\dSf sys."netcdf_attach"
+\dSf sys."netcdf_importvar"
 \dSf sys."netmask"
 \dSf sys."network"
 \dSf sys."newurl"
@@ -194,6 +215,8 @@ Ready.
 \dSf sys."setmasklen"
 \dSf sys."setsession"
 \dSf sys."settimeout"
+\dSf sys."shpattach"
+\dSf sys."shpload"
 \dSf sys."shrink"
 \dSf sys."shutdown"
 \dSf sys."st_area"
@@ -308,6 +331,7 @@ Ready.
 \dSf sys."var"
 \dSf sys."var_pop"
 \dSf sys."var_samp"
+SYSTEM SCHEMA  bam
 SYSTEM SCHEMA  json
 SYSTEM SCHEMA profiler
 SYSTEM SCHEMA  sys
@@ -324,6 +348,11 @@ SYSTEM TABLE  sys.functions
 SYSTEM TABLE  sys.idxs
 SYSTEM TABLE  sys.keys
 SYSTEM TABLE  sys.keywords
+SYSTEM TABLE  sys.netcdf_attrs
+SYSTEM TABLE  sys.netcdf_dims
+SYSTEM TABLE  sys.netcdf_files
+SYSTEM TABLE  sys.netcdf_vardim
+SYSTEM TABLE  sys.netcdf_vars
 SYSTEM TABLE  sys.objects
 SYSTEM TABLE  sys.privileges
 SYSTEM TABLE  sys.schemas
@@ -380,6 +409,7 @@ SYSTEM FUNCTION sys.ceiling
 SYSTEM FUNCTION sys.char_length
 SYSTEM FUNCTION sys.character_length
 SYSTEM FUNCTION sys.charindex
+SYSTEM FUNCTION  sys.chi2prob
 SYSTEM FUNCTION  sys.clearrejects
 SYSTEM FUNCTION sys.code
 SYSTEM FUNCTION  sys.columnsize
@@ -435,6 +465,8 @@ SYSTEM FUNCTION  sys.epoch
 SYSTEM FUNCTION  sys.evalalgebra
 SYSTEM FUNCTION sys.exist
 SYSTEM FUNCTION sys.exp
+SYSTEM FUNCTION  sys.fitsattach
+SYSTEM FUNCTION  sys.fitsload
 SYSTEM FUNCTION sys.floor
 SYSTEM FUNCTION sys.flush_log
 SYSTEM FUNCTION  sys.fuse
@@ -481,7 +513,12 @@ SYSTEM FUNCTION  sys.left_shift
 SYSTEM FUNCTION  sys.left_shift_assign
 SYSTEM FUNCTION  sys.length
 SYSTEM FUNCTION sys.levenshtein
+SYSTEM FUNCTION  sys.lidarattach
+SYSTEM FUNCTION  sys.lidarexport
+SYSTEM FUNCTION  sys.lidarload
 SYSTEM FUNCTION  sys.like
+SYSTEM FUNCTION  sys.listdir
+SYSTEM FUNCTION  sys.listdirpat
 SYSTEM FUNCTION sys.local_timezone
 SYSTEM FUNCTION sys.localtime
 SYSTEM FUNCTION sys.localtimestamp
@@ -518,6 +555,8 @@ SYSTEM FUNCTION  sys.ms_round
 SYSTEM FUNCTION  sys.ms_str
 SYSTEM FUNCTION  sys.ms_stuff
 SYSTEM FUNCTION  sys.ms_trunc
+SYSTEM FUNCTION  sys.netcdf_attach
+SYSTEM FUNCTION  sys.netcdf_importvar
 SYSTEM FUNCTION  sys.netmask
 SYSTEM FUNCTION  sys.network
 SYSTEM FUNCTION  sys.newurl
@@ -574,6 +613,8 @@ SYSTEM FUNCTION  sys.sessions
 SYSTEM FUNCTION  sys.setmasklen
 SYSTEM FUNCTION  sys.setsession
 SYSTEM FUNCTION  sys.settimeout
+SYSTEM FUNCTION  sys.shpattach
+SYSTEM FUNCTION  sys.shpload
 SYSTEM FUNCTION  sys.shrink
 SYSTEM FUNCTION  sys.shutdown
 SYSTEM FUNCTION sys.sign
@@ -718,10 +759,16 @@ SYSTEM FUNCTION sys.weekofyear
 SYSTEM FUNCTION sys.xor
 S