Changeset: 7f7c20a99eef for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7f7c20a99eef
Modified Files:
        monetdb5/optimizer/opt_dataflow.c
        sql/test/Tests/setoptimizer.test
Branch: default
Log Message:

Inject the language.pass earlier in the dataflow plans.
This calls for an update of Mz.py to use sorting in .explain.function_histogram.


diffs (41 lines):

diff --git a/monetdb5/optimizer/opt_dataflow.c 
b/monetdb5/optimizer/opt_dataflow.c
--- a/monetdb5/optimizer/opt_dataflow.c
+++ b/monetdb5/optimizer/opt_dataflow.c
@@ -417,15 +417,21 @@ OPTdataflowImplementation(Client cntxt, 
                                // collect BAT variables garbage collected 
within the block
                                if( !simple)
                                        for( k=q->retc; k<q->argc; k++){
-                                               if (getState(states,q,k) & 
VAR2READ &&  getEndScope(mb,getArg(q,k)) == j && 
isaBatType(getVarType(mb,getArg(q,k))) )
-                                                               top = 
dflowGarbagesink(cntxt, mb, getArg(q,k), sink, top);
+                                               if (getState(states,q,k) & 
VAR2READ &&  getEndScope(mb,getArg(q,k)) == j && 
isaBatType(getVarType(mb,getArg(q,k))) ){
+                                                       InstrPtr r;
+                                                       top = 
dflowGarbagesink(cntxt, mb, getArg(q,k), sink, top);
+                                                       r = 
newInstruction(NULL,languageRef, passRef);
+                                                       getArg(r,0) = 
newTmpVariable(mb,TYPE_void);
+                                                       r= addArgument(mb,r, 
getArg(q,k));
+                                                       pushInstruction(mb,r);
+                                               }
                                        }
                        }
                        /* exit parallel block */
                        if ( ! simple){
                                // force the pending final garbage statements
-                               for( j=0; j<top; j++)
-                                       pushInstruction(mb,sink[j]);
+                               //for( j=0; j<top; j++)
+                                       //pushInstruction(mb,sink[j]);
                                q= newAssignment(mb);
                                q->barrier= EXITsymbol;
                                getArg(q,0) = flowblock;
diff --git a/sql/test/Tests/setoptimizer.test b/sql/test/Tests/setoptimizer.test
--- a/sql/test/Tests/setoptimizer.test
+++ b/sql/test/Tests/setoptimizer.test
@@ -29,7 +29,7 @@ query TTT nosort
 select * from optimizers()
 ----
 minimal_pipe
-optimizer.inline();optimizer.remap();optimizer.bincopyfrom();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();
+optimizer.inline();optimizer.remap();optimizer.bincopyfrom();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.garbageCollector();
 stable
 minimal_fast
 optimizer.minimalfast()
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to