Changeset: bb78684d86c7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb78684d86c7
Modified Files:
sql/backends/monet5/sql_scenario.c
sql/common/sql_mem.c
sql/common/sql_types.c
sql/server/rel_optimizer.c
Branch: default
Log Message:
more fixes for a cleaner exit
diffs (138 lines):
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
@@ -175,17 +175,19 @@ SQLprelude(void)
str
SQLepilogue(void)
{
- char *s = "sql";
+ char *s = "sql", *m = "msql";
+ str res;
if( SQLinitialized){
- /*
mvc_exit();
SQLinitialized= FALSE;
- */
}
/* this function is never called, but for the style of it, we clean
* up our own mess */
- return msab_retreatScenario(s);
+ res = msab_retreatScenario(m);
+ if (!res)
+ return msab_retreatScenario(s);
+ return res;
}
MT_Id sqllogthread, minmaxthread;
diff --git a/sql/common/sql_mem.c b/sql/common/sql_mem.c
--- a/sql/common/sql_mem.c
+++ b/sql/common/sql_mem.c
@@ -105,6 +105,7 @@ char *sa_alloc( sql_allocator *sa, size_
sa->blks[sa->nr-1] = r;
sa->blks[sa->nr] = t;
sa->nr ++;
+ sa->usedmem += sz;
return r;
}
if (sz > (SA_BLOCK-sa->used)) {
@@ -116,11 +117,11 @@ char *sa_alloc( sql_allocator *sa, size_
sa->blks[sa->nr] = r;
sa->nr ++;
sa->used = sz;
+ sa->usedmem += SA_BLOCK;
return r;
}
r = sa->blks[sa->nr-1] + sa->used;
sa->used += sz;
- sa->usedmem += sz;
return r;
}
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1169,8 +1169,6 @@ sql_create_sqlfunc(sql_allocator *sa, ch
return t;
}
-static sql_allocator *sa = NULL;
-
/* SQL service initialization
This C-code version initializes the
parser catalogs with typing information. Although, in principle,
@@ -1608,16 +1606,15 @@ sqltypeinit( sql_allocator *sa)
}
void
-types_init(sql_allocator *nsa, int debug)
+types_init(sql_allocator *sa, int debug)
{
(void)debug;
- sa = nsa;
aliases = sa_list(sa);
types = sa_list(sa);
localtypes = sa_list(sa);
aggrs = sa_list(sa);
funcs = sa_list(sa);
funcs->ht = hash_new(sa, 1024, (fkeyvalue)&base_key);
- sqltypeinit( nsa );
+ sqltypeinit( sa );
}
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -4185,13 +4185,13 @@ positional_exps_mark_used( sql_rel *rel,
}
static void
-exps_mark_used(sql_rel *rel, sql_rel *subrel)
+exps_mark_used(sql_allocator *sa, sql_rel *rel, sql_rel *subrel)
{
int nr = 0;
if (rel->exps) {
node *n;
int len = list_length(rel->exps), i;
- sql_exp **exps = NEW_ARRAY(sql_exp*, len);
+ sql_exp **exps = SA_NEW_ARRAY(sa, sql_exp*, len);
for (n=rel->exps->h, i = 0; n; n = n->next, i++)
exps[i] = n->data;
@@ -4205,7 +4205,6 @@ exps_mark_used(sql_rel *rel, sql_rel *su
nr += exp_mark_used(subrel, e);
}
}
- _DELETE(exps);
}
/* for count/rank we need atleast one column */
if (!nr && (is_project(subrel->op) || is_base(subrel->op)) &&
subrel->exps->h) {
@@ -4283,7 +4282,7 @@ rel_mark_used(mvc *sql, sql_rel *rel, in
case op_project:
case op_groupby:
if (proj && rel->l) {
- exps_mark_used(rel, rel->l);
+ exps_mark_used(sql->sa, rel, rel->l);
rel_mark_used(sql, rel->l, 0);
}
break;
@@ -4295,7 +4294,7 @@ rel_mark_used(mvc *sql, sql_rel *rel, in
case op_select:
if (rel->l) {
- exps_mark_used(rel, rel->l);
+ exps_mark_used(sql->sa, rel, rel->l);
rel_mark_used(sql, rel->l, 0);
}
break;
@@ -4337,8 +4336,8 @@ rel_mark_used(mvc *sql, sql_rel *rel, in
case op_full:
case op_semi:
case op_anti:
- exps_mark_used(rel, rel->l);
- exps_mark_used(rel, rel->r);
+ exps_mark_used(sql->sa, rel, rel->l);
+ exps_mark_used(sql->sa, rel, rel->r);
rel_mark_used(sql, rel->l, 0);
rel_mark_used(sql, rel->r, 0);
break;
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list