Changeset: 6b9d21862a6a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6b9d21862a6a Added Files: sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.sql sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.out sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.sql sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.err sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.out sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.sql sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.stable.err sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.stable.out Modified Files: sql/backends/monet5/sql.mx sql/backends/monet5/sql_gencode.c sql/server/rel_schema.c sql/server/rel_updates.c sql/test/BugTracker-2013/Tests/All Branch: Feb2013 Log Message:
fixed bug 3329, ie handle abort on error bit on subavg call fixed bug 3319, return error on unique/primary/foreign constraints on declared tables fixed bug 3318, correctly find the declared tables diffs (truncated from 438 to 300 lines): diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx --- a/sql/backends/monet5/sql.mx +++ b/sql/backends/monet5/sql.mx @@ -1959,6 +1959,9 @@ create_table_or_view( mvc *sql, char *sn return sql_message("42S01!%s TABLE: name '%s' already in use", cd, t->base.name); } else if (temp != SQL_DECLARED_TABLE && (!schema_privs(sql->role_id, s) && !(isTempSchema(s) && temp == SQL_LOCAL_TEMP))){ return sql_message("42000!CREATE TABLE: insufficient privileges for user '%s' in schema '%s'", stack_get_string(sql, "current_user"), s->base.name); + } else if (temp == SQL_DECLARED_TABLE && !list_empty(t->keys.set)) { + return sql_message("42000!DECLARE TABLE: '%s' cannot have constraints", t->base.name); + } osa = sql->sa; diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -1709,7 +1709,7 @@ static int q = pushStr(mb, q, fimp); } else { setVarType(mb,getArg(q,0), - newBatType(TYPE_any,f->res.type->localtype)); + newBatType(TYPE_oid,f->res.type->localtype)); setVarUDFtype(mb,getArg(q,0)); } } else { @@ -1785,6 +1785,7 @@ static int /* some "sub" aggregates have an extra * argument "abort_on_error" */ abort_on_error = sum_or_prod || + strncmp(aggrfunc, "avg", 3) == 0 || strncmp(aggrfunc, "stdev", 5) == 0 || strncmp(aggrfunc, "variance", 8) == 0; @@ -1795,7 +1796,7 @@ static int e = _dumpstmt(sql, mb, s->op3); q = newStmt(mb, mod, aggrfunc); - setVarType(mb, getArg(q, 0), newBatType(TYPE_any, restype)); + setVarType(mb, getArg(q, 0), newBatType(TYPE_oid, restype)); setVarUDFtype(mb, getArg(q, 0)); } else { if (no_nil) { diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -266,6 +266,10 @@ column_constraint_type(mvc *sql, char *n { int res = SQL_ERR; + if (!ss && (s->token != SQL_NULL && s->token != SQL_NOT_NULL)) { + (void) sql_error(sql, 02, "42000!CONSTRAINT: constraints on declared tables are not supported\n"); + return res; + } switch (s->token) { case SQL_UNIQUE: case SQL_PRIMARY_KEY: { diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c --- a/sql/server/rel_updates.c +++ b/sql/server/rel_updates.c @@ -793,15 +793,16 @@ update_table(mvc *sql, dlist *qname, dli if (!s) s = cur_schema(sql); t = mvc_bind_table(sql, s, tname); - if (!t && !sname) + if (!t && !sname) { s = tmp_schema(sql); - - t = mvc_bind_table(sql, s, tname); - if (!t && !s) { - sql_subtype *tpe; - - if ((tpe = stack_find_type(sql, tname)) != NULL) - t = tpe->comp_type; + t = mvc_bind_table(sql, s, tname); + if (!t) + t = mvc_bind_table(sql, NULL, tname); + if (!t) { + sql_subtype *tpe = stack_find_type(sql, tname); + if (tpe) + t = tpe->comp_type; + } } if (!t) { return sql_error(sql, 02, "42S02!UPDATE: no such table '%s'", tname); @@ -951,6 +952,8 @@ delete_table(mvc *sql, dlist *qname, sym if (!t && !sname) { schema = tmp_schema(sql); t = mvc_bind_table(sql, schema, tname); + if (!t) + t = mvc_bind_table(sql, NULL, tname); if (!t) { sql_subtype *tpe = stack_find_type(sql, tname); if (tpe) diff --git a/sql/test/BugTracker-2013/Tests/All b/sql/test/BugTracker-2013/Tests/All --- a/sql/test/BugTracker-2013/Tests/All +++ b/sql/test/BugTracker-2013/Tests/All @@ -27,3 +27,8 @@ psm_functions_and_accessrights.Bug-3300 decimal-cast.Bug-3310 hashed_exp.Bug-3313 mitosis-floor.Bug-3330 +avg_needs_abort_on_error.Bug-3329 +unique_constraint_on_declared_table.Bug-3319 +update_on_declared_table.Bug-3318 + + diff --git a/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.sql b/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.sql @@ -0,0 +1,15 @@ +create table test_avg (a int, b int); + +insert into test_avg (a,b) values (1,1); + +create procedure test_avg_proc() +begin + insert into test_avg (a) select avg(a) from test_avg group by b; +end; + +call test_avg_proc(); +select * from test_avg; + +drop procedure test_avg_proc; +drop test_avg; + diff --git a/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err b/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err @@ -0,0 +1,38 @@ +stderr of test 'avg_needs_abort_on_error.Bug-3329` in directory 'sql/test/BugTracker-2013` itself: + + +# 10:28:44 > +# 10:28:44 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=35358" "--set" "mapi_usock=/var/tmp/mtest-18566/.s.monetdb.35358" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013" "--set" "mal_listing=0" +# 10:28:44 > + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = yes +# 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 = 35358 +# cmdline opt mapi_usock = /var/tmp/mtest-18566/.s.monetdb.35358 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013 +# cmdline opt mal_listing = 0 + +# 10:28:44 > +# 10:28:44 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-18566" "--port=35358" +# 10:28:44 > + +MAPI = (monetdb) /var/tmp/mtest-18566/.s.monetdb.35358 +QUERY = drop test_avg; +ERROR = !syntax error, unexpected IDENT in: "drop test_avg" + +# 10:28:45 > +# 10:28:45 > "Done." +# 10:28:45 > + diff --git a/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.out b/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.out @@ -0,0 +1,47 @@ +stdout of test 'avg_needs_abort_on_error.Bug-3329` in directory 'sql/test/BugTracker-2013` itself: + + +# 10:28:44 > +# 10:28:44 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=35358" "--set" "mapi_usock=/var/tmp/mtest-18566/.s.monetdb.35358" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013" "--set" "mal_listing=0" +# 10:28:44 > + +# MonetDB 5 server v11.15.12 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2013', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 3.775 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2013 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://niels.nesco.mine.nu:35358/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-18566/.s.monetdb.35358 +# MonetDB/GIS module loaded +# MonetDB/JAQL module loaded +# MonetDB/SQL module loaded + +Ready. + +# 10:28:44 > +# 10:28:44 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-18566" "--port=35358" +# 10:28:44 > + +#create table test_avg (a int, b int); +#insert into test_avg (a,b) values (1,1); +[ 1 ] +#create procedure test_avg_proc() +#begin +# insert into test_avg (a) select avg(a) from test_avg group by b; +#end; +#select * from test_avg; +% sys.test_avg, sys.test_avg # table_name +% a, b # name +% int, int # type +% 1, 1 # length +[ 1, 1 ] +[ 1, NULL ] +#drop procedure test_avg_proc; + +# 10:28:45 > +# 10:28:45 > "Done." +# 10:28:45 > + diff --git a/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.sql b/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.sql @@ -0,0 +1,11 @@ +create function MyFunc2() +returns int +begin + declare table t (a int unique); + insert into t values (1); + return select count(*) from t; +end; + +select MyFunc2(); + +drop function MyFunc2; diff --git a/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.err b/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.err @@ -0,0 +1,50 @@ +stderr of test 'unique_constraint_on_declared_table.Bug-3319` in directory 'sql/test/BugTracker-2013` itself: + + +# 10:45:26 > +# 10:45:26 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39133" "--set" "mapi_usock=/var/tmp/mtest-24279/.s.monetdb.39133" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013" "--set" "mal_listing=0" +# 10:45:26 > + +# builtin opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = yes +# 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 = 39133 +# cmdline opt mapi_usock = /var/tmp/mtest-24279/.s.monetdb.39133 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbpath = /home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2013 +# cmdline opt mal_listing = 0 + +# 10:45:26 > +# 10:45:26 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-24279" "--port=39133" +# 10:45:26 > + +MAPI = (monetdb) /var/tmp/mtest-24279/.s.monetdb.39133 +QUERY = create function MyFunc2() + returns int + begin + declare table t (a int unique); + insert into t values (1); + return select count(*) from t; + end; +ERROR = !CONSTRAINT: constraints on declared tables are not supported +MAPI = (monetdb) /var/tmp/mtest-24279/.s.monetdb.39133 +QUERY = select MyFunc2(); +ERROR = !SELECT: no such operator 'myfunc2' +MAPI = (monetdb) /var/tmp/mtest-24279/.s.monetdb.39133 +QUERY = drop function MyFunc2; +ERROR = !DROP FUNCTION: no such function 'myfunc2' + +# 10:45:26 > +# 10:45:26 > "Done." +# 10:45:26 > + diff --git a/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.out b/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.out @@ -0,0 +1,32 @@ +stdout of test 'unique_constraint_on_declared_table.Bug-3319` in directory 'sql/test/BugTracker-2013` itself: + + +# 10:45:26 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list