Changeset: b9dfce47917f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b9dfce47917f Modified Files: sql/src/server/rel_bin.mx sql/src/server/rel_select.mx Branch: default Log Message:
merged Niels' bug fix from Jun2010 diffs (104 lines): diff -r 40d35a583fa8 -r b9dfce47917f sql/src/server/rel_bin.mx --- a/sql/src/server/rel_bin.mx Thu Jul 08 20:51:00 2010 +0200 +++ b/sql/src/server/rel_bin.mx Fri Jul 09 00:52:49 2010 +0200 @@ -3536,7 +3536,7 @@ default: /*RESTRICT*/ /* The overlap between deleted primaries and foreign should be empty */ s = stmt_binop(stmt_aggr(s, NULL, cnt, 1), stmt_atom_wrd(0), ne); - msg = sql_message( "DELETE: FOREIGN KEY constraint '%s.%s' violated", k->t->base.name, k->base.name); + msg = sql_message( "DELETE: FOREIGN KEY constraint '%s.%s' violated", fk->t->base.name, fk->base.name); s = stmt_exception(s, msg, 00001); list_prepend(l, s); } diff -r 40d35a583fa8 -r b9dfce47917f sql/src/server/rel_select.mx --- a/sql/src/server/rel_select.mx Thu Jul 08 20:51:00 2010 +0200 +++ b/sql/src/server/rel_select.mx Fri Jul 09 00:52:49 2010 +0200 @@ -1721,7 +1721,7 @@ return NULL; a = sql_bind_arg(sql, exp->flag); - if (atom_cast(a, t)) { + if (a && atom_cast(a, t)) { sql_subtype *x = ZNEW(sql_subtype); convert_arg(sql, exp->flag, t); /* set new type */ @@ -3088,6 +3088,15 @@ if (!s) s = sql->session->schema; + + /* handle param's early */ + if ((!t1 || !t2) && rel_convert_types(sql, &l, &r, 1/*fix scale*/, type_equal) >= 0) { + t1 = exp_subtype(l); + t2 = exp_subtype(r); + } + if (!t1 || !t2) + return sql_error(sql, 01, "Cannot have a parameter (?) on both sides of an expression"); + f = sql_bind_func(s, fname, t1, t2); if (!f && is_commutative(fname)) { f = sql_bind_func(s, fname, t2, t1); diff -r 40d35a583fa8 -r b9dfce47917f sql/src/test/BugConstraints/Tests/delete_primarykey_1643845.stable.err --- a/sql/src/test/BugConstraints/Tests/delete_primarykey_1643845.stable.err Thu Jul 08 20:51:00 2010 +0200 +++ b/sql/src/test/BugConstraints/Tests/delete_primarykey_1643845.stable.err Fri Jul 09 00:52:49 2010 +0200 @@ -12,12 +12,12 @@ # 12:55:04 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=33669 < delete_primarykey_1643845.sql # 12:55:04 > -MAPI = mone...@localhost:33669 +MAPI = mone...@alf:35948 QUERY = insert into t2 values(2,33); ERROR = !SQLException:assert:INSERT INTO: PRIMARY KEY constraint 't2.age_p' violated -MAPI = mone...@localhost:33669 +MAPI = mone...@alf:35948 QUERY = delete from t1 where id = 1; -ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 't1.id_p' violated +ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 't2.t2_id_f_fkey' violated # 12:55:04 > # 12:55:04 > Done. diff -r 40d35a583fa8 -r b9dfce47917f sql/src/test/Update_Delete_action/Tests/delete_restrict.stable.err --- a/sql/src/test/Update_Delete_action/Tests/delete_restrict.stable.err Thu Jul 08 20:51:00 2010 +0200 +++ b/sql/src/test/Update_Delete_action/Tests/delete_restrict.stable.err Fri Jul 09 00:52:49 2010 +0200 @@ -12,12 +12,12 @@ # 15:54:03 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=38344 # 15:54:03 > -MAPI = mone...@localhost:31237 +MAPI = mone...@alf:35948 QUERY = delete from t1; -ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 't1.t1_id_pkey' violated -MAPI = mone...@localhost:31237 +ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 't2.t2_id_fkey' violated +MAPI = mone...@alf:35948 QUERY = delete from t1 where id > 2 and id < 5; -ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 't1.t1_id_pkey' violated +ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 't2.t2_id_fkey' violated # 15:54:05 > # 15:54:05 > Done. diff -r 40d35a583fa8 -r b9dfce47917f sql/src/test/Via-m/Tests/event_s11.stable.err --- a/sql/src/test/Via-m/Tests/event_s11.stable.err Thu Jul 08 20:51:00 2010 +0200 +++ b/sql/src/test/Via-m/Tests/event_s11.stable.err Fri Jul 09 00:52:49 2010 +0200 @@ -67,16 +67,16 @@ # 15:59:49 > mclient -lsql -umonetdb -Pmonetdb --host=yngling --port=32412 # 15:59:49 > -MAPI = mone...@volund:38056 +MAPI = mone...@alf:35948 QUERY = set id_event = add_event('event 4', 123456, 'artist2', 'location3', 'description3'); ERROR = !types int(32,0) and date(0,0) are not equal -MAPI = mone...@volund:38056 +MAPI = mone...@alf:35948 QUERY = delete from event where event_name = 'event 2'; -ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 'event.event_event_id_pkey' violated -MAPI = mone...@volund:38056 +ERROR = !SQLException:assert:DELETE: FOREIGN KEY constraint 'event_metadata.fk_event_metadata_event_id' violated +MAPI = mone...@alf:35948 QUERY = insert into event_metadata ( ERROR = !SQLException:assert:INSERT INTO: UNIQUE constraint 'event_metadata.unq_metadata' violated -MAPI = mone...@volund:38056 +MAPI = mone...@alf:35948 QUERY = set id_event = add_event('event 4', '2009-06-24', 'artist4', 'location4', 'description4'); ERROR = !SQLException:assert:INSERT INTO: UNIQUE constraint 'event.unq_event_name' violated _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list