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® 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