[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