Changeset: da0fa264a7e6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=da0fa264a7e6
Modified Files:
sql/backends/monet5/datacell/Tests/All
sql/backends/monet5/datacell/Tests/basket00.mal
sql/backends/monet5/datacell/Tests/emitter00.mal
sql/backends/monet5/datacell/Tests/receptor00.mal
sql/backends/monet5/datacell/Tests/scenario00.stable.out
sql/backends/monet5/datacell/Tests/scenario03.stable.out
sql/backends/monet5/datacell/opt_datacell.c
Branch: default
Log Message:
Fix code generation for singleton values
diffs (294 lines):
diff --git a/sql/backends/monet5/datacell/Tests/All
b/sql/backends/monet5/datacell/Tests/All
--- a/sql/backends/monet5/datacell/Tests/All
+++ b/sql/backends/monet5/datacell/Tests/All
@@ -2,6 +2,9 @@
# (Must be first as otherwise creation of schema datacell via
# 50_datacell.sql is not triggered, as first SQL-clients does not connect
# on "virgin" database!???)
+#
+# beware, the scenario testing calls for manual interaction to start/stop
+# sensors and actuators. The test web merely shows basic functionality.
ENABLE_DATACELL?scenario00
ENABLE_DATACELL?scenario01
ENABLE_DATACELL?scenario02
@@ -11,6 +14,7 @@ ENABLE_DATACELL?scenario05
ENABLE_DATACELL?scenario06
ENABLE_DATACELL?datacell00
ENABLE_DATACELL?dctemper00
+ENABLE_DATACELL?dcload
ENABLE_DATACELL?linearroad
# MAL
ENABLE_DATACELL?basket00
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,11 +1,14 @@
#Testing the basket functionality
# this assumes you have ran first datacell00.sql
-basket.register("datacell","x");
+sql.init();
+basket.register("x");
-basket.lock("datacell","x");
+basket.lock("x");
io.print("x locked");
-basket.unlock("datacell","x");
+basket.unlock("x");
+io.print("x unlocked");
-basket.drop("datacell","x");
+basket.drop("x");
+io.print("x dropped");
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,20 +5,20 @@
sql.init();
-basket.register("datacell","y");
-emitter.start("datacell","y","localhost",50502,"active");
+basket.register("y");
+emitter.start("y","localhost",50502);
io.print("emitter working");
alarm.sleep(5);
-emitter.pause("datacell","y");
+emitter.pause("y");
io.print("emitter paused");
alarm.sleep(5);
-emitter.resume("datacell","y");
+emitter.resume("y");
io.print("emitter restarted");
alarm.sleep(5);
-emitter.pause("datacell","y");
+emitter.pause("y");
io.print("emitter stopped");
emitter.dump();
-emitter.drop("datacell","y");
+emitter.stop("y");
# The SQL equivalents
# call datacell.basket('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
@@ -5,19 +5,19 @@
sql.init();
-basket.register("datacell","x");
-receptor.start("datacell","x","localhost",50501,"passive");
+basket.register("x");
+receptor.start("x","localhost",50501);
io.print("receptor working");
alarm.sleep(5);
-receptor.pause("datacell","x");
+receptor.pause("x");
io.print("receptor paused");
alarm.sleep(5);
-receptor.resume("datacell","x");
+receptor.resume("x");
io.print("receptor restarted");
alarm.sleep(5);
-receptor.pause("datacell","x");
+receptor.pause("x");
io.print("receptor stopped");
-receptor.drop("datacell","x");
+receptor.stop("x");
# The SQL equivalents
# call datacell.basket('datacell','x);
diff --git a/sql/backends/monet5/datacell/Tests/scenario00.stable.out
b/sql/backends/monet5/datacell/Tests/scenario00.stable.out
--- a/sql/backends/monet5/datacell/Tests/scenario00.stable.out
+++ b/sql/backends/monet5/datacell/Tests/scenario00.stable.out
@@ -20,15 +20,78 @@ stdout of test 'scenario00` in directory
Ready.
# SQL catalog created, loading sql scripts once
+# loading sql script: 00_catalog.sql
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_history.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_compress.sql
+# loading sql script: 18_dictionary.sql
+# loading sql script: 19_cluster.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 24_zorder.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 50_datacell.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 99_system.sql
+# 12:44:16 >
+# 12:44:16 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=vienna"
"--port=30375"
+# 12:44:16 >
-# 16:43:47 >
-# 16:43:47 > mclient -lsql -ftest -i -e --host=rig --port=38529
-# 16:43:47 >
+#set optimizer='datacell_pipe';
+#create table datacell.bsktin(
+# id integer,
+# tag integer,
+# payload integer
+#);
+#create table datacell.bsktout (like datacell.bsktin);
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., ., ., . #
table_name
+% nme, host, port, protocol, mode, status, lastseen, cycles,
received, pending # name
+% clob, clob, int, clob, clob, clob, timestamp, int,
int, int # type
+% 15, 9, 5, 3, 7, 6, 26, 1, 1, 1 #
length
+[ "datacell.bsktin", "localhost", 50500, "TCP", "passive",
"paused", NULL, 0, 0, 0 ]
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., ., ., . #
table_name
+% nme, host, port, protocol, mode, status, lastsent, cycles,
sent, pending # name
+% clob, clob, int, clob, clob, clob, timestamp, int,
int, int # type
+% 16, 9, 5, 3, 6, 6, 26, 1, 1, 1 #
length
+[ "datacell.bsktout", "localhost", 50600, "UDP", "active",
"paused", NULL, 0, 0, 0 ]
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., . # table_name
+% nme, status, lastrun, cycles, events, time, error, def # name
+% clob, clob, timestamp, int, int, bigint, clob, clob #
type
+% 13, 6, 26, 1, 1, 1, 0, 59 # length
+[ "datacell.pass", "paused", NULL, 0, 0, 0, "",
"insert into datacell.bsktout select * from datacell.bsktin;" ]
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., ., . # table_name
+% nme, threshold, winsize, winstride, timeslice,
timestride, beat, seen, events # name
+% clob, int, int, int, int, int, int, timestamp,
int # type
+% 16, 1, 1, 1, 1, 1, 1, 26, 1 # length
+[ "datacell.bsktin", 0, 0, 0, 0, 0, 0, NULL,
0 ]
+[ "datacell.bsktout", 0, 0, 0, 0, 0, 0, NULL,
0 ]
+#call datacell.dump();
+#baskets[ 1] datacell.bsktin columns 3 threshold 0 window=[0,0] time
window=[0,0] beat 0 milliseconds events 0
+#baskets[ 2] datacell.bsktout columns 3 threshold 0 window=[0,0] time
window=[0,0] beat 0 milliseconds events 0
+#receptor datacell.bsktin at localhost:50500 protocol=TCP mode=passive
status=running delay=1000
+#emitter datacell.bsktout at localhost:50600 protocol=UDP mode=active
status=running delay=1000
+#scheduler status running
+#[0] datacell.pass running delay 0 cycles 0 events 0 time 0 ms
+#<-- datacell.bsktin basket[1] 0 0
+#drop table datacell.bsktin;
+#drop table datacell.bsktout;
-= to be checked / approved !
+# 12:44:16 >
+# 12:44:16 > "Done."
+# 12:44:16 >
-# 16:43:47 >
-# 16:43:47 > Done.
-# 16:43:47 >
-
diff --git a/sql/backends/monet5/datacell/Tests/scenario03.stable.out
b/sql/backends/monet5/datacell/Tests/scenario03.stable.out
--- a/sql/backends/monet5/datacell/Tests/scenario03.stable.out
+++ b/sql/backends/monet5/datacell/Tests/scenario03.stable.out
@@ -21,14 +21,46 @@ stdout of test 'scenario03` in directory
Ready.
# SQL catalog created, loading sql scripts once
+# 12:45:10 >
+# 12:45:10 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=vienna"
"--port=38236"
+# 12:45:10 >
-# 16:50:15 >
-# 16:50:15 > mclient -lsql -ftest -i -e --host=rig --port=39781
-# 16:50:15 >
+#set optimizer='datacell_pipe';
+#create table datacell.bakin(
+# id integer,
+# tag timestamp,
+# payload integer
+#);
+#create table datacell.bakout( tag timestamp, cnt integer);
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., ., ., . #
table_name
+% nme, host, port, protocol, mode, status, lastseen, cycles,
received, pending # name
+% clob, clob, int, clob, clob, clob, timestamp, int,
int, int # type
+% 14, 9, 5, 3, 7, 7, 26, 1, 1, 1 #
length
+[ "datacell.bakin", "localhost", 50503, "TCP", "passive",
"running", NULL, 0, 0, 0 ]
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., ., ., . #
table_name
+% nme, host, port, protocol, mode, status, lastsent, cycles,
sent, pending # name
+% clob, clob, int, clob, clob, clob, timestamp, int,
int, int # type
+% 15, 9, 5, 3, 6, 7, 26, 1, 1, 1 #
length
+[ "datacell.bakout", "localhost", 50603, "UDP", "active",
"running", NULL, 0, 0, 0 ]
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., . # table_name
+% nme, status, lastrun, cycles, events, time, error, def # name
+% clob, clob, timestamp, int, int, bigint, clob, clob #
type
+% 14, 7, 26, 1, 1, 1, 0, 117 # length
+[ "datacell.schep", "running", NULL, 0, 0, 0, "",
"insert into datacell.bakout select now(), count(*) from datacell.bakin where
datacell.threshold('datacell.bakin',15);" ]
+#select * from datacell.receptors(); select * from datacell.emitters(); select
* from datacell.queries(); select * from datacell.baskets();
+% ., ., ., ., ., ., ., ., . # table_name
+% nme, threshold, winsize, winstride, timeslice,
timestride, beat, seen, events # name
+% clob, int, int, int, int, int, int, timestamp,
int # type
+% 15, 1, 1, 1, 1, 1, 1, 26, 1 # length
+[ "datacell.bakin", 0, 0, 0, 0, 0, 0, NULL,
0 ]
+[ "datacell.bakout", 0, 0, 0, 0, 0, 0, NULL,
0 ]
+#drop table datacell.bakin;
+#drop table datacell.bakout;
-= to be checked / approved !
+# 12:45:10 >
+# 12:45:10 > "Done."
+# 12:45:10 >
-# 16:50:15 >
-# 16:50:15 > Done.
-# 16:50:15 >
-
diff --git a/sql/backends/monet5/datacell/opt_datacell.c
b/sql/backends/monet5/datacell/opt_datacell.c
--- a/sql/backends/monet5/datacell/opt_datacell.c
+++ b/sql/backends/monet5/datacell/opt_datacell.c
@@ -219,16 +219,22 @@ OPTdatacellImplementation(Client cntxt,
/* upgrade single values to a
BAT */
clrFunction(p);
if (!isaBatType(getVarType(mb,
getArg(p, 5)))) {
- getModuleId(p) = sqlRef;
- getFunctionId(p) =
singleRef;
+ qq= newInstruction(mb,
ASSIGNsymbol);
+ getModuleId(qq) =
sqlRef;
+ getFunctionId(qq) =
singleRef;
+ getArg(qq, 0) =
getArg(qa[j], k + 2);
+ getArg(qq, 1) =
getArg(p, 5);
+ qq->argc = 2;
+ p = qq;
+ } else {
+ qq= newAssignment(mb);
+ getArg(qq, 0) =
getArg(qa[j], k + 2);
+ getArg(qq, 1) =
getArg(p, 5);
+ qq->argc = 2;
+ alias[getArg(p,0)] =
getArg(p,1);
+ p->argc = 2;
+ mvc = getArg(p, 0);
}
- qq= newAssignment(mb);
- getArg(qq, 0) = getArg(qa[j], k
+ 2);
- getArg(qq, 1) = getArg(p, 5);
- qq->argc = 2;
- alias[getArg(p,0)] =
getArg(p,1);
- p->argc = 2;
- mvc = getArg(p, 0);
}
} else {
if ( alias[mvc] )
@@ -250,8 +256,6 @@ OPTdatacellImplementation(Client cntxt,
{
clk = GDKusec();
optimizerCheck(cntxt, mb, "optimizer.datacell", 1, /*t =*/
(GDKusec() - clk), OPT_CHECK_ALL);
- mnstr_printf(cntxt->fdout, "=FINISHED datacell %d\n", actions);
- printFunction(cntxt->fdout, mb, 0, LIST_MAL_STMT | LIST_MAPI);
addtoMalBlkHistory(mb, "datacell");
}
GDKfree(alias);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list