Changeset: f8f1dd270926 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f8f1dd270926 Modified Files: sql/src/server/rel_bin.mx Branch: Oct2010 Log Message:
fix for bug 2745 (added missing type checkes) diffs (57 lines): diff -r a73157554665 -r f8f1dd270926 sql/src/server/rel_bin.mx --- a/sql/src/server/rel_bin.mx Fri Dec 10 14:53:26 2010 +0100 +++ b/sql/src/server/rel_bin.mx Fri Dec 10 15:45:35 2010 +0100 @@ -2286,7 +2286,7 @@ sql_kc *c = m->data; sql_kc *rc = o->data; - stmt_relselect_fill(s, stmt_uselect(stmt_bat(rc->c, stmt_dup(rts), RDONLY), stmt_dup(nth(inserts, c->c->colnr)->op2.stval), cmp_equal)); + stmt_relselect_fill(s, stmt_uselect(stmt_bat(rc->c, stmt_dup(rts), RDONLY), check_types(sql, &rc->c->type, stmt_dup(nth(inserts, c->c->colnr)->op2.stval), type_equal), cmp_equal)); if (c->c->null) { sql_subfunc *isnil = sql_bind_func(sql->session->schema, "isnull", &c->c->type, NULL); @@ -2320,7 +2320,7 @@ sql_kc *c = m->data; sql_kc *rc = o->data; - stmt_releqjoin_fill(s, stmt_dup(nth(inserts, c->c->colnr)->op2.stval), stmt_bat(rc->c, stmt_dup(rts), RDONLY)); + stmt_releqjoin_fill(s, check_types(sql, &rc->c->type, stmt_dup(nth(inserts, c->c->colnr)->op2.stval), type_equal), stmt_bat(rc->c, stmt_dup(rts), RDONLY)); if (c->c->null) nulls = 1; } @@ -3106,7 +3106,7 @@ */ static stmt * -join_idx_update(sql_idx * i, stmt **updates, int updcol) +join_idx_update(mvc *sql, sql_idx * i, stmt **updates, int updcol) { int nulls = 0, len, j; node *m, *o; @@ -3163,7 +3163,7 @@ if (nulls) /* remove nulls */ upd = stmt_semijoin(upd, stmt_dup(nnull)); - stmt_releqjoin_fill(s, upd, stmt_dup(stmt_bat(rc->c, stmt_dup(rts), RDONLY))); + stmt_releqjoin_fill(s, check_types(sql, &rc->c->type, upd, type_equal), stmt_dup(stmt_bat(rc->c, stmt_dup(rts), RDONLY))); } /* add missing nulls */ if (nulls) @@ -3194,7 +3194,7 @@ if (hash_index(i->type)) { is = hash_update(sql, i, NULL, -1); } else if (i->type == join_idx) { - is = join_idx_update(i, NULL, -1); + is = join_idx_update(sql, i, NULL, -1); } if (i->key) sql_update_check_key(sql, NULL, i->key, is, -1, l, NULL); @@ -3229,7 +3229,7 @@ if (hash_index(i->type)) { is = hash_update(sql, i, updates, updcol); } else if (i->type == join_idx) { - is = join_idx_update(i, updates, updcol); + is = join_idx_update(sql, i, updates, updcol); } if (i->key) { if (!(sql->cascade_action && list_find_id(sql->cascade_action, i->key->base.id))) { _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list