Changeset: 344b0c2c61eb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=344b0c2c61eb Removed Files: sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out Modified Files: sql/server/rel_schema.c sql/server/rel_updates.c sql/server/sql_parser.y sql/test/BugTracker-2017/Tests/All Branch: Jul2017 Log Message:
Merge with Dec2016 branch. diffs (truncated from 319 to 300 lines): 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 @@ -409,16 +409,17 @@ column_option( if (e && is_atom(e->type)) { atom *a = exp_value(sql, e, sql->args, sql->argc); - if(!atom_cast(sql->sa, a, &cs->type)) { - (void) sql_error(sql, 02, "42000!could not cast the default value to the column type\n"); - return SQL_ERR; + if (atom_null(a)) { + mvc_default(sql, cs, NULL); + res = SQL_OK; + break; } } /* reset error */ sql->session->status = 0; sql->errstr[0] = '\0'; } - r = symbol2string(sql, s->data.sym, &err); + r = symbol2string(sql, s->data.sym, &err); if (!r) { (void) sql_error(sql, 02, "42000!incorrect default value '%s'\n", err?err:""); if (err) _DELETE(err); @@ -737,25 +738,14 @@ table_element(mvc *sql, symbol *s, sql_s char *cname = l->h->data.sval; symbol *sym = l->h->next->data.sym; sql_column *c = mvc_bind_column(sql, t, cname); - sql_exp *e = NULL; if (!c) { sql_error(sql, 02, "42S22!ALTER TABLE: no such column '%s'\n", cname); return SQL_ERR; } - e = rel_logical_value_exp(sql, NULL, sym, sql_sel); - - if (e && is_atom(e->type)) { - atom *a = exp_value(sql, e, sql->args, sql->argc); - - if(!atom_cast(sql->sa, a, &c->type)) { - (void) sql_error(sql, 02, "42S22!ALTER TABLE: could not cast the default value to the column type\n"); - return SQL_ERR; - } - } r = symbol2string(sql, sym, &err); if (!r) { - (void) sql_error(sql, 02, "42S22!ALTER TABLE: incorrect default value '%s'\n", err?err:""); + (void) sql_error(sql, 02, "42000!incorrect default value '%s'\n", err?err:""); if (err) _DELETE(err); return SQL_ERR; } 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 @@ -23,12 +23,6 @@ insert_value(mvc *sql, sql_column *c, sq { if (s->token == SQL_NULL) { return exp_atom(sql->sa, atom_general(sql->sa, &c->type, NULL)); - } else if (s->token == SQL_DEFAULT) { - if (c->def) { - return rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", c->def, c->type.type->sqlname), sql->emode); - } else { - return sql_error(sql, 02, "INSERT INTO: column '%s' has no valid default value", c->base.name); - } } else { int is_last = 0; exp_kind ek = {type_value, card_value, FALSE}; @@ -977,19 +971,11 @@ update_table(mvc *sql, dlist *qname, dli int status = sql->session->status; exp_kind ek = {type_value, (single)?card_column:card_relation, FALSE}; - if(single && a->token == SQL_DEFAULT) { - char *colname = assignment->h->next->data.sval; - sql_column *col = mvc_bind_column(sql, t, colname); - if (col->def) { - v = rel_parse_val(sql, sa_message(sql->sa, "select CAST(%s AS %s);", col->def, col->type.type->sqlname), sql->emode); - } else { - return sql_error(sql, 02, "UPDATE: column '%s' has no valid default value", col->base.name); - } - } else if (single) { + if (single) v = rel_value_exp(sql, &rel_val, a, sql_sel, ek); - } else { + else rel_val = rel_subquery(sql, NULL, a, ek, APPLY_JOIN); - } + if (!v) { sql->errstr[0] = 0; sql->session->status = status; diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -1550,7 +1550,7 @@ default: ; default_value: - atom { $$ = $1; } + simple_scalar_exp { $$ = $1; } ; column_constraint: @@ -2888,7 +2888,6 @@ simple_atom: insert_atom: simple_atom - | DEFAULT { $$ = _symbol_create(SQL_DEFAULT, NULL ); } ; value: @@ -2909,12 +2908,7 @@ assignment_commalist: ; assignment: - column '=' DEFAULT - { dlist *l = L(); - append_symbol(l, _symbol_create(SQL_DEFAULT, NULL ) ); - append_string(l, $1); - $$ = _symbol_create_list( SQL_ASSIGN, l); } - | column '=' search_condition + column '=' search_condition { dlist *l = L(); append_symbol(l, $3 ); append_string(l, $1); diff --git a/sql/test/BugTracker-2017/Tests/All b/sql/test/BugTracker-2017/Tests/All --- a/sql/test/BugTracker-2017/Tests/All +++ b/sql/test/BugTracker-2017/Tests/All @@ -21,7 +21,6 @@ HAVE_NETCDF?rel2bin_project-assert.Bug-6 str2decimal.Bug-6206 integer_addition_overflow.Bug-6205 dce_bug-6177 -default-insert-update.Bug-6249 crash_on_NULL_ptr.Bug-6130 HAVE_SAMTOOLS?sqlsmith01 HAVE_NETCDF?sqlsmith02 diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql deleted file mode 100644 --- a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.sql +++ /dev/null @@ -1,30 +0,0 @@ -CREATE TABLE test1 (a INT DEFAULT -1); - -INSERT INTO test1 VALUES (1); -INSERT INTO test1 VALUES (DEFAULT); -INSERT INTO test1 VALUES (2), (DEFAULT), (3), (DEFAULT), (4); - -SELECT * FROM test1; - -UPDATE test1 SET a = DEFAULT WHERE a = 4; - -SELECT * FROM test1; - -DROP TABLE test1; - -CREATE TABLE test2 (a INT DEFAULT 0, b CLOB, c INT, d CLOB DEFAULT 'astring'); - -INSERT INTO test2 VALUES (1, 'a', 1, 'a'); -INSERT INTO test2 VALUES (DEFAULT, 'a', 1, DEFAULT); -INSERT INTO test2 VALUES (2, 'b', 2, 'b'), (100, 'other', -1, DEFAULT), (3, 'c', 3, 'c'), (DEFAULT, 'd', 4, 'd'); - -SELECT * FROM test2; - -UPDATE test2 SET d = DEFAULT, b = 'bbb' WHERE a = 1; - -SELECT * FROM test2; - -INSERT INTO test2 VALUES (1, 'a', DEFAULT, 'a'); --throw an error -UPDATE test2 SET b = DEFAULT; --throw an error - -DROP TABLE test2; diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err deleted file mode 100644 --- a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err +++ /dev/null @@ -1,41 +0,0 @@ -stderr of test 'default-insert-update.Bug-6249` in directory 'sql/test/BugTracker-2017` itself: - - -# 11:11:43 > -# 11:11:43 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39704" "--set" "mapi_usock=/var/tmp/mtest-21586/.s.monetdb.39704" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/MonetDB-Dec2016/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2017" -# 11:11:43 > - -# builtin opt gdk_dbpath = /home/ferreira/MonetDB-Dec2016/BUILD/var/monetdb5/dbfarm/demo -# builtin opt gdk_debug = 0 -# builtin opt gdk_vmtrim = no -# 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 = 39704 -# cmdline opt mapi_usock = /var/tmp/mtest-21586/.s.monetdb.39704 -# cmdline opt monet_prompt = -# cmdline opt gdk_dbpath = /home/ferreira/MonetDB-Dec2016/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2017 -# cmdline opt gdk_debug = 536870922 - -# 11:11:43 > -# 11:11:43 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21586" "--port=39704" -# 11:11:43 > - -MAPI = (monetdb) /var/tmp/mtest-21586/.s.monetdb.39704 -QUERY = INSERT INTO test2 VALUES (1, 'a', DEFAULT, 'a'); --throw an error -ERROR = !INSERT INTO: column 'c' has no valid default value -MAPI = (monetdb) /var/tmp/mtest-23398/.s.monetdb.31464 -QUERY = UPDATE test2 SET b = DEFAULT; --throw an error -ERROR = !UPDATE: column 'b' has no valid default value - - -# 11:11:43 > -# 11:11:43 > "Done." -# 11:11:43 > - diff --git a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out b/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out deleted file mode 100644 --- a/sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.out +++ /dev/null @@ -1,97 +0,0 @@ -stdout of test 'default-insert-update.Bug-6249` in directory 'sql/test/BugTracker-2017` itself: - - -# 11:11:43 > -# 11:11:43 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=39704" "--set" "mapi_usock=/var/tmp/mtest-21586/.s.monetdb.39704" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/ferreira/MonetDB-Dec2016/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2017" -# 11:11:43 > - -# MonetDB 5 server v11.25.24 -# This is an unreleased version -# Serving database 'mTests_sql_test_BugTracker-2017', using 8 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers -# Found 15.499 GiB available main-memory. -# Copyright (c) 1993-July 2008 CWI. -# Copyright (c) August 2008-2017 MonetDB B.V., all rights reserved -# Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://dhcp-120.eduroam.cwi.nl:39704/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-21586/.s.monetdb.39704 -# MonetDB/GIS module loaded -# MonetDB/SQL module loaded - -Ready. - -# 11:11:43 > -# 11:11:43 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-21586" "--port=39704" -# 11:11:43 > - -#CREATE TABLE test1 (a INT DEFAULT -1); -#INSERT INTO test1 VALUES (1); -[ 1 ] -#INSERT INTO test1 VALUES (DEFAULT); -[ 1 ] -#INSERT INTO test1 VALUES (2), (DEFAULT), (3), (DEFAULT), (4); -[ 5 ] -#SELECT * FROM test1; -% sys.test1 # table_name -% a # name -% int # type -% 2 # length -[ 1 ] -[ -1 ] -[ 2 ] -[ -1 ] -[ 3 ] -[ -1 ] -[ 4 ] -#UPDATE test1 SET a = DEFAULT WHERE a = 4; -[ 1 ] -#SELECT * FROM test1; -% sys.test1 # table_name -% a # name -% int # type -% 2 # length -[ 1 ] -[ -1 ] -[ 2 ] -[ -1 ] -[ 3 ] -[ -1 ] -[ -1 ] -#DROP TABLE test1; -#CREATE TABLE test2 (a INT DEFAULT 0, b CLOB, c INT, d CLOB DEFAULT 'astring'); -#INSERT INTO test2 VALUES (1, 'a', 1, 'a'); -[ 1 ] -#INSERT INTO test2 VALUES (DEFAULT, 'a', 1, DEFAULT); -[ 1 ] -#INSERT INTO test2 VALUES (2, 'b', 2, 'b'), (100, 'other', -1, DEFAULT), (3, 'c', 3, 'c'), (DEFAULT, 'd', 4, 'd'); -[ 4 ] -#SELECT * FROM test2; -% sys.test2, sys.test2, sys.test2, sys.test2 # table_name -% a, b, c, d # name -% int, clob, int, clob # type -% 3, 5, 2, 7 # length -[ 1, "a", 1, "a" ] -[ 0, "a", 1, "astring" ] -[ 2, "b", 2, "b" ] -[ 100, "other", -1, "astring" ] -[ 3, "c", 3, "c" ] -[ 0, "d", 4, "d" ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list