Changeset: 0fcf5bafbe6d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0fcf5bafbe6d
Modified Files:
sql/backends/monet5/datacell/opt_datacell.c
Branch: default
Log Message:
Fix compilation of continuous queries
diffs (92 lines):
diff --git a/sql/backends/monet5/datacell/opt_datacell.c
b/sql/backends/monet5/datacell/opt_datacell.c
--- a/sql/backends/monet5/datacell/opt_datacell.c
+++ b/sql/backends/monet5/datacell/opt_datacell.c
@@ -41,7 +41,7 @@ OPTdatacellImplementation(Client cntxt,
{
int actions = 0, fnd, mvc = 0;
int bskt, i, j, k, limit, /*vlimit,*/ slimit;
- InstrPtr r, p, *old;
+ InstrPtr r, p, qq, *old;
str col;
int maxbasket = 128, m = 0, a = 0;
char *tables[128] = { NULL };
@@ -71,12 +71,11 @@ OPTdatacellImplementation(Client cntxt,
return 0;
removeDataflow(old, limit);
- for (i = 0; i < limit; i++)
+ pushInstruction(mb, old[0]);
+ newFcnCall(mb, sqlRef, putName("transaction", 11));
+ for (i = 1; i < limit; i++)
if (old[i]) {
p = old[i];
- if (i == 1)
- /* inject transaction start */
- newFcnCall(mb, sqlRef, putName("transaction",
11));
if (getModuleId(p) == datacellRef && getFunctionId(p)
== putName("window", 6) &&
isVarConstant(mb, getArg(p, 1)) &&
isVarConstant(mb, getArg(p, 2)) && isVarConstant(mb, getArg(p, 3))) {
@@ -153,16 +152,20 @@ OPTdatacellImplementation(Client cntxt,
for (j = 0; fnd == 0 && j <
baskets[bskt].colcount; j++)
if
(strcmp(baskets[bskt].cols[j], col) == 0) {
for (k = 0; k < m; k++)
- if (strcmp(buf,
tables[k]) == 0)
+ if (strcmp(buf,
tables[k]) == 0) {
+
alias[getArg(p, 0)] = getArg(q[k], j);
+ fnd = 1;
break;
- alias[getArg(p, 0)] =
getArg(q[k], j);
- fnd = 1;
+ }
break;
}
- if (fnd == 0)
+ if (fnd == 0){
+ for (j = 0; j < p->argc; j++)
+ if (alias[getArg(p, j)])
+ getArg(p, j) =
alias[getArg(p, j)];
pushInstruction(mb, p);
- else
+ } else
freeInstruction(p);
continue;
}
@@ -216,12 +219,16 @@ OPTdatacellImplementation(Client cntxt,
getModuleId(p) = sqlRef;
getFunctionId(p) =
singleRef;
}
- getArg(p, 0) = getArg(qa[j], k
+ 2);
- getArg(p, 1) = getArg(p, 5);
+ qq= newAssignment(mb);
+ getArg(qq, 0) = getArg(qa[j], k
+ 2);
+ getArg(qq, 1) = getArg(p, 5);
+ qq->argc = 2;
p->argc = 2;
+ mvc = getArg(p, 0);
}
} else {
- getArg(p, 1) = mvc;
+ if ( alias[mvc] )
+ getArg(p, 1) = alias[mvc];
mvc = getArg(p, 0);
}
}
@@ -235,6 +242,8 @@ OPTdatacellImplementation(Client cntxt,
{
clk = GDKusec();
optimizerCheck(cntxt, mb, "optimizer.datacell", 1, /*t =*/
(GDKusec() - clk), OPT_CHECK_ALL);
+ mnstr_printf(cntxt->fdout, "=FINISHED datacell %d\n", actions);
+ printFunction(cntxt->fdout, mb, 0, LIST_MAL_STMT | LIST_MAPI);
addtoMalBlkHistory(mb, "datacell");
}
GDKfree(alias);
@@ -299,7 +308,7 @@ str OPTdatacell(Client cntxt, MalBlkPtr
printFunction(cntxt->fdout, mb, 0, LIST_MAL_STMT | LIST_MAPI);
}
DEBUGoptimizers
- mnstr_printf(cntxt->fdout, "#opt_reduce: " LLFMT " ms\n", t);
+ mnstr_printf(cntxt->fdout, "#opt_reduce: " LLFMT " ms\n", t);
QOTupdateStatistics("datacell", actions, t);
addtoMalBlkHistory(mb, "datacell");
return msg;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list