[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: default - Removal of old code
From:       Martin Kersten <commits+mk=cwi.nl () monetdb ! org>
Date:       2016-04-28 21:00:40
Message-ID: hg.df87d68eaac3.1461877240.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic