Changeset: 85e050e59ee5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85e050e59ee5
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/vaults/vault.c
        sql/common/sql_types.c
        sql/server/rel_distribute.c
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/server/sql_datetime.c
        sql/server/sql_mvc.c
        sql/server/sql_privileges.c
        sql/server/sql_scan.c
        sql/server/sql_semantic.c
Branch: Jan2014
Log Message:

more coverity fixes


diffs (truncated from 687 to 300 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
@@ -65,52 +65,52 @@ list_find_column(sql_allocator *sa, list
        stmt *res = NULL;
        node *n;
 
-       if (l) {
-               MT_lock_set(&l->ht_lock, "list_find_column");
-               if (!l->ht && list_length(l) > HASH_MIN_SIZE) {
-                       l->ht = hash_new(l->sa, MAX(list_length(l), 
l->expected_cnt), (fkeyvalue)&stmt_key);
-
-                       for (n = l->h; n; n = n->next) {
-                               char *nme = column_name(sa, n->data);
-                               int key = hash_key(nme);
-
-                               hash_add(l->ht, key, n->data);
+       if (!l)
+               return NULL;
+       MT_lock_set(&l->ht_lock, "list_find_column");
+       if (!l->ht && list_length(l) > HASH_MIN_SIZE) {
+               l->ht = hash_new(l->sa, MAX(list_length(l), l->expected_cnt), 
(fkeyvalue)&stmt_key);
+
+               for (n = l->h; n; n = n->next) {
+                       char *nme = column_name(sa, n->data);
+                       int key = hash_key(nme);
+
+                       hash_add(l->ht, key, n->data);
+               }
+       }
+       if (l->ht) {
+               int key = hash_key(name);
+               sql_hash_e *e = l->ht->buckets[key&(l->ht->size-1)];
+
+               if (rname) {
+                       for (; e; e = e->chain) {
+                               stmt *s = e->value;
+                               char *rnme = table_name(sa, s);
+                               char *nme = column_name(sa, s);
+
+                               if (rnme && strcmp(rnme, rname) == 0 &&
+                                   strcmp(nme, name) == 0) {
+                                       res = s;
+                                       break;
+                               }
+                       }
+               } else {
+                       for (; e; e = e->chain) {
+                               stmt *s = e->value;
+                               char *nme = column_name(sa, s);
+
+                               if (nme && strcmp(nme, name) == 0) {
+                                       res = s;
+                                       break;
+                               }
                        }
                }
-               if (l->ht) {
-                       int key = hash_key(name);
-                       sql_hash_e *e = l->ht->buckets[key&(l->ht->size-1)];
-
-                       if (rname) {
-                               for (; e; e = e->chain) {
-                                       stmt *s = e->value;
-                                       char *rnme = table_name(sa, s);
-                                       char *nme = column_name(sa, s);
-
-                                       if (rnme && strcmp(rnme, rname) == 0 &&
-                                           strcmp(nme, name) == 0) {
-                                               res = s;
-                                               break;
-                                       }
-                               }
-                       } else {
-                               for (; e; e = e->chain) {
-                                       stmt *s = e->value;
-                                       char *nme = column_name(sa, s);
-
-                                       if (nme && strcmp(nme, name) == 0) {
-                                               res = s;
-                                               break;
-                                       }
-                               }
-                       }
-                       MT_lock_unset(&l->ht_lock, "list_find_column");
-                       if (!res)
-                               return NULL;
-                       return res;
-               }
                MT_lock_unset(&l->ht_lock, "list_find_column");
+               if (!res)
+                       return NULL;
+               return res;
        }
+       MT_lock_unset(&l->ht_lock, "list_find_column");
        if (rname) {
                for (n = l->h; n; n = n->next) {
                        char *rnme = table_name(sa, n->data);
@@ -1241,7 +1241,7 @@ rel2bin_table( mvc *sql, sql_rel *rel, l
                        sql_exp *c = n->data;
                        stmt *s = stmt_rs_column(sql->sa, sub, i, 
exp_subtype(c)); 
                        char *nme = exp_name(c);
-                       char *rnme = op?exp_find_rel_name(op):NULL;
+                       char *rnme = NULL;
 
                        s = stmt_alias(sql->sa, s, rnme, nme);
                        list_append(l, s);
@@ -1739,7 +1739,6 @@ rel2bin_semijoin( mvc *sql, sql_rel *rel
                }
                /* recreate join output */
                jl = stmt_project(sql->sa, sel, jl); 
-               jr = stmt_project(sql->sa, sel, jr); 
        }
 
        /* construct relation */
@@ -1799,6 +1798,8 @@ rel2bin_distinct(mvc *sql, stmt *s)
                }
        }
        stmt_group_done(g);
+       if (!ext)
+               return NULL;
 
        for (n = s->op4.lval->h; n; n = n->next) {
                stmt *t = n->data;
@@ -2563,11 +2564,10 @@ rel2bin_sample( mvc *sql, sql_rel *rel, 
        stmt *sub = NULL, *s = NULL, *sample = NULL;
        node *n;
 
-       if (rel->l) { /* first construct the sub relation */
+       if (rel->l) /* first construct the sub relation */
                sub = subrel_bin(sql, rel->l, refs);
-               if (!sub)
-                       return NULL;
-       }
+       if (!sub)
+               return NULL;
 
        n = sub->op4.lval->h;
        newl = sa_list(sql->sa);
@@ -3745,6 +3745,8 @@ update_idxs_and_check_keys(mvc *sql, sql
                if (hash_index(i->type)) {
                        is = hash_update(sql, i, updates, updcol);
                } else if (i->type == join_idx) {
+                       if (updcol < 0)
+                               return NULL;
                        is = join_idx_update(sql, i, updates, updcol);
                }
                if (i->key) {
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -612,7 +612,8 @@ alter_table(mvc *sql, char *sname, sql_t
                        for (n = t->keys.dset->h; n; n = n->next) {
                                sql_key *k = n->data;
                                sql_key *nk = mvc_bind_key(sql, s, 
k->base.name);
-                               mvc_drop_key(sql, s, nk, k->drop_action);
+                               if (nk)
+                                       mvc_drop_key(sql, s, nk, 
k->drop_action);
                        }
                /* alter add key */
                for (n = t->keys.nelm; n; n = n->next) {
@@ -965,7 +966,7 @@ drop_trigger(mvc *sql, char *sname, char
        if (!s)
                s = cur_schema(sql);
        assert(s);
-       if (s && !schema_privs(sql->role_id, s))
+       if (!schema_privs(sql->role_id, s))
                return sql_message("3F000!DROP TRIGGER: access denied for %s to 
schema ;'%s'", stack_get_string(sql, "current_user"), s->base.name);
 
        if ((tri = mvc_bind_trigger(sql, s, tname)) == NULL)
@@ -2846,6 +2847,10 @@ mvc_bin_import_table_wrap(Client cntxt, 
                                throw(SQL, "sql", "failed to re-open file %s", 
*(str *) getArgReference(stk, pci, i));
 
                        buf = GDKmalloc(bufsiz);
+                       if (!buf) {
+                               fclose(f);
+                               throw(SQL, "sql", "failed to create buffer");
+                       }
                        while (fgets(buf, bufsiz, f) != NULL) {
                                char *t = strrchr(buf, '\n');
                                if (t)
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -1115,19 +1115,13 @@ static int
                } break;
                case st_uselect:{
                        bit need_not;
-                       int l;
-                       int r;
-                       int sub;
-                       int anti;
+                       int l, r, sub, anti;
 
                        need_not = FALSE;
                        if ((l = _dumpstmt(sql, mb, s->op1)) < 0)
                                return -1;
-                       if (s->op2) {
-                               if ((r = _dumpstmt(sql, mb, s->op2)) < 0)
-                                       return -1;
-                       } else
-                               r = -1;
+                       if ((r = _dumpstmt(sql, mb, s->op2)) < 0)
+                               return -1;
                        sub = -1;
                        anti = is_anti(s);
 
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -2255,7 +2255,7 @@ SQLengineIntern(Client c, backend *be)
                        printFunction(c->fdout, ((Symbol) (be->q->code))->def, 
0, LIST_MAL_STMT | LIST_MAL_UDF | LIST_MAPI);
                else if (be->q)
                        msg = createException(PARSE, "SQLparser", "%s", 
(*m->errstr) ? m->errstr : "39000!program contains errors");
-               else if (c->curprg && c->curprg->def)
+               else if (c->curprg->def)
                        printFunction(c->fdout, c->curprg->def, 0, 
LIST_MAL_STMT | LIST_MAL_UDF | LIST_MAPI);
                goto cleanup_engine;
        }
@@ -2264,7 +2264,7 @@ SQLengineIntern(Client c, backend *be)
                        showFlowGraph(((Symbol) (be->q->code))->def, 0, 
"stdout-mapi");
                else if (be->q)
                        msg = createException(PARSE, "SQLparser", "%s", 
(*m->errstr) ? m->errstr : "39000!program contains errors");
-               else if (c->curprg && c->curprg->def)
+               else if (c->curprg->def)
                        showFlowGraph(c->curprg->def, 0, "stdout-mapi");
                goto cleanup_engine;
        }
diff --git a/sql/backends/monet5/vaults/vault.c 
b/sql/backends/monet5/vaults/vault.c
--- a/sql/backends/monet5/vaults/vault.c
+++ b/sql/backends/monet5/vaults/vault.c
@@ -137,14 +137,17 @@ struct FtpFile {
 
 static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
 {
-  struct FtpFile *out=(struct FtpFile *)stream;
-  if(out && !out->stream) {
-    /* open file for writing */
-    out->stream=fopen(out->filename, "wb");
-    if(!out->stream)
-      return -1; /* failure, can't open file to write */
-  }
-  return fwrite(buffer, size, nmemb, out->stream);
+       struct FtpFile *out=(struct FtpFile *)stream;
+
+       if (!out)
+               return -1;
+       if (!out->stream) {
+               /* open file for writing */
+               out->stream=fopen(out->filename, "wb");
+               if (!out->stream)
+                       return -1; /* failure, can't open file to write */
+       }
+       return fwrite(buffer, size, nmemb, out->stream);
 }
 #endif
 
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -490,7 +490,7 @@ sql_bind_aggr_(sql_allocator *sa, sql_sc
                                scale = type->scale;
                        }
                        /* same type as the input */
-                       if (a->res.type->eclass == EC_ANY) 
+                       if (a->res.type->eclass == EC_ANY && type) 
                                sql_init_subtype(&ares->res, type->type, 
digits, scale);
                        else
                                sql_init_subtype(&ares->res, a->res.type, 
digits, scale);
@@ -522,7 +522,7 @@ sql_bind_aggr_(sql_allocator *sa, sql_sc
                                        scale = type->scale;
                                }
                                /* same type as the input */
-                               if (a->res.type->eclass == EC_ANY && type )  
+                               if (a->res.type->eclass == EC_ANY && type)  
                                        sql_init_subtype(&ares->res, 
type->type, digits, scale);
                                else
                                        sql_init_subtype(&ares->res, 
a->res.type, digits, scale);
diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ b/sql/server/rel_distribute.c
@@ -238,9 +238,9 @@ distribute(mvc *sql, sql_rel *rel)
                r = rel->r = distribute(sql, rel->r);
 
                if (l && (pl = find_prop(l->p, PROP_REMOTE)) != NULL &&
-                          r && (pr = find_prop(r->p, PROP_REMOTE)) == NULL) {
+                   r && find_prop(r->p, PROP_REMOTE) == NULL) {
                        r = rel->r = distribute(sql, replica(sql, rel->r, 
pl->value));
-               } else if (l && (pl = find_prop(l->p, PROP_REMOTE)) == NULL &&
+               } else if (l && find_prop(l->p, PROP_REMOTE) == NULL &&
                           r && (pr = find_prop(r->p, PROP_REMOTE)) != NULL) {
                        l = rel->l = distribute(sql, replica(sql, rel->l, 
pr->value));
                }
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -867,6 +867,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                        skipWS(r,pos);
                }
        }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to