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
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to