Changeset: 11c33a434857 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=11c33a434857 Modified Files: sql/server/rel_updates.c Branch: default Log Message:
Simplify diffs (71 lines): 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 @@ -928,7 +928,7 @@ update_generate_assignments(sql_query *q { mvc *sql = query->sql; sql_table *mt = NULL; - sql_exp *e = NULL, **updates = SA_ZNEW_ARRAY(sql->sa, sql_exp*, list_length(t->columns.set)); + sql_exp **updates = SA_ZNEW_ARRAY(sql->sa, sql_exp*, list_length(t->columns.set)); list *exps, *pcols = NULL; dnode *n; const char *rname = NULL; @@ -947,9 +947,7 @@ update_generate_assignments(sql_query *q pcols = mt->part.pexp->cols; } /* first create the project */ - e = exp_column(sql->sa, rname = rel_name(r), TID, sql_bind_localtype("oid"), CARD_MULTI, 0, 1); - exps = new_exp_list(sql->sa); - append(exps, e); + exps = list_append(new_exp_list(sql->sa), exp_column(sql->sa, rname = rel_name(r), TID, sql_bind_localtype("oid"), CARD_MULTI, 0, 1)); for (n = assignmentlist->h; n; n = n->next) { symbol *a = NULL; @@ -991,10 +989,8 @@ update_generate_assignments(sql_query *q rel_val = rel_subquery(query, NULL, a, ek); r = query_pop_outer(query); } - if ((single && !v) || (!single && !rel_val)) { - rel_destroy(r); + if ((single && !v) || (!single && !rel_val)) return NULL; - } if (rel_val && outer) { if (single) { if (!exp_name(v)) @@ -1016,22 +1012,14 @@ update_generate_assignments(sql_query *q dlist *cols = assignment->h->next->data.lval; dnode *m; node *n; - int nr; if (!rel_val) rel_val = r; - if (!rel_val || !is_project(rel_val->op)) { - rel_destroy(r); + if (!rel_val || !is_project(rel_val->op)) return sql_error(sql, 02, SQLSTATE(42000) "%s: Invalid right side of the SET clause", action); - } - if (dlist_length(cols) != list_length(rel_val->exps)) { - rel_destroy(r); + if (dlist_length(cols) != list_length(rel_val->exps)) return sql_error(sql, 02, SQLSTATE(42000) "%s: The number of specified columns between the SET clause and the right side don't match (%d != %d)", action, dlist_length(cols), list_length(rel_val->exps)); - } - nr = (list_length(rel_val->exps)-dlist_length(cols)); - for (n=rel_val->exps->h; nr; nr--, n = n->next) - ; - for (m = cols->h; n && m; n = n->next, m = m->next) { + for (n = rel_val->exps->h, m = cols->h; n && m; n = n->next, m = m->next) { char *cname = m->data.sval; sql_column *c = mvc_bind_column(sql, t, cname); sql_exp *v = n->data; @@ -1088,8 +1076,7 @@ update_generate_assignments(sql_query *q updates[c->colnr] = v; } } - e = exp_column(sql->sa, rname, TID, sql_bind_localtype("oid"), CARD_MULTI, 0, 1); - r = rel_project(sql->sa, r, append(new_exp_list(sql->sa),e)); + r = rel_project(sql->sa, r, list_append(new_exp_list(sql->sa), exp_column(sql->sa, rname, TID, sql_bind_localtype("oid"), CARD_MULTI, 0, 1))); r = rel_update(sql, bt, r, updates, exps); return r; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list