Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv2321/src/backends/monet5

Modified Files:
        sql_optimizer.mx 
Log Message:
propagated changes of Friday Oct 23 2009 - Saturday Oct 24 2009
from the Nov2009 branch to the development trunk

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2009/10/23 - mlkersten: src/backends/monet5/sql_optimizer.mx,1.230.2.2
  Simplify optimizer pipeline setting and test for available ones.
  Missing pipelines lead to the minimal plan possible.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2009/10/23 - mlkersten: src/backends/monet5/sql_optimizer.mx,1.230.2.3
  Use the optimizer='off' instead of 'none'.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.232
retrieving revision 1.233
diff -u -d -r1.232 -r1.233
--- sql_optimizer.mx    22 Oct 2009 10:57:29 -0000      1.232
+++ sql_optimizer.mx    23 Oct 2009 22:43:39 -0000      1.233
@@ -137,7 +137,7 @@
 sql5_export str SQLoptimizer(Client c);
 sql5_export void SQLsetAccessMode(Client c);
 sql5_export int SQLvalidatePipeline(void);
-sql5_export void setOptimizers(str optimizer);
+sql5_export str setOptimizers(str optimizer);
 sql5_export str defaultPlan;
 
 #endif /* _SQL_OPTIMIZER_H_ */
@@ -440,13 +440,13 @@
 the SQL set optimizer statement. The default list has been
 tested extensively and should provide overall good performance.
 Additional pipelines are defined in the monetdb.conf file.
+The plan 'off' sets the optimizer pipeline to the minimal possible.
 @c
 str minimalPlan= "inline,remap,deadcode,multiplex";
 str defaultPlan = NULL; 
 
 static str optimizers[256];    /* the optimizer pipeline */
-static str optimizerpipeline;          /* reference to last pipeline string */
-static int pipelineOverruled;
+static str optimizerpipe;              /* reference to last pipeline string */
        
 int
 SQLvalidatePipeline(void){
@@ -504,27 +504,29 @@
        return error;
 }
 
-void
+str
 setOptimizers(str optimizer)
 {
        /* the optimizer control is a semicolon separated list of names */
-       /* the predefined 'default' injects the default plan upon need */
+       /* the predefined 'off' injects the default minimal plan upon need */
        int top=0,i;
        char *base,  *nxt, *nme, *pipe;
        
-       if (optimizerpipeline == optimizer || pipelineOverruled)
-               return;
+       if (optimizer == NULL || *optimizer == 0 || strcmp(optimizer,"off")==0)
+               optimizer= GDKstrdup(minimalPlan);
+       if (optimizerpipe == optimizer )
+               return optimizerpipe;
        pipe= GDKgetenv(optimizer);
-       if ( pipe != NULL)
+       if ( pipe != NULL){
                optimizer= pipe;
+               GDKsetenv("sql_optimizer",pipe);
+       }
 
-       optimizerpipeline= optimizer;
+       optimizerpipe= optimizer;
        base= GDKstrdup(optimizer);
 
        for ( i = 0; i < 256; i++)
                optimizers[i] = NULL;
-       if (strcmp(optimizer,"default")==0)
-               optimizer= GDKstrdup(defaultPlan? defaultPlan:minimalPlan);
 
        optimizer=  base;
        while (optimizer && *optimizer ) {
@@ -539,16 +541,19 @@
                        optimizers[top++] = nme; 
                optimizer = nxt;
        } 
-       if (top == 256)
-               showException(SQL,"optimizer","Too many optimizer steps\n");
+       if (top == 1  && pipe == NULL){
+               showException(SQL,"optimizer","Optimizer %s does not exist, use 
minimal one\n",optimizers[0]);
+               setOptimizers("off");
+       }else
+       if (top == 256){
+               showException(SQL,"optimizer","Too many optimizer steps, use 
minimal one\n");
+               setOptimizers("off");
+       } else
        if (SQLvalidatePipeline() ) {
-               if (optimizerpipeline == defaultPlan || !defaultPlan)
-                       setOptimizers(minimalPlan);
-               else
-                       setOptimizers(defaultPlan);
-               pipelineOverruled= TRUE;
-               showException(SQL,"optimizer"," pipeline set to 
'%s'",optimizerpipeline);
+               showException(SQL,"optimizer"," Pipeline reset to 
'%s'",optimizerpipe);
+               setOptimizers("off");
        }
+       return optimizerpipe;
 }
 
 static void


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to