Changeset: df87d68eaac3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=df87d68eaac3
Modified Files:
        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_scenario.c
        
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/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
Branch: default
Log Message:

Removal of old code
- Mitosis does not report on overdue plans, because we move towards JIT 
optimization
- Query recompilation is removed, for the same reason
- Some minor code/comment cleanup


diffs (truncated from 594 to 300 lines):

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
@@ -448,29 +448,17 @@ cleanup_engine:
        if (m->type == Q_SCHEMA)
                qc_clean(m->qc);
        if (msg) {
-               enum malexception type = getExceptionType(msg);
-               if (type == OPTIMIZER) {
-                       MSresetInstructions(c->curprg->def, 1);
-                       freeVariables(c, c->curprg->def, NULL, be->vtop);
-                       be->language = oldlang;
-                       assert(c->glb == 0 || c->glb == oldglb);        /* 
detect leak */
-                       c->glb = oldglb;
-                       if ( msg)
-                               GDKfree(msg);
-                       return SQLrecompile(c, be); // retry compilation
-               } else {
-                       /* don't print exception decoration, just the message */
-                       char *n = NULL;
-                       char *o = msg;
-                       while ((n = strchr(o, '\n')) != NULL) {
-                               *n = '\0';
-                               mnstr_printf(c->fdout, "!%s\n", 
getExceptionMessage(o));
-                               *n++ = '\n';
-                               o = n;
-                       }
-                       if (*o != 0)
-                               mnstr_printf(c->fdout, "!%s\n", 
getExceptionMessage(o));
+               /* don't print exception decoration, just the message */
+               char *n = NULL;
+               char *o = msg;
+               while ((n = strchr(o, '\n')) != NULL) {
+                       *n = '\0';
+                       mnstr_printf(c->fdout, "!%s\n", getExceptionMessage(o));
+                       *n++ = '\n';
+                       o = n;
                }
+               if (*o != 0)
+                       mnstr_printf(c->fdout, "!%s\n", getExceptionMessage(o));
                showErrors(c);
                m->session->status = -10;
        }
diff --git a/sql/backends/monet5/sql_execute.h 
b/sql/backends/monet5/sql_execute.h
--- a/sql/backends/monet5/sql_execute.h
+++ b/sql/backends/monet5/sql_execute.h
@@ -14,7 +14,6 @@ sql5_export str SQLstatementREST(Client 
 sql5_export str SQLstatementIntern(Client c, str *expr, str nme, bit execute, 
bit output, res_table **result);
 sql5_export str SQLexecutePrepared(Client c, backend *be, cq *q);
 sql5_export str SQLengineIntern(Client c, backend *be);
-sql5_export str SQLrecompile(Client c, backend *be);
 sql5_export str RAstatement(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str RAstatement2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 
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
@@ -896,14 +896,16 @@ SQLsetDebugger(Client c, mvc *m, int ono
  * of the query. 
  */
 static void
-SQLsetTrace(backend *be, Client cntxt, bit onoff)
+SQLsetTrace(Client cntxt, mvc *m, bit onoff)
 {
        InstrPtr q, resultset;
        InstrPtr tbls, cols, types, clen, scale;
        MalBlkPtr mb = cntxt->curprg->def;
        int k;
 
-       (void) be;
+       if ( m == 0 || !(m->emod & mod_trace))
+               return;
+
        if (onoff) {
                q= newStmt(mb, "profiler", "starttrace");
                q= pushStr(mb,q,"sql_traces");
@@ -1034,7 +1036,8 @@ cachable(mvc *m, stmt *s)
 
 /*
  * The core part of the SQL interface, parse the query and
- * prepare the intermediate code.
+ * store away the template (non)optimized code in the query cache
+ * and the MAL module
  */
 
 str
@@ -1203,25 +1206,15 @@ SQLparser(Client c)
                m->emode = m_inplace;
                scanner_query_processed(&(m->scanner));
        } else if (caching(m) && cachable(m, NULL) && m->emode != m_prepare && 
(be->q = qc_match(m->qc, m->sym, m->args, m->argc, m->scanner.key ^ 
m->session->schema->base.id)) != NULL) {
-               // look for outdated plans
-               if ( OPTmitosisPlanOverdue(c, be->q->name) ){
-                       msg = SQLCacheRemove(c, be->q->name);
-                       qc_delete(be->mvc->qc, be->q);
-                       be->q = NULL;
-                       goto recompilequery;
-               }
-
-               if (m->emod & mod_debug)
-                       SQLsetDebugger(c, m, TRUE);
-               if (m->emod & mod_trace)
-                       SQLsetTrace(be, c, TRUE);
+               SQLsetDebugger(c, m, TRUE);
+               SQLsetTrace(c, m, TRUE);
                if (!(m->emod & (mod_explain | mod_debug | mod_trace )))
                        m->emode = m_inplace;
                scanner_query_processed(&(m->scanner));
        } else {
                sql_rel *r;
                stmt *s;
-recompilequery:
+
                r = sql_symbol2relation(m, m->sym);
                s = sql_relation2stmt(m, r);
 
@@ -1233,11 +1226,10 @@ recompilequery:
                }
                assert(s);
 
-               /* generate the MAL code */
-               if (m->emod & mod_trace)
-                       SQLsetTrace(be, c, TRUE);
-               if (m->emod & mod_debug)
-                       SQLsetDebugger(c, m, TRUE);
+               /* generate the MAL prelude codea in the query wrapper */
+               SQLsetTrace(c, m, TRUE);
+               SQLsetDebugger(c, m, TRUE);
+
                if (!caching(m) || !cachable(m, s)) {
                        scanner_query_processed(&(m->scanner));
                        if (backend_callinline(be, c, s, 0) == 0) {
@@ -1246,7 +1238,6 @@ recompilequery:
                                err = 1;
                        }
                } else {
-                       /* generate a factory instantiation */
                        char *q = query_cleaned(QUERY(m->scanner));
                        be->q = qc_insert(m->qc, m->sa, /* the allocator */
                                          r,    /* keep relational query */
@@ -1275,21 +1266,22 @@ recompilequery:
        if (err)
                m->session->status = -10;
        if (err == 0) {
+               /* no parsing error encountered */
                if (be->q) {
                        if (m->emode == m_prepare)
+                               /* For prepared queries, return a table with 
result set structure*/
                                err = mvc_export_prepare(m, c->fdout, be->q, 
"");
                        else if (m->emode == m_inplace) {
                                /* everything ready for a fast call */
-                       } else {        /* call procedure generation (only in 
cache mode) */
+                       } else {        
+                               /* call procedure generation (only in cache 
mode) */
                                backend_call(be, c, be->q);
                        }
                }
 
                /* In the final phase we add any debugging control */
-               if (m->emod & mod_trace)
-                       SQLsetTrace(be, c, FALSE);
-               if (m->emod & mod_debug)
-                       SQLsetDebugger(c, m, FALSE);
+               SQLsetTrace(c, m, FALSE);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to