Changeset: 71d29700d9a1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=71d29700d9a1
Added Files:
sql/backends/monet5/generator/Tests/crash.Bug-3609.sql
sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.out
Removed Files:
sql/backends/monet5/generator/Tests/crash.sql
Modified Files:
monetdb5/optimizer/opt_generator.c
sql/backends/monet5/generator/Tests/All
Branch: Oct2014
Log Message:
Fix incorrect use of the generate_series
This 'hack' catches the series error on using a table producing
function, that is assumed to produce a scalar.
The exportValue MAL signature catches any_1 values, but we
can not express in a MAL signature that only a scalar type
is allowwd.
diffs (135 lines):
diff --git a/monetdb5/optimizer/opt_generator.c
b/monetdb5/optimizer/opt_generator.c
--- a/monetdb5/optimizer/opt_generator.c
+++ b/monetdb5/optimizer/opt_generator.c
@@ -63,7 +63,7 @@ int
OPTgeneratorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci)
{
InstrPtr p,q;
- int i,j,k, used= 0, cases, blocked;
+ int i,j,k, actions=0, used= 0, cases, blocked;
(void) cntxt;
(void) stk;
@@ -104,6 +104,12 @@ OPTgeneratorImplementation(Client cntxt,
} else
used++;
} else
+ if ( getModuleId(q) == sqlRef &&
getFunctionId(q) == putName("exportValue",11) &&
isaBatType(getArgType(mb,p,0)) ){
+ // interface expects scalar
type only, not expressable in MAL signature
+ blocked++;
+ mb->errors++;
+ showException(cntxt->fdout,
MAL, "generate_series", "internal error, generate_series is a table producing
function");
+ }else
if ( getModuleId(q) == languageRef &&
getFunctionId(q) == passRef && getArg(q,1) == getArg(p,0))
// nothing happens in this
instruction
used++;
@@ -119,6 +125,7 @@ OPTgeneratorImplementation(Client cntxt,
setModuleId(p, generatorRef);
setFunctionId(p, parametersRef);
typeChecker(cntxt->fdout,
cntxt->nspace, mb, p, TRUE);
+ actions++;
} else used = 0;
#ifdef VLT_DEBUG
mnstr_printf(cntxt->fdout,"#generator target %d
cases %d used %d error %d\n",getArg(p,0), cases, used, p->typechk);
@@ -129,5 +136,5 @@ OPTgeneratorImplementation(Client cntxt,
#ifdef VLT_DEBUG
printFunction(cntxt->fdout,mb,0,LIST_MAL_ALL);
#endif
- return used== 0;
+ return actions;
}
diff --git a/sql/backends/monet5/generator/Tests/All
b/sql/backends/monet5/generator/Tests/All
--- a/sql/backends/monet5/generator/Tests/All
+++ b/sql/backends/monet5/generator/Tests/All
@@ -10,4 +10,4 @@ joins02
thetaselect00
-crash
+crash.Bug-3609
diff --git a/sql/backends/monet5/generator/Tests/crash.sql
b/sql/backends/monet5/generator/Tests/crash.Bug-3609.sql
rename from sql/backends/monet5/generator/Tests/crash.sql
rename to sql/backends/monet5/generator/Tests/crash.Bug-3609.sql
diff --git a/sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
b/sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
@@ -0,0 +1,41 @@
+stderr of test 'crash.Bug-3609` in directory 'sql/backends/monet5/generator`
itself:
+
+
+# 22:37:45 >
+# 22:37:45 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=33733" "--set"
"mapi_usock=/var/tmp/mtest-5645/.s.monetdb.33733" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/export/scratch1/mk/Oct2014//Linux/var/MonetDB/mTests_sql_backends_monet5_generator"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 22:37:45 >
+
+# builtin opt gdk_dbpath =
/export/scratch1/mk/Oct2014//Linux/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 = 33733
+# cmdline opt mapi_usock = /var/tmp/mtest-5645/.s.monetdb.33733
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbpath =
/export/scratch1/mk/Oct2014//Linux/var/MonetDB/mTests_sql_backends_monet5_generator
+# cmdline opt mal_listing = 0
+# cmdline opt embedded_r = yes
+# cmdline opt gdk_debug = 536870922
+
+# 22:37:46 >
+# 22:37:46 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-5645" "--port=33733"
+# 22:37:46 >
+
+MAPI = (monetdb) /var/tmp/mtest-5645/.s.monetdb.33733
+QUERY = select generate_series(0,2,1);
+ERROR = !MALException:generate_series:internal error, generate_series is a
table producing function
+ !program contains errors
+
+# 22:37:46 >
+# 22:37:46 > "Done."
+# 22:37:46 >
+
diff --git a/sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.out
b/sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.out
@@ -0,0 +1,32 @@
+stdout of test 'crash.Bug-3609` in directory 'sql/backends/monet5/generator`
itself:
+
+
+# 22:37:45 >
+# 22:37:45 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=33733" "--set"
"mapi_usock=/var/tmp/mtest-5645/.s.monetdb.33733" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/export/scratch1/mk/Oct2014//Linux/var/MonetDB/mTests_sql_backends_monet5_generator"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 22:37:45 >
+
+# MonetDB 5 server v11.19.2
+# This is an unreleased version
+# Serving database 'mTests_sql_backends_monet5_generator', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically
linked
+# Found 15.590 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://vienna.ins.cwi.nl:33733/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-5645/.s.monetdb.33733
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R module loaded
+
+Ready.
+
+# 22:37:46 >
+# 22:37:46 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-5645" "--port=33733"
+# 22:37:46 >
+
+
+# 22:37:46 >
+# 22:37:46 > "Done."
+# 22:37:46 >
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list