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 checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list