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 checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list