Changeset: b2de397c8104 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b2de397c8104
Modified Files:
sql/backends/monet5/iot/50_iot.sql
sql/backends/monet5/iot/petrinet.c
sql/backends/monet5/iot/petrinet.h
sql/backends/monet5/iot/petrinet.mal
Branch: iot
Log Message:
Deregister continuous queries.
diffs (112 lines):
diff --git a/sql/backends/monet5/iot/50_iot.sql
b/sql/backends/monet5/iot/50_iot.sql
--- a/sql/backends/monet5/iot/50_iot.sql
+++ b/sql/backends/monet5/iot/50_iot.sql
@@ -36,6 +36,12 @@ create procedure iot.deactivate("schema"
create procedure iot.deactivate()
external name iot.deactivate;
+create procedure iot.deregister("schema" string, name string)
+ external name iot.deregister;
+
+create procedure iot.deregister()
+ external name iot.deregister;
+
-- resume with limited the number of scheduler before next pause
create procedure iot.cycles(n integer)
external name iot.cycles;
diff --git a/sql/backends/monet5/iot/petrinet.c
b/sql/backends/monet5/iot/petrinet.c
--- a/sql/backends/monet5/iot/petrinet.c
+++ b/sql/backends/monet5/iot/petrinet.c
@@ -160,6 +160,7 @@ PNregisterInternal(Client cntxt, MalBlkP
if (i != pnettop)
throw(MAL, "petrinet.register", "Duplicate definition of
transition");
+ memset((void*) (pnet+pnettop), 0, sizeof(PNnode));
pnet[pnettop].modname = GDKstrdup(getModuleId(sig));
pnet[pnettop].fcnname = GDKstrdup(getFunctionId(sig));
snprintf(buf,IDLENGTH,"petri_%d",pnettop);
@@ -232,6 +233,46 @@ PNdeactivate(Client cntxt, MalBlkPtr mb,
return PNstatus(cntxt, mb, stk, pci, PNREADY);
}
+/*Remove a specific continuous query from the scheduler */
+str
+PNderegister(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){
+ str modname= NULL;
+ str fcnname= NULL;
+ int i;
+
+ (void) cntxt;
+ (void) mb;
+ PNdump(&i);
+ MT_lock_set(&iotLock);
+ if ( pci->argc == 3){
+ modname= *getArgReference_str(stk,pci,1);
+ fcnname= *getArgReference_str(stk,pci,2);
+ i = PNlocate(modname,fcnname);
+ if ( i == pnettop){
+ MT_lock_unset(&iotLock);
+ throw(SQL,"iot.pause","Continuous query not found");
+ }
+ GDKfree(pnet[i].modname);
+ GDKfree(pnet[i].fcnname);
+ for( ; i <pnettop-1;i++)
+ pnet[i]= pnet[i+1];
+ memset((void*) (pnet+i), 0, sizeof(PNnode));
+ pnettop--;
+ _DEBUG_PETRINET_ mnstr_printf(PNout, "#scheduler deregistered
%s.%s\n", modname,fcnname);
+ MT_lock_unset(&iotLock);
+ return MAL_SUCCEED;
+ }
+ for ( i = 0; i < pnettop; i++){
+ GDKfree(pnet[i].modname);
+ GDKfree(pnet[i].fcnname);
+ memset((void*) (pnet+i), 0, sizeof(PNnode));
+ }
+ pnettop = 0;
+ _DEBUG_PETRINET_ mnstr_printf(PNout, "#scheduler deregistered all\n");
+ MT_lock_unset(&iotLock);
+ return MAL_SUCCEED;
+}
+
str
PNcycles(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){
_DEBUG_PETRINET_ mnstr_printf(PNout, "#scheduler cycles set \n");
diff --git a/sql/backends/monet5/iot/petrinet.h
b/sql/backends/monet5/iot/petrinet.h
--- a/sql/backends/monet5/iot/petrinet.h
+++ b/sql/backends/monet5/iot/petrinet.h
@@ -46,10 +46,10 @@
iot_export str PNregisterInternal(Client cntxt, MalBlkPtr mb);
iot_export str PNregister(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
+iot_export str PNderegister(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
iot_export str PNactivate(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
iot_export str PNdeactivate(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
iot_export str PNcycles(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
-iot_export str PNdrop(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
iot_export str PNdump(void *ret);
iot_export str PNperiod(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
diff --git a/sql/backends/monet5/iot/petrinet.mal
b/sql/backends/monet5/iot/petrinet.mal
--- a/sql/backends/monet5/iot/petrinet.mal
+++ b/sql/backends/monet5/iot/petrinet.mal
@@ -42,13 +42,13 @@ pattern step(cnt:int)
address PNstep
comment "Limit number of petrinet steps";
-pattern drop()
-address PNdrop
-comment "Remove all transitions from the Petri net controller";
+pattern iot.deregister()
+address PNderegister
+comment "Remove all query from the Petri-net controller";
-pattern drop(mod:str,fcn:str)
-address PNdrop
-comment "Remove a transitions from the Petri net controller";
+pattern iot.deregister(mod:str,fcn:str)
+address PNderegister
+comment "Remove a query from the Petri-net controller";
pattern period(t:int)
address PNsetCycleDelay
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list