Changeset: bc927f5eef71 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bc927f5eef71
Removed Files:
sql/backends/monet5/sql_emptyset.c
sql/backends/monet5/sql_emptyset.h
Modified Files:
clients/Tests/exports.stable.out
clients/mapiclient/Tests/stethoscope--help.stable.err
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_function.c
monetdb5/mal/mal_resource.c
monetdb5/optimizer/opt_aliases.c
monetdb5/optimizer/opt_costModel.c
monetdb5/optimizer/opt_inline.c
monetdb5/optimizer/opt_wrapper.c
sql/backends/monet5/Makefile.ag
sql/backends/monet5/datacell/basket.c
sql/backends/monet5/datacell/petrinet.c
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_optimizer.c
Branch: default
Log Message:
Merged from Feb2013
diffs (truncated from 983 to 300 lines):
diff --git a/clients/mapiclient/Tests/stethoscope--help.stable.err
b/clients/mapiclient/Tests/stethoscope--help.stable.err
--- a/clients/mapiclient/Tests/stethoscope--help.stable.err
+++ b/clients/mapiclient/Tests/stethoscope--help.stable.err
@@ -10,10 +10,9 @@ stderr of test 'stethoscope--help` in di
# 10:36:09 > Mtimeout -timeout 60 stethoscope --help
# 10:36:09 >
-stethoscope [options] +[trace options] {<mod>.<fcn>}
+stethoscope [options] [dbname] +[trace options] {<mod>.<fcn>}
-d | --dbname=<database_name>
-u | --user=<user>
- -P | --password=<password>
-p | --port=<portnr>
-h | --host=<hostname>
-? | --help
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
@@ -331,8 +331,9 @@ DFLOWworker(void *t)
}
MT_lock_unset(&flow->flowlock, "MALworker");
- MALresourceFairness(flow->cntxt, flow->mb, usec);
q_enqueue(flow->done, fe);
+ if ( fnxt == 0)
+ MALresourceFairness(flow->cntxt, flow->mb, usec);
}
GDKfree(GDKerrbuf);
GDKsetbuf(0);
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -694,7 +694,6 @@ setLifespan(MalBlkPtr mb)
int *blk;
Lifespan span= newLifespan(mb);
- memset((char*) span,0, sizeof(LifespanRecord)* mb->vtop);
prop = PropertyIndex("transparent");
blk= (int *) GDKzalloc(sizeof(int)*mb->vtop);
diff --git a/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c
--- a/monetdb5/mal/mal_resource.c
+++ b/monetdb5/mal/mal_resource.c
@@ -189,20 +189,20 @@ MALresourceFairness(Client cntxt, MalBlk
if ( rss < MEMORY_THRESHOLD * monet_memory)
return;
- clk = GDKusec();
if ( usec )
/* worker reporting time spent ! */
- clk = (clk - usec) / 1000;
+ clk = usec / 1000;
else {
/* interpreter calling without timing */
/* punish based on total duration of call */
- clk = (clk-mb->starttime)/1000;
+ clk = (GDKusec() - mb->starttime)/1000;
if ( clk <= TIMESLICE)
/* use fake time for penalty */
clk = DELAYUNIT;
}
if ( clk >= DELAYUNIT ) {
+ PARDEBUG mnstr_printf(GDKstdout, "#delay %d initial "LLFMT"n",
cntxt->idx, clk);
while (clk > 0) {
/* always keep one running to avoid all waiting */
if (running < 2)
diff --git a/monetdb5/optimizer/opt_aliases.c b/monetdb5/optimizer/opt_aliases.c
--- a/monetdb5/optimizer/opt_aliases.c
+++ b/monetdb5/optimizer/opt_aliases.c
@@ -74,7 +74,6 @@ OPTaliasesImplementation(Client cntxt, M
mb->stmt[i]= NULL;
mb->stop= k;
/*
- * @-
* The second phase is constant alias replacement should be implemented.
*/
GDKfree(span);
diff --git a/monetdb5/optimizer/opt_costModel.c
b/monetdb5/optimizer/opt_costModel.c
--- a/monetdb5/optimizer/opt_costModel.c
+++ b/monetdb5/optimizer/opt_costModel.c
@@ -32,28 +32,6 @@
varSetProp(mb, getArg(p,Z), rowsProp, op_eq,
VALset(&v,TYPE_wrd,&k));\
}
/*
- * SQL specific back propagation of table size may be needed to avoid
- * the empty-set optimizer to through away a BAT we need.
- */
-static void
-OPTbackpropagate(MalBlkPtr mb, int i, int idx){
- wrd rows;
- InstrPtr p;
-
- rows = getVarRows(mb, idx);
- if (rows == -1)
- return;
- for( ; i > 0; i--){
- p = getInstrPtr(mb,i);
- if (getFunctionId(p) == setWriteModeRef){
- if (getVarRows(mb, getArg(p,1)) == 0) {
- ValRecord v, *vp = VALset(&v, TYPE_wrd, &rows);
- varSetProp(mb, getArg(p,1), rowsProp, op_eq,
vp);
- }
- }
- }
-}
-/*
* The cost will be used in many places to make decisions.
* Access should be fast.
* The SQL front-end also makes the BAT index available as the
@@ -69,9 +47,6 @@ OPTcostModelImplementation(Client cntxt,
int i;
wrd k, c1, c2;
InstrPtr p;
- str sortrevRef= putName("sortReverse",11);
- str sortrevTailRef= putName("sortReverseTail",15);
- str projectRef= putName("project",7);
(void) cntxt;
(void) stk;
@@ -83,13 +58,15 @@ OPTcostModelImplementation(Client cntxt,
for (i = 0; i < mb->stop; i++) {
p = getInstrPtr(mb, i);
if (getModuleId(p)==algebraRef) {
- if (getFunctionId(p) == markTRef ||
- getFunctionId(p) == markHRef ||
+ if (getFunctionId(p) == selectRef ||
+ getFunctionId(p) == subselectRef ||
+ getFunctionId(p) == thetaselectRef ||
+ getFunctionId(p) == thetasubselectRef) {
+ newRows(1,1, (c1 > 100 ? c1 / 2 +1: c1),0);
+ } else if (
getFunctionId(p) == selectNotNilRef ||
getFunctionId(p) == sortRef ||
- getFunctionId(p) == sortTailRef ||
- getFunctionId(p) == sortrevRef ||
- getFunctionId(p) == sortrevTailRef ||
+ getFunctionId(p) == subsortRef ||
getFunctionId(p) == projectRef ){
newRows(1,1,c1,0);
} else if(getFunctionId(p) == unionRef ||
@@ -98,21 +75,22 @@ OPTcostModelImplementation(Client cntxt,
} else if (getFunctionId(p)== kdifferenceRef) {
newRows(1,2,(c1==0?0:c2==0?c1: c1 - c2 < 0 ? 1
: c1 - c2+1),0);
} else if (getFunctionId(p) == joinRef ||
+ getFunctionId(p) == leftfetchjoinRef ||
getFunctionId(p) == leftjoinRef ||
+ getFunctionId(p) == bandjoinRef ||
+ getFunctionId(p) == leftfetchjoinPathRef ||
getFunctionId(p) == leftjoinPathRef ) {
/* assume 1-1 joins */
newRows(1,2,(c1 < c2 ? c1 : c2),0);
- } else if (getFunctionId(p) == semijoinRef ) {
+ } else if (getFunctionId(p) == semijoinRef ||
+ getFunctionId(p) ==
semijoinPathRef) {
/* assume 1-1 semijoins */
newRows(1,2,(c1 < c2? c1 : c2),0);
- } else if (getFunctionId(p) == selectRef ||
- getFunctionId(p) == uselectRef ||
- getFunctionId(p) == thetaselectRef ||
- getFunctionId(p) == thetauselectRef) {
- newRows(1,1, (c1 > 100 ? c1 / 2 +1: c1),0);
- } else if (getFunctionId(p) == crossRef) {
+ } else
+ if (getFunctionId(p) == crossRef) {
newRows(1,2,((log((double) c1) + log((double)
c2) > log(INT_MAX) ? INT_MAX : c1 * c2 +1)),0);
- } else if (getFunctionId(p) == tuniqueRef ) {
+ } else
+ if (getFunctionId(p) == tuniqueRef ) {
newRows(1,1,( c1 < 50 ? c1 : c1 / 10+1),0);
}
} else if (getModuleId(p) == batcalcRef) {
@@ -131,7 +109,6 @@ OPTcostModelImplementation(Client cntxt,
newRows(1,1, c1,0);
} else if (getModuleId(p) == batRef) {
if (getFunctionId(p) == reverseRef ||
- getFunctionId(p) == setWriteModeRef ||
getFunctionId(p) == hashRef ||
getFunctionId(p) == mirrorRef) {
newRows(1,1, c1,0);
@@ -153,29 +130,23 @@ OPTcostModelImplementation(Client cntxt,
if( isaBatType(getArgType(mb,p,2)) ){
/* insert BAT */
newRows(1,2, (c1 + c2+1),1);
- OPTbackpropagate(mb,i,getArg(p,1));
} else {
/* insert scalars */
newRows(1,1, (c1 +1),1);
- OPTbackpropagate(mb,i,getArg(p,1));
}
} else if (getFunctionId(p) == deleteRef){
if( isaBatType(getArgType(mb,p,2)) ){
/* delete BAT */
newRows(1,2, (c1 - c2 ==0? 1: c1-c2),1);
- OPTbackpropagate(mb,i,getArg(p,1));
} else {
/* insert scalars */
newRows(1,1, (c1==1?1: c1-1),1);
- OPTbackpropagate(mb,i,getArg(p,1));
}
- OPTbackpropagate(mb,i,getArg(p,1));
} else if (getFunctionId(p) == insertRef){
newRows(1,1,( c1 + 1),0); /* faked */
- OPTbackpropagate(mb,i,getArg(p,1));
}
} else if (getModuleId(p)==groupRef) {
- if (getFunctionId(p) ==newRef) {
+ if (getFunctionId(p) ==subgroupRef ) {
newRows(1,1,( c1 / 10+1),0);
} else {
newRows(1,1, c1,0);
diff --git a/monetdb5/optimizer/opt_inline.c b/monetdb5/optimizer/opt_inline.c
--- a/monetdb5/optimizer/opt_inline.c
+++ b/monetdb5/optimizer/opt_inline.c
@@ -45,23 +45,18 @@ OPTinlineImplementation(Client cntxt, Ma
int actions = 0;
(void) p;
+ (void)stk;
for (i = 1; i < mb->stop; i++) {
q = getInstrPtr(mb, i);
if( q->blk ){
sig = getInstrPtr(q->blk,0);
/*
- * @-
* Time for inlining functions that are used in
multiplex operations.
* They are produced by SQL compiler.
*/
- OPTDEBUGinline {
- mnstr_printf(cntxt->fdout,"#check inline
statement\n");
-
printInstruction(cntxt->fdout,mb,0,q,LIST_MAL_ALL);
-
printInstruction(cntxt->fdout,q->blk,0,sig,LIST_MAL_ALL);
- }
- if( getModuleId(q) == malRef &&
- getFunctionId(q)== multiplexRef &&
+ if( getFunctionId(q)== multiplexRef &&
+ getModuleId(q) == malRef &&
OPTinlineMultiplex(cntxt,mb,q)){
OPTDEBUGinline {
@@ -72,7 +67,6 @@ OPTinlineImplementation(Client cntxt, Ma
varSetProp(mb, getArg(q,0), inlineProp, op_eq,
NULL);
} else
/*
- * @-
* Check if the function definition is tagged as being
inlined.
*/
if (sig->token == FUNCTIONsymbol &&
@@ -84,10 +78,10 @@ OPTinlineImplementation(Client cntxt, Ma
OPTDEBUGinline {
mnstr_printf(cntxt->fdout,"#inline
function at %d\n",i);
printFunction(cntxt->fdout, mb, 0,
LIST_MAL_ALL);
+
printInstruction(cntxt->fdout,q->blk,0,sig,LIST_MAL_ALL);
}
} else
/*
- * @-
* Check if the local call is tagged as being inlined.
*/
if (varGetProp(mb, getArg(q,0), inlineProp) != NULL) {
@@ -97,14 +91,11 @@ OPTinlineImplementation(Client cntxt, Ma
OPTDEBUGinline {
mnstr_printf(cntxt->fdout,"#inlined
called at %d\n",i);
printFunction(cntxt->fdout, mb, 0,
LIST_MAL_ALL);
+
printInstruction(cntxt->fdout,q->blk,0,sig,LIST_MAL_ALL);
}
}
}
}
- (void)stk;
- OPTDEBUGinline
- mnstr_printf(cntxt->fdout,"#mal program: %d MAL instr %d vars
(" SZFMT " K)\n",mb->stop,mb->vtop,
- ((sizeof( MalBlkRecord) +mb->ssize * sizeof(InstrRecord)+
mb->vtop* sizeof(VarRecord) + mb->vsize*sizeof(VarPtr)+1023)/1024));
return actions;
}
diff --git a/monetdb5/optimizer/opt_wrapper.c b/monetdb5/optimizer/opt_wrapper.c
--- a/monetdb5/optimizer/opt_wrapper.c
+++ b/monetdb5/optimizer/opt_wrapper.c
@@ -183,7 +183,7 @@ str OPTwrapper (Client cntxt, MalBlkPtr
printFunction(cntxt->fdout,mb,0,LIST_MAL_STMT | LIST_MAPI);
}
DEBUGoptimizers
- mnstr_printf(cntxt->fdout,"#optimizer %-11s %3d actions %5d MAL
instructions (%3ld K) " LLFMT" ms\n", optimizer, actions, mb->stop,
+ mnstr_printf(cntxt->fdout,"#optimizer %-11s %3d actions %5d MAL
instructions ("SZFMT" K) " LLFMT" usec\n", optimizer, actions, mb->stop,
((sizeof( MalBlkRecord) +mb->ssize * sizeof(InstrRecord)+
mb->vtop * sizeof(int) /* argv estimate */ +mb->vtop* sizeof(VarRecord) +
mb->vsize*sizeof(VarPtr)+1023)/1024),
t);
QOTupdateStatistics(getModuleId(q),actions,t);
diff --git a/sql/backends/monet5/Makefile.ag b/sql/backends/monet5/Makefile.ag
--- a/sql/backends/monet5/Makefile.ag
+++ b/sql/backends/monet5/Makefile.ag
@@ -44,8 +44,7 @@ lib__sql = {
sql_gencode.c sql_gencode.h \
sql_optimizer.c sql_optimizer.h \
sql_result.c sql_result.h \
- sql_readline.c sql_readline.h \
- sql_emptyset.c sql_emptyset.h
+ sql_readline.c sql_readline.h
LIBS = ../../server/libsqlserver \
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list