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