Changeset: abee3d82bc84 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=abee3d82bc84
Modified Files:
sql/backends/monet5/datacell/50_datacell.sql
sql/backends/monet5/datacell/datacell.mx
Branch: default
Log Message:
Compile the continues query
Use the SQL internal compilation method to derive a function
in the datacell module that captures it.
diffs (81 lines):
diff --git a/sql/backends/monet5/datacell/50_datacell.sql
b/sql/backends/monet5/datacell/50_datacell.sql
--- a/sql/backends/monet5/datacell/50_datacell.sql
+++ b/sql/backends/monet5/datacell/50_datacell.sql
@@ -36,14 +36,14 @@
create procedure datacell.resume (sch string, tbl string)
external name datacell.resume;
-create procedure datacell.drop (sch string, tbl string)
- external name datacell.drop;
+create procedure datacell.remove (sch string, tbl string)
+ external name datacell.remove;
create procedure datacell.query(sch string, proc string)
- extern name datacell.query;
+ external name datacell.query;
create procedure datacell.run()
- extern name datacell.run;
+ external name datacell.run;
create procedure datacell.stop()
- extern name datacell.stop;
+ external name datacell.stop;
diff --git a/sql/backends/monet5/datacell/datacell.mx
b/sql/backends/monet5/datacell/datacell.mx
--- a/sql/backends/monet5/datacell/datacell.mx
+++ b/sql/backends/monet5/datacell/datacell.mx
@@ -32,7 +32,7 @@
address DCreceptor
comment "Define a receptor based on a basket table. The receptor protocol is
either active or passive.";
-pattern drop(schema:str,obj:str):void
+pattern remove(schema:str,obj:str):void
address DCdrop
comment "Remove a basket, receptor or emitter";
@@ -44,7 +44,7 @@
address DCresume
comment "Pause a receptor or emitter";
-pattern query(schema:str,obj:str):void
+pattern query(name:str,def:str):void
address DCquery
comment "Add a new continuous query.";
@@ -80,6 +80,7 @@
#include "mal.h"
#include "mal_interpreter.h"
#include "sql.h"
+#include "sql_scenario.h"
#include "basket.h"
#include "receptor.h"
#include "emitter.h"
@@ -190,16 +191,21 @@
str
DCquery(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
- str modnme = *(str*) getArgReference(stk,pci,1);
- str fcnnme = *(str*) getArgReference(stk,pci,2);
+ str nme = *(str*) getArgReference(stk,pci,1);
+ str def = (str*) getArgReference(stk,pci,2);
Symbol s;
+ str msg;
(void) mb;
- s = findSymbol(cntxt->nspace, putName(modnme, strlen(modnme)),
putName(fcnnme, strlen(fcnnme)));
- if ( s == NULL) {
- /* fetch and compile its definition */
- }
- throw(SQL,"datacell.query","Procedure code does not exist");
+ msg = SQLstatementIntern(cntxt, def, nme, 0, 0);
+ if ( msg )
+ return msg;
+ s = newFunction(putName("datacell",8), putName(nme,
strlen(nme)),FUNCTIONsymbol);
+ freeMalBlk(s->def);
+ s->def = copyMalBlk(cntxt->curprg->def);
+ if ( s == NULL)
+ throw(SQL,"datacell.query","Procedure code does not exist");
+ return MAL_SUCCEED;
}
/*
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list