Changeset: 9e2d7dfe2d2b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e2d7dfe2d2b Modified Files: Branch: default Log Message:
merge with Oct2010 diffs (truncated from 491 to 300 lines): diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/backends/monet5/sql.mx --- a/sql/src/backends/monet5/sql.mx Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/backends/monet5/sql.mx Thu Sep 16 08:53:23 2010 +0200 @@ -1637,6 +1637,18 @@ return sql_message("ALTER TABLE: insufficient privileges for user '%s' in schema '%s'", stack_get_string(sql, "current_user"), s->base.name); } + /* First check if all the changes are allowed */ + if (t->idxs.set) { + /* only one pkey */ + if (nt->pkey) { + for (n = t->idxs.nelm; n; n = n->next) { + sql_idx *i = n->data; + if (i->key->type == pkey) + return sql_message("CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY KEY\n"); + } + } + } + if (t->readonly != nt->readonly) mvc_readonly( sql, nt, t->readonly); diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/benchmarks/tpch/Tests/01-22.stable.out --- a/sql/src/benchmarks/tpch/Tests/01-22.stable.out Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/benchmarks/tpch/Tests/01-22.stable.out Thu Sep 16 08:53:23 2010 +0200 @@ -859,11 +859,41 @@ % 7, 1 # length [ "joinidx", 0 ] -# 11:48:06 > -# 11:48:06 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=35781 -# 11:48:06 > +# 00:16:03 > +# 00:16:03 > Mtimeout -timeout 60 mclient -lsql -ftest -i -e --host=alf --port=39190 < /net/alf.ins.cwi.nl/export/scratch1/niels/rc/MonetDB/sql/src/benchmarks/tpch/16.sql +# 00:16:03 > -% .part, .part, .part, .partsupp # table_name +#select +# p_brand, +# p_type, +# p_size, +# count(distinct ps_suppkey) as supplier_cnt +#from +# partsupp, +# part +#where +# p_partkey = ps_partkey +# and p_brand <> 'Brand#45' +# and p_type not like 'MEDIUM POLISHED%' +# and p_size in (49, 14, 23, 45, 19, 3, 36, 9) +# and ps_suppkey not in ( +# select +# s_suppkey +# from +# supplier +# where +# s_comment like '%Customer%Complaints%' +# ) +#group by +# p_brand, +# p_type, +# p_size +#order by +# supplier_cnt desc, +# p_brand, +# p_type, +# p_size; +% sys.part, sys.part, sys.part, sys.partsupp # table_name % p_brand, p_type, p_size, supplier_cnt # name % varchar, varchar, int, wrd # type % 8, 25, 2, 1 # length diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/benchmarks/tpch/Tests/16.stable.out --- a/sql/src/benchmarks/tpch/Tests/16.stable.out Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/benchmarks/tpch/Tests/16.stable.out Thu Sep 16 08:53:23 2010 +0200 @@ -24,7 +24,37 @@ # 12:34:53 > Mtimeout -timeout 60 MapiClient -lsql -u monetdb -P monetdb --host=localhost --port=45579 < 16.sql # 12:34:53 > -% .part, .part, .part, .partsupp # table_name +#select +# p_brand, +# p_type, +# p_size, +# count(distinct ps_suppkey) as supplier_cnt +#from +# partsupp, +# part +#where +# p_partkey = ps_partkey +# and p_brand <> 'Brand#45' +# and p_type not like 'MEDIUM POLISHED%' +# and p_size in (49, 14, 23, 45, 19, 3, 36, 9) +# and ps_suppkey not in ( +# select +# s_suppkey +# from +# supplier +# where +# s_comment like '%Customer%Complaints%' +# ) +#group by +# p_brand, +# p_type, +# p_size +#order by +# supplier_cnt desc, +# p_brand, +# p_type, +# p_size; +% sys.part, sys.part, sys.part, sys.partsupp # table_name % p_brand, p_type, p_size, supplier_cnt # name % varchar, varchar, int, wrd # type % 8, 25, 2, 1 # length diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/server/rel_optimizer.mx --- a/sql/src/server/rel_optimizer.mx Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/server/rel_optimizer.mx Thu Sep 16 08:53:23 2010 +0200 @@ -2969,7 +2969,7 @@ } } /* for count/rank we need atleast one column */ - if (!nr && (is_project(subrel->op) || is_base(subrel->op))) { + if (!nr && (is_project(subrel->op) || is_base(subrel->op)) && subrel->exps->h) { sql_exp *e = subrel->exps->h->data; e->used = 1; } diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/server/rel_schema.mx --- a/sql/src/server/rel_schema.mx Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/server/rel_schema.mx Thu Sep 16 08:53:23 2010 +0200 @@ -263,13 +263,6 @@ key_type kt = (s->token == SQL_UNIQUE) ? ukey : pkey; sql_key *k; -/* - if (isTempTable(t)) { - (void) sql_error(sql, 02, "CONSTRAINT: constraints on temporary tables are not supported\n"); - return res; - } -*/ - if (kt == pkey && t->pkey) { (void) sql_error(sql, 02, "CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY KEY\n"); return res; diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/server/rel_select.mx --- a/sql/src/server/rel_select.mx Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/server/rel_select.mx Thu Sep 16 08:53:23 2010 +0200 @@ -172,6 +172,8 @@ static void rel_setsubquery(sql_rel*r) { + if (rel_is_ref(r)) + return; if (r->l && !is_base(r->op)) rel_setsubquery(r->l); if (r->r && is_join(r->op)) @@ -2616,7 +2618,7 @@ sql_exp *l = rel_value_exp(sql, &left, lo, f, ek), *e, *r = NULL; list *vals = NULL; int correlated = 0, vals_only = 1; - int l_is_value = 1; + int l_is_value = 1, r_is_rel = 0; if (!l && sql->session->status != -ERR_AMBIGUOUS) { l_is_value = 0; @@ -2658,6 +2660,8 @@ sql_rel *rl; r = rel_value_exp(sql, &z, sval, f, ek); + if (z) + r_is_rel = 1; if (!r && sql->session->status != -ERR_AMBIGUOUS) { /* reset error */ sql->session->status = 0; @@ -2750,7 +2754,7 @@ } e = exp_compare( l, r, cmp_equal ); rel_join_add_exp(rel, e); - if (correlated || l_is_value) { + if (correlated || l_is_value || r_is_rel) { rel->op = (sc->token == SQL_IN)?op_semi:op_anti; } else if (sc->token == SQL_NOT_IN) { rel->op = op_left; diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/server/rel_semantic.mx --- a/sql/src/server/rel_semantic.mx Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/server/rel_semantic.mx Thu Sep 16 08:53:23 2010 +0200 @@ -256,7 +256,7 @@ dnode *dn = sym->data.lval->h; dnode *cn = sym->data.lval->h->next; char *name = qname_table(dn->data.lval); - sql_rel *rel, *nrel; + sql_rel *nrel; list *exps = NULL; if (frame_find_var(sql, name)) { @@ -272,10 +272,8 @@ append(exps, exp_column(name, cname, NULL, CARD_MULTI, 0 /* null? */, 0)); } } - rel = rel_recursive_func(exps); - stack_push_rel_view(sql, name, rel); - nrel = rel_semantic(sql, sym); + stack_push_rel_view(sql, name, nrel); if (!nrel) { stack_pop_frame(sql); return NULL; @@ -287,9 +285,6 @@ for (; ne; ne = ne->next) exp_setname( ne->data, name, NULL ); } - if (!rel_is_ref(rel)) - stack_set_rel_view(sql, name, nrel); - rel_destroy(nrel); } rel = rel_semantic(sql, select); stack_pop_frame(sql); @@ -297,7 +292,6 @@ } case SQL_MULSTMT: { - //assert(0); /* handled before rel_semantic */ dnode *d; sql_rel *r = NULL; diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/test/BugTracker-2010/Tests/copy-into-too-long-string.Bug-2358.sql --- a/sql/src/test/BugTracker-2010/Tests/copy-into-too-long-string.Bug-2358.sql Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/test/BugTracker-2010/Tests/copy-into-too-long-string.Bug-2358.sql Thu Sep 16 08:53:23 2010 +0200 @@ -3,3 +3,6 @@ COPY 1 RECORDS INTO t FROM STDIN USING DELIMITERS '|',' ','"' NULL AS ''; "abcd" + + +drop table t; diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/test/BugTracker-2010/Tests/duplicate-key.Bug-2667.stable.err --- a/sql/src/test/BugTracker-2010/Tests/duplicate-key.Bug-2667.stable.err Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/test/BugTracker-2010/Tests/duplicate-key.Bug-2667.stable.err Thu Sep 16 08:53:23 2010 +0200 @@ -72,12 +72,12 @@ # 12:43:13 > mclient -lsql -ftest -i -e --host=ottar --port=34908 # 12:43:13 > -MAPI = mone...@ottar:32832 +MAPI = mone...@alf:34990 QUERY = ALTER TABLE mulpk ADD CONSTRAINT pk2 PRIMARY KEY (id); -ERROR = !CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY KEY -MAPI = mone...@ottar:32832 +ERROR = !SQLException:sql.catalog:CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY KEY +MAPI = mone...@alf:34990 QUERY = ALTER TABLE mulpk ADD CONSTRAINT pk3 PRIMARY KEY (id); -ERROR = !CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY KEY +ERROR = !SQLException:sql.catalog:CONSTRAINT PRIMARY KEY: a table can have only one PRIMARY KEY # 12:43:13 > # 12:43:13 > Done. diff -r 010a386d37f9 -r 9e2d7dfe2d2b sql/src/test/BugTracker-2010/Tests/multiple-common-table-expressions.Bug-2664.stable.out --- a/sql/src/test/BugTracker-2010/Tests/multiple-common-table-expressions.Bug-2664.stable.out Wed Sep 15 18:30:21 2010 +0200 +++ b/sql/src/test/BugTracker-2010/Tests/multiple-common-table-expressions.Bug-2664.stable.out Thu Sep 16 08:53:23 2010 +0200 @@ -1,1 +1,125 @@ -Output to be approved when bug is fixed. +stdout of test 'multiple-common-table-expressions.Bug-2664` in directory 'src/test/BugTracker-2010` itself: + + +# 23:46:21 > +# 23:46:21 > mserver5 "--config=/ufs/niels/scratch/rc/Linux-x86_64/etc/monetdb5.conf" --debug=10 --set gdk_nr_threads=0 --set "monet_mod_path=/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/lib:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/bin" --set "gdk_dbfarm=/ufs/niels/scratch/rc/Linux-x86_64/var/MonetDB5/dbfarm" --set mapi_open=true --set xrpc_open=true --set mapi_port=39748 --set xrpc_port=42172 --set monet_prompt= --set mal_listing=2 --trace "--dbname=mTests_src_test_BugTracker-2010" --set mal_listing=0 ; echo ; echo Over.. +# 23:46:21 > + +# MonetDB server v5.22.0, based on kernel v1.40.0 +# Not released +# Serving database 'mTests_src_test_BugTracker-2010', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 7.753 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2010 MonetDB B.V., all rights reserved +# Visit http://monetdb.cwi.nl/ for further information +#WARNING: LoaderException:loadLibrary:Loading error 'libmseed.so.2: cannot open shared object file: No such file or directory' from within file 'vault' +# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:39748/ +# MonetDB/SQL module v2.40.0 loaded + +Ready. + +Over.. + +# 23:46:21 > +# 23:46:21 > mclient -lsql -ftest -i -e --host=alf --port=39748 +# 23:46:21 > + +#with t(id) as (select id from tables) +#select id from tables +# where id in (select id from t) +# and id in (select id from t); +% .tables # table_name +% id # name +% int # type +% 4 # length +[ 2001 ] +[ 2006 ] +[ 2015 ] +[ 2024 ] +[ 2032 ] +[ 2042 ] +[ 2046 ] _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list