Changeset: 04191ece031d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=04191ece031d
Modified Files:
        monetdb5/optimizer/opt_generator.c
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/generator/generator.mal
Branch: bamloader
Log Message:

Merge with default


diffs (79 lines):

diff --git a/monetdb5/optimizer/opt_generator.c 
b/monetdb5/optimizer/opt_generator.c
--- a/monetdb5/optimizer/opt_generator.c
+++ b/monetdb5/optimizer/opt_generator.c
@@ -63,7 +63,7 @@ int
 OPTgeneratorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci)
 {
        InstrPtr p,q;
-       int i,j,k, actions=0, used= 0, cases, blocked;
+       int i,j,k, actions=0, used, cases, blocked;
 
        (void) cntxt;
        (void) stk;
@@ -73,6 +73,7 @@ OPTgeneratorImplementation(Client cntxt,
                p = getInstrPtr(mb,i);
                if ( getModuleId(p) == generatorRef && getFunctionId(p) == 
seriesRef){
                        /* found a target for propagation */
+                       used = 0;
                        if ( assignedOnce(mb, getArg(p,0)) ){
                                cases = useCount(mb, getArg(p,0));
                                blocked = 0;
@@ -116,8 +117,10 @@ OPTgeneratorImplementation(Client cntxt,
                                        else {
                                                // check for use without 
conversion
                                                for(k = q->retc; k < q->argc; 
k++)
-                                               if( getArg(q,k) == getArg(p,0))
+                                               if( getArg(q,k) == getArg(p,0)){
                                                        blocked++;
+                                               }
+                                               // materialize a copy and 
re-use where appropriate
                                        }
                                }
                                // fix the original, only when all use cases 
are replaced by the overloaded function
@@ -125,8 +128,9 @@ OPTgeneratorImplementation(Client cntxt,
                                        setModuleId(p, generatorRef);
                                        setFunctionId(p, parametersRef);
                                        typeChecker(cntxt->fdout, 
cntxt->nspace, mb, p, TRUE);
+                               }
+                               if( used)
                                        actions++;
-                               } else used = 0;
 #ifdef VLT_DEBUG
                                mnstr_printf(cntxt->fdout,"#generator target %d 
cases %d used %d error %d\n",getArg(p,0), cases, used, p->typechk);
 #endif
diff --git a/sql/backends/monet5/generator/generator.c 
b/sql/backends/monet5/generator/generator.c
--- a/sql/backends/monet5/generator/generator.c
+++ b/sql/backends/monet5/generator/generator.c
@@ -218,7 +218,7 @@ findGeneratorDefinition(MalBlkPtr mb, In
 
        for (i = 1; i < mb->stop; i++) {
                q = getInstrPtr(mb, i);
-               if (q->argv[0] == target && getModuleId(q) == generatorRef && 
getFunctionId(q) == parametersRef)
+               if (q->argv[0] == target && getModuleId(q) == generatorRef && 
(getFunctionId(q) == parametersRef || getFunctionId(q) == seriesRef))
                        p = q;
                if (q == pci)
                        return p;
diff --git a/sql/backends/monet5/generator/generator.mal 
b/sql/backends/monet5/generator/generator.mal
--- a/sql/backends/monet5/generator/generator.mal
+++ b/sql/backends/monet5/generator/generator.mal
@@ -223,15 +223,15 @@ comment "Overloaded join operation";
 
 pattern join(gen:bat[:oid,:bte], low:bat[:oid,:bte], hgh:bat[:oid,:bte], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
 address VLTgenerator_rangejoin;
-pattern join(gen:bat[:oid,:sht], low:bat[:oid,:sht], hgh:bat[:oid,:bte], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
+pattern join(gen:bat[:oid,:sht], low:bat[:oid,:sht], hgh:bat[:oid,:sht], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
 address VLTgenerator_rangejoin;
-pattern join(gen:bat[:oid,:int], low:bat[:oid,:int], hgh:bat[:oid,:bte], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
+pattern join(gen:bat[:oid,:int], low:bat[:oid,:int], hgh:bat[:oid,:int], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
 address VLTgenerator_rangejoin;
-pattern join(gen:bat[:oid,:lng], low:bat[:oid,:lng], hgh:bat[:oid,:bte], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
+pattern join(gen:bat[:oid,:lng], low:bat[:oid,:lng], hgh:bat[:oid,:lng], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
 address VLTgenerator_rangejoin;
-pattern join(gen:bat[:oid,:flt], low:bat[:oid,:flt], hgh:bat[:oid,:bte], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
+pattern join(gen:bat[:oid,:flt], low:bat[:oid,:flt], hgh:bat[:oid,:flt], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
 address VLTgenerator_rangejoin;
-pattern join(gen:bat[:oid,:dbl], low:bat[:oid,:dbl], hgh:bat[:oid,:bte], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
+pattern join(gen:bat[:oid,:dbl], low:bat[:oid,:dbl], hgh:bat[:oid,:dbl], 
li:bit, ri:bit) (l:bat[:oid,:oid],r:bat[:oid,:oid])
 address VLTgenerator_rangejoin
 comment "Overloaded range join operation";
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to