Changeset: 4674721863c1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4674721863c1
Added Files:
        sql/backends/monet5/Tests/cquery18.sql
        sql/backends/monet5/Tests/cquery18.stable.err
        sql/backends/monet5/Tests/cquery18.stable.out
Modified Files:
        sql/backends/monet5/Tests/All
        sql/backends/monet5/Tests/cqstream03.stable.out
        sql/backends/monet5/Tests/cquery.malC
        sql/backends/monet5/Tests/cquery.stable.err
        sql/backends/monet5/Tests/cquery05.sql
        sql/backends/monet5/cquery.mal
        sql/backends/monet5/sql_basket.h
        sql/backends/monet5/sql_cquery.c
        sql/backends/monet5/sql_cquery.h
        sql/include/sql_catalog.h
        sql/scripts/50_cquery.sql
        sql/server/sql_parser.y
Branch: trails
Log Message:

Whenever an error occurs while executing a CQ, the call exits immediately and 
the CQ gets paused in the scheduler. Use cquery.status() to check the error. 
Also updated the SQL catalog for CQ.


diffs (truncated from 680 to 300 lines):

diff --git a/sql/backends/monet5/Tests/All b/sql/backends/monet5/Tests/All
--- a/sql/backends/monet5/Tests/All
+++ b/sql/backends/monet5/Tests/All
@@ -103,6 +103,7 @@ cquery14
 cquery15
 cquery16
 cquery17
+cquery18
 
 cqstream00
 cqstream01
diff --git a/sql/backends/monet5/Tests/cqstream03.stable.out 
b/sql/backends/monet5/Tests/cqstream03.stable.out
--- a/sql/backends/monet5/Tests/cqstream03.stable.out
+++ b/sql/backends/monet5/Tests/cqstream03.stable.out
@@ -37,7 +37,7 @@ Ready.
 #end;
 #select * from cquery.status();
 % .L1, .L1,    .L1,    .L1,    .L1,    .L1 # table_name
-% tick,        schema, function,       state,  errors, stmt # name
+% tick,        schema, function,       alias,  state,  errors # name
 % timestamp,   clob,   clob,   clob,   clob,   clob # type
 % 26,  0,      0,      0,      0,      0 # length
 #drop procedure cq_agenda;
diff --git a/sql/backends/monet5/Tests/cquery.malC 
b/sql/backends/monet5/Tests/cquery.malC
--- a/sql/backends/monet5/Tests/cquery.malC
+++ b/sql/backends/monet5/Tests/cquery.malC
@@ -4,6 +4,6 @@ cquery.dump();
 
 cquery.show("unknown","query");
 
-(tick:bat[:timestamp],mod:bat[:str],fcn:bat[:str], 
time:bat[:lng],error:bat[:str]) := cquery.log();
+(tick:bat[:timestamp],mod:bat[:str],fcn:bat[:str],alias:bat[:str],time:bat[:lng],error:bat[:str])
 := cquery.log();
 
 io.print(tick,mod,fcn,time,error);
diff --git a/sql/backends/monet5/Tests/cquery.stable.err 
b/sql/backends/monet5/Tests/cquery.stable.err
--- a/sql/backends/monet5/Tests/cquery.stable.err
+++ b/sql/backends/monet5/Tests/cquery.stable.err
@@ -35,7 +35,7 @@ QUERY = # some simple MAL tests
         
         cquery.show("unknown","query");
         
-        (tick:bat[:timestamp],mod:bat[:str],fcn:bat[:str], 
time:bat[:lng],error:bat[:str]) := cquery.log();
+        
(tick:bat[:timestamp],mod:bat[:str],fcn:bat[:str],alias:bat[:str],time:bat[:lng],error:bat[:str])
 := cquery.log();
         
         io.print(tick,mod,fcn,time,error);
 ERROR = !SQLException:cquery.show:The continuous query unknown.query is not 
accessible
diff --git a/sql/backends/monet5/Tests/cquery05.sql 
b/sql/backends/monet5/Tests/cquery05.sql
--- a/sql/backends/monet5/Tests/cquery05.sql
+++ b/sql/backends/monet5/Tests/cquery05.sql
@@ -7,18 +7,14 @@ begin
        insert into cqresult05 (select count(*) from cqresult05);
 end;
 
-start continuous sys.cq_basic() with heartbeat 1000;
+start continuous sys.cq_basic() with heartbeat 1000 cycles 3;
 
-call cquery.wait(2400);
-
-pause continuous cq_basic;
+call cquery.wait(3500);
 
 --select * from cquery.status();
 --select * from cquery.summary();
 --select * from cquery.log();
 
-stop continuous cq_basic;
-
 select 'RESULT';
 select * from cqresult05;
 
diff --git a/sql/backends/monet5/Tests/cquery18.sql 
b/sql/backends/monet5/Tests/cquery18.sql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/cquery18.sql
@@ -0,0 +1,41 @@
+-- test errors in CQ, it should pause automatically if that happens
+-- trigger an zero division
+create table testing18(aaa real);
+
+create procedure cq_query18(ppp integer)
+begin
+       insert into testing18 values (1 / ppp);
+end;
+
+start continuous procedure cq_query18(1) with heartbeat 1000 cycles 1;
+
+call cquery.wait(2000);
+
+select aaa from testing18;
+
+start continuous procedure cq_query18(0) with heartbeat 1000 cycles 2;
+
+call cquery.wait(3000);
+
+select aaa from testing18;
+
+start continuous procedure cq_query18(1) with heartbeat 1000 cycles 2; --error
+
+pause continuous cq_query18; --error
+
+select "schema", "function", errors from cquery.status();
+
+resume continuous cq_query18; --ok
+
+stop continuous cq_query18; --ok
+
+start continuous procedure cq_query18(2) with heartbeat 1000 cycles 2; --ok
+
+call cquery.wait(3000);
+
+select aaa from testing18;
+
+select "schema", "function", "errors" from cquery.status();
+
+drop procedure cq_query18;
+drop table testing18;
diff --git a/sql/backends/monet5/Tests/cquery18.stable.err 
b/sql/backends/monet5/Tests/cquery18.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/cquery18.stable.err
@@ -0,0 +1,44 @@
+stderr of test 'cquery18` in directory 'sql/backends/monet5` itself:
+
+
+# 16:05:22 >  
+# 16:05:22 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=37159" "--set" 
"mapi_usock=/var/tmp/mtest-1786/.s.monetdb.37159" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/home/ferreira/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5"
 "--set" "embedded_r=yes" "--set" "embedded_py=true"
+# 16:05:22 >  
+
+# builtin opt  gdk_dbpath = 
/home/ferreira/MonetDB-trails/BUILD/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 = 37159
+# cmdline opt  mapi_usock = /var/tmp/mtest-1786/.s.monetdb.37159
+# cmdline opt  monet_prompt = 
+# cmdline opt  gdk_dbpath = 
/home/ferreira/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5
+# cmdline opt  embedded_r = yes
+# cmdline opt  embedded_py = true
+# cmdline opt  gdk_debug = 536870922
+
+# 16:05:22 >  
+# 16:05:22 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-1786" "--port=37159"
+# 16:05:22 >  
+
+MAPI  = (monetdb) /var/tmp/mtest-1786/.s.monetdb.37159
+QUERY = start continuous procedure cq_query18(1) with heartbeat 1000 cycles 2; 
--error
+ERROR = !The continuous procedure cq_query18 is already registered.
+CODE  = 3F000
+MAPI  = (monetdb) /var/tmp/mtest-1786/.s.monetdb.37159
+QUERY = pause continuous cq_query18; --error
+ERROR = !The continuous query cq_query18 is already paused
+CODE  = 42000
+
+# 16:05:26 >  
+# 16:05:26 >  "Done."
+# 16:05:26 >  
+
diff --git a/sql/backends/monet5/Tests/cquery18.stable.out 
b/sql/backends/monet5/Tests/cquery18.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/cquery18.stable.out
@@ -0,0 +1,119 @@
+stdout of test 'cquery18` in directory 'sql/backends/monet5` itself:
+
+
+# 16:05:22 >  
+# 16:05:22 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=37159" "--set" 
"mapi_usock=/var/tmp/mtest-1786/.s.monetdb.37159" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/home/ferreira/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5"
 "--set" "embedded_r=yes" "--set" "embedded_py=true"
+# 16:05:22 >  
+
+# MonetDB 5 server v11.28.0
+# This is an unreleased version
+# Serving database 'mTests_sql_backends_monet5', using 8 threads
+# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers
+# Found 15.498 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on 
mapi:monetdb://dhcp-120.eduroam.cwi.nl:37159/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-1786/.s.monetdb.37159
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/Timetrails module loaded
+# MonetDB/Python2 module loaded
+# MonetDB/R   module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# 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_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_temporal.sql
+# loading sql script: 18_index.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: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 27_rejects.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 39_analytics_hge.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 40_json_hge.sql
+# loading sql script: 41_md5sum.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 46_profiler.sql
+# loading sql script: 50_cquery.sql
+# loading sql script: 51_sys_schema_extension.sql
+# loading sql script: 60_wlcr.sql
+# loading sql script: 72_fits.sql
+# loading sql script: 74_netcdf.sql
+# loading sql script: 75_lidar.sql
+# loading sql script: 75_shp.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 80_udf_hge.sql
+# loading sql script: 85_bam.sql
+# loading sql script: 90_generator.sql
+# loading sql script: 90_generator_hge.sql
+# loading sql script: 99_system.sql
+#!ERROR: 22012!division by zero.
+
+# 16:05:22 >  
+# 16:05:22 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-1786" "--port=37159"
+# 16:05:22 >  
+
+#create table testing18(aaa real);
+#create procedure cq_query18(ppp integer)
+#begin
+#      insert into testing18 values (1 / ppp);
+#end;
+#start continuous procedure cq_query18(1) with heartbeat 1000 cycles 1;
+#select aaa from testing18;
+% sys.testing18 # table_name
+% aaa # name
+% real # type
+% 15 # length
+[ 1    ]
+#start continuous procedure cq_query18(0) with heartbeat 1000 cycles 2;
+#select aaa from testing18;
+% sys.testing18 # table_name
+% aaa # name
+% real # type
+% 15 # length
+[ 1    ]
+#select "schema", "function", errors from cquery.status();
+% .L1, .L1,    .L1 # table_name
+% schema,      function,       errors # name
+% clob,        clob,   clob # type
+% 3,   10,     36 # length
+[ "sys",       "cq_query18",   "MALException:calc./:operation failed"  ]
+#resume continuous cq_query18; --ok
+#stop continuous cq_query18; --ok
+#start continuous procedure cq_query18(2) with heartbeat 1000 cycles 2; --ok
+#select aaa from testing18;
+% sys.testing18 # table_name
+% aaa # name
+% real # type
+% 15 # length
+[ 1    ]
+[ 0    ]
+[ 0    ]
+#select "schema", "function", errors from cquery.status();
+% .L1, .L1,    .L1 # table_name
+% schema,      function,       errors # name
+% clob,        clob,   clob # type
+% 0,   0,      0 # length
+#drop procedure cq_query18;
+#drop table testing18;
+
+# 16:05:26 >  
+# 16:05:26 >  "Done."
+# 16:05:26 >  
+
diff --git a/sql/backends/monet5/cquery.mal b/sql/backends/monet5/cquery.mal
--- a/sql/backends/monet5/cquery.mal
+++ b/sql/backends/monet5/cquery.mal
@@ -23,11 +23,11 @@ comment "Sleep for some time";
 
 pattern cycles(mod:str, fcn:str,cnt:int)
 address CQcycles
-comment "Limit number of petrinet steps";
+comment "Limit number of petrinet steps for a single continuous query";
 
 pattern cycles(cnt:int)
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to