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

Reply via email to