Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 
sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv28623/sql/src/backends/monet5

Modified Files:
      Tag: Feb2010
        sql_optimizer.mx sql_scenario.mx 
Log Message:

fixing ID: 2983773 "SQL: minimal optimizer pipe unstable"
https://sourceforge.net/tracker/index.php?func=detail&aid=2983773&group_id=56967&atid=482468

In the code of and related to setOptimizers(), 
make sure we use GDKstrdup() & GDKfree() only when indeed required
and thus not only prevent double free's
but also avoid memory leakage.


Index: sql_scenario.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_scenario.mx,v
retrieving revision 1.372.2.2
retrieving revision 1.372.2.3
diff -u -d -r1.372.2.2 -r1.372.2.3
--- sql_scenario.mx     10 Feb 2010 15:38:26 -0000      1.372.2.2
+++ sql_scenario.mx     8 Apr 2010 16:28:31 -0000       1.372.2.3
@@ -322,8 +322,7 @@
        optimizer= GDKgetenv("sql_optimizer");
        if (optimizer == NULL)
                optimizer= "default_pipe";
-       SQLglobal("optimizer", optimizer=setOptimizers(optimizer));
-       GDKfree(optimizer);
+       SQLglobal("optimizer", GDKstrdup(setOptimizers(optimizer)));
        SQLglobal("trace","show,ticks,stmt");
 
        typename = "sec_interval";

Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.243.2.3
retrieving revision 1.243.2.4
diff -u -d -r1.243.2.3 -r1.243.2.4
--- sql_optimizer.mx    8 Apr 2010 15:45:46 -0000       1.243.2.3
+++ sql_optimizer.mx    8 Apr 2010 16:28:31 -0000       1.243.2.4
@@ -529,19 +529,19 @@
 
        /* catch  minimal pipes */
        if (optimizer == NULL || *optimizer == 0 )
-               optimizer= GDKstrdup(minimalPlan);
+               optimizer= minimalPlan;
        else
        /* optimizers can be temporarily turned on/off */
        if(strcmp(optimizer,"off")==0){
                if( previouspipe == NULL)
                        previouspipe = optimizerpipe;
-               else return GDKstrdup(optimizerpipe);
-               optimizer= GDKstrdup(minimalPlan);
+               else return optimizerpipe;
+               optimizer= minimalPlan;
        } else
        if (strcmp(optimizer,"on")==0){
                if (previouspipe)
                        optimizer= previouspipe;
-               else return GDKstrdup(optimizerpipe);
+               else return optimizerpipe;
                previouspipe = 0;
        } else {
                /* the optimizer may be an environment alias */
@@ -572,15 +572,15 @@
        if (top == 256){
                showException(SQL,"optimizer","Too many optimizer steps, use 
default pipe instead\n");
                setOptimizers("default_pipe");
-               return GDKstrdup("default_pipe");
+               return "default_pipe";
        } 
        optimizers[top] = 0;
        if (top <= 1  && pipe == NULL){
                showException(SQL,"optimizer","Optimizer '%s' pipeline does not 
exist, use default pipe instead\n", optimizerpipe?optimizerpipe:"undefined");
                setOptimizers("default_pipe");
-               return GDKstrdup("default_pipe");
+               return "default_pipe";
        }
-       return GDKstrdup(optimizerpipe);
+       return optimizerpipe;
 }
 
 static void
@@ -631,7 +631,7 @@
                return;
        }
        optimizer = stack_get_string(be->mvc, "optimizer");
-       stack_set_var(be->mvc, "optimizer", VALset(&src, TYPE_str, 
setOptimizers(optimizer)));
+       stack_set_var(be->mvc, "optimizer", VALset(&src, TYPE_str, 
GDKstrdup(setOptimizers(optimizer))));
        addOptimizers(c,mb);
        SQLgetStatistics(c,(mvc *) c->state[MAL_SCENARIO_OPTIMIZE],mb);
        if ( m->emod & mod_debug )


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to