Changeset: b59d37caf9fc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b59d37caf9fc
Added Files:
sql/backends/monet5/Tests/cquery22.sql
sql/backends/monet5/Tests/cquery22.stable.err
sql/backends/monet5/Tests/cquery22.stable.out
Modified Files:
monetdb5/optimizer/opt_pipes.c
sql/backends/monet5/Tests/All
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_cquery.c
sql/backends/monet5/sql_cquery.h
sql/backends/monet5/sql_gencode.c
Branch: trails
Log Message:
Clean the basket while dropping the table. Also check for stream tables while
compiling a UDF so the MAL block does not get inlined.
diffs (truncated from 370 to 300 lines):
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -67,7 +67,6 @@ static struct PIPELINES {
{"default_pipe",
"optimizer.inline();"
"optimizer.remap();"
- "optimizer.cquery();"
"optimizer.costModel();"
"optimizer.coercions();"
"optimizer.evaluate();"
@@ -96,6 +95,7 @@ static struct PIPELINES {
// "optimizer.jit();" awaiting the new batcalc api
// "optimizer.oltp();"awaiting the autocommit front-end changes
"optimizer.wlc();"
+ "optimizer.cquery();"
"optimizer.garbageCollector();",
"stable", NULL, NULL, 1},
/*
@@ -104,7 +104,6 @@ static struct PIPELINES {
{"volcano_pipe",
"optimizer.inline();"
"optimizer.remap();"
- "optimizer.cquery();"
"optimizer.costModel();"
"optimizer.coercions();"
"optimizer.evaluate();"
@@ -134,6 +133,7 @@ static struct PIPELINES {
// "optimizer.jit();" awaiting the new batcalc api
// "optimizer.oltp();"awaiting the autocommit front-end changes
"optimizer.wlc();"
+ "optimizer.cquery();"
"optimizer.garbageCollector();",
"stable", NULL, NULL, 1},
/* The no_mitosis pipe line is (and should be kept!) identical to the
@@ -149,7 +149,6 @@ static struct PIPELINES {
{"no_mitosis_pipe",
"optimizer.inline();"
"optimizer.remap();"
- "optimizer.cquery();"
"optimizer.costModel();"
"optimizer.coercions();"
"optimizer.evaluate();"
@@ -177,6 +176,7 @@ static struct PIPELINES {
// "optimizer.jit();" awaiting the new batcalc api
// "optimizer.oltp();"awaiting the autocommit front-end changes
"optimizer.wlc();"
+ "optimizer.cquery();"
"optimizer.garbageCollector();",
"stable", NULL, NULL, 1},
/* The sequential pipe line is (and should be kept!) identical to the
@@ -192,7 +192,6 @@ static struct PIPELINES {
{"sequential_pipe",
"optimizer.inline();"
"optimizer.remap();"
- "optimizer.cquery();"
"optimizer.costModel();"
"optimizer.coercions();"
"optimizer.evaluate();"
@@ -219,6 +218,7 @@ static struct PIPELINES {
// "optimizer.jit();" awaiting the new batcalc api
// "optimizer.oltp();"awaiting the autocommit front-end changes
"optimizer.wlc();"
+ "optimizer.cquery();"
"optimizer.garbageCollector();",
"stable", NULL, NULL, 1},
/* Experimental pipelines stressing various components under
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
@@ -107,6 +107,7 @@ cquery18
cquery19
cquery20
cquery21
+cquery22
cqstream00
cqstream01
diff --git a/sql/backends/monet5/Tests/cquery22.sql
b/sql/backends/monet5/Tests/cquery22.sql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/cquery22.sql
@@ -0,0 +1,20 @@
+create stream table cqinput22(input integer) set window 2;
+create function calculateaverage() returns real begin return select AVG(input)
from cqinput22; end;
+create function calculateaverage(dev int) returns real begin return select
AVG(dev + input) from cqinput22; end;
+
+start continuous function calculateaverage() with cycles 3 as calcavg;
+start continuous function calculateaverage() with cycles 2 as calcavg; --error
+start continuous function calculateaverage() with cycles 1 as calc;
+
+start continuous function calculateaverage(12) with cycles 4 as calcavg;
--error
+start continuous function calculateaverage(10) as calc; --error
+start continuous function calculateaverage(9) with cycles 1 as othercalc;
+start continuous function calculateaverage() as othercalc; --error
+
+call cquery.wait(1000);
+
+stop all continuous;
+
+drop function calculateaverage();
+drop function calculateaverage(int);
+drop table cqinput22;
diff --git a/sql/backends/monet5/Tests/cquery22.stable.err
b/sql/backends/monet5/Tests/cquery22.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/cquery22.stable.err
@@ -0,0 +1,52 @@
+stderr of test 'cquery22` in directory 'sql/backends/monet5` itself:
+
+
+# 15:42:42 >
+# 15:42:42 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=34536" "--set"
"mapi_usock=/var/tmp/mtest-14134/.s.monetdb.34536" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/home/ferreira/repositories/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5"
"--set" "embedded_r=yes" "--set" "embedded_py=true"
+# 15:42:42 >
+
+# builtin opt gdk_dbpath =
/home/ferreira/repositories/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 = 34536
+# cmdline opt mapi_usock = /var/tmp/mtest-14134/.s.monetdb.34536
+# cmdline opt monet_prompt =
+# cmdline opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5
+# cmdline opt embedded_r = yes
+# cmdline opt embedded_py = true
+# cmdline opt gdk_debug = 553648138
+
+# 15:42:42 >
+# 15:42:42 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-14134" "--port=34536"
+# 15:42:42 >
+
+MAPI = (monetdb) /var/tmp/mtest-14134/.s.monetdb.34536
+QUERY = start continuous function calculateaverage() with cycles 2 as calcavg;
--error
+ERROR = !The continuous function calcavg is already registered.
+CODE = 3F000
+MAPI = (monetdb) /var/tmp/mtest-14134/.s.monetdb.34536
+QUERY = start continuous function calculateaverage(12) with cycles 4 as
calcavg; --error
+ERROR = !The continuous function calcavg is already registered.
+CODE = 3F000
+MAPI = (monetdb) /var/tmp/mtest-14134/.s.monetdb.34536
+QUERY = start continuous function calculateaverage(10) as calc; --error
+ERROR = !The continuous function calc is already registered.
+CODE = 3F000
+MAPI = (monetdb) /var/tmp/mtest-14134/.s.monetdb.34536
+QUERY = start continuous function calculateaverage() as othercalc; --error
+ERROR = !The continuous function othercalc is already registered.
+CODE = 3F000
+
+# 15:42:44 >
+# 15:42:44 > "Done."
+# 15:42:44 >
+
diff --git a/sql/backends/monet5/Tests/cquery22.stable.out
b/sql/backends/monet5/Tests/cquery22.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/Tests/cquery22.stable.out
@@ -0,0 +1,86 @@
+stdout of test 'cquery22` in directory 'sql/backends/monet5` itself:
+
+
+# 15:42:42 >
+# 15:42:42 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=34536" "--set"
"mapi_usock=/var/tmp/mtest-14134/.s.monetdb.34536" "--set" "monet_prompt="
"--forcemito"
"--dbpath=/home/ferreira/repositories/MonetDB-trails/BUILD/var/MonetDB/mTests_sql_backends_monet5"
"--set" "embedded_r=yes" "--set" "embedded_py=true"
+# 15:42:42 >
+
+# 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.496 GiB available main-memory.
+# Copyright (c) 1993 - July 2008 CWI.
+# Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on
mapi:monetdb://localhost.localdomain:34536/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-14134/.s.monetdb.34536
+# 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: 97_comments.sql
+# loading sql script: 99_system.sql
+
+# 15:42:42 >
+# 15:42:42 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-14134" "--port=34536"
+# 15:42:42 >
+
+#create stream table cqinput22(input integer) set window 2;
+#create function calculateaverage() returns real begin return select
AVG(input) from cqinput22; end;
+#create function calculateaverage(dev int) returns real begin return select
AVG(dev + input) from cqinput22; end;
+#start continuous function calculateaverage() with cycles 3 as calcavg;
+#start continuous function calculateaverage() with cycles 1 as calc;
+#start continuous function calculateaverage(9) with cycles 1 as othercalc;
+#stop all continuous;
+#drop function calculateaverage();
+#drop function calculateaverage(int);
+#drop table cqinput22;
+
+# 15:42:44 >
+# 15:42:44 > "Done."
+# 15:42:44 >
+
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -312,7 +312,7 @@ drop_table(mvc *sql, char *sname, char *
throw(SQL,"sql.droptable", SQLSTATE(42000) "DROP TABLE: cannot
drop system table '%s'", tname);
} else if (!mvc_schema_privs(sql, s) && !(isTempSchema(s) &&
t->persistence == SQL_LOCAL_TEMP)) {
throw(SQL,"sql.droptable",SQLSTATE(42000) "DROP TABLE: access
denied for %s to schema ;'%s'", stack_get_string(sql, "current_user"),
s->base.name);
- } else if (isStream(t) && CQlocateBasketExternal(sname, tname)) {
+ } else if (isStream(t) && CQtryDeleteBasket(sname, tname)) {
throw(SQL,"sql.droptable",SQLSTATE(42000) "DROP TABLE: unable
to drop stream table '%s': there are pending continuous queries on it", tname);
}
if (!drop_action && t->keys.set) {
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
@@ -52,7 +52,7 @@
#include "opt_prelude.h"
#include "mal_authorize.h"
#include "mtime.h"
-#include "../../../monetdb5/mal/mal_client.h"
+#include "mal_client.h"
static const str statusname[8] = {"starting", "paused", "running", "pausing",
"error", "stopping", "stopping", "stopping"};
@@ -291,9 +291,9 @@ CQlocateUDF(sql_func *f) //check if an U
}
int
-CQlocateBasketExternal(str schname, str tblname) //check if a stream table is
being used by a continuous query
+CQtryDeleteBasket(str schname, str tblname) //check if a stream table is being
used by a continuous query
{
- int i, j, res = 0;
+ int i, j, res = 0, bskt;
MT_lock_set(&ttrLock);
for( i=0; i < pnettop && !res; i++){
@@ -303,6 +303,11 @@ CQlocateBasketExternal(str schname, str
res = 1;
}
}
+ if(!res) { //clean the basket
+ bskt = BSKTlocate(schname, tblname);
+ if (bskt != 0)
+ BSKTclean(bskt);
+ }
MT_lock_unset(&ttrLock);
return res;
}
@@ -355,7 +360,7 @@ CQanalysis(Client cntxt, MalBlkPtr mb, i
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list