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

Reply via email to