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

Reply via email to