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

Reply via email to