Changeset: 0e6f6ca98ce4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0e6f6ca98ce4
Modified Files:
gdk/gdk_string.c
monetdb5/mal/mal_interpreter.c
monetdb5/modules/atoms/mtime.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_user.c
sql/server/sql_mvc.h
sql/server/sql_var.c
Branch: resource_management
Log Message:
WIP fix memory leaks
diffs (138 lines):
diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -603,8 +603,8 @@ strFromStr(const char *restrict src, siz
/* alloc new memory */
if (*dst == NULL || *len < l) {
- GDKfree(*dst);
- *dst = GDKmalloc(*len = l);
+ //GDKfree(*dst);
+ *dst = ma_alloc(ma, *len = l);
if (*dst == NULL) {
*len = 0;
return -1;
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -995,6 +995,7 @@ runMALsequence(allocator *tmp_alloc, Cli
freeException(v->val.sval); /* old
exception */
VALset(v, TYPE_str, ret);
//v->allocated = true;
+ freeException(ret);
ret = MAL_SUCCEED;
MT_lock_unset(&mal_contextLock);
} else {
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -110,7 +110,7 @@ MTIMEcurrent_timestamp(Client ctx, times
#define FINISH_BUFFER_SINGLE(MALFUNC) \
bailout: \
*ret = NULL; \
- if (!msg && res && !(*ret = GDKstrdup(res))) \
+ if (!msg && res && !(*ret = MA_STRDUP(ctx->alloc, res))) \
msg = createException(MAL, "batmtime." MALFUNC, SQLSTATE(HY013)
MAL_MALLOC_FAIL); \
GDKfree(res)
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
@@ -815,9 +815,9 @@ setVariable(Client cntxt, MalBlkPtr mb,
if (!isOptimizerPipe(newopt) || strcmp(buf, newopt) ==
0) {
if ((msg = addPipeDefinition(cntxt, buf,
newopt)))
return msg;
- if (!sqlvar_set_string(find_global_var(m, s,
varname), buf))
+ if (!sqlvar_set_string(mb->ma,
find_global_var(m, s, varname), buf))
throw(SQL, "sql.setVariable",
SQLSTATE(HY013) MAL_MALLOC_FAIL);
- } else if (!sqlvar_set_string(find_global_var(m, s,
varname), newopt))
+ } else if (!sqlvar_set_string(mb->ma,
find_global_var(m, s, varname), newopt))
throw(SQL, "sql.setVariable", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
} else {
ValPtr ptr = &stk->stk[getArg(pci, 4)];
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -2220,7 +2220,7 @@ SQLrename_schema(Client cntxt, MalBlkPtr
s = mvc_bind_schema(sql, "sys");
assert(s);
- if (!sqlvar_set_string(find_global_var(sql, s,
"current_schema"), new_name))
+ if (!sqlvar_set_string(mb->ma, find_global_var(sql, s,
"current_schema"), new_name))
throw(SQL, "sql.setVariable", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
}
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
@@ -872,9 +872,9 @@ monet5_user_set_def_schema(mvc *m, oid u
/* reset the user and schema names */
- if (!sqlvar_set_string(find_global_var(m, sys, "current_schema"),
schema) ||
- !sqlvar_set_string(find_global_var(m, sys, "current_user"),
username) ||
- !sqlvar_set_string(find_global_var(m, sys, "current_role"),
userrole)) {
+ if (!sqlvar_set_string(m->sa, find_global_var(m, sys,
"current_schema"), schema) ||
+ !sqlvar_set_string(m->sa, find_global_var(m, sys,
"current_user"), username) ||
+ !sqlvar_set_string(m->sa, find_global_var(m, sys,
"current_role"), userrole)) {
res = -1;
}
_DELETE(schema_path);
diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h
--- a/sql/server/sql_mvc.h
+++ b/sql/server/sql_mvc.h
@@ -298,7 +298,7 @@ extern int stack_nr_of_declared_tables(m
extern atom *sqlvar_set(sql_var *var, ValRecord *v);
extern str sqlvar_get_string(sql_var *var);
-extern str sqlvar_set_string(sql_var *var, const char *v);
+extern str sqlvar_set_string(allocator *sa, sql_var *var, const char *v);
#ifdef HAVE_HGE
extern hge val_get_number(const ValRecord *val);
extern void sqlvar_set_number(sql_var *var, hge v);
diff --git a/sql/server/sql_var.c b/sql/server/sql_var.c
--- a/sql/server/sql_var.c
+++ b/sql/server/sql_var.c
@@ -11,6 +11,7 @@
*/
#include "monetdb_config.h"
+#include "sql_mem.h"
#include "sql_mvc.h"
#include "sql_scan.h"
#include "sql_list.h"
@@ -645,21 +646,24 @@ stack_nr_of_declared_tables(mvc *sql)
}
str
-sqlvar_set_string(sql_var *var, const char *val)
+sqlvar_set_string(allocator *sa, sql_var *var, const char *val)
{
atom *a = &var->var;
- str new_val = _STRDUP(val);
- if (a != NULL && new_val != NULL) {
- ValRecord *v = &a->data;
+ if (a != NULL) {
+ allocator *ma = sa? sa : MT_thread_getallocator();
+ str new_val = SA_STRDUP(ma, val);
+ if (new_val) {
+ ValRecord *v = &a->data;
- //if (v->val.sval)
- // _DELETE(v->val.sval);
- v->val.sval = new_val;
- return new_val;
- } else if (new_val) {
+ //if (v->val.sval)
+ // _DELETE(v->val.sval);
+ v->val.sval = new_val;
+ return new_val;
+ }
+ }/* else if (new_val) {
_DELETE(new_val);
- }
+ }*/
return NULL;
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]