Changeset: e393d33849c0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e393d33849c0 Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_exception.c monetdb5/modules/mal/mdb.c monetdb5/modules/mal/mdb.h monetdb5/modules/mal/mdb.mal sql/backends/monet5/sql_gencode.c sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out sql/test/BugTracker-2017/Tests/limit.Bug-6322.sql sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.sql Branch: grouping-analytics Log Message:
Merge with default diffs (215 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -11275,6 +11275,7 @@ stdout of test 'MAL-signatures` in direc [ "mdb", "getStackFrame", "pattern mdb.getStackFrame() (X_0:bat[:str], X_1:bat[:str]) ", "MDBgetStackFrame;", "Collect variable binding of current (n-th) stack frame." ] [ "mdb", "getStackFrame", "pattern mdb.getStackFrame(i:int) (X_0:bat[:str], X_1:bat[:str]) ", "MDBgetStackFrameN;", "" ] [ "mdb", "getStackTrace", "pattern mdb.getStackTrace() (X_0:bat[:int], X_1:bat[:str]) ", "MDBStkTrace;", "" ] +[ "mdb", "getVMsize", "pattern mdb.getVMsize():lng ", "MDBgetVMsize;", "Retrieve the max VM size" ] [ "mdb", "inspect", "pattern mdb.inspect(mod:str, fcn:str):void ", "MDBinspect;", "Run the debugger on a specific function" ] [ "mdb", "list", "pattern mdb.list(M:str, F:str):void ", "MDBlist3;", "Dump the routine M.F on standard out." ] [ "mdb", "list", "pattern mdb.list():void ", "MDBlist;", "Dump the current routine on standard out." ] @@ -11285,6 +11286,7 @@ stdout of test 'MAL-signatures` in direc [ "mdb", "setDebug", "pattern mdb.setDebug(flg:str):int ", "MDBsetDebugStr;", "Set the kernel debugging bit-set and return its previous value.\nThe recognized options are: threads, memory, properties,\nio, transactions, modules, algorithms, estimates." ] [ "mdb", "setTrace", "pattern mdb.setTrace(b:bit):void ", "MDBsetTrace;", "Turn on/off tracing of current routine" ] [ "mdb", "setTrace", "pattern mdb.setTrace(b:str):void ", "MDBsetVarTrace;", "Turn on/off tracing of a variable " ] +[ "mdb", "setVMsize", "pattern mdb.setVMsize(l:lng):lng ", "MDBsetVMsize;", "Manipulate the VM max size in MBs" ] [ "mdb", "start", "pattern mdb.start():void ", "MDBstart;", "Start interactive debugger" ] [ "mdb", "start", "pattern mdb.start(clientid:int):void ", "MDBstart;", "Start interactive debugger on a client" ] [ "mdb", "start", "pattern mdb.start(mod:str, fcn:str):void ", "MDBstartFactory;", "Start interactive debugger on a running factory" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -15678,6 +15678,7 @@ stdout of test 'MAL-signatures` in direc [ "mdb", "getStackFrame", "pattern mdb.getStackFrame() (X_0:bat[:str], X_1:bat[:str]) ", "MDBgetStackFrame;", "Collect variable binding of current (n-th) stack frame." ] [ "mdb", "getStackFrame", "pattern mdb.getStackFrame(i:int) (X_0:bat[:str], X_1:bat[:str]) ", "MDBgetStackFrameN;", "" ] [ "mdb", "getStackTrace", "pattern mdb.getStackTrace() (X_0:bat[:int], X_1:bat[:str]) ", "MDBStkTrace;", "" ] +[ "mdb", "getVMsize", "pattern mdb.getVMsize():lng ", "MDBgetVMsize;", "Retrieve the max VM size" ] [ "mdb", "inspect", "pattern mdb.inspect(mod:str, fcn:str):void ", "MDBinspect;", "Run the debugger on a specific function" ] [ "mdb", "list", "pattern mdb.list(M:str, F:str):void ", "MDBlist3;", "Dump the routine M.F on standard out." ] [ "mdb", "list", "pattern mdb.list():void ", "MDBlist;", "Dump the current routine on standard out." ] @@ -15688,6 +15689,7 @@ stdout of test 'MAL-signatures` in direc [ "mdb", "setDebug", "pattern mdb.setDebug(flg:str):int ", "MDBsetDebugStr;", "Set the kernel debugging bit-set and return its previous value.\nThe recognized options are: threads, memory, properties,\nio, transactions, modules, algorithms, estimates." ] [ "mdb", "setTrace", "pattern mdb.setTrace(b:bit):void ", "MDBsetTrace;", "Turn on/off tracing of current routine" ] [ "mdb", "setTrace", "pattern mdb.setTrace(b:str):void ", "MDBsetVarTrace;", "Turn on/off tracing of a variable " ] +[ "mdb", "setVMsize", "pattern mdb.setVMsize(l:lng):lng ", "MDBsetVMsize;", "Manipulate the VM max size in MBs" ] [ "mdb", "start", "pattern mdb.start():void ", "MDBstart;", "Start interactive debugger" ] [ "mdb", "start", "pattern mdb.start(clientid:int):void ", "MDBstart;", "Start interactive debugger on a client" ] [ "mdb", "start", "pattern mdb.start(mod:str, fcn:str):void ", "MDBstartFactory;", "Start interactive debugger on a running factory" ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1464,6 +1464,7 @@ str MDBgetExceptionReason(str *ret, str str MDBgetExceptionVariable(str *ret, str *msg); str MDBgetStackFrame(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p); str MDBgetStackFrameN(Client cntxt, MalBlkPtr m, MalStkPtr s, InstrPtr p); +str MDBgetVMsize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBinspect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBlist(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBlist3(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); @@ -1474,6 +1475,7 @@ str MDBsetCatch(Client cntxt, MalBlkPtr str MDBsetDebug(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBsetDebugStr(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBsetTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str MDBsetVMsize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBsetVarTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBstart(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str MDBstartFactory(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); 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 @@ -415,7 +415,7 @@ DFLOWworker(void *T) void *null = NULL; /* only collect one error (from one thread, needed for stable testing) */ if (!ATOMIC_PTR_CAS(&flow->error, &null, error)) - GDKfree(error); + freeException(error); /* after an error we skip the rest of the block */ q_enqueue(flow->done, fe); continue; diff --git a/monetdb5/mal/mal_exception.c b/monetdb5/mal/mal_exception.c --- a/monetdb5/mal/mal_exception.c +++ b/monetdb5/mal/mal_exception.c @@ -56,15 +56,20 @@ static str createExceptionInternal(enum static str createExceptionInternal(enum malexception type, const char *fcn, const char *format, va_list ap) { - char *message; + char *message, local[GDKMAXERRLEN]; int len; // if there is an error we allow memory allocation once again #ifndef NDEBUG GDKsetmallocsuccesscount(-1); #endif message = GDKmalloc(GDKMAXERRLEN); - if (message == NULL) + if (message == NULL){ + /* Leave a message behind in the logging system */ + len = snprintf(local, GDKMAXERRLEN, "%s:%s:", exceptionNames[type], fcn); + len = vsnprintf(local + len, GDKMAXERRLEN, format, ap); + fprintf(stderr, "%s", local); return M5OutOfMemory; /* last resort */ + } len = snprintf(message, GDKMAXERRLEN, "%s:%s:", exceptionNames[type], fcn); if (len >= GDKMAXERRLEN) /* shouldn't happen */ return message; diff --git a/monetdb5/modules/mal/mdb.c b/monetdb5/modules/mal/mdb.c --- a/monetdb5/modules/mal/mdb.c +++ b/monetdb5/modules/mal/mdb.c @@ -131,6 +131,31 @@ MDBsetTrace(Client cntxt, MalBlkPtr mb, } str +MDBgetVMsize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p) +{ + lng *ret = getArgReference_lng(stk, p, 0); + + (void) cntxt; + (void) mb; /* still unused */ + *ret = GDK_vm_maxsize / 1024/1024; + return MAL_SUCCEED; +} + +/* Set the max VM in MBs */ +str +MDBsetVMsize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p) +{ + lng *ret = getArgReference_lng(stk, p, 0); + + (void) cntxt; + (void) mb; /* still unused */ + *ret = GDK_vm_maxsize; + if( *getArgReference_lng(stk, p, 1) > 1024 ) + GDK_vm_maxsize = *getArgReference_lng(stk, p, 1) * 1024 * 1024; + return MAL_SUCCEED; +} + +str MDBsetVarTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p) { str v; diff --git a/monetdb5/modules/mal/mdb.h b/monetdb5/modules/mal/mdb.h --- a/monetdb5/modules/mal/mdb.h +++ b/monetdb5/modules/mal/mdb.h @@ -28,6 +28,8 @@ mal_export str MDBstartFactory(Client cn mal_export str MDBstop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); mal_export str MDBinspect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); mal_export str CMDmodules(bat *bid); +mal_export str MDBsetVMsize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +mal_export str MDBgetVMsize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); mal_export str MDBsetTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); mal_export str MDBsetVarTrace(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); mal_export str MDBgetDebugFlags(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); diff --git a/monetdb5/modules/mal/mdb.mal b/monetdb5/modules/mal/mdb.mal --- a/monetdb5/modules/mal/mdb.mal +++ b/monetdb5/modules/mal/mdb.mal @@ -28,6 +28,14 @@ command modules():bat[:str] address CMDmodules comment "List available modules"; +pattern getVMsize():lng +address MDBgetVMsize +comment "Retrieve the max VM size"; + +pattern setVMsize(l:lng):lng +address MDBsetVMsize +comment "Manipulate the VM max size in MBs"; + pattern setTrace(b:bit):void address MDBsetTrace comment "Turn on/off tracing of current routine"; diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1054,7 +1054,7 @@ backend_create_sql_func(backend *be, sql f->sql++; r = rel_parse(m, f->s, f->query, m_instantiate); if (r) - r = sql_processrelation(m, r, 0); + r = sql_processrelation(m, r, 1); if (r) r = rel_distribute(m, r); if (r) diff --git a/sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out b/sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out --- a/sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out +++ b/sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out @@ -44,7 +44,7 @@ stdout of test 'crash_correlated_subquer [ "sys", 2000, "querylog_catalog", true, 8 ] [ "sys", 2000, "querylog_calls", true, 9 ] [ "sys", 2000, "querylog_history", true, 16 ] -[ "sys", 2000, "tracelog", true, 13 ] +[ "sys", 2000, "tracelog", true, 2 ] [ "sys", 2000, "ids", true, 7 ] [ "sys", 2000, "dependencies_vw", true, 8 ] [ "sys", 2000, "dependency_owners_on_schemas", true, 4 ] @@ -97,7 +97,7 @@ stdout of test 'crash_correlated_subquer [ "sys", 2000, "querylog_catalog", true, 8 ] [ "sys", 2000, "querylog_calls", true, 9 ] [ "sys", 2000, "querylog_history", true, 16 ] -[ "sys", 2000, "tracelog", true, 13 ] +[ "sys", 2000, "tracelog", true, 2 ] [ "sys", 2000, "ids", true, 7 ] [ "sys", 2000, "dependencies_vw", true, 8 ] [ "sys", 2000, "dependency_owners_on_schemas", true, 4 ] diff --git a/sql/test/BugTracker-2017/Tests/limit.Bug-6322.sql b/sql/test/BugTracker-2017/Tests/limit.Bug-6322.sql --- a/sql/test/BugTracker-2017/Tests/limit.Bug-6322.sql +++ b/sql/test/BugTracker-2017/Tests/limit.Bug-6322.sql @@ -9,5 +9,5 @@ from where true limit 14) as subq_0 where (true) - or ((select pc from sys.tracelog) + or ((select stmt from sys.tracelog) is not NULL); diff --git a/sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.sql b/sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.sql --- a/sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.sql +++ b/sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.sql @@ -9,7 +9,7 @@ from where true limit 134) as subq_0 where (true) - or ((select pc from sys.tracelog) + or ((select stmt from sys.tracelog) is not NULL); select _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list