Changeset: e49571ae2f6a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e49571ae2f6a
Added Files:
sql/backends/monet5/iot/Tests/iot13.stable.err
sql/backends/monet5/iot/Tests/iot13.stable.out
sql/backends/monet5/iot/Tests/x.ql
Modified Files:
monetdb5/mal/mal_module.c
sql/backends/monet5/iot/50_iot.sql
sql/backends/monet5/iot/Tests/bug01.stable.out
sql/backends/monet5/iot/basket.c
sql/backends/monet5/iot/basket.h
sql/backends/monet5/iot/iot.mal
sql/backends/monet5/iot/petrinet.c
sql/backends/monet5/iot/petrinet.h
Branch: iot
Log Message:
Fixing property settings
diffs (truncated from 437 to 300 lines):
diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c
--- a/monetdb5/mal/mal_module.c
+++ b/monetdb5/mal/mal_module.c
@@ -247,7 +247,7 @@ Module findModule(Module scope, str name
scope= scope->link;
}
/* default is always matched with current */
- if( def->name==NULL) return NULL;
+ if( def == NULL || def->name==NULL) return NULL;
return def;
}
int isModuleDefined(Module scope, str name){
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
@@ -98,7 +98,7 @@ create function iot.getheartbeat("schema
external name iot.getheartbeat;
create function iot.baskets()
-returns table( "schema" string, "table" string, "status" string, threshold
int, winsize int, winstride int, timeslice int, timestride int, heartbeat int,
seen timestamp, events int)
+returns table( "schema" string, "table" string, "status" string, winsize int,
winstride int, timeslice int, timestride int, heartbeat int, seen timestamp,
events int)
external name iot.baskets;
create procedure iot.show("schema" string, "query" string)
diff --git a/sql/backends/monet5/iot/Tests/bug01.stable.out
b/sql/backends/monet5/iot/Tests/bug01.stable.out
--- a/sql/backends/monet5/iot/Tests/bug01.stable.out
+++ b/sql/backends/monet5/iot/Tests/bug01.stable.out
@@ -68,10 +68,10 @@ Ready.
# 15:59:58 >
#select * from iot.baskets();
-% ., ., ., ., ., ., ., ., ., .,
. # table_name
-% schema, table, status, threshold, winsize, winstride,
timeslice, timestride, heartbeat, seen, events # name
-% clob, clob, clob, int, int, int, int, int, int,
timestamp, int # type
-% 0, 0, 0, 1, 1, 1, 1, 1, 1, 26,
1 # length
+% ., ., ., ., ., ., ., ., ., . #
table_name
+% schema, table, status, winsize, winstride, timeslice,
timestride, heartbeat, seen, events # name
+% clob, clob, clob, int, int, int, int, int,
timestamp, int # type
+% 0, 0, 0, 1, 1, 1, 1, 1, 26, 1 #
length
# 15:59:58 >
# 15:59:58 > "Done."
diff --git a/sql/backends/monet5/iot/Tests/iot13.stable.err
b/sql/backends/monet5/iot/Tests/iot13.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/iot/Tests/iot13.stable.err
@@ -0,0 +1,34 @@
+stderr of test 'iot13` in directory 'sql/backends/monet5/iot` itself:
+
+
+# 11:32:49 >
+# 11:32:49 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=30951" "--set"
"mapi_usock=/var/tmp/mtest-13328/.s.monetdb.30951" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/export/scratch1/mk/iot//Linux/var/MonetDB/mTests_sql_backends_monet5_iot"
+# 11:32:49 >
+
+# builtin opt gdk_dbpath =
/export/scratch1/mk/iot//Linux/var/monetdb5/dbfarm/demo
+# builtin opt gdk_debug = 0
+# builtin opt gdk_vmtrim = no
+# builtin opt monet_prompt = >
+# builtin opt monet_daemon = no
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = false
+# builtin opt mapi_autosense = false
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 30951
+# cmdline opt mapi_usock = /var/tmp/mtest-13328/.s.monetdb.30951
+# cmdline opt monet_prompt =
+# cmdline opt gdk_dbpath =
/export/scratch1/mk/iot//Linux/var/MonetDB/mTests_sql_backends_monet5_iot
+# cmdline opt gdk_debug = 536870922
+
+# 11:32:49 >
+# 11:32:49 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-13328" "--port=30951"
+# 11:32:49 >
+
+
+# 11:32:54 >
+# 11:32:54 > "Done."
+# 11:32:54 >
+
diff --git a/sql/backends/monet5/iot/Tests/iot13.stable.out
b/sql/backends/monet5/iot/Tests/iot13.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/iot/Tests/iot13.stable.out
@@ -0,0 +1,80 @@
+stdout of test 'iot13` in directory 'sql/backends/monet5/iot` itself:
+
+
+# 11:32:49 >
+# 11:32:49 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=30951" "--set"
"mapi_usock=/var/tmp/mtest-13328/.s.monetdb.30951" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/export/scratch1/mk/iot//Linux/var/MonetDB/mTests_sql_backends_monet5_iot"
+# 11:32:49 >
+
+# MonetDB 5 server v11.24.0
+# This is an unreleased version
+# Serving database 'mTests_sql_backends_monet5_iot', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers
+# Found 15.589 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2016 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://vienna.da.cwi.nl:30951/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-13328/.s.monetdb.30951
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/iot loaded
+
+Ready.
+#Tumbled iot.tmp13[0] 1 elements
+#Tumbled iot.tmp13[1] 1 elements
+#Tumbled iot.tmp13[2] 1 elements
+#Tumbled iot.tmp13[0] 0 elements
+#Tumbled iot.tmp13[1] 0 elements
+#Tumbled iot.tmp13[2] 0 elements
+
+# 11:32:49 >
+# 11:32:49 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-13328" "--port=30951"
+# 11:32:49 >
+
+#set schema iot;
+#set optimizer='iot_pipe';
+#create stream table tmp13 (t timestamp, sensor integer, val decimal(8,2)) ;
+#create table agenda13(i integer, msg string);
+#create procedure cq13()
+#begin
+# insert into agenda13 select count(*), 'full batch' from tmp13;
+#end;
+#insert into tmp13 values('2005-09-23 12:34:26.736',1,12.34);
+[ 1 ]
+#insert into tmp13 values('2005-09-23 12:34:26.736',1,12.35);
+[ 1 ]
+#insert into tmp13 values('2005-09-23 12:34:26.736',1,12.36);
+[ 1 ]
+#select * from tmp13;
+% iot.tmp13, iot.tmp13, iot.tmp13 # table_name
+% t, sensor, val # name
+% timestamp, int, decimal # type
+% 26, 1, 10 # length
+[ 2005-09-23 12:34:26.736000, 1, 12.34 ]
+[ 2005-09-23 12:34:26.736000, 1, 12.35 ]
+#select 'RESULT';
+% .L # table_name
+% single_value # name
+% char # type
+% 6 # length
+[ "RESULT" ]
+#select * from agenda13;
+% iot.agenda13, iot.agenda13 # table_name
+% i, msg # name
+% int, clob # type
+% 1, 10 # length
+[ 2, "full batch" ]
+[ 1, "full batch" ]
+#select * from iot.errors();
+% ., . # table_name
+% table, error # name
+% clob, clob # type
+% 0, 0 # length
+#drop procedure cq13;
+#drop table tmp13;
+#drop table agenda13;
+
+# 11:32:54 >
+# 11:32:54 > "Done."
+# 11:32:54 >
+
diff --git a/sql/backends/monet5/iot/Tests/x.ql
b/sql/backends/monet5/iot/Tests/x.ql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/iot/Tests/x.ql
@@ -0,0 +1,26 @@
+SET optimizer = 'iot_pipe';
+
+CREATE STREAM TABLE testing (a timestamp, b int, c real);
+CALL iot.window('sys', 'testing', 3);
+CREATE TABLE testout (a timestamp, b int, c real);
+
+CREATE PROCEDURE cquery()
+BEGIN
+ INSERT INTO testout SELECT * FROM testing;
+END;
+
+CALL iot.query('sys', 'cquery');
+CALL iot.resume();
+
+INSERT INTO testing VALUES (now(), 1, 1);
+INSERT INTO testing VALUES (now(), 2, 2);
+INSERT INTO testing VALUES (now(), 3, 3);
+
+CALL iot.show('sys', 'cquery');
+CALL iot.stop();
+
+DROP PROCEDURE cquery;
+DROP TABLE testout;
+DROP TABLE testing;
+
+
diff --git a/sql/backends/monet5/iot/basket.c b/sql/backends/monet5/iot/basket.c
--- a/sql/backends/monet5/iot/basket.c
+++ b/sql/backends/monet5/iot/basket.c
@@ -358,6 +358,7 @@ BSKTtid(Client cntxt, MalBlkPtr mb, MalS
tids = COLnew(0, TYPE_void, 0, TRANSIENT);
if (tids == NULL)
throw(SQL, "basket.tid", MAL_MALLOC_FAIL);
+ tids->tseqbase = 0;
BATsetcount(tids, BATcount(b));
BATsettrivprop(tids);
@@ -662,8 +663,9 @@ BSKTexport(Client cntxt, MalBlkPtr mb, M
/* remove tuples from a basket according to the sliding policy */
#define ColumnShift(B,TPE) { \
TPE *first= (TPE*) Tloc(B, 0);\
- TPE *n = first + (stride == -1 ? BATcount(b): (BUN) stride);\
- TPE *last= (TPE*) Tloc(B, BUNlast(B));\
+ TPE *n, *last= (TPE*) Tloc(B, BUNlast(B));\
+ shift = stride == -1 ? BATcount(b): (BUN) stride;\
+ n = first + shift;\
for(cnt=0 ; n < last; cnt++, n++, first++)\
*first=*n;\
}
@@ -672,7 +674,7 @@ static str
BSKTtumbleInternal(Client cntxt, str sch, str tbl, int stride)
{
BAT *b;
- BUN cnt;
+ BUN cnt, shift;
int i, bskt;
(void) cntxt;
@@ -709,19 +711,30 @@ BSKTtumbleInternal(Client cntxt, str sch
throw(SQL, "iot.tumble", "Could not find the basket
column storage %s.%s[%d]",sch,tbl,i);
}
- mnstr_printf(BSKTout,"#Tumbled %s.%s[%d] "BUNFMT"
elements\n",sch,tbl,i,cnt);
+ _DEBUG_BASKET_ mnstr_printf(BSKTout,"#Tumbled %s.%s[%d]
"BUNFMT" elements\n",sch,tbl,i,cnt);
BATsetcount(b, cnt);
baskets[bskt].count = BATcount(b);
if( cnt == 0)
baskets[bskt].status = BSKTWAIT;
- b->tnil = b->tnonil = 0;
- b->tsorted = b->trevsorted = 0;
+ b->tnil = 0;
+ if( shift < BATcount(b)){
+ b->tnokey[0] -= shift;
+ b->tnokey[1] -= shift;
+ b->tnosorted = 0;
+ b->tnorevsorted = 0;
+ } else {
+ b->tnokey[0] = 0;
+ b->tnokey[1] = 0;
+ b->tnosorted = 0;
+ b->tnorevsorted = 0;
+ }
BATsettrivprop(b);
}
return MAL_SUCCEED;
}
/* set the tumbling properties */
+
str
BSKTtumble(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
@@ -819,12 +832,11 @@ BSKTdump(void *ret)
if( b)
cnt = BATcount(b);
- mnstr_printf(GDKout, "#baskets[%2d] %s.%s columns
"BUNFMT" threshold %d window=["BUNFMT","BUNFMT"] time window=[" LLFMT "," LLFMT
"] beat " LLFMT " milliseconds" BUNFMT"\n",
+ mnstr_printf(GDKout, "#baskets[%2d] %s.%s columns
"BUNFMT" window=["BUNFMT","BUNFMT"] time window=[" LLFMT "," LLFMT "] beat "
LLFMT " milliseconds" BUNFMT"\n",
bskt,
baskets[bskt].schema_name,
baskets[bskt].table_name,
baskets[bskt].count,
- baskets[bskt].threshold,
baskets[bskt].winsize,
baskets[bskt].winstride,
baskets[bskt].timeslice,
@@ -947,11 +959,17 @@ BSKTdelete(Client cntxt, MalBlkPtr mb, M
b = baskets[idx].bats[i];
if(b){
(void) BATdel(b, rid);
+ baskets[idx].count = BATcount(b);
+ if( BATcount(b) == 0)
+ baskets[idx].status = BSKTWAIT;
+ else
+ baskets[idx].status = BSKTFILLED;
+ b->tnil = 0;
+ b->tnokey[0] = 0;
+ b->tnokey[1] = 0;
BATsettrivprop(b);
}
}
-
- baskets[idx].status = BSKTFILLED;
BBPunfix(rid->batCacheid);
*res = *getArgReference_int(stk,pci,1);
return MAL_SUCCEED;
@@ -1035,16 +1053,15 @@ BSKTtable (Client cntxt, MalBlkPtr mb, M
bat *schemaId = getArgReference_bat(stk,pci,0);
bat *nameId = getArgReference_bat(stk,pci,1);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list