Changeset: fd9fab835b66 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fd9fab835b66
Modified Files:
monetdb5/optimizer/opt_garbageCollector.c
sql/test/Tests/setoptimizer.stable.out
Branch: Apr2019
Log Message:
Cleanup of the garbagecollector renaming of variables.
diffs (93 lines):
diff --git a/monetdb5/optimizer/opt_garbageCollector.c
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -25,12 +25,14 @@
str
OPTgarbageCollectorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci)
{
- int i, j, limit, slimit;
+ int arg, i, j, limit, slimit;
InstrPtr p, *old;
int actions = 0;
char buf[256];
lng usec = GDKusec();
str msg = MAL_SUCCEED;
+ str nme;
+ char *used;
//int *varlnk, *stmtlnk;
(void) pci;
@@ -49,6 +51,10 @@ OPTgarbageCollectorImplementation(Client
}
*/
+ used = (char*) GDKzalloc(sizeof(char) * mb->vtop);
+ if ( used == NULL)
+ throw(MAL, "optimizer.garbagecollector", SQLSTATE(HY001)
MAL_MALLOC_FAIL);
+
old= mb->stmt;
limit = mb->stop;
slimit = mb->ssize;
@@ -91,6 +97,19 @@ OPTgarbageCollectorImplementation(Client
p->typechk = TYPE_UNKNOWN;
/* Set the program counter to ease profiling */
p->pc = i;
+ /* rename all temporaries used for ease of debugging and
profile interpretation */
+ for( j = 0; j< p->retc; j++){
+ arg = getArg(p,j);
+ if( used[arg] ==0){
+ nme = getVarName(mb,arg);
+ if( nme[0] == 'X' && nme[1] == '_' )
+ snprintf(nme, IDLENGTH, "X_%d",
arg);
+ else
+ if( nme[0] == 'C' && nme[1] == '_' )
+ snprintf(nme, IDLENGTH,"C_%d",
arg);
+ used[arg] ++;
+ }
+ }
if ( p->barrier == RETURNsymbol){
pushInstruction(mb, p);
@@ -134,6 +153,7 @@ OPTgarbageCollectorImplementation(Client
//GDKfree(varlnk);
//GDKfree(stmtlnk);
GDKfree(old);
+ GDKfree(used);
#ifdef DEBUG_OPT_GARBAGE
{ int k;
fprintf(stderr, "#Garbage collected BAT variables \n");
@@ -152,14 +172,6 @@ OPTgarbageCollectorImplementation(Client
}
#endif
- /* rename all temporaries for ease of debugging */
- for( i = 0; i < mb->vtop; i++)
- if( sscanf(getVarName(mb,i),"X_%d", &j) == 1)
- snprintf(getVarName(mb,i),IDLENGTH,"X_%d",i);
- else
- if( sscanf(getVarName(mb,i),"C_%d", &j) == 1)
- snprintf(getVarName(mb,i),IDLENGTH,"C_%d",i);
-
/* leave a consistent scope admin behind */
setVariableScope(mb);
/* Defense line against incorrect plans */
@@ -168,6 +180,7 @@ OPTgarbageCollectorImplementation(Client
chkFlow(mb);
chkDeclarations(mb);
}
+
/* keep all actions taken as a post block comment */
usec = GDKusec()- usec;
snprintf(buf,256,"%-20s actions=%2d time=" LLFMT "
usec","garbagecollector",actions, usec);
diff --git a/sql/test/Tests/setoptimizer.stable.out
b/sql/test/Tests/setoptimizer.stable.out
--- a/sql/test/Tests/setoptimizer.stable.out
+++ b/sql/test/Tests/setoptimizer.stable.out
@@ -69,7 +69,7 @@ Ready.
[ "default_pipe",
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.deadcode();optimizer.wlc();optimizer.garbageCollector();",
"stable" ]
[ "volcano_pipe",
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.volcano();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.deadcode();optimizer.wlc();optimizer.garbageCollector();",
"stable" ]
[ "no_mitosis_pipe",
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.deadcode();optimizer.wlc();optimizer.garbageCollector();",
"stable" ]
-[ "sequential_pipe",
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.deadcode();optimizer.wlc();optimizer.garbageCollector();",
"stable" ]
+[ "sequential_pipe",
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.postfix();optimizer.deadcode();optimizer.wlc();optimizer.garbageCollector();",
"stable" ]
# 02:57:35 >
# 02:57:35 > "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list