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

Reply via email to