Changeset: 85e9bea7a75f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85e9bea7a75f
Modified Files:
sql/server/rel_select.c
sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.sql
sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
sql/test/BugTracker-2012/Tests/All
sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.sql
sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.err
sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.out
Branch: Dec2011
Log Message:
added test for bug 2988
fixed bug in rel_simple_select outer projection handling.
diffs (156 lines):
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -4359,7 +4359,8 @@ rel_value_exp2(mvc *sql, sql_rel **rel,
if (r) {
sql_exp *e;
- rel_setsubquery(r);
+ if (ek.card <= card_column && is_project(r->op) &&
list_length(r->exps) > 1)
+ return sql_error(sql, 02, "SELECT: subquery
must return only one column");
e = rel_lastexp(sql, r);
/* group by needed ? */
@@ -4390,16 +4391,19 @@ rel_value_exp2(mvc *sql, sql_rel **rel,
l = list_merge(l, r->exps,
(fdup)NULL);
r->exps = l;
(*rel)->exps = NULL;
+ need_preproj = 1;
/* but also project ( project[] [x],
[x]) */
} else if (is_project(r->op) && l &&
!list_length(l)) {
need_preproj = 1;
}
rel_destroy(*rel);
+ rel_setsubquery(*rel);
*rel = r;
if (need_preproj)
*rel = rel_project(sql->sa,
*rel, pre_proj);
} else {
+ rel_setsubquery(r);
*rel = rel_crossproduct(sql->sa, p, r,
op_join);
*rel = rel_project(sql->sa, *rel,
pre_proj);
}
diff --git a/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.sql
b/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.sql
--- a/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.sql
+++ b/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.sql
@@ -1,3 +1,3 @@
create table t1 (id int NOT NULL);
-insert into t1 values ((select id, name from tables));
+insert into t1 values ((select id from tables));
drop table t1;
diff --git
a/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
b/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
--- a/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
+++ b/sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
@@ -82,8 +82,8 @@ stderr of test 'sql_command_kills_db.SF-
# 16:15:09 > mclient -lsql -umonetdb -Pmonetdb --host=alf --port=39774 -G
# 16:15:09 >
-MAPI = monetdb@sofia:38256
-QUERY = insert into t1 values ((select id, name from tables));
+MAPI = monetdb@niels:30424
+QUERY = insert into t1 values ((select id from tables));
ERROR = !cardinality violation (31>1)
# 16:15:09 >
diff --git a/sql/test/BugTracker-2012/Tests/All
b/sql/test/BugTracker-2012/Tests/All
--- a/sql/test/BugTracker-2012/Tests/All
+++ b/sql/test/BugTracker-2012/Tests/All
@@ -16,3 +16,4 @@ with_in_derived_table.Bug-3043
boolean_coersion.Bug-3012
correlated_groupby_in_selection.Bug-3011
multicolumn_join.Bug-2998
+simple_select.Bug-2988
diff --git a/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.sql
b/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.sql
@@ -0,0 +1,2 @@
+select 1, (select 1) as x;
+select 1, (select 1 as y, 2 as z) as x;
diff --git a/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.err
b/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.err
@@ -0,0 +1,40 @@
+stderr of test 'simple_select.Bug-2988` in directory 'test/BugTracker-2012`
itself:
+
+
+# 21:37:59 >
+# 21:37:59 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" "--set"
"mapi_open=true" "--set" "mapi_port=36012" "--set" "monet_prompt=" "--trace"
"--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012"
"--set" "mal_listing=0"
+# 21:37:59 >
+
+# builtin opt gdk_dbname = demo
+# builtin opt gdk_dbfarm =
/home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm
+# builtin opt gdk_debug = 0
+# builtin opt gdk_alloc_map = no
+# 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 gdk_dbfarm =
/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 36012
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbname = mTests_test_BugTracker-2012
+# cmdline opt mal_listing = 0
+
+# 21:38:00 >
+# 21:38:00 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=niels"
"--port=36012"
+# 21:38:00 >
+
+MAPI = monetdb@niels:36012
+QUERY = select 1, (select 1 as y, 2 as z) as x;
+ERROR = !SELECT: subquery must return only one column
+
+# 21:38:00 >
+# 21:38:00 > "Done."
+# 21:38:00 >
+
diff --git a/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.out
b/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.out
@@ -0,0 +1,36 @@
+stdout of test 'simple_select.Bug-2988` in directory 'test/BugTracker-2012`
itself:
+
+
+# 21:37:59 >
+# 21:37:59 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" "--set"
"mapi_open=true" "--set" "mapi_port=36012" "--set" "monet_prompt=" "--trace"
"--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012"
"--set" "mal_listing=0"
+# 21:37:59 >
+
+# MonetDB 5 server v11.7.8
+# This is an unreleased version
+# Serving database 'mTests_test_BugTracker-2012', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically
linked
+# Found 3.779 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2012 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:36012/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+
+# 21:38:00 >
+# 21:38:00 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=niels"
"--port=36012"
+# 21:38:00 >
+
+#select 1, (select 1) as x;
+% .L2, .L1 # table_name
+% L2, x # name
+% tinyint, tinyint # type
+% 1, 1 # length
+[ 1, 1 ]
+
+# 21:38:00 >
+# 21:38:00 > "Done."
+# 21:38:00 >
+
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list