Changeset: 11921e6a3683 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=11921e6a3683 Modified Files: sql/backends/monet5/sql_scenario.c sql/server/rel_psm.c sql/server/rel_schema.c sql/server/sql_scan.c sql/server/sql_scan.h Branch: default Log Message:
more alloction cleanup diffs (133 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 @@ -888,10 +888,7 @@ SQLparser(Client c) int pstatus = 0; int err = 0, opt, preparedid = -1; - /* clean up old stuff */ - GDKfree(c->query); /* may be NULL */ c->query = NULL; - be = (backend *) c->sqlcontext; if (be == 0) { /* leave a message in the log */ @@ -1040,7 +1037,7 @@ SQLparser(Client c) * produce code. */ be->q = NULL; - c->query = query_cleaned(QUERY(m->scanner)); + c->query = query_cleaned(m->sa, QUERY(m->scanner)); if (c->query == NULL) { err = 1; @@ -1192,7 +1189,6 @@ SQLparser(Client c) finalize: if (msg) { sqlcleanup(be, 0); - GDKfree(c->query); c->query = NULL; } return msg; diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -991,9 +991,8 @@ rel_create_func(sql_query *query, dlist sql_schema *os = cur_schema(sql); if (create) { /* needed for recursive functions */ - q = query_cleaned(q); + q = query_cleaned(sql->ta, q); sql->forward = f = mvc_create_func(sql, sql->sa, s, fname, l, restype, type, lang, "user", q, q, FALSE, vararg, FALSE); - GDKfree(q); } sql->session->schema = s; b = sequential_block(query, (ra)?&ra->type:NULL, ra?NULL:restype, body, NULL, is_func); @@ -1020,22 +1019,18 @@ rel_create_func(sql_query *query, dlist return NULL; sql->params = NULL; if (create) { - q = query_cleaned(q); + q = query_cleaned(sql->ta, q); f = mvc_create_func(sql, sql->sa, s, fname, l, restype, type, lang, fmod, fnme, q, FALSE, vararg, FALSE); - GDKfree(q); } else if (!sf) { return sql_error(sql, 01, SQLSTATE(42000) "CREATE %s: external name %s.%s not bound (%s.%s)", F, fmod, fnme, s->base.name, fname ); } else { sql_func *f = sf->func; if (!f->mod || strcmp(f->mod, fmod)) - f->mod = _STRDUP(fmod); + f->mod = (f->sa)?sa_strdup(f->sa, fmod):sa_strdup(sql->pa, fmod); if (!f->imp || strcmp(f->imp, fnme)) - f->imp = (f->sa)?sa_strdup(f->sa, fnme):_STRDUP(fnme); - if (!f->mod || !f->imp) { - _DELETE(f->mod); - _DELETE(f->imp); + f->imp = (f->sa)?sa_strdup(f->sa, fnme):sa_strdup(sql->pa, fnme); + if (!f->mod || !f->imp) return sql_error(sql, 02, SQLSTATE(HY013) "CREATE %s: could not allocate space", F); - } f->sql = 0; /* native */ f->lang = FUNC_LANG_INT; } @@ -1321,12 +1316,11 @@ create_trigger(sql_query *query, dlist * default: return sql_error(sql, 02, SQLSTATE(42000) "%s TRIGGER: invalid event: %s", base, token2string(trigger_event->token)); } - orientation = triggered_action->h->data.i_val; - q = query_cleaned(QUERY(sql->scanner)); assert(triggered_action->h->type == type_int); + orientation = triggered_action->h->data.i_val; + q = query_cleaned(sql->ta, QUERY(sql->scanner)); r = rel_create_trigger(sql, t->s->base.name, t->base.name, triggername, time, orientation, event, old_name, new_name, condition, q); - GDKfree(q); return r; } diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1185,9 +1185,8 @@ rel_create_view(sql_query *query, sql_sc } if (create) { - q = query_cleaned(q); + q = query_cleaned(sql->ta, q); t = mvc_create_view(sql, s, name, SQL_DECLARED_TABLE, q, 0); - GDKfree(q); if (as_subquery(sql, t, tt_view, sq, column_spec, "CREATE VIEW") != 0) { rel_destroy(sq); return NULL; diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c --- a/sql/server/sql_scan.c +++ b/sql/server/sql_scan.c @@ -28,14 +28,14 @@ #endif char * -query_cleaned(const char *query) +query_cleaned(sql_allocator *sa, const char *query) { char *q, *r; int quote = 0; /* inside quotes ('..', "..", {..}) */ bool bs = false; /* seen a backslash in a quoted string */ bool incomment1 = false; /* inside traditional C style comment */ bool incomment2 = false; /* inside comment starting with -- */ - r = GDKmalloc(strlen(query) + 1); + r = SA_NEW_ARRAY(sa, char, strlen(query) + 1); if(!r) return NULL; diff --git a/sql/server/sql_scan.h b/sql/server/sql_scan.h --- a/sql/server/sql_scan.h +++ b/sql/server/sql_scan.h @@ -49,7 +49,7 @@ struct scanner { #define QUERY(scanner) (scanner.rs->buf+scanner.rs->pos) -extern char *query_cleaned(const char *query); +extern char *query_cleaned(sql_allocator *sa, const char *query); extern void scanner_init(struct scanner *s, bstream *rs, stream *ws); sql_export void scanner_query_processed(struct scanner *s); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list