Changeset: e038b4f1dd2b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e038b4f1dd2b
Modified Files:
gdk/gdk.h
monetdb5/mal/mal_factory.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_interpreter.c
sql/server/sql_mvc.c
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/check5.stable.out.int128
Branch: default
Log Message:
Merge with Jun2016 branch.
diffs (truncated from 345 to 300 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1293,7 +1293,6 @@ gdk_export bte ATOMelmshift(int sz);
#define Treplacevalue(b, p, v) HTreplacevalue(b, p, v, T)
#define HTfastins_nocheck(b, p, v, s, HT) \
do { \
- assert((b)->HT->width == (s)); \
(b)->HT->heap.free += (s); \
(b)->HT->heap.dirty |= (s) != 0; \
HTputvalue((b), HT##loc((b), (p)), (v), 0, HT); \
diff --git a/monetdb5/mal/mal_factory.c b/monetdb5/mal/mal_factory.c
--- a/monetdb5/mal/mal_factory.c
+++ b/monetdb5/mal/mal_factory.c
@@ -382,13 +382,12 @@ void mal_factory_reset(void)
/* MSresetVariables(mb, pl->stk, 0);*/
/* freeStack(pl->stk); there may be a reference?*/
/* we are inside the body of the factory and about to
return */
- pl->factory = 0;
- if (pl->stk)
+ if (pl->stk) {
pl->stk->keepAlive = FALSE;
- if ( pl->stk) {
- //garbageCollector(cntxt, mb, pl->stk,TRUE);
+ garbageCollector(NULL, pl->factory,
pl->stk,TRUE);
GDKfree(pl->stk);
}
+ pl->factory = 0;
pl->stk=0;
pl->pc = 0;
pl->inuse = 0;
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
@@ -724,11 +724,13 @@ str runMALsequence(Client cntxt, MalBlkP
nstk->up = stk;
if (nstk->calldepth > 256) {
ret= createException(MAL,
"mal.interpreter", MAL_CALLDEPTH_FAIL);
+ GDKfree(nstk);
break;
}
if ((unsigned)nstk->stkdepth >
THREAD_STACK_SIZE / sizeof(mb->var[0]) / 4 && THRhighwater()){
/* we are running low on stack
space */
ret= createException(MAL,
"mal.interpreter", MAL_STACK_FAIL);
+ GDKfree(nstk);
break;
}
@@ -1424,8 +1426,10 @@ void garbageCollector(Client cntxt, MalB
ValPtr v;
#ifdef STACKTRACE
- mnstr_printf(cntxt->fdout, "#--->stack before garbage collector\n");
- printStack(cntxt->fdout, mb, stk, 0);
+ if (cntxt) {
+ mnstr_printf(cntxt->fdout, "#--->stack before garbage
collector\n");
+ printStack(cntxt->fdout, mb, stk, 0);
+ }
#endif
for (k = 0; k < mb->vtop; k++) {
if (isVarCleanup(mb, k) && (flag || isTmpVar(mb, k))) {
@@ -1435,8 +1439,10 @@ void garbageCollector(Client cntxt, MalB
}
}
#ifdef STACKTRACE
- mnstr_printf(cntxt->fdout, "#-->stack after garbage collector\n");
- printStack(cntxt->fdout, mb, stk, 0);
+ if (cntxt) {
+ mnstr_printf(cntxt->fdout, "#-->stack after garbage
collector\n");
+ printStack(cntxt->fdout, mb, stk, 0);
+ }
#else
(void)cntxt;
#endif
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -64,6 +64,7 @@ mvc_init(int debug, store_type store, in
if (first || catalog_version) {
sql_schema *s;
sql_table *t;
+ sqlid tid = 0, ntid, cid = 0, ncid;
mvc *m = mvc_create(0, stk, 0, NULL, NULL);
m->sa = sa_create();
@@ -80,12 +81,15 @@ mvc_init(int debug, store_type store, in
if (!first) {
t = mvc_bind_table(m, s, "tables");
+ tid = t->base.id;
mvc_drop_table(m, s, t, 0);
t = mvc_bind_table(m, s, "columns");
+ cid = t->base.id;
mvc_drop_table(m, s, t, 0);
}
t = mvc_create_view(m, s, "tables", SQL_PERSIST, "SELECT
\"id\", \"name\", \"schema_id\", \"query\", CAST(CASE WHEN \"system\" THEN
\"type\" + 10 /* system table/view */ ELSE (CASE WHEN \"commit_action\" = 0
THEN \"type\" /* table/view */ ELSE \"type\" + 20 /* global temp table */ END)
END AS SMALLINT) AS \"type\", \"system\", \"commit_action\", \"access\", CASE
WHEN (NOT \"system\" AND \"commit_action\" > 0) THEN 1 ELSE 0 END AS
\"temporary\" FROM \"sys\".\"_tables\" WHERE \"type\" <> 2 UNION ALL SELECT
\"id\", \"name\", \"schema_id\", \"query\", CAST(\"type\" + 30 /* local temp
table */ AS SMALLINT) AS \"type\", \"system\", \"commit_action\", \"access\", 1
AS \"temporary\" FROM \"tmp\".\"_tables\";", 1);
+ ntid = t->base.id;
mvc_create_column_(m, t, "id", "int", 32);
mvc_create_column_(m, t, "name", "varchar", 1024);
mvc_create_column_(m, t, "schema_id", "int", 32);
@@ -101,10 +105,18 @@ mvc_init(int debug, store_type store, in
int p = PRIV_SELECT;
int zero = 0;
sql_table *privs = find_sql_table(s, "privileges");
+ sql_table *deps = find_sql_table(s, "dependencies");
+ sql_column *depids = find_sql_column(deps, "id");
+ oid rid;
+
table_funcs.table_insert(m->session->tr, privs,
&t->base.id, &pub, &p, &zero, &zero);
+ while ((rid =
table_funcs.column_find_row(m->session->tr, depids, &tid, NULL)) != oid_nil) {
+ table_funcs.column_update_value(m->session->tr,
depids, rid, &ntid);
+ }
}
t = mvc_create_view(m, s, "columns", SQL_PERSIST, "SELECT *
FROM (SELECT p.* FROM \"sys\".\"_columns\" AS p UNION ALL SELECT t.* FROM
\"tmp\".\"_columns\" AS t) AS columns;", 1);
+ ncid = t->base.id;
mvc_create_column_(m, t, "id", "int", 32);
mvc_create_column_(m, t, "name", "varchar", 1024);
mvc_create_column_(m, t, "type", "varchar", 1024);
@@ -121,7 +133,14 @@ mvc_init(int debug, store_type store, in
int p = PRIV_SELECT;
int zero = 0;
sql_table *privs = find_sql_table(s, "privileges");
+ sql_table *deps = find_sql_table(s, "dependencies");
+ sql_column *depids = find_sql_column(deps, "id");
+ oid rid;
+
table_funcs.table_insert(m->session->tr, privs,
&t->base.id, &pub, &p, &zero, &zero);
+ while ((rid =
table_funcs.column_find_row(m->session->tr, depids, &cid, NULL)) != oid_nil) {
+ table_funcs.column_update_value(m->session->tr,
depids, rid, &ncid);
+ }
} else {
sql_create_env(m, s);
sql_create_privileges(m, s);
diff --git a/sql/test/leaks/Tests/check1.stable.out
b/sql/test/leaks/Tests/check1.stable.out
--- a/sql/test/leaks/Tests/check1.stable.out
+++ b/sql/test/leaks/Tests/check1.stable.out
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 56 ]
[ "sht", 56 ]
[ "sht", 56 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 34 ]
[ "str", 34 ]
diff --git a/sql/test/leaks/Tests/check1.stable.out.int128
b/sql/test/leaks/Tests/check1.stable.out.int128
--- a/sql/test/leaks/Tests/check1.stable.out.int128
+++ b/sql/test/leaks/Tests/check1.stable.out.int128
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 56 ]
[ "sht", 56 ]
[ "sht", 56 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 36 ]
[ "str", 36 ]
diff --git a/sql/test/leaks/Tests/check2.stable.out
b/sql/test/leaks/Tests/check2.stable.out
--- a/sql/test/leaks/Tests/check2.stable.out
+++ b/sql/test/leaks/Tests/check2.stable.out
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 56 ]
[ "sht", 56 ]
[ "sht", 56 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 34 ]
[ "str", 34 ]
diff --git a/sql/test/leaks/Tests/check2.stable.out.int128
b/sql/test/leaks/Tests/check2.stable.out.int128
--- a/sql/test/leaks/Tests/check2.stable.out.int128
+++ b/sql/test/leaks/Tests/check2.stable.out.int128
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 56 ]
[ "sht", 56 ]
[ "sht", 56 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 36 ]
[ "str", 36 ]
diff --git a/sql/test/leaks/Tests/check3.stable.out
b/sql/test/leaks/Tests/check3.stable.out
--- a/sql/test/leaks/Tests/check3.stable.out
+++ b/sql/test/leaks/Tests/check3.stable.out
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 57 ]
[ "sht", 57 ]
[ "sht", 57 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 34 ]
[ "str", 34 ]
diff --git a/sql/test/leaks/Tests/check3.stable.out.int128
b/sql/test/leaks/Tests/check3.stable.out.int128
--- a/sql/test/leaks/Tests/check3.stable.out.int128
+++ b/sql/test/leaks/Tests/check3.stable.out.int128
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 57 ]
[ "sht", 57 ]
[ "sht", 57 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 36 ]
[ "str", 36 ]
diff --git a/sql/test/leaks/Tests/check4.stable.out
b/sql/test/leaks/Tests/check4.stable.out
--- a/sql/test/leaks/Tests/check4.stable.out
+++ b/sql/test/leaks/Tests/check4.stable.out
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 58 ]
[ "sht", 58 ]
[ "sht", 58 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
[ "str", 32 ]
[ "str", 34 ]
[ "str", 34 ]
diff --git a/sql/test/leaks/Tests/check4.stable.out.int128
b/sql/test/leaks/Tests/check4.stable.out.int128
--- a/sql/test/leaks/Tests/check4.stable.out.int128
+++ b/sql/test/leaks/Tests/check4.stable.out.int128
@@ -202,7 +202,7 @@ Ready.
[ "sht", 0 ]
[ "sht", 0 ]
[ "sht", 10 ]
-[ "sht", 14 ]
+[ "sht", 15 ]
[ "sht", 58 ]
[ "sht", 58 ]
[ "sht", 58 ]
@@ -274,7 +274,7 @@ Ready.
[ "str", 10 ]
[ "str", 13 ]
[ "str", 13 ]
-[ "str", 14 ]
+[ "str", 15 ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list