Changeset: 2ca33821a803 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ca33821a803
Added Files:
sql/test/Users/Tests/privs.sql.src
sql/test/Users/Tests/privs.stable.err
sql/test/Users/Tests/privs.stable.out
sql/test/Users/Tests/privs2.sql.src
sql/test/Users/Tests/privs2.stable.err
sql/test/Users/Tests/privs2.stable.out
sql/test/Users/Tests/test_privs2_p1.SQL.py
sql/test/Users/Tests/test_privs2_p1.stable.err
sql/test/Users/Tests/test_privs2_p1.stable.out
sql/test/Users/Tests/test_privs2_p2.SQL.py
sql/test/Users/Tests/test_privs2_p2.stable.err
sql/test/Users/Tests/test_privs2_p2.stable.out
sql/test/Users/Tests/test_privs_p1.SQL.py
sql/test/Users/Tests/test_privs_p1.stable.err
sql/test/Users/Tests/test_privs_p1.stable.out
sql/test/Users/Tests/test_privs_p2.SQL.py
sql/test/Users/Tests/test_privs_p2.stable.err
sql/test/Users/Tests/test_privs_p2.stable.out
sql/test/Users/privs.sql
sql/test/Users/privs2.sql
sql/test/Users/test_privs.sql
sql/test/Users/test_privs2.sql
Modified Files:
NT/monetdb_config.h.in
debian/monetdb5-sql.default
debian/monetdb5-sql.init.d
gdk/gdk_aggr.c
gdk/gdk_calc.c
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_resource.c
monetdb5/mal/mal_resource.h
sql/backends/monet5/datacell/opt_datacell.h
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_gencode.h
sql/backends/monet5/sql_scenario.c
sql/common/sql_backend.c
sql/common/sql_backend.h
sql/server/rel_dump.c
sql/server/rel_dump.h
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_updates.c
sql/storage/bat/bat_storage.c
sql/storage/store.c
sql/test/Users/Tests/All
testing/Mtest.py.in
tools/merovingian/client/monetdb.1
Branch: ssdb
Log Message:
merged with Feb2013
diffs (truncated from 2360 to 300 lines):
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -611,6 +611,11 @@
/* Define to 1 if the system has the type `_Bool'. */
#define HAVE__BOOL 1
+#ifdef _WIN64
+/* Define to 1 if you have the `_mul128' function. */
+#define HAVE__MUL128 1
+#endif
+
/* Define if you have _sys_siglist */
/* #undef HAVE__SYS_SIGLIST */
diff --git a/debian/monetdb5-sql.default b/debian/monetdb5-sql.default
--- a/debian/monetdb5-sql.default
+++ b/debian/monetdb5-sql.default
@@ -5,8 +5,5 @@
# should monetdbd be started at system startup (yes/no)
STARTUP="no"
-# should all databases be started (yes/no)
-START_ALL_DBS="no"
-
# the database farm where databases are kept
DBFARM=/var/lib/monetdb
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
@@ -71,7 +71,7 @@ case "$1" in
if running; then
echo "$NAME is already running"
- exit 1
+ exit 0
fi
init
@@ -83,10 +83,6 @@ case "$1" in
else
echo " ERROR, $NAME didn't start"
fi
-
- if [ "$START_ALL_DBS" = "yes" ]; then
- sudo -u monetdb "/usr/bin/monetdb start -a"
- fi
;;
stop)
if running ; then
@@ -94,7 +90,7 @@ case "$1" in
start-stop-daemon --stop --pidfile $PIDFILE --exec $DAEMON -c
monetdb:monetdb -- stop ${DBFARM}
echo "$NAME."
else
- echo "$NAME not running (${PIDFILE}."
+ echo "$NAME not running."
fi
;;
restart)
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -406,7 +406,10 @@ dosum(const void *values, int nonil, oid
if (nils == 0 && nil_if_empty) {
/* figure out whether there were any empty groups
* (that result in a nil value) */
- seen[ngrp >> 5] |= ~0U << (ngrp & 0x1F); /* fill last slot */
+ if (ngrp & 0x1F) {
+ /* fill last slot */
+ seen[ngrp >> 5] |= ~0U << (ngrp & 0x1F);
+ }
for (i = 0, ngrp = (ngrp + 31) / 32; i < ngrp; i++) {
if (seen[i] != ~0U) {
nils = 1;
@@ -888,7 +891,10 @@ doprod(const void *values, oid seqb, BUN
if (nils == 0 && nil_if_empty) {
/* figure out whether there were any empty groups
* (that result in a nil value) */
- seen[ngrp >> 5] |= ~0U << (ngrp & 0x1F); /* fill last slot */
+ if (ngrp & 0x1F) {
+ /* fill last slot */
+ seen[ngrp >> 5] |= ~0U << (ngrp & 0x1F);
+ }
for (i = 0, ngrp = (ngrp + 31) / 32; i < ngrp; i++) {
if (seen[i] != ~0U) {
nils = 1;
diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -3382,6 +3382,48 @@ mul_##TYPE1##_##TYPE2##_##TYPE3(const TY
return nils; \
}
+#ifdef HAVE__MUL128
+#include <intrin.h>
+#pragma intrinsic(_mul128)
+
+#define MUL_2TYPE_lng(TYPE1, TYPE2) \
+static BUN \
+mul_##TYPE1##_##TYPE2##_lng(const TYPE1 *lft, int incr1, \
+ const TYPE2 *rgt, int incr2, \
+ lng *dst, BUN cnt, BUN start, \
+ BUN end, const oid *cand, \
+ const oid *candend, oid candoff, \
+ int abort_on_error) \
+{ \
+ BUN i, j, k; \
+ BUN nils = 0; \
+ lng clo, chi; \
+ \
+ CANDLOOP(dst, k, lng_nil, 0, start); \
+ for (i = start * incr1, j = start * incr2, k = start; \
+ k < end; i += incr1, j += incr2, k++) { \
+ CHECKCAND(dst, k, candoff, lng_nil); \
+ if (lft[i] == TYPE1##_nil || rgt[j] == TYPE2##_nil) { \
+ dst[k] = lng_nil; \
+ nils++; \
+ } else { \
+ clo = _mul128((lng) lft[i], \
+ (lng) rgt[j], &chi); \
+ if ((chi == 0 && clo >= 0) || \
+ (chi == -1 && clo < 0 && clo != lng_nil)) { \
+ dst[k] = clo; \
+ } else { \
+ if (abort_on_error) \
+ ON_OVERFLOW(TYPE1, TYPE2, "*"); \
+ dst[k] = lng_nil; \
+ nils++; \
+ } \
+ } \
+ } \
+ CANDLOOP(dst, k, lng_nil, end, cnt); \
+ return nils; \
+}
+#else
#define MUL_2TYPE_lng(TYPE1, TYPE2) \
static BUN \
mul_##TYPE1##_##TYPE2##_lng(const TYPE1 *lft, int incr1, \
@@ -3411,6 +3453,7 @@ mul_##TYPE1##_##TYPE2##_lng(const TYPE1
CANDLOOP(dst, k, lng_nil, end, cnt); \
return nils; \
}
+#endif
#define MUL_2TYPE_float(TYPE1, TYPE2, TYPE3) \
static BUN \
diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -323,13 +323,8 @@ DFLOWworker(void *t)
flow->status[i].blocks = 0;
flow->status[i].hotclaim = fe->hotclaim;
flow->status[i].argclaim += fe->hotclaim;
- if (fnxt) {
- if (flow->error)
- q_enqueue(flow->done, fnxt);
- else
- q_enqueue(todo, fnxt);
- }
fnxt = flow->status + i;
+ break;
}
MT_lock_unset(&flow->flowlock, "MALworker");
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -560,8 +560,9 @@ str runMALsequence(Client cntxt, MalBlkP
}
}
- if ( cntxt->idx > 1 )
- MALresourceFairness(cntxt,mb,0);
+ //Ensure we spread system resources over multiple users as well.
+ //if ( cntxt->idx > 1 )
+ //MALresourceFairness(cntxt,mb,0);
runtimeProfileBegin(cntxt, mb, stk, stkpc, &runtimeProfile, 1);
if (pci->recycle > 0)
stk->clk = GDKusec();
diff --git a/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c
--- a/monetdb5/mal/mal_resource.c
+++ b/monetdb5/mal/mal_resource.c
@@ -190,7 +190,6 @@ MALresourceFairness(Client cntxt, MalBlk
unsigned int delay;
lng clk;
int threads;
- double factor;
int delayed= 0;
#ifdef ATOMIC_LOCK
#ifndef PTHREAD_MUTEX_INITIALIZER
@@ -225,27 +224,26 @@ MALresourceFairness(Client cntxt, MalBlk
if ( clk > DELAYUNIT ) {
PARDEBUG mnstr_printf(GDKstdout, "#delay %d initial "LLFMT"n",
cntxt->idx, clk);
+ ATOMIC_DEC_int(running, runningLock, "MALresourceFairness");
while (clk > 0) {
- /* always keep one running to avoid all waiting */
- if (ATOMIC_GET_int(running, runningLock,
"MALresourceFairness") < 2)
- break;
/* speed up wake up when we have memory */
- rss = GDKmem_cursize();
if (rss < MEMORY_THRESHOLD * monet_memory)
break;
- factor = ((double) rss) / (MEMORY_THRESHOLD *
monet_memory);
- delay = (unsigned int) (DELAYUNIT * (factor > 1.0 ? 1.0
: factor));
- delay = (unsigned int) ( ((double)delay) *
ATOMIC_GET_int(running, runningLock, "MALresourceFairness") / threads);
- ATOMIC_DEC_int(running, runningLock,
"MALresourceFairness");
+ /* always keep one running to avoid all waiting */
+ if ( running < 2) /* dirty read of shared variable is
safe here */
+ //if ( (r =ATOMIC_GET_int(running, runningLock,
"MALresourceFairness")) < 2)
+ break;
+ delay = (unsigned int) ( ((double)DELAYUNIT * running)
/ threads);
if (delay) {
if ( delayed++ == 0){
mnstr_printf(GDKstdout, "#delay
%d initial %u["LLFMT"] memory "SZFMT"[%f]\n", cntxt->idx, delay, clk, rss,
MEMORY_THRESHOLD * monet_memory);
mnstr_flush(GDKstdout);
}
MT_sleep_ms(delay);
+ rss = GDKmem_cursize();
}
- ATOMIC_INC_int(running, runningLock,
"MALresourceFairness");
clk -= DELAYUNIT;
}
+ ATOMIC_INC_int(running, runningLock, "MALresourceFairness");
}
}
diff --git a/monetdb5/mal/mal_resource.h b/monetdb5/mal/mal_resource.h
--- a/monetdb5/mal/mal_resource.h
+++ b/monetdb5/mal/mal_resource.h
@@ -23,7 +23,7 @@
#include "mal_interpreter.h"
#define TIMESLICE 2000 /* ms */
-#define DELAYUNIT 100 /* ms delay in parallel processing decissions */
+#define DELAYUNIT 5 /* ms delay in parallel processing decisions */
#define USE_MAL_ADMISSION
#ifdef USE_MAL_ADMISSION
diff --git a/sql/backends/monet5/datacell/opt_datacell.h
b/sql/backends/monet5/datacell/opt_datacell.h
--- a/sql/backends/monet5/datacell/opt_datacell.h
+++ b/sql/backends/monet5/datacell/opt_datacell.h
@@ -23,7 +23,7 @@
#include "opt_support.h"
#include "opt_pipes.h"
-#define OPTDEBUGdatacell if (1)
-//#define OPTDEBUGdatacell if (optDebug & (1 << DEBUG_OPT_DATACELL))
+//#define OPTDEBUGdatacell if (1)
+#define OPTDEBUGdatacell if (optDebug & (1 << DEBUG_OPT_DATACELL))
opt_export int OPTdatacellImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
#endif
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1124,8 +1124,6 @@ rel_parse_value(mvc *m, char *query, cha
m->argc = 0;
m->sym = NULL;
m->errstr[0] = '\0';
- /* via views we give access to protected objects */
- m->user_id = USER_MONETDB;
(void) sqlparse(m); /* blindly ignore errors */
@@ -2741,8 +2739,6 @@ sql_parse(mvc *m, sql_allocator *sa, cha
m->sym = NULL;
m->errstr[0] = '\0';
m->errstr[ERRSIZE-1] = '\0';
- /* via views we give access to protected objects */
- m->user_id = USER_MONETDB;
/* create private allocator */
m->sa = (sa)?sa:sa_create();
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -7614,21 +7614,20 @@ RAstatement(Client cntxt, MalBlkPtr mb,
mvc *m = NULL;
str msg = getSQLContext(cntxt, mb, &m, &b);
sql_rel *rel;
-
- assert(m->sa == NULL);
- m->sa = sa_create();
- rel = rel_read(m, *expr, &pos);
+ list *refs;
+
+ if (!m->sa)
+ m->sa = sa_create();
+ refs = sa_list(m->sa);
+ rel = rel_read(m, *expr, &pos, refs);
if (rel) {
int oldvtop = cntxt->curprg->def->vtop;
int oldstop = cntxt->curprg->def->stop;
stmt *s;
char *msg;
- rel_print(m, rel, 0);
- if (*opt) {
+ if (*opt)
rel = rel_optimizer(m, rel);
- rel_print(m, rel, 0);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list