Changeset: 8677b85843fa for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8677b85843fa
Modified Files:
        monetdb5/optimizer/opt_costModel.mx
        monetdb5/optimizer/opt_mitosis.mx
        monetdb5/optimizer/opt_prelude.mx
Branch: default
Log Message:

Cost model refinements


diffs (86 lines):

diff --git a/monetdb5/optimizer/opt_costModel.mx 
b/monetdb5/optimizer/opt_costModel.mx
--- a/monetdb5/optimizer/opt_costModel.mx
+++ b/monetdb5/optimizer/opt_costModel.mx
@@ -177,14 +177,18 @@
                                @:newRows2(c1+c2)@
                        } else if (getFunctionId(p)== kdifferenceRef) {
                                @:newRows2(c1==0?0:c2==0?c1: c1 - c2 < 0 ? 1 : 
c1 - c2+1)@
-                       } else if (getFunctionId(p) == joinRef ) {
+                       } else if (getFunctionId(p) == joinRef ||
+                               getFunctionId(p) == leftjoinRef ||
+                               getFunctionId(p) == leftjoinPathRef ) {
                                /* assume 1-1 joins */
                                @:newRows2(c1 < c2 ? c1 : c2)@
                        } else if (getFunctionId(p) == semijoinRef ) {
                                /* assume 1-1 semijoins */
                                @:newRows2(c1 < c2? c1 : c2)@
                        } else if (getFunctionId(p) == selectRef ||
-                                  getFunctionId(p) == uselectRef) {
+                               getFunctionId(p) == uselectRef ||
+                               getFunctionId(p) == thetaselectRef ||
+                               getFunctionId(p) == thetauselectRef) {
                                @:newRows1(1, c1 > 100 ? c1 / 2 +1: c1)@
                        } else if (getFunctionId(p) == crossRef) {
                                @:newRows2((log((double) c1) + log((double) c2) 
> log(INT_MAX) ? INT_MAX : c1 * c2 +1))@
@@ -192,10 +196,17 @@
                                @:newRows1(1, c1 < 50 ? c1 : c1 / 10+1)@
                        }
                } else if (getModuleId(p) == batcalcRef) {
-                       if( isaBatType(getArgType(mb,p,1)) )
+                       if( getFunctionId(p) == ifthenelseRef) {
+                               if( isaBatType(getArgType(mb,p,2) ) )
+                                       @:newRows1(2, c1)@
+                               else
+                                       @:newRows1(3, c1)@
+                       } else if( isaBatType(getArgType(mb,p,1)) )
+                                       @:newRows1(1, c1)@
+                               else
+                                       @:newRows1(2, c2)@
+               } else if (getModuleId(p) == batstrRef) {
                                @:newRows1(1, c1)@
-                       else
-                               @:newRows1(2, c2)@
                } else if (getModuleId(p) == batRef) {
                        if (getFunctionId(p) == reverseRef ||
                            getFunctionId(p) == setWriteModeRef  ||
diff --git a/monetdb5/optimizer/opt_mitosis.mx 
b/monetdb5/optimizer/opt_mitosis.mx
--- a/monetdb5/optimizer/opt_mitosis.mx
+++ b/monetdb5/optimizer/opt_mitosis.mx
@@ -252,8 +252,9 @@
                        }
                        rows = varGetProp(mb, getArg(p,0), rowsProp);
                        if ( rows){
+                               wrd prows = rows->value.val.wval / pieces + 1;
                                memset((char*) &vr, 0, sizeof(vr));
-                               varSetProp(mb, k, rowsProp, op_eq, VALset(&vr, 
TYPE_wrd, &rows->value.val.wval));
+                               varSetProp(mb, k, rowsProp, op_eq, VALset(&vr, 
TYPE_wrd, &prows));
                        }
 
                        if (getFunctionId(p) == binddbatRef) {
diff --git a/monetdb5/optimizer/opt_prelude.mx 
b/monetdb5/optimizer/opt_prelude.mx
--- a/monetdb5/optimizer/opt_prelude.mx
+++ b/monetdb5/optimizer/opt_prelude.mx
@@ -89,6 +89,7 @@
 opt_export  str hashRef;
 opt_export     str histogramRef;
 opt_export  str identityRef;
+opt_export  str ifthenelseRef;
 opt_export  str inplaceRef;
 opt_export  str insertRef;
 opt_export  str intRef;
@@ -301,6 +302,7 @@
 str hashRef;
 str histogramRef;
 str identityRef;
+str ifthenelseRef;
 str inplaceRef;
 str insertRef;
 str intRef;
@@ -509,6 +511,7 @@
                hashRef = putName("hash",4);
                histogramRef = putName("histogram",9);
                identityRef = putName("identity",8);
+               ifthenelseRef = putName("ifthenelse",10);
                inplaceRef = putName("inplace",7);
                insertRef = putName("insert",6);
                intRef = putName("int",3);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to