Changeset: bde9d7baf50e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bde9d7baf50e Modified Files: sql/server/rel_updates.c Branch: Aug2011 Log Message:
Merge with Apr2011 branch. diffs (151 lines): 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 @@ -190,8 +190,12 @@ sql_subfunc *isnil = sql_bind_func(sql->sa, sql->session->schema, "isnull", &c->c->type, NULL); sql_exp *_is = nth(ins->exps, c->c->colnr), *nl, *je; sql_exp *rtc = exp_column(sql->sa, rel_name(rt), rc->c->base.name, &rc->c->type, CARD_MULTI, rc->c->null, 0); + char *ename = exp_name(_is); - _is = exp_column(sql->sa, exp_relname(_is), exp_name(_is), exp_subtype(_is), _is->card, has_nil(_is), is_intern(_is)); + if (!ename) + exp_label(sql->sa, _is, ++sql->label); + ename = exp_name(_is); + _is = exp_column(sql->sa, exp_relname(_is), ename, exp_subtype(_is), _is->card, has_nil(_is), is_intern(_is)); nl = exp_unop(sql->sa, _is, isnil); if (need_nulls) { if (nll_exps) { diff --git a/sql/test/BugTracker-2011/Tests/All b/sql/test/BugTracker-2011/Tests/All --- a/sql/test/BugTracker-2011/Tests/All +++ b/sql/test/BugTracker-2011/Tests/All @@ -26,3 +26,4 @@ UDF_in_schema.Bug-2817 with-scope.Bug-2058 blob-update-crash.Bug-2832 +select_value_insert_into.Bug-2845 diff --git a/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.sql b/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.sql @@ -0,0 +1,17 @@ +CREATE TABLE table1 ( + tablename VARCHAR(50) NOT NULL, + PRIMARY KEY (tablename) +); +CREATE TABLE table2 ( + table1_name VARCHAR(50) NOT NULL, + FOREIGN KEY (table1_name) REFERENCES table1 (tablename) +); +insert into table1 (tablename) values ('A'); +insert into table2 (table1_name) values ('A'); +-- Things go wrong here: +insert into table2 (table1_name) select 'A'; + +select * from table2; + +drop table table2; +drop table table1; diff --git a/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.stable.err b/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.stable.err @@ -0,0 +1,39 @@ +stderr of test 'select_value_insert_into.Bug-2845` in directory 'test/BugTracker-2011` itself: + + +# 16:50:48 > +# 16:50:48 > mserver5 --debug=10 --set gdk_nr_threads=0 --set "gdk_dbfarm=/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" --set mapi_open=true --set mapi_port=38292 --set monet_prompt= --trace --forcemito --set mal_listing=2 "--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 ; echo ; echo Over.. +# 16:50:48 > + +# builtin opt gdk_dbname = demo +# builtin opt gdk_dbfarm = /ufs/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 default_pipe = inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector +# builtin opt minimal_pipe = inline,remap,deadcode,multiplex,garbageCollector +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt gdk_dbfarm = /ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 38292 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbname = mTests_test_BugTracker-2011 +# cmdline opt mal_listing = 0 + +# 16:50:48 > +# 16:50:48 > mclient -lsql -ftest -i -e --host=alf --port=38292 +# 16:50:48 > + + +# 16:50:48 > +# 16:50:48 > Done. +# 16:50:48 > + diff --git a/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.stable.out b/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2011/Tests/select_value_insert_into.Bug-2845.stable.out @@ -0,0 +1,55 @@ +stdout of test 'select_value_insert_into.Bug-2845` in directory 'test/BugTracker-2011` itself: + + +# 16:50:48 > +# 16:50:48 > mserver5 --debug=10 --set gdk_nr_threads=0 --set "gdk_dbfarm=/ufs/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB" --set mapi_open=true --set mapi_port=38292 --set monet_prompt= --trace --forcemito --set mal_listing=2 "--dbname=mTests_test_BugTracker-2011" --set mal_listing=0 ; echo ; echo Over.. +# 16:50:48 > + +# MonetDB 5 server v11.3.4 +# This is an unreleased version +# Serving database 'mTests_test_BugTracker-2011', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 7.752 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2011 MonetDB B.V., all rights reserved +# Visit http://monetdb.cwi.nl/ for further information +# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:38292/ +# MonetDB/GIS module loaded +# MonetDB/SQL module loaded + +Ready. + +Over.. + +# 16:50:48 > +# 16:50:48 > mclient -lsql -ftest -i -e --host=alf --port=38292 +# 16:50:48 > + +#CREATE TABLE table1 ( +# tablename VARCHAR(50) NOT NULL, +# PRIMARY KEY (tablename) +#); +#CREATE TABLE table2 ( +# table1_name VARCHAR(50) NOT NULL, +# FOREIGN KEY (table1_name) REFERENCES table1 (tablename) +#); +#insert into table1 (tablename) values ('A'); +[ 1 ] +#insert into table2 (table1_name) values ('A'); +[ 1 ] +#insert into table2 (table1_name) select 'A'; +[ 1 ] +#select * from table2; +% sys.table2 # table_name +% table1_name # name +% varchar # type +% 1 # length +[ "A" ] +[ "A" ] +#drop table table2; +#drop table table1; + +# 16:50:48 > +# 16:50:48 > Done. +# 16:50:48 > + _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list