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

Reply via email to