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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list