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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list