Changeset: af07612a5c50 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af07612a5c50
Modified Files:
        monetdb5/extras/jaql/jaqlscenario.c
Branch: jacqueline
Log Message:

jaqlscenario: avoid re-initing all the time

Make sure mserver5 also knows the client was already initialised, so we
don't a) leak like mad for every query, and b) can actually store and
recall variables.


diffs (38 lines):

diff --git a/monetdb5/extras/jaql/jaqlscenario.c 
b/monetdb5/extras/jaql/jaqlscenario.c
--- a/monetdb5/extras/jaql/jaqlscenario.c
+++ b/monetdb5/extras/jaql/jaqlscenario.c
@@ -80,25 +80,31 @@ JAQLinitClient(Client c)
        str msg = MAL_SUCCEED;
 
        j = GDKzalloc(sizeof(jc));
-       c->state[MAL_SCENARIO_OPTIMIZE] = j;
        jaqllex_init_extra(j, &j->scanner);
 
        optimizerInit();  /* for all xxxRef vars in dumpcode */
 
+       /* Set state, this indicates an initialized client scenario */
+       c->state[MAL_SCENARIO_READER] = c;
+       c->state[MAL_SCENARIO_PARSER] = c;
+       c->state[MAL_SCENARIO_OPTIMIZE] = j;
+
        return msg;
 }
 
 str
 JAQLexitClient(Client c)
 {
-       if (c->state[MAL_SCENARIO_PARSER] != NULL) {
-               jc *j = (jc *) c->state[MAL_SCENARIO_PARSER];
+       if (c->state[MAL_SCENARIO_OPTIMIZE] != NULL) {
+               jc *j = (jc *) c->state[MAL_SCENARIO_OPTIMIZE];
 
                jaqllex_destroy(j->scanner);
                j->scanner = NULL;
                freevars(j->vars);
 
+               c->state[MAL_SCENARIO_READER] = NULL;
                c->state[MAL_SCENARIO_PARSER] = NULL;
+               c->state[MAL_SCENARIO_OPTIMIZE] = NULL;
        }
 
        return MAL_SUCCEED;
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to