Changeset: 5b181bcebe8f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5b181bcebe8f Modified Files: clients/mapiclient/msqldump.c monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_parser.c monetdb5/modules/atoms/url.c monetdb5/modules/mal/groupby.c monetdb5/modules/mal/sysmon.c monetdb5/modules/mal/tablet.c sql/backends/monet5/sql.c sql/backends/monet5/sql_cast.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_user.c sql/backends/monet5/vaults/bam/bam_lib.c sql/server/sql_atom.c sql/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err sql/test/BugTracker-2011/Tests/All sql/test/BugTracker-2016/Tests/malformed-copy-int.Bug-3987.stable.err Branch: default Log Message:
Merge with Jun2016 branch. diffs (truncated from 336 to 300 lines): diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c --- a/clients/mapiclient/msqldump.c +++ b/clients/mapiclient/msqldump.c @@ -222,12 +222,12 @@ main(int argc, char **argv) c = dump_database(mid, out, describe, useinserts); mnstr_flush(out); - mapi_disconnect(mid); + mapi_destroy(mid); if (mnstr_errnr(out)) { fprintf(stderr, "%s: %s", argv[0], mnstr_error(out)); return 1; } + mnstr_destroy(out); return c; - } diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c --- a/monetdb5/mal/mal_dataflow.c +++ b/monetdb5/mal/mal_dataflow.c @@ -417,6 +417,8 @@ DFLOWworker(void *T) /* only collect one error (from one thread, needed for stable testing) */ if (!flow->error) flow->error = error; + else + GDKfree(error); MT_lock_unset(&flow->flowlock); /* after an error we skip the rest of the block */ q_enqueue(flow->done, fe); diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c --- a/monetdb5/mal/mal_instruction.c +++ b/monetdb5/mal/mal_instruction.c @@ -617,6 +617,7 @@ getVarName(MalBlkPtr mb, int i) nme = mb->var[i]->name; if (nme == 0 || *nme =='_') { + GDKfree(nme); snprintf(buf, IDLENGTH, "%c_%d", refMarker(mb,i), mb->var[i]->tmpindex); nme = mb->var[i]->name = GDKstrdup(buf); } @@ -1509,7 +1510,7 @@ pushArgument(MalBlkPtr mb, InstrPtr p, i freeInstruction(p); return NULL; } - memcpy((char *) pn, (char *) p, space); + memcpy(pn, p, space); GDKfree(p); pn->maxarg += MAXARG; /* we have to keep track on the maximal arguments/block diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c --- a/monetdb5/mal/mal_parser.c +++ b/monetdb5/mal/mal_parser.c @@ -795,6 +795,7 @@ helpInfo(Client cntxt, str *help) if (MALkeyword(cntxt, "comment", 7)) { skipSpace(cntxt); if ((l = stringLength(cntxt))) { + GDKfree(*help); *help = strCopy(cntxt, l); if (*help) advance(cntxt, l - 1); diff --git a/monetdb5/modules/atoms/url.c b/monetdb5/modules/atoms/url.c --- a/monetdb5/modules/atoms/url.c +++ b/monetdb5/modules/atoms/url.c @@ -416,6 +416,7 @@ URLgetContent(str *retval, url *Str1) (void)memcpy(retbuf + rlen, buf, len); rlen += len; } + mnstr_destroy(f); if (len < 0) { GDKfree(retbuf); throw(MAL, "url.getContent", "read error"); diff --git a/monetdb5/modules/mal/groupby.c b/monetdb5/modules/mal/groupby.c --- a/monetdb5/modules/mal/groupby.c +++ b/monetdb5/modules/mal/groupby.c @@ -145,6 +145,7 @@ GROUPdelete(AGGRtask *a){ for(a->last--; a->last>=0; a->last--){ BBPunfix(a->cols[a->last]->batCacheid); } + GDKfree(a->bid); GDKfree(a->cols); GDKfree(a->unique); GDKfree(a); diff --git a/monetdb5/modules/mal/sysmon.c b/monetdb5/modules/mal/sysmon.c --- a/monetdb5/modules/mal/sysmon.c +++ b/monetdb5/modules/mal/sysmon.c @@ -95,6 +95,7 @@ SYSMONqueue(Client cntxt, MalBlkPtr mb, goto bailout; BUNappend(user, usr, FALSE); + GDKfree(usr); BUNappend(query, QRYqueue[i].query, FALSE); BUNappend(activity, QRYqueue[i].status, FALSE); diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c --- a/monetdb5/modules/mal/tablet.c +++ b/monetdb5/modules/mal/tablet.c @@ -711,7 +711,7 @@ typedef struct { } READERtask; static void -tablet_error(READERtask *task, lng row, int col, str msg, str fcn) +tablet_error(READERtask *task, lng row, int col, const char *msg, const char *fcn) { if (task->cntxt->error_row != NULL) { MT_lock_set(&errorlock); @@ -1296,7 +1296,6 @@ SQLproducer(void *p) char msg[256]; snprintf(msg, sizeof(msg), "incomplete record at end of file:%s\n", s); tablet_error(task, lng_nil, int_nil, "incomplete record at end of file", s); - task->as->error = GDKstrdup(msg); task->b->pos += partial; } goto reportlackofinput; @@ -1643,7 +1642,7 @@ SQLload_file(Client cntxt, Tablet *as, b /* create the reject tables */ create_rejects_table(task->cntxt); if (task->cntxt->error_row == NULL || task->cntxt->error_fld == NULL || task->cntxt->error_msg == NULL || task->cntxt->error_input == NULL) { - tablet_error(task, lng_nil, int_nil, NULL, "SQLload initialization failed"); + tablet_error(task, lng_nil, int_nil, "SQLload initialization failed", ""); goto bailout; } @@ -1663,7 +1662,7 @@ SQLload_file(Client cntxt, Tablet *as, b task->base[i] = GDKzalloc(MAXROWSIZE(2 * b->size) + 2); task->rowlimit[i] = MAXROWSIZE(2 * b->size); if (task->base[i] == 0) { - tablet_error(task, lng_nil, int_nil, NULL, "SQLload_file"); + tablet_error(task, lng_nil, int_nil, "memory allocation failed", "SQLload_file"); goto bailout; } task->base[i][b->size + 1] = 0; @@ -1677,7 +1676,7 @@ SQLload_file(Client cntxt, Tablet *as, b task->maxrow = (BUN) maxrow; if (task->fields == 0 || task->cols == 0 || task->time == 0) { - tablet_error(task, lng_nil, int_nil, NULL, "SQLload_file"); + tablet_error(task, lng_nil, int_nil, "memory allocation failed", "SQLload_file"); goto bailout; } @@ -1727,7 +1726,7 @@ SQLload_file(Client cntxt, Tablet *as, b for (i = 0; i < MAXBUFFERS; i++) { task->lines[i] = GDKzalloc(sizeof(char *) * task->limit); if (task->lines[i] == NULL) { - tablet_error(task, lng_nil, int_nil, NULL, "SQLload_file:failed to alloc buffers"); + tablet_error(task, lng_nil, int_nil, "memory allocation failed", "SQLload_file:failed to alloc buffers"); goto bailout; } } @@ -1745,7 +1744,7 @@ SQLload_file(Client cntxt, Tablet *as, b ptask[j].id = j; ptask[j].cols = (int *) GDKzalloc(as->nr_attrs * sizeof(int)); if (ptask[j].cols == 0) { - tablet_error(task, lng_nil, int_nil, NULL, "SQLload_file:failed to alloc task descriptors"); + tablet_error(task, lng_nil, int_nil, "memory allocation failed", "SQLload_file"); goto bailout; } #ifdef MLOCK_TST 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 @@ -2900,7 +2900,7 @@ mvc_export_table_wrap( Client cntxt, Mal if (mvc_export_result(cntxt->sqlcontext, s, res)) msg = createException(SQL, "sql.resultset", "failed"); if( s != cntxt->fdout) - mnstr_close(s); + close_stream(s); wrapup_result_set1: BBPunfix(order->batCacheid); if( tbl) BBPunfix(tblId); diff --git a/sql/backends/monet5/sql_cast.c b/sql/backends/monet5/sql_cast.c --- a/sql/backends/monet5/sql_cast.c +++ b/sql/backends/monet5/sql_cast.c @@ -310,7 +310,7 @@ batstr_2_date(bat *res, const bat *bid) } str -str_2_sqlblob(sqlblob * *res, const str *val) +str_2_sqlblob(sqlblob **res, const str *val) { ptr p = NULL; int len = 0; @@ -325,10 +325,6 @@ str_2_sqlblob(sqlblob * *res, const str throw(SQL, "sqlblob", "%s", buf); } *res = (sqlblob *) p; - if (!ATOMextern(TYPE_sqlblob)) { - if (p) - GDKfree(p); - } return MAL_SUCCEED; } @@ -370,6 +366,7 @@ batstr_2_sqlblob(bat *res, const bat *bi return msg; } BUNappend(dst, r, FALSE); + GDKfree(r); } BATseqbase(dst, b->hseqbase); BBPkeepref(*res = dst->batCacheid); 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 @@ -398,6 +398,8 @@ SQLtrans(mvc *m) mvc_trans(m); s = m->session; if (!s->schema) { + if (s->schema_name) + GDKfree(s->schema_name); s->schema_name = monet5_user_get_def_schema(m, m->user_id); assert(s->schema_name); s->schema = find_sql_schema(s->tr, s->schema_name); diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c --- a/sql/backends/monet5/sql_user.c +++ b/sql/backends/monet5/sql_user.c @@ -194,7 +194,13 @@ monet5_create_privileges(ptr _mvc, sql_s with the approriate scenario (sql) */ mvc_create_func(m, NULL, s, "db_users", ops, res, F_UNION, FUNC_LANG_SQL, "sql", "db_users", "CREATE FUNCTION db_users () RETURNS TABLE( name varchar(2048)) EXTERNAL NAME sql.db_users;", FALSE, FALSE); - t = mvc_create_view(m, s, "users", SQL_PERSIST, "SELECT u.\"name\" AS \"name\", " "ui.\"fullname\", ui.\"default_schema\" " "FROM db_users() AS u LEFT JOIN " "\"sys\".\"db_user_info\" AS ui " "ON u.\"name\" = ui.\"name\" " ";", 1); + t = mvc_create_view(m, s, "users", SQL_PERSIST, + "SELECT u.\"name\" AS \"name\", " + "ui.\"fullname\", ui.\"default_schema\" " + "FROM db_users() AS u LEFT JOIN " + "\"sys\".\"db_user_info\" AS ui " + "ON u.\"name\" = ui.\"name\" " + ";", 1); mvc_create_column_(m, t, "name", "varchar", 1024); mvc_create_column_(m, t, "fullname", "varchar", 2024); mvc_create_column_(m, t, "default_schema", "int", 9); @@ -273,13 +279,18 @@ monet5_alter_user(ptr _mvc, str user, st } if (strcmp(username, user) == 0) { /* avoid message about changePassword (from MAL level) */ + GDKfree(username); if (!enc) { free(pwd); free(opwd); } - (void) sql_error(m, 02, "ALTER USER: " "use 'ALTER USER SET [ ENCRYPTED ] PASSWORD xxx " "USING OLD PASSWORD yyy' " "when changing your own password"); + (void) sql_error(m, 02, "ALTER USER: " + "use 'ALTER USER SET [ ENCRYPTED ] PASSWORD xxx " + "USING OLD PASSWORD yyy' " + "when changing your own password"); return (FALSE); } + GDKfree(username); err = AUTHsetPassword(c, &user, &pwd); if (!enc) { free(pwd); @@ -332,14 +343,16 @@ monet5_rename_user(ptr _mvc, str olduser rid = table_funcs.column_find_row(m->session->tr, users_name, olduser, NULL); if (rid == oid_nil) { - (void) sql_error(m, 02, "ALTER USER: local inconsistency, " "your database is damaged, user not found in SQL catalog"); + (void) sql_error(m, 02, "ALTER USER: local inconsistency, " + "your database is damaged, user not found in SQL catalog"); return (FALSE); } table_funcs.column_update_value(m->session->tr, users_name, rid, newuser); rid = table_funcs.column_find_row(m->session->tr, auths_name, olduser, NULL); if (rid == oid_nil) { - (void) sql_error(m, 02, "ALTER USER: local inconsistency, " "your database is damaged, auth not found in SQL catalog"); + (void) sql_error(m, 02, "ALTER USER: local inconsistency, " + "your database is damaged, auth not found in SQL catalog"); return (FALSE); } table_funcs.column_update_value(m->session->tr, auths_name, rid, newuser); @@ -416,6 +429,7 @@ monet5_user_get_def_schema(mvc *m, int u if ((rid = table_funcs.column_find_row(m->session->tr, users_name, username, NULL)) != oid_nil) p = table_funcs.column_find_value(m->session->tr, users_schema, rid); + _DELETE(username); assert(p); schema_id = *(sqlid *) p; _DELETE(p); diff --git a/sql/backends/monet5/vaults/bam/bam_lib.c b/sql/backends/monet5/vaults/bam/bam_lib.c --- a/sql/backends/monet5/vaults/bam/bam_lib.c +++ b/sql/backends/monet5/vaults/bam/bam_lib.c @@ -475,6 +475,7 @@ seq_char_bat(bat * ret, int * ref_pos, b goto cleanup; } BUNappend(result, (ptr) r, FALSE); + GDKfree(r); ++seq; ++pos; ++cigar; diff --git a/sql/server/sql_atom.c b/sql/server/sql_atom.c --- a/sql/server/sql_atom.c +++ b/sql/server/sql_atom.c @@ -252,8 +252,7 @@ atom_general(sql_allocator *sa, sql_subt VALset(&a->data, a->data.vtype, p); SA_VALcopy(sa, &a->data, &a->data); - if (p && ATOMextern(a->data.vtype) == 0) - GDKfree(p); + GDKfree(p); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list