Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv24301
Modified Files:
Tag: SQL_2-20
sql_optimizer.mx
Log Message:
Attempt to remove the compaints observed by valgrind on leakage.
Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.160.2.1
retrieving revision 1.160.2.2
diff -u -d -r1.160.2.1 -r1.160.2.2
--- sql_optimizer.mx 11 Oct 2007 12:25:43 -0000 1.160.2.1
+++ sql_optimizer.mx 27 Oct 2007 09:01:30 -0000 1.160.2.2
@@ -484,7 +484,9 @@
addOptimizers(Client c,MalBlkPtr mb, str optimizer)
{
/* the optimizer control is a semicolon separated list of names */
+ /* the predefined 'default' injects the default plan upon need */
str optimizers[256];
+ str oldbase= optimizer;
int top=0,i;
char *nxt, *nme;
@@ -497,7 +499,6 @@
if (strcmp(optimizer,"default")==0){
str base= GDKstrdup(defaultPlan?
defaultPlan:minimalPlan);
addOptimizers(c,mb,base);
- GDKfree(base);
} else if ((nme = getName(optimizer,strlen(optimizer))) == 0) {
showException(SQL,"optimizer"," '%s' does not
exist\n",optimizer);
mb->errors++;
@@ -505,12 +506,18 @@
optimizers[top++] = nme;
optimizer = nxt;
}
+ if( top== 256){
+ showException(SQL,"optimizer","Too many optimizer steps\n");
+ mb->errors++;
+ }
/* add the optimizers to the query plan */
for (i=0;i<top; i++) {
- InstrPtr p =
newFcnCall(mb,getName("optimizer",9),optimizers[i]);
+ InstrPtr p = newFcnCall(mb,"optimizer",optimizers[i]);
typeChecker(c->nspace, mb,p,TRUE);
}
+ if( oldbase)
+ GDKfree(oldbase);
}
void
@@ -568,7 +575,6 @@
VALset(&src, TYPE_str, defaultPlan?
defaultPlan:minimalPlan));
addOptimizers(c,mb, base);
optimizeMALBlock(mb);
- GDKfree(base);
} else
if( strcmp(optimizer,"off")==0 ){
str base = GDKstrdup(minimalPlan);
@@ -578,12 +584,10 @@
/* no real optimization needed */
addOptimizers(c,mb, base);
optimizeMALBlock(mb);
- GDKfree(base);
} else {
str base = GDKstrdup(optimizer);
addOptimizers(c,mb,base);
- GDKfree(base);
/* time to execute the optimizers */
if( c->debug)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins