Changeset: c7bbfdf12a9a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c7bbfdf12a9a
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_debugger.h
        monetdb5/modules/mal/mdb.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_mitosis.h
        sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_execute.h
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_scenario.c
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit
        sql/test/BugTracker-2012/Tests/querycache.Bug-3212.stable.out
        sql/test/BugTracker/Tests/caching.SF-1651599.stable.out
        sql/test/BugTracker/Tests/insert_not_exists.SF-1380287.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
Branch: sfcgal
Log Message:

Merge with default


diffs (truncated from 1308 to 300 lines):

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
@@ -1562,7 +1562,6 @@ int OPTmacroImplementation(Client cntxt,
 int OPTmatpackImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 int OPTmergetableImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 int OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
-int OPTmitosisPlanOverdue(Client cntxt, str fname);
 int OPTmultiplexImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 str OPTmultiplexSimple(Client cntxt, MalBlkPtr mb);
 str OPTorcam(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
@@ -2444,7 +2443,7 @@ str rsColumnRef;
 int rule_fromstr(const char *buf, int *len, rule **d);
 int rule_tostr(str *buf, int *len, const rule *r);
 str runMAL(Client c, MalBlkPtr mb, MalBlkPtr mbcaller, MalStkPtr env);
-str runMALDebugger(Client cntxt, Symbol s);
+str runMALDebugger(Client cntxt, MalBlkPtr mb);
 str runMALdataflow(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, 
MalStkPtr stk);
 str runMALsequence(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, 
MalStkPtr stk, MalStkPtr env, InstrPtr pcicaller);
 str runScenario(Client c);
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -1144,10 +1144,26 @@ mdbTrapClient(Client cntxt, MalBlkPtr mb
  * creation of a minimal execution environment first.
  */
 str
-runMALDebugger(Client cntxt, Symbol s)
+runMALDebugger(Client cntxt, MalBlkPtr mb)
 {
+       str oldprompt= cntxt->prompt;
+       int oldtrace = cntxt->itrace;
+       int oldopt = cntxt->debugOptimizer;
+       int oldhist = cntxt->curprg->def->keephistory;
+       str msg;
+
        cntxt->itrace = 'n';
-       return runMAL(cntxt, s->def, 0, 0);
+       cntxt->debugOptimizer = TRUE;
+       cntxt->curprg->def->keephistory = TRUE;
+
+       msg = runMAL(cntxt, mb, 0, 0);
+
+       cntxt->curprg->def->keephistory = oldhist;
+       cntxt->prompt =oldprompt;
+       cntxt->itrace = oldtrace;
+       cntxt->debugOptimizer = oldopt;
+       mnstr_printf(cntxt->fdout, "mdb>#EOD\n");
+       return msg;
 }
 
 /* Utilities
diff --git a/monetdb5/mal/mal_debugger.h b/monetdb5/mal/mal_debugger.h
--- a/monetdb5/mal/mal_debugger.h
+++ b/monetdb5/mal/mal_debugger.h
@@ -28,7 +28,7 @@ mal_export int mdbSession(void);
 mal_export void mdbDump(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 mal_export void printStack(stream *f, MalBlkPtr mb, MalStkPtr s);
 
-mal_export str runMALDebugger(Client cntxt, Symbol s);
+mal_export str runMALDebugger(Client cntxt, MalBlkPtr mb);
 
 mal_export str debugOptimizers(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 mal_export void debugLifespan(Client cntxt, MalBlkPtr mb, Lifespan span);
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
@@ -249,7 +249,7 @@ MDBinspect(Client cntxt, MalBlkPtr mb, M
 
        if (s == NULL)
                throw(MAL, "mdb.inspect", RUNTIME_SIGNATURE_MISSING);
-       return runMALDebugger(cntxt, s);
+       return runMALDebugger(cntxt, s->def);
 }
 
 /*
diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c
--- a/monetdb5/optimizer/opt_mitosis.c
+++ b/monetdb5/optimizer/opt_mitosis.c
@@ -29,20 +29,6 @@ eligible(MalBlkPtr mb)
        return 1;
 }
 
-/* The plans are marked with the concurrent user load.
- *  * If this has changed, we may want to recompile the query
- *   */
-int
-OPTmitosisPlanOverdue(Client cntxt, str fname)
-{
-    Symbol s;
-
-    s = findSymbol(cntxt->nspace, userRef, fname);
-    if(s )
-        return s->def->activeClients != MCactiveClients();
-    return 0;
-}
-
 int
 OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
 {
diff --git a/monetdb5/optimizer/opt_mitosis.h b/monetdb5/optimizer/opt_mitosis.h
--- a/monetdb5/optimizer/opt_mitosis.h
+++ b/monetdb5/optimizer/opt_mitosis.h
@@ -15,7 +15,6 @@
 #define MINPARTCNT 100000      /* minimal record count per partition */
 
 opt_export int OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr p);
-opt_export int OPTmitosisPlanOverdue(Client cntxt, str fname);
 
 #define OPTDEBUGmitosis  if ( optDebug & ((lng)1 <<DEBUG_OPT_MITOSIS) )
 
diff --git a/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out 
b/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
--- a/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
+++ b/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
@@ -44,11 +44,11 @@ end user.s2_1;
 % mal # name
 % clob # type
 % 88 # length
-function user.s4_1(A0:sht,A1:sht):void;
+function user.s3_1(A0:sht,A1:sht):void;
     X_11:void := querylog.define("explain select 
fuse(1000,2000);","sequential_pipe",5);
     X_3:int := udf.fuse(A0,A1);
     sql.resultSet(".L","fuse_single_value","int",32,0,7,X_3);
-end user.s4_1;
+end user.s3_1;
 #select fuse(1000,2000);
 % .L # table_name
 % fuse_single_value # name
@@ -60,11 +60,11 @@ end user.s4_1;
 % mal # name
 % clob # type
 % 94 # length
-function user.s6_1(A0:int,A1:int):void;
+function user.s4_1(A0:int,A1:int):void;
     X_11:void := querylog.define("explain select 
fuse(1000000,2000000);","sequential_pipe",5);
     X_3:lng := udf.fuse(A0,A1);
     sql.resultSet(".L","fuse_single_value","bigint",64,0,7,X_3);
-end user.s6_1;
+end user.s4_1;
 #select fuse(1000000,2000000);
 % .L # table_name
 % fuse_single_value # name
@@ -94,7 +94,7 @@ end user.s6_1;
 % mal # name
 % clob # type
 % 97 # length
-function user.s14_1():void;
+function user.s8_1():void;
     X_41:void := querylog.define("explain select fuse(a,b) from 
udf_fuse;","sequential_pipe",27);
     X_24 := bat.new(nil:oid,nil:str);
     X_32 := bat.append(X_24,"sys.L");
@@ -120,13 +120,13 @@ function user.s14_1():void;
     X_21 := algebra.projection(C_2,X_20);
     X_22:bat[:sht] := batudf.fuse(X_14,X_21);
     sql.resultSet(X_32,X_34,X_36,X_38,X_40,X_22);
-end user.s14_1;
+end user.s8_1;
 #explain select fuse(c,d) from udf_fuse;
 % .explain # table_name
 % mal # name
 % clob # type
 % 97 # length
-function user.s15_1():void;
+function user.s9_1():void;
     X_41:void := querylog.define("explain select fuse(c,d) from 
udf_fuse;","sequential_pipe",27);
     X_24 := bat.new(nil:oid,nil:str);
     X_32 := bat.append(X_24,"sys.L");
@@ -152,13 +152,13 @@ function user.s15_1():void;
     X_21 := algebra.projection(C_2,X_20);
     X_22:bat[:int] := batudf.fuse(X_14,X_21);
     sql.resultSet(X_32,X_34,X_36,X_38,X_40,X_22);
-end user.s15_1;
+end user.s9_1;
 #explain select fuse(e,f) from udf_fuse;
 % .explain # table_name
 % mal # name
 % clob # type
 % 97 # length
-function user.s16_1():void;
+function user.s10_1():void;
     X_41:void := querylog.define("explain select fuse(e,f) from 
udf_fuse;","sequential_pipe",27);
     X_24 := bat.new(nil:oid,nil:str);
     X_32 := bat.append(X_24,"sys.L");
@@ -184,7 +184,7 @@ function user.s16_1():void;
     X_21 := algebra.projection(C_2,X_20);
     X_22:bat[:lng] := batudf.fuse(X_14,X_21);
     sql.resultSet(X_32,X_34,X_36,X_38,X_40,X_22);
-end user.s16_1;
+end user.s10_1;
 #select fuse(a,b) from udf_fuse;
 % sys.L # table_name
 % fuse_a # name
diff --git a/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out 
b/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
--- a/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
+++ b/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
@@ -83,7 +83,7 @@ end user.s2_1;
 % mal # name
 % clob # type
 % 101 # length
-function user.s10_1():void;
+function user.s6_1():void;
     X_33:void := querylog.define("explain select reverse(x) from 
udf_reverse;","sequential_pipe",22);
     X_17 := bat.new(nil:oid,nil:str);
     X_25 := bat.append(X_17,"sys.L");
@@ -104,7 +104,7 @@ function user.s10_1():void;
     X_14 := algebra.projection(C_2,X_13);
     X_15:bat[:str] := batudf.reverse(X_14);
     sql.resultSet(X_25,X_27,X_29,X_31,X_32,X_15);
-end user.s10_1;
+end user.s6_1;
 #select reverse(x) from udf_reverse;
 % sys.L # table_name
 % reverse_x # name
diff --git a/sql/backends/monet5/sql_execute.c 
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -62,6 +62,154 @@
 * The tricky part for this statement is to ensure that the SQL statement
 * is executed within the client context specified. This leads to context 
juggling.
 */
+
+/*
+ * The trace operation collects the events in the BATs
+ * and creates a secondary result set upon termination
+ * of the query. 
+ */
+static void
+SQLsetTrace(Client cntxt)
+{
+       InstrPtr q, resultset;
+       InstrPtr tbls, cols, types, clen, scale;
+       MalBlkPtr mb = cntxt->curprg->def;
+       int k;
+
+       startTrace("sql_traces");
+       initTrace();
+
+       for(k= mb->stop-1; k>0; k--)
+               if( getInstrPtr(mb,k)->token ==ENDsymbol)
+                       break;
+       mb->stop=k;
+
+       q= newStmt(mb, "profiler", "stoptrace");
+       q= pushStr(mb,q,"sql_traces");
+       /* cook a new resultSet instruction */
+       resultset = newInstruction(mb,ASSIGNsymbol);
+       setModuleId(resultset, sqlRef);
+       setFunctionId(resultset, resultSetRef);
+       getArg(resultset,0)= newTmpVariable(mb,TYPE_int);
+
+       /* build table defs */
+       tbls = newStmt(mb,batRef, newRef);
+       setVarType(mb, getArg(tbls,0), newBatType(TYPE_oid, TYPE_str));
+       tbls = pushType(mb, tbls, TYPE_oid);
+       tbls = pushType(mb, tbls, TYPE_str);
+       resultset= pushArgument(mb,resultset, getArg(tbls,0));
+
+       q= newStmt(mb,batRef,appendRef);
+       q= pushArgument(mb,q,getArg(tbls,0));
+       q= pushStr(mb,q,".trace");
+       k= getArg(q,0);
+
+       q= newStmt(mb,batRef,appendRef);
+       q= pushArgument(mb,q,k);
+       q= pushStr(mb,q,".trace");
+
+       /* build colum defs */
+       cols = newStmt(mb,batRef, newRef);
+       setVarType(mb, getArg(cols,0), newBatType(TYPE_oid, TYPE_str));
+       cols = pushType(mb, cols, TYPE_oid);
+       cols = pushType(mb, cols, TYPE_str);
+       resultset= pushArgument(mb,resultset, getArg(cols,0));
+
+       q= newStmt(mb,batRef,appendRef);
+       q= pushArgument(mb,q,getArg(cols,0));
+       q= pushStr(mb,q,"usec");
+       k= getArg(q,0);
+
+       q= newStmt(mb,batRef,appendRef);
+       q= pushArgument(mb,q, getArg(cols,0));
+       q= pushStr(mb,q,"statement");
+
+       /* build type defs */
+       types = newStmt(mb,batRef, newRef);
+       setVarType(mb, getArg(types,0), newBatType(TYPE_oid, TYPE_str));
+       types = pushType(mb, types, TYPE_oid);
+       types = pushType(mb, types, TYPE_str);
+       resultset= pushArgument(mb,resultset, getArg(types,0));
+
+       q= newStmt(mb,batRef,appendRef);
+       q= pushArgument(mb,q, getArg(types,0));
+       q= pushStr(mb,q,"bigint");
+       k= getArg(q,0);
+
+       q= newStmt(mb,batRef,appendRef);
+       q= pushArgument(mb,q, k);
+       q= pushStr(mb,q,"clob");
+
+       /* build scale defs */
+       clen = newStmt(mb,batRef, newRef);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to