Changeset: 257c389c10e3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/257c389c10e3 Modified Files: sql/backends/monet5/rel_bin.c Branch: iso Log Message:
add predicates in ukey check diffs (56 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -3907,10 +3907,22 @@ sql_parse(backend *be, sql_schema *s, co return sq; } +static list * +add_predicate(sql_allocator *sa, list *l, sql_column *c) +{ + pl *p = SA_ZNEW(sa, pl); + p->c = c; + if (!l) + l = sa_list(sa); + list_append(l, p); + return l; +} + static stmt * insert_check_ukey(backend *be, list *inserts, sql_key *k, stmt *idx_inserts) { mvc *sql = be->mvc; + sql_trans *tr = sql->session->tr; /* pkey's cannot have NULLs, ukeys however can current implementation switches on 'NOT NULL' on primary key columns */ @@ -3940,6 +3952,9 @@ insert_check_ukey(backend *be, list *ins sql_kc *c = m->data; stmt *cs = list_fetch(inserts, c->c->colnr); + /* foreach column add predicate */ + tr->predicates = add_predicate(sql->pa, tr->predicates, c->c); + col = stmt_col(be, c->c, dels, dels->partition); if ((k->type == ukey) && stmt_has_null(col)) { stmt *nn = stmt_selectnonil(be, col, s); @@ -3959,6 +3974,9 @@ insert_check_ukey(backend *be, list *ins sql_kc *c = m->data; stmt *cs = list_fetch(inserts, c->c->colnr); + /* foreach column add predicate */ + tr->predicates = add_predicate(sql->pa, tr->predicates, c->c); + col = stmt_col(be, c->c, dels, dels->partition); list_append(lje, col); list_append(rje, cs); @@ -4019,6 +4037,9 @@ insert_check_ukey(backend *be, list *ins sql_kc *c = k->columns->h->data; stmt *s = list_fetch(inserts, c->c->colnr), *h = s; + /* add predicate for this column */ + tr->predicates = add_predicate(sql->pa, tr->predicates, c->c); + s = stmt_col(be, c->c, dels, dels->partition); if ((k->type == ukey) && stmt_has_null(s)) { stmt *nn = stmt_selectnonil(be, s, NULL); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list