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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list