Changeset: 61095350fe0d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=61095350fe0d Added Files: sql/backends/monet5/Tests/cquery11.sql sql/backends/monet5/Tests/cquery11.stable.err sql/backends/monet5/Tests/cquery11.stable.out sql/backends/monet5/Tests/cquery12.sql Modified Files: sql/backends/monet5/Tests/All sql/backends/monet5/sql_cquery.c Branch: trails Log Message:
Wait for the scheduler thread to finish when stopping the final continuous query in the server, also cleaned the lock layout. diffs (truncated from 492 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 @@ -96,6 +96,8 @@ cquery07 cquery08 cquery09 cquery10 +cquery11 +cquery12 cqstream00 cqstream01 diff --git a/sql/backends/monet5/Tests/cquery11.sql b/sql/backends/monet5/Tests/cquery11.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/cquery11.sql @@ -0,0 +1,25 @@ +--start and stop the same continuous query continuously +create stream table testing12 (a int) set window 1 stride 1; + +create table results12 (a int); + +create procedure cq_query12() +begin + insert into results12 (select count(*) from testing12); +end; + +start continuous sys.cq_query12() with cycles 1; +stop continuous sys.cq_query12(); + +start continuous sys.cq_query12() with cycles 12; +stop continuous sys.cq_query12(); + +start continuous sys.cq_query12(); +stop continuous sys.cq_query12(); + +select count(*) from results12; + +drop procedure sys.cq_query12; + +drop table testing12; +drop table results12; diff --git a/sql/backends/monet5/Tests/cquery11.stable.err b/sql/backends/monet5/Tests/cquery11.stable.err new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/cquery11.stable.err @@ -0,0 +1,35 @@ +stderr of test 'cquery11` in directory 'sql/backends/monet5` itself: + + +# 17:13:16 > +# 17:13:16 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30384" "--set" "mapi_usock=/var/tmp/mtest-23368/.s.monetdb.30384" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5" "--set" "embedded_r=yes" +# 17:13:16 > + +# 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 = 30384 +# cmdline opt mapi_usock = /var/tmp/mtest-23368/.s.monetdb.30384 +# 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 gdk_debug = 536870922 + +# 17:13:17 > +# 17:13:17 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-23368" "--port=30384" +# 17:13:17 > + + +# 17:13:20 > +# 17:13:20 > "Done." +# 17:13:20 > + diff --git a/sql/backends/monet5/Tests/cquery11.stable.out b/sql/backends/monet5/Tests/cquery11.stable.out new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/cquery11.stable.out @@ -0,0 +1,89 @@ +stdout of test 'cquery11` in directory 'sql/backends/monet5` itself: + + +# 17:13:16 > +# 17:13:16 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=30384" "--set" "mapi_usock=/var/tmp/mtest-23368/.s.monetdb.30384" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5" "--set" "embedded_r=yes" +# 17:13:16 > + +# 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:30384/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-23368/.s.monetdb.30384 +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded +# MonetDB/Timetrails 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 + +# 17:13:17 > +# 17:13:17 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-23368" "--port=30384" +# 17:13:17 > + +#create stream table testing12 (a int) set window 1 stride 1; +#create table results12 (a int); +#create procedure cq_query12() +#begin +# insert into results12 (select count(*) from testing12); +#end; +#select count(*) from results12; +% sys.L4 # table_name +% L3 # name +% bigint # type +% 1 # length +[ 0 ] +#drop procedure sys.cq_query12; +#drop table testing12; +#drop table results12; + +# 17:13:20 > +# 17:13:20 > "Done." +# 17:13:20 > + diff --git a/sql/backends/monet5/Tests/cquery12.sql b/sql/backends/monet5/Tests/cquery12.sql new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/Tests/cquery12.sql @@ -0,0 +1,56 @@ +--trigger other continuous queries inside a continuous query +create stream table testing11a (a int) set window 1 stride 1; +create stream table testing11b (a int) set window 1 stride 1; +create stream table testing11c (a int) set window 1 stride 1; + +create table results11a (a int); +create table results11b (a int); + +create procedure cq_query11a() +begin + insert into results11a (select count(*) from testing11a); +end; + +create procedure cq_query11b() +begin + insert into results11b (select count(*) from testing11b); +end; + +create procedure cq_query11c() +begin + insert into testing11a values (1); + insert into testing11b values (1); +end; + +start continuous sys.cq_query11a() with cycles 1; +start continuous sys.cq_query11b(); +start continuous sys.cq_query11c() with cycles 2; + +insert into testing11c values (1); +insert into testing11c values (2); +insert into testing11c values (3); + +call cquery.wait(1000); + +stop continuous sys.cq_query11a(); +stop continuous sys.cq_query11b(); +stop continuous sys.cq_query11c(); + +start continuous sys.cq_query11a() with cycles 1; + +call cquery.wait(1000); + +stop continuous sys.cq_query11a(); + +select count(*) from results11a; --should be 1 +select count(*) from results11b; --should be 2 + +drop procedure sys.cq_query11a; +drop procedure sys.cq_query11b; +drop procedure sys.cq_query11c; + +drop table testing11a; +drop table testing11b; +drop table testing11c; +drop table results11a; +drop table results11b; diff --git a/sql/backends/monet5/sql_cquery.c b/sql/backends/monet5/sql_cquery.c --- a/sql/backends/monet5/sql_cquery.c +++ b/sql/backends/monet5/sql_cquery.c @@ -55,7 +55,6 @@ static str statusname[7] = {"init", "register", "readytorun", "running", "waiting", "paused", "stopping"}; static str CQstartScheduler(void); -static int CQinit; static int pnstatus = CQINIT; static int cycleDelay = 200; /* be careful, it affects response/throughput timings */ static MT_Lock ttrLock; @@ -640,11 +639,15 @@ CQregister(Client cntxt, MalBlkPtr mb, M pnettop++; unlock: - MT_lock_unset(&ttrLock); + if(!msg && cq_pid == 0) { /* start the scheduler if needed */ + if( pnettop == 1) + pnstatus = CQINIT; + MT_lock_unset(&ttrLock); + msg = CQstartScheduler(); + } else { + MT_lock_unset(&ttrLock); + } finish: - if(!msg && CQinit == 0) { /* start the scheduler if needed */ - msg = CQstartScheduler(); - } return msg; } @@ -712,7 +715,7 @@ CQresumeInternal(Client cntxt, MalBlkPtr } /* start the scheduler if needed */ - if(CQinit == 0) { + if(cq_pid == 0) { msg = CQstartScheduler(); } @@ -799,7 +802,7 @@ CQresumeAll(Client cntxt, MalBlkPtr mb, pnet[i].status = CQWAIT; /* start the scheduler if needed */ - if(CQinit == 0) { + if(cq_pid == 0) { MT_lock_unset(&ttrLock); msg = CQstartScheduler(); } else { @@ -937,7 +940,7 @@ CQbeginAt(Client cntxt, MalBlkPtr mb, Ma for( ; idx < last; idx++) pnet[idx].run = delay - (pnet[idx].beats > 0 ? pnet[idx].beats : 0); - finish: +finish: MT_lock_unset(&ttrLock); return msg; } @@ -975,7 +978,7 @@ CQcycles(Client cntxt, MalBlkPtr mb, Mal for( ; idx < last; idx++) pnet[idx].cycles = cycles; - finish: _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list