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

Reply via email to