Changeset: 290282750fc9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=290282750fc9 Modified Files: sql/backends/monet5/datacell/50_datacell.mal sql/backends/monet5/datacell/50_datacell.sql sql/backends/monet5/datacell/Makefile.ag sql/backends/monet5/datacell/Tests/basket00.mal sql/backends/monet5/datacell/Tests/datacell00.sql sql/backends/monet5/datacell/Tests/emitter00.mal sql/backends/monet5/datacell/Tests/receptor00.mal sql/backends/monet5/datacell/basket.mx sql/backends/monet5/datacell/datacell.sql sql/backends/monet5/datacell/emitter.mx sql/backends/monet5/datacell/petrinet.mx sql/backends/monet5/datacell/receptor.mx Branch: default Log Message:
Basic basket, receptor, emitter works The code has been checked and basket.register(), receptor.start(), and emitter.start() seem to work (= not to crash). SQL layer hangs on resolution bug. diffs (truncated from 807 to 300 lines): diff --git a/sql/backends/monet5/datacell/50_datacell.mal b/sql/backends/monet5/datacell/50_datacell.mal --- a/sql/backends/monet5/datacell/50_datacell.mal +++ b/sql/backends/monet5/datacell/50_datacell.mal @@ -16,7 +16,7 @@ # All Rights Reserved. # This loads the MonetDB/SQL module -library datacell; +include datacell; include basket; include receptor; include emitter; diff --git a/sql/backends/monet5/datacell/50_datacell.sql b/sql/backends/monet5/datacell/50_datacell.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/datacell/50_datacell.sql @@ -0,0 +1,40 @@ +# The contents of this file are subject to the MonetDB Public License +# Version 1.1 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://monetdb.cwi.nl/Legal/MonetDBLicense-1.1.html +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +# License for the specific language governing rights and limitations +# under the License. +# +# The Original Code is the MonetDB Database System. +# +# The Initial Developer of the Original Code is CWI. +# Portions created by CWI are Copyright (C) 1997-July 2008 CWI. +# Copyright August 2008-2011 MonetDB B.V. +# All Rights Reserved. + +-- Datacell basket wrappers +create schema datacell; +create procedure datacell.basket(sch string, tbl string) + external name datacell.basket; + +create function datacell.inventory() +returns table (kind string, nme string) + external name datacell.inventory; + +create procedure datacell.receptor(sch string, tbl string, host string, port int, protocol string) + external name receptor.start; + +create procedure datacell.emitter(sch string, tbl string, host string, port int, protocol string) + external name emitter.start; + +create procedure datacell.pause (sch string, tbl string) + external name datacell.pause; + +create procedure datacell.resume (sch string, tbl string) + external name datacell.resume; + +create procedure datacell.drop (sch string, tbl string) + external name datacell.drop; diff --git a/sql/backends/monet5/datacell/Makefile.ag b/sql/backends/monet5/datacell/Makefile.ag --- a/sql/backends/monet5/datacell/Makefile.ag +++ b/sql/backends/monet5/datacell/Makefile.ag @@ -40,6 +40,7 @@ receptor.mx \ petrinet.mx \ dcoperator.mx \ + datacell.mx \ emitter.mx LIBS = ../../../../monetdb5/tools/libmonetdb5 \ @@ -70,6 +71,7 @@ receptor.mal \ emitter.mal \ petrinet.mal \ + datacell.mal \ dcoperator.mal } diff --git a/sql/backends/monet5/datacell/Tests/basket00.mal b/sql/backends/monet5/datacell/Tests/basket00.mal --- a/sql/backends/monet5/datacell/Tests/basket00.mal +++ b/sql/backends/monet5/datacell/Tests/basket00.mal @@ -1,18 +1,15 @@ #Testing the basket functionality -libary datacell; -include basket; +# this assumes you have ran first datacell00.sql -p1:= basket.new("sys_x_p1",:bat[:lng,:int]); -p2:= basket.new("sys_x_p2",:bat[:lng,:int]); +basket.register("datacell","x"); -basket.group("X","sys_x_p1","sys_x_p2"); +basket.lock("x"); +io.print("x locked"); +basket.unlock("x"); -basket.lock("X"); -io.print("sys_x_p1 locked"); -basket.unlock("X"); +basket.drop("x"); -basket.lock("X"); -io.print("sys_x_p2 locked"); -basket.unlock("X"); - -basket.drop("X"); +# The SQL equivalent +#call datacell.basket('datacell','x'); +#call datacell.lock('x'); +#call datacell.unlock('x'); diff --git a/sql/backends/monet5/datacell/Tests/datacell00.sql b/sql/backends/monet5/datacell/Tests/datacell00.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/datacell/Tests/datacell00.sql @@ -0,0 +1,5 @@ +#set up the minimal test environment for datacell + +create schema datacell; +create table datacell.X( id int, tag timestamp, payload int); +create table datacell.Y( id int, tag timestamp, payload int, msdelay int); diff --git a/sql/backends/monet5/datacell/Tests/emitter00.mal b/sql/backends/monet5/datacell/Tests/emitter00.mal --- a/sql/backends/monet5/datacell/Tests/emitter00.mal +++ b/sql/backends/monet5/datacell/Tests/emitter00.mal @@ -5,21 +5,21 @@ sql.init(); -emitter.start("datacell","X","localhost",50502,"passive"); +emitter.start("datacell","y","localhost",50502,"active"); io.print("emitter working"); alarm.sleep(5); -emitter.pause("datacell","X"); +emitter.pause("datacell","y"); io.print("emitter paused"); alarm.sleep(5); -emitter.resume("datacell","X"); +emitter.resume("datacell","y"); io.print("emitter restarted"); alarm.sleep(5); -emitter.pause("datacell","X"); +emitter.pause("datacell","y"); io.print("emitter stopped"); -emitter.drop("datacell","X"); +emitter.drop("datacell","y"); # The SQL equivalents -# call emitter.start('datacell','X','localhost',50502,'passive'); -# call emitter.pause('datacell','X'); -# call emitter.resume('datacell','X'); -# call emitter.drop('datacell','X'); +# call datacell.emitter('datacell','y','localhost',50502,'active'); +# call datacell.pause('datacell','y'); +# call datacell.resume('datacell','y'); +# call datacell.drop('datacell','y'); diff --git a/sql/backends/monet5/datacell/Tests/receptor00.mal b/sql/backends/monet5/datacell/Tests/receptor00.mal --- a/sql/backends/monet5/datacell/Tests/receptor00.mal +++ b/sql/backends/monet5/datacell/Tests/receptor00.mal @@ -1,25 +1,25 @@ #A single thread for a simple stream -#The test is based on the definition the datacell baskets X +#The test is based on the definition the datacell baskets x # it starts a receptor in debug mode to see arrivals coming # from a (client) sensor. sql.init(); -receptor.start("datacell","X","localhost",50501,"passive"); +receptor.start("datacell","x","localhost",50501,"passive"); io.print("receptor working"); alarm.sleep(5); -receptor.pause("datacell","X"); +receptor.pause("datacell","x"); io.print("receptor paused"); alarm.sleep(5); -receptor.resume("datacell","X"); +receptor.resume("datacell","x"); io.print("receptor restarted"); alarm.sleep(5); -receptor.pause("datacell","X"); +receptor.pause("datacell","x"); io.print("receptor stopped"); -receptor.drop("datacell","X"); +receptor.drop("datacell","x"); # The SQL equivalents -# call receptor.start('datacell','X','localhost',50501,'passive'); -# call receptor.pause('datacell','X'); -# call receptor.resume('datacell','X'); -# call receptor.drop('datacell','X'); +# call datacell.receptor('datacell','x','localhost',50501,'passive'); +# call datacell.pause('datacell','x'); +# call datacell.resume('datacell','x'); +# call datacell.drop('datacell','x'); diff --git a/sql/backends/monet5/datacell/basket.mx b/sql/backends/monet5/datacell/basket.mx --- a/sql/backends/monet5/datacell/basket.mx +++ b/sql/backends/monet5/datacell/basket.mx @@ -22,39 +22,28 @@ processing is ignored. @mal -module datacell; +module basket; -pattern register_basket(schema:str,tab:str):void -address DCregister_basket +pattern register(schema:str,tab:str):void +address BSKTregister comment "Initialize a new basket based on a specific table definition in the datacell schema"); -pattern register_basket(tab:str):void -address DCregister_basket -comment "Initialize a new basket based on a specific table definition in the datacell schema"); +command lock(schema:str, tbl:str,delay:int):void +address BSKTlock +comment "Lock a basket group and spinlock upon need"; -pattern register_basket():void -address DCregister_all -comment "Create basket definitions for all tables in the datacell schema"; - -command inventory():bat[:str,:bat] -address DCinventory -comment "Produce a tabular view of the baskets identified"; - -command lock(schema:str, tbl:str,delay:int):void -address DClock -comment "Lock a basket group and spinlock upon need"; command lock(schema:str, tbl:str):void -address DClock2 +address BSKTlock2 comment "Lock a basket group "; command unlock(schema:str, tbl:str):void -address DCunlock +address BSKTunlock comment "Unlock the basket"; @{ @h -#ifndef _DATACELLS_ -#define _DATACELLS_ +#ifndef _BASKETS_ +#define _BASKETS_ #include "monetdb_config.h" #include "mal.h" @@ -72,7 +61,7 @@ #endif /* #define _DEBUG_DATACELL debug this module */ -#define DCout GDKout +#define BSKTout GDKout #define MAXCOL 128 #define MAXBSK 64 @@ -84,20 +73,21 @@ str *cols; BAT **primary; /* statistics */ -} *DCbasket, DCbasketRec; +} *BSKTbasket, BSKTbasketRec; datacell_export str schema_default; -datacell_export str DCregister_all(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -datacell_export str DCregister_basket(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -datacell_export str DCinventory(int *ret); -datacell_export int DCmemberCount(str schema, str tbl); -datacell_export int DClocate(str schema, str tbl); +datacell_export str BSKTregister(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +datacell_export str BSKTnewbasket(sql_schema *s, sql_table *t, sql_trans *tr); +datacell_export str BSKTderegister(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +datacell_export str BSKTinventory(int *ret); +datacell_export int BSKTmemberCount(str schema, str tbl); +datacell_export int BSKTlocate(str schema, str tbl); -datacell_export str DClock(int *ret, str *schema, str *tbl, int *delay); -datacell_export str DCunlock(int *ret, str *schema, str *tbl); -datacell_export str DClock2(int *ret, str *schema, str *tbl); +datacell_export str BSKTlock(int *ret, str *schema, str *tbl, int *delay); +datacell_export str BSKTunlock(int *ret, str *schema, str *tbl); +datacell_export str BSKTlock2(int *ret, str *schema, str *tbl); -datacell_export DCbasketRec *baskets; +datacell_export BSKTbasketRec *baskets; datacell_export int bsktTop, bsktLimit; datacell_export lng usec(void); #endif @@ -109,12 +99,12 @@ str schema_default = "datacell"; -DCbasketRec *baskets; /* the datacell catalog */ +BSKTbasketRec *baskets; /* the datacell catalog */ int bsktTop, bsktLimit; static MT_Lock bsktLock; -#define lockDCbasketCatalog() mal_set_lock(bsktLock, "basket"); -#define unlockDCbasketCatalog() mal_unset_lock(bsktLock, "basket"); +#define lockBSKTbasketCatalog() mal_set_lock(bsktLock, "basket"); +#define unlockBSKTbasketCatalog() mal_unset_lock(bsktLock, "basket"); @- _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
