Changeset: 79dca96e7a08 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=79dca96e7a08
Modified Files:
monetdb5/optimizer/opt_generator.c
sql/backends/monet5/generator/generator.c
sql/backends/monet5/generator/generator.mal
Branch: default
Log Message:
Fix the signatures for the range join
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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list