Changeset: c98c858e6b4b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c98c858e6b4b
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_updates.c
Branch: default
Log Message:

cleanup, ie use list_fetch instead of local copies (of nth)


diffs (192 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
@@ -2760,18 +2760,6 @@ sql_parse(mvc *m, sql_allocator *sa, cha
 }
 
 static stmt *
-nth( list *l, int n)
-{
-       int i;
-       node *m;
-
-       for (i=0, m = l->h; i<n && m; i++, m = m->next) ; 
-       if (m)
-               return m->data;
-       return NULL;
-}
-
-static stmt *
 stmt_selectnonil( mvc *sql, stmt *col, stmt *s )
 {
        sql_subtype *t = tail_type(col);
@@ -2798,7 +2786,7 @@ insert_check_ukey(mvc *sql, list *insert
 
        if (list_length(k->columns) > 1) {
                node *m;
-               stmt *s, *ins = nth(inserts, 0)->op1;
+               stmt *s = list_fetch(inserts, 0), *ins = s->op1;
                sql_subaggr *sum;
                stmt *ssum = NULL;
                stmt *col = NULL;
@@ -2811,13 +2799,14 @@ insert_check_ukey(mvc *sql, list *insert
                                s = stmt_uselect(sql->sa, stmt_idx(sql, k->idx, 
dels), idx_inserts, cmp_equal, s);
                        for (m = k->columns->h; m; m = m->next) {
                                sql_kc *c = m->data;
+                               stmt *cs = list_fetch(inserts, c->c->colnr); 
 
                                col = stmt_col(sql, c->c, dels);
                                if ((k->type == ukey) && stmt_has_null(col)) {
                                        stmt *nn = stmt_selectnonil(sql, col, 
s);
-                                       s = stmt_uselect( sql->sa, col, 
nth(inserts, c->c->colnr)->op1, cmp_equal, nn);
+                                       s = stmt_uselect( sql->sa, col, 
cs->op1, cmp_equal, nn);
                                } else {
-                                       s = stmt_uselect( sql->sa, col, 
nth(inserts, c->c->colnr)->op1, cmp_equal, s);
+                                       s = stmt_uselect( sql->sa, col, 
cs->op1, cmp_equal, s);
                                }
                        }
                } else {
@@ -2829,10 +2818,11 @@ insert_check_ukey(mvc *sql, list *insert
                        }
                        for (m = k->columns->h; m; m = m->next) {
                                sql_kc *c = m->data;
+                               stmt *cs = list_fetch(inserts, c->c->colnr); 
 
                                col = stmt_col(sql, c->c, dels);
                                list_append(lje, col);
-                               list_append(rje, nth(inserts, 
c->c->colnr)->op1);
+                               list_append(rje, cs->op1);
                        }
                        s = releqjoin(sql, lje, rje, 1 /* hash used */, 
cmp_equal);
                        s = stmt_result(sql->sa, s, 0);
@@ -2848,11 +2838,12 @@ insert_check_ukey(mvc *sql, list *insert
                        for (m = k->columns->h; m; m = m->next) {
                                sql_kc *c = m->data;
                                stmt *orderby;
+                               stmt *cs = list_fetch(inserts, c->c->colnr); 
 
                                if (orderby_grp)
-                                       orderby = stmt_reorder(sql->sa, 
nth(inserts, c->c->colnr)->op1, 1, orderby_ids, orderby_grp);
+                                       orderby = stmt_reorder(sql->sa, 
cs->op1, 1, orderby_ids, orderby_grp);
                                else
-                                       orderby = stmt_order(sql->sa, 
nth(inserts, c->c->colnr)->op1, 1);
+                                       orderby = stmt_order(sql->sa, cs->op1, 
1);
                                orderby_ids = stmt_result(sql->sa, orderby, 1);
                                orderby_grp = stmt_result(sql->sa, orderby, 2);
                        }
@@ -2874,7 +2865,7 @@ insert_check_ukey(mvc *sql, list *insert
                res = stmt_exception(sql->sa, s, msg, 00001);
        } else {                /* single column key */
                sql_kc *c = k->columns->h->data;
-               stmt *s, *h = nth(inserts, c->c->colnr)->op1;
+               stmt *s = list_fetch(inserts, c->c->colnr), *h = s->op1;
 
                s = stmt_col(sql, c->c, dels);
                if ((k->type == ukey) && stmt_has_null(s)) {
@@ -2901,7 +2892,7 @@ insert_check_ukey(mvc *sql, list *insert
                        sql_subfunc *or = sql_bind_func_result(sql->sa, 
sql->session->schema, "or", bt, bt, bt);
                        stmt *ssum, *ss;
 
-                       stmt *g, *ins = nth(inserts, c->c->colnr)->op1;
+                       stmt *g = list_fetch(inserts, c->c->colnr), *ins = 
g->op1;
 
                        /* inserted vaules may be null */
                        if ((k->type == ukey) && stmt_has_null(ins)) {
@@ -2935,7 +2926,7 @@ static stmt *
 insert_check_fkey(mvc *sql, list *inserts, sql_key *k, stmt *idx_inserts, stmt 
*pin)
 {
        char *msg = NULL;
-       stmt *s = nth(inserts, 0)->op1;
+       stmt *cs = list_fetch(inserts, 0), *s = cs->op1;
        sql_subtype *wrd = sql_bind_localtype("wrd");
        sql_subaggr *cnt = sql_bind_aggr(sql->sa, sql->session->schema, 
"count", NULL);
        sql_subtype *bt = sql_bind_localtype("bit");
@@ -4241,11 +4232,8 @@ rel2bin_delete( mvc *sql, sql_rel *rel, 
 static stmt *
 rel2bin_output(mvc *sql, sql_rel *rel, list *refs) 
 {
-       node *n = rel->exps->h;
-       char *tsep = sa_strdup(sql->sa, E_ATOM_STRING(n->data));
-       char *rsep = sa_strdup(sql->sa, E_ATOM_STRING(n->next->data));
-       char *ssep = sa_strdup(sql->sa, E_ATOM_STRING(n->next->next->data));
-       char *ns   = sa_strdup(sql->sa, 
E_ATOM_STRING(n->next->next->next->data));
+       node *n;
+       char *tsep, *rsep, *ssep, *ns;
        char *fn   = NULL;
        stmt *s = NULL, *fns = NULL;
        list *slist = sa_list(sql->sa);
@@ -4255,6 +4243,16 @@ rel2bin_output(mvc *sql, sql_rel *rel, l
        if (!s) 
                return NULL;    
 
+       if (!rel->exps){ /* rows affacted */
+               list_append(slist, stmt_affected_rows(sql->sa, s));
+               return stmt_list(sql->sa, slist);
+       }
+       n = rel->exps->h;
+       tsep = sa_strdup(sql->sa, E_ATOM_STRING(n->data));
+       rsep = sa_strdup(sql->sa, E_ATOM_STRING(n->next->data));
+       ssep = sa_strdup(sql->sa, E_ATOM_STRING(n->next->next->data));
+       ns   = sa_strdup(sql->sa, E_ATOM_STRING(n->next->next->next->data));
+
        if (n->next->next->next->next) {
                fn = E_ATOM_STRING(n->next->next->next->next->data);
                fns = stmt_atom_string(sql->sa, sa_strdup(sql->sa, fn));
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
@@ -25,18 +25,6 @@
 #include "sql_privileges.h"
 
 static sql_exp *
-nth( list *l, int n)
-{
-       int i;
-       node *m;
-
-       for (i=0, m = l->h; i<n && m; i++, m = m->next) ; 
-       if (m)
-               return m->data;
-       return NULL;
-}
-
-static sql_exp *
 insert_value(mvc *sql, sql_column *c, sql_rel **r, symbol *s)
 {
        if (s->token == SQL_NULL) {
@@ -129,7 +117,7 @@ rel_insert_hash_idx(mvc *sql, sql_idx *i
        wrd = sql_bind_localtype("wrd");
        for (m = i->columns->h; m; m = m->next) {
                sql_kc *c = m->data;
-               sql_exp *e = nth(get_inserts(inserts), c->c->colnr);
+               sql_exp *e = list_fetch(get_inserts(inserts), c->c->colnr);
 
                if (h && i->type == hash_idx)  { 
                        list *exps = new_exp_list(sql->sa);
@@ -189,7 +177,7 @@ rel_insert_join_idx(mvc *sql, sql_idx *i
                sql_kc *c = m->data;
                sql_kc *rc = o->data;
                sql_subfunc *isnil = sql_bind_func(sql->sa, 
sql->session->schema, "isnull", &c->c->type, NULL, F_FUNC);
-               sql_exp *_is = nth(ins->exps, c->c->colnr), *lnl, *rnl, *je; 
+               sql_exp *_is = list_fetch(ins->exps, c->c->colnr), *lnl, *rnl, 
*je; 
                sql_exp *rtc = exp_column(sql->sa, rel_name(rt), 
rc->c->base.name, &rc->c->type, CARD_MULTI, rc->c->null, 0);
                char *ename = exp_name(_is);
 
@@ -540,7 +528,7 @@ rel_update_hash_idx(mvc *sql, sql_idx *i
                        sql_kc *c = m->data;
                        sql_exp *e;
 
-                       e = nth(get_inserts(updates), c->c->colnr+1);
+                       e = list_fetch(get_inserts(updates), c->c->colnr+1);
                        
                        if (h && i->type == hash_idx)  { 
                                list *exps = new_exp_list(sql->sa);
@@ -632,7 +620,7 @@ rel_update_join_idx(mvc *sql, sql_idx *i
                sql_kc *c = m->data;
                sql_kc *rc = o->data;
                sql_subfunc *isnil = sql_bind_func(sql->sa, 
sql->session->schema, "isnull", &c->c->type, NULL, F_FUNC);
-               sql_exp *upd = nth(get_inserts(updates), c->c->colnr + 1), 
*lnl, *rnl, *je;
+               sql_exp *upd = list_fetch(get_inserts(updates), c->c->colnr + 
1), *lnl, *rnl, *je;
                sql_exp *rtc = exp_column(sql->sa, rel_name(rt), 
rc->c->base.name, &rc->c->type, CARD_MULTI, rc->c->null, 0);
 
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to