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

Reply via email to