Changeset: 67c56b242f30 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=67c56b242f30
Modified Files:
MonetDB5/src/optimizer/opt_mergetable.mx
Branch: default
Log Message:
removed not used code
diffs (188 lines):
diff -r a369a007a73d -r 67c56b242f30 MonetDB5/src/optimizer/opt_mergetable.mx
--- a/MonetDB5/src/optimizer/opt_mergetable.mx Wed Dec 01 22:27:25 2010 +0100
+++ b/MonetDB5/src/optimizer/opt_mergetable.mx Wed Dec 01 22:36:42 2010 +0100
@@ -481,32 +481,6 @@
return mtop+1;
}
-/* mat_semijoin handles special case for update delta's which need
-to be spread of the partion (second arg) */
-static InstrPtr
-mat_semijoin(MalBlkPtr mb, InstrPtr p, mat_t *mat, int m)
-{
- int tpe, k;
- InstrPtr r = NULL, mi = mat[m].mi;
-
- r = newInstruction(mb, ASSIGNsymbol);
- setModuleId(r,matRef);
- setFunctionId(r,newRef);
- getArg(r,0) = getArg(p,0);
- tpe = getArgType(mb,p,0);
-
- for(k=1; k<mi->argc; k++) {
- InstrPtr q = copyInstruction(p);
-
- getArg(q,2) = getArg(mi,k);
- getArg(q,0) = newTmpVariable(mb, tpe);
- propagateProp(mb, q, getArg(mi, k));
- pushInstruction(mb,q);
- r = pushArgument(mb,r,getArg(q,0));
- }
- return r;
-}
-
static void
mat_update(MalBlkPtr mb, InstrPtr p, mat_t *mat, int m, int var)
{
@@ -1759,25 +1733,6 @@
r = pushArgument(mb, r, vm);
}
} else {
- /* if right overlaps full range of left we first semijoin */
- /* assume if first overlaps all do ? */
- if (0 && m >= 0 && Hoverlap(mb,
getArg(mat[m].mi,1),p->argv[2])) {
- /* push in between a b.semijoin(mat) */
- InstrPtr semi = copyInstruction(p), bc;
-
- semi->argv[0] = p->argv[2];
- semi->argv[1] = p->argv[2];
- semi->argv[2] = p->argv[1];
- getFunctionId(semi) = semijoinRef;
- m = isMATalias(getArg(semi,2), mat, mtop);
- if ((bc = mat_semijoin(mb, semi, mat, m)) != NULL)
- mtop = mat_add(mat, mtop, bc, NULL, mat_none );
- /* now use semijoin result as input to union */
- p->argv[2] = semi->argv[0];
- m = isMATalias(getArg(p,1), mat, mtop);
- n = isMATalias(getArg(p,2), mat, mtop);
- return mat_union(mb, p, mat, mtop, m, n);
- }
if (m >= 0) {
for(k=1; k<mat[m].mi->argc; k++)
r = pushArgument(mb, r, getArg(mat[m].mi,k));
@@ -1919,99 +1874,17 @@
}
-/*
- 2) semijoin cases
- 1) both mats and aligned (pair wise)
- 2) else merge both !
- 3) semi(mat,bat) (pair wise)
-
- 4) semi(bat,mat) ?
- 3) kdiff cases
- 1) both mats and aligned (pair wise)
- 2) kdiff(mat,bat) (pair wise)
- In case 2 we expect a union(mat, b) to,
- so we want to rewrite into
- m1.diff(b).union( b.semijoin(m1));
- 3) kdiff(bat,mat) (kdiff(bat,m1).kdiff(m2).kdiff(m3) etc
- returns bat !
-*/
static int
-mat_setop(MalBlkPtr mb, InstrPtr p, InstrPtr *old, int oldtop, int cur, mat_t
*mat, int *Mtop )
+mat_setop(MalBlkPtr mb, InstrPtr p, mat_t *mat, int *Mtop )
{
int m, n;
- InstrPtr q = old[cur+1];
- InstrPtr u = old[cur+2];
InstrPtr bc;
int mtop = *Mtop;
m = isMATalias(getArg(p,1), mat, mtop);
n = isMATalias(getArg(p,2), mat, mtop);
-
- /* recognize kdiff(u).union(u) but also kdiff(u).union(select(u, ..)) */
- if (0 && getFunctionId(p) == kdifferenceRef &&
- cur + 2 < oldtop &&
- (getModuleId(u) == algebraRef || getModuleId(u) == pcreRef) &&
getFunctionId(u) == kunionRef &&
- isSelect(q) &&
- p->argv[0] == u->argv[1] &&
- p->argv[2] == q->argv[1] &&
- u->argv[2] == q->argv[0]) {
- int i;
- InstrPtr semi;
-
- /* Kdiff(mat, b) */
- if ((bc = mat_apply(mb, p, mat, &mtop, m, n, 0)) != NULL)
- mtop = mat_add(mat, mtop, bc, NULL, mat_none );
- /* push select */
- pushInstruction(mb, q = copyInstruction(q));
-
- /* push in between a select(u ..).semijoin(mat) */
- semi = copyInstruction(p);
- semi->argv[0] = newTmpVariable(mb, getArgType(mb,q,0));
- semi->argv[1] = q->argv[0];
- semi->argv[2] = p->argv[1];
- /* use values before select */
- for (i=cur-1; i>0; i--)
- if (isSelect(old[i]) && old[i]->argv[0] == p->argv[1])
- break;
- if (i > 0)
- semi->argv[2] = old[i]->argv[1];
- getFunctionId(semi) = semijoinRef;
- m = isMATalias(getArg(semi,2), mat, mtop);
- if ((bc = mat_semijoin(mb, semi, mat, m)) != NULL)
- mtop = mat_add(mat, mtop, bc, NULL, mat_none );
- /* Kunion(mat, b) */
- u = copyInstruction(u);
- u->argv[2] = semi->argv[0];
- m = isMATalias(getArg(u,1), mat, mtop);
- n = isMATalias(getArg(u,2), mat, mtop);
- *Mtop = mat_union(mb, u, mat, mtop, m, n);
- return 2;
- } else if (0 && getFunctionId(p) == kdifferenceRef &&
- cur + 1 < oldtop &&
- getModuleId(q) == algebraRef && getFunctionId(q) == kunionRef &&
- p->argv[0] == q->argv[1] && p->argv[2] == q->argv[2]) {
- InstrPtr semi;
-
- /* Kdiff(mat, b) */
- if ((bc = mat_apply(mb, p, mat, &mtop, m, n, 0)) != NULL)
- mtop = mat_add(mat, mtop, bc, NULL, mat_none );
- /* push in between a b.semijoin(mat) */
- semi = copyInstruction(p);
- semi->argv[0] = p->argv[2];
- semi->argv[1] = p->argv[2];
- semi->argv[2] = p->argv[1];
- getFunctionId(semi) = semijoinRef;
- m = isMATalias(getArg(semi,2), mat, mtop);
- if ((bc = mat_semijoin(mb, semi, mat, m)) != NULL)
- mtop = mat_add(mat, mtop, bc, NULL, mat_none );
- /* Kunion(mat, b) */
- m = isMATalias(getArg(q,1), mat, mtop);
- n = isMATalias(getArg(q,2), mat, mtop);
- *Mtop = mat_union(mb, q, mat, mtop, m, n);
- return 1;
- } else if ((bc = mat_apply(mb, p, mat, Mtop, m, n, 0)) != NULL) {
+ if ((bc = mat_apply(mb, p, mat, Mtop, m, n, 0)) != NULL)
*Mtop = mat_add(mat, *Mtop, bc, NULL, useMatType(mat, n) );
- }
return 0;
}
@@ -2172,22 +2045,10 @@
(getModuleId(p) == algebraRef &&
((getFunctionId(p) == semijoinRef && match == 2) ||
(getFunctionId(p) == kdifferenceRef)))) {
- i += mat_setop(mb, p, old, oldtop, i, mat, &mtop);
+ i += mat_setop(mb, p, mat, &mtop);
actions++;
continue;
}
-#if 0
- if (match == 1 && getModuleId(p) == algebraRef &&
getFunctionId(p) == semijoinRef &&
- ((m=isMATalias(getArg(p,2), mat, mtop)) >= 0) &&
- varGetProp(mb, getArg(p,1), hlbProp)) {
- InstrPtr bc;
-
- if ((bc = mat_semijoin(mb, p, mat, m)) != NULL)
- mtop = mat_add(mat, mtop, bc, NULL, mat_none );
- actions++;
- continue;
- }
-#endif
@-
Now we handle group, derive and aggregation statements.
@c
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list