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

Reply via email to