Changeset: 96fef98cfc39 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=96fef98cfc39
Modified Files:
        monetdb5/optimizer/opt_mosaic.c
Branch: mosaic
Log Message:

Mosaic optimizer may only touche operators with operands of allowed type.


diffs (30 lines):

diff --git a/monetdb5/optimizer/opt_mosaic.c b/monetdb5/optimizer/opt_mosaic.c
--- a/monetdb5/optimizer/opt_mosaic.c
+++ b/monetdb5/optimizer/opt_mosaic.c
@@ -33,7 +33,6 @@ static int OPTmosaicType(MalBlkPtr mb, I
        case TYPE_oid:
        case TYPE_flt:
        case TYPE_dbl:
-       case TYPE_str:
                return 1;
        default:
                if( type == TYPE_date)
@@ -107,15 +106,15 @@ OPTmosaicImplementationInternal(Client c
        // actual conversion
     for( i=0; i < limit; i++){
         p = old[i];
-        if ( getModuleId(p) == algebraRef && (getFunctionId(p) == selectRef || 
getFunctionId(p) == thetaselectRef)){
+        if ( getModuleId(p) == algebraRef && (getFunctionId(p) == selectRef || 
getFunctionId(p) == thetaselectRef) && OPTmosaicType(mb,p,1)){
                        setModuleId(p, mosaicRef);
                        actions++;
                } else
-        if ( getModuleId(p) == algebraRef && getFunctionId(p) == 
projectionRef){
+        if ( getModuleId(p) == algebraRef && getFunctionId(p) == projectionRef 
&& OPTmosaicType(mb,p,2)){
                        setModuleId(p, mosaicRef);
                        actions++;
                } else
-        if ( getModuleId(p) == algebraRef && getFunctionId(p) == joinRef && 
p->argc ==8){
+        if ( getModuleId(p) == algebraRef && getFunctionId(p) == joinRef && 
p->argc ==8 && OPTmosaicType(mb,p,2)){
                        setModuleId(p, mosaicRef);
                        if (coui) {
                                /*This will push and set the COUI flag true.*/
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to