Changeset: a1628c37924c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a1628c37924c
Modified Files:
sql/backends/monet5/datacell/datacell.c
sql/backends/monet5/datacell/opt_datacell.c
sql/backends/monet5/datacell/opt_datacell.h
Branch: Feb2013
Log Message:
Massage the SQL query for datacell processing
diffs (111 lines):
diff --git a/sql/backends/monet5/datacell/datacell.c
b/sql/backends/monet5/datacell/datacell.c
--- a/sql/backends/monet5/datacell/datacell.c
+++ b/sql/backends/monet5/datacell/datacell.c
@@ -70,11 +70,13 @@ DCprocedureStmt(Client cntxt, MalBlkPtr
f = o->data;
if (strcmp(f->base.name, nme) == 0) {
be = (void *) backend_create(m, cntxt);
- backend_create_func(be, f);
- break;
+ if (be->mvc->sa ) {
+ backend_create_func(be, f);
+ return MAL_SUCCEED;
+ }
}
}
- return MAL_SUCCEED;
+ throw(SQL, "datacell.query", "Procedure missing");
}
str
@@ -299,11 +301,12 @@ DCquery(Client cntxt, MalBlkPtr mb, MalS
lng clk = GDKusec();
char buf[BUFSIZ], *lsch, *lnme;
+ if ( mb->errors)
+ throw(SQL, "datacell.query", "Query contains errors");
BSKTelements(nme, buf, &lsch, &lnme);
BSKTtolower(lsch);
BSKTtolower(lnme);
- (void) mb;
/* check if the argument denotes a procedure name */
/* if so, get its definition to be compiled */
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
@@ -40,7 +40,7 @@ int
OPTdatacellImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci)
{
int actions = 0, fnd, mvc = 0;
- int bskt, i, j, k, limit, /*vlimit,*/ slimit;
+ int bskt, i, j, k, limit, slimit;
InstrPtr r, p, qq, *old;
str col;
int maxbasket = 128, m = 0, a = 0;
@@ -61,10 +61,10 @@ OPTdatacellImplementation(Client cntxt,
} else
(void) stk;
+ removeDataflow(cntxt, mb);
old = mb->stmt;
limit = mb->stop;
slimit = mb->ssize;
- /*vlimit = mb->vtop;*/
if (newMalBlkStmt(mb, slimit) < 0)
return 0;
@@ -72,7 +72,6 @@ OPTdatacellImplementation(Client cntxt,
tidlist = (char *) GDKzalloc(mb->vtop );
if (alias == 0)
return 0;
- removeDataflow(mb, old, limit);
pushInstruction(mb, old[0]);
newFcnCall(mb, sqlRef, putName("transaction", 11));
@@ -251,6 +250,8 @@ OPTdatacellImplementation(Client cntxt,
getArg(qq, 0) =
getArg(qa[j], k + 2);
getArg(qq, 1) =
getArg(p, 5);
qq->argc = 2;
+ p->argc =2;
+ pushInstruction(mb,p);
p = qq;
} else {
qq= newAssignment(mb);
@@ -279,14 +280,20 @@ OPTdatacellImplementation(Client cntxt,
(void) pci;
OPTDEBUGdatacell {
- mnstr_printf(cntxt->fdout, "#Datacell optimizer finished\n");
+ mnstr_printf(cntxt->fdout, "#Datacell optimizer
intermediate\n");
printFunction(cntxt->fdout, mb, stk, LIST_MAL_STMT);
}
/* optimize this new continous query using the default pipe */
addOptimizers(cntxt, mb, "default_pipe");
msg = optimizeMALBlock(cntxt, mb);
- if (msg == MAL_SUCCEED)
+ if (msg == MAL_SUCCEED) {
+ removeDataflow(cntxt, mb);
msg = optimizerCheck(cntxt, mb, "optimizer.datacell", actions,
(GDKusec() - clk), OPT_CHECK_ALL);
+ }
+ OPTDEBUGdatacell {
+ mnstr_printf(cntxt->fdout, "#Datacell optimizer finished\n");
+ printFunction(cntxt->fdout, mb, stk, LIST_MAL_STMT);
+ }
if (actions)
{
diff --git a/sql/backends/monet5/datacell/opt_datacell.h
b/sql/backends/monet5/datacell/opt_datacell.h
--- a/sql/backends/monet5/datacell/opt_datacell.h
+++ b/sql/backends/monet5/datacell/opt_datacell.h
@@ -23,7 +23,7 @@
#include "opt_support.h"
#include "opt_pipes.h"
-#define OPTDEBUGdatacell if (1)
-//#define OPTDEBUGdatacell if (optDebug & (1 << DEBUG_OPT_DATACELL))
+//#define OPTDEBUGdatacell if (1)
+#define OPTDEBUGdatacell if (optDebug & (1 << DEBUG_OPT_DATACELL))
opt_export int OPTdatacellImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
#endif
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list