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

Reply via email to