Changeset: c714c2ad281a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c714c2ad281a
Modified Files:
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/optimizer/Tests/dataflow3.stable.out
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_projectionpath.c
Branch: default
Log Message:

Add more defense lines in optimizers
avoiding double calls to some


diffs (120 lines):

diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -64,10 +64,10 @@ Ready.
 % 126 # length
 function user.s8_1():void;
     X_38:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",12);
-barrier X_58 := language.dataflow();
+barrier X_56 := language.dataflow();
     X_0 := sql.mvc();
     (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0,nil:str);
-exit X_58;
+exit X_56;
     X_25 := sql.append(X_0,"sys","ttt","a",X_21);
     X_30 := sql.append(X_25,"sys","ttt","b",X_22);
     X_33 := sql.append(X_30,"sys","ttt","c",X_23);
@@ -125,10 +125,10 @@ end user.s8_1;
 % 126 # length
 function user.s24_1():void;
     X_38:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",12);
-barrier X_58 := language.dataflow();
+barrier X_56 := language.dataflow();
     X_0 := sql.mvc();
     (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0,nil:str);
-exit X_58;
+exit X_56;
     X_25 := sql.append(X_0,"sys","ttt","a",X_21);
     X_30 := sql.append(X_25,"sys","ttt","b",X_22);
     X_35 := aggr.count(X_23);
diff --git a/monetdb5/optimizer/Tests/dataflow3.stable.out 
b/monetdb5/optimizer/Tests/dataflow3.stable.out
--- a/monetdb5/optimizer/Tests/dataflow3.stable.out
+++ b/monetdb5/optimizer/Tests/dataflow3.stable.out
@@ -26,13 +26,13 @@ Ready.
 
 #mdb.list("user","s1_0");
 function user.s1_0():void;
-barrier X_31 := language.dataflow();
+barrier X_30 := language.dataflow();
     X17 := bat.new(:lng);
     X54 := bat.new(:lng);
     X55 := bat.new(:lng);
     X56 := bat.new(:lng);
     X57 := bat.new(:lng);
-exit X_31;
+exit X_30;
     X59 := 
remote.connect("mapi:monetdb://volund.ins.cwi.nl:50000/sn4","monetdb","monetdb","msql");
     remote.register(X59,"user","s1_0map");
     X66 := remote.put(X59,X54);
diff --git a/monetdb5/optimizer/opt_emptybind.c 
b/monetdb5/optimizer/opt_emptybind.c
--- a/monetdb5/optimizer/opt_emptybind.c
+++ b/monetdb5/optimizer/opt_emptybind.c
@@ -45,6 +45,8 @@ OPTemptybindImplementation(Client cntxt,
        str sch,tbl;
        int etop= 0, esize= 256;
 
+       if ( optimizerIsApplied(mb,"emptybind") )
+               return 0;
        // use an instruction reference table to keep
        // track of where 'emptybind' results are produced
        marked = (int *) GDKzalloc(mb->vsize * sizeof(int));
diff --git a/monetdb5/optimizer/opt_matpack.c b/monetdb5/optimizer/opt_matpack.c
--- a/monetdb5/optimizer/opt_matpack.c
+++ b/monetdb5/optimizer/opt_matpack.c
@@ -24,6 +24,8 @@ OPTmatpackImplementation(Client cntxt, M
        char buf[256];
        lng usec = GDKusec();
 
+       if ( !optimizerIsApplied(mb,"multiplex") )
+               return 0;
        (void) pci;
        (void) cntxt;
        (void) stk;             /* to fool compilers */
diff --git a/monetdb5/optimizer/opt_mergetable.c 
b/monetdb5/optimizer/opt_mergetable.c
--- a/monetdb5/optimizer/opt_mergetable.c
+++ b/monetdb5/optimizer/opt_mergetable.c
@@ -1569,7 +1569,7 @@ OPTmergetableImplementation(Client cntxt
        char buf[256];
        lng usec = GDKusec();
 
-       if( optimizerIsApplied(mb, "mergetable") || 
optimizerIsApplied(mb,"projectionpath"))
+       if( optimizerIsApplied(mb, "mergetable") || 
!optimizerIsApplied(mb,"mitosis"))
                return 0;
        old = mb->stmt;
        oldtop= mb->stop;
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
@@ -43,7 +43,7 @@ OPTmitosisImplementation(Client cntxt, M
        char buf[256];
        lng usec = GDKusec();
 
-       if ( optimizerIsApplied(mb,"mitosis") || 
optimizerIsApplied(mb,"projectionpath"))
+       if ( optimizerIsApplied(mb,"mitosis") )
                return 0;
        (void) cntxt;
        (void) stk;
diff --git a/monetdb5/optimizer/opt_multiplex.c 
b/monetdb5/optimizer/opt_multiplex.c
--- a/monetdb5/optimizer/opt_multiplex.c
+++ b/monetdb5/optimizer/opt_multiplex.c
@@ -41,6 +41,8 @@ OPTexpandMultiplex(Client cntxt, MalBlkP
        int tt;
        int bat = (getModuleId(pci) == batmalRef) ;
 
+       if ( optimizerIsApplied(mb,"multiplex"))
+               return 0;
        (void) cntxt;
        (void) stk;
        for (i = 0; i < pci->retc; i++) {
diff --git a/monetdb5/optimizer/opt_projectionpath.c 
b/monetdb5/optimizer/opt_projectionpath.c
--- a/monetdb5/optimizer/opt_projectionpath.c
+++ b/monetdb5/optimizer/opt_projectionpath.c
@@ -166,6 +166,8 @@ OPTprojectionpathImplementation(Client c
        (void) stk;
        if ( mb->inlineProp)
                return 0;
+       if ( optimizerIsApplied(mb,"projectionpath") )
+               return 0;
 
 #ifdef DEBUG_OPT_PROJECTIONPATH
        mnstr_printf(cntxt->fdout,"#projectionpath optimizer start \n");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to