Changeset: 6703b549ab02 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6703b549ab02
Modified Files:
        monetdb5/optimizer/opt_pipes.c
        sql/backends/monet5/datacell/opt_datacell.c
        testing/Mtest.py.in
Branch: holindex
Log Message:

Merged from default


diffs (253 lines):

diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -47,6 +47,7 @@ struct PIPELINES {
        char *status;
        char *prerequisite;
        MalBlkPtr mb;
+       char builtin;
 } pipes[MAXOPTPIPES] = {
 /* The minimal pipeline necessary by the server to operate correctly*/
        {"minimal_pipe",
@@ -55,7 +56,7 @@ struct PIPELINES {
         "optimizer.deadcode();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
 /* The default pipe line contains as of Feb2010
  * mitosis-mergetable-reorder, aimed at large tables and improved
  * access locality
@@ -82,7 +83,7 @@ struct PIPELINES {
         "optimizer.multiplex();"
         "optimizer.accumulators();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
        {"groups_pipe",
         "optimizer.inline();"
         "optimizer.remap();"
@@ -105,7 +106,7 @@ struct PIPELINES {
         "optimizer.multiplex();"
         "optimizer.accumulators();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
 /* The no_mitosis pipe line is (and should be kept!) identical to the
  * default pipeline, except that optimizer mitosis is omitted.  It is
  * used mainly to make some tests work deterministically, and to check
@@ -133,7 +134,7 @@ struct PIPELINES {
         "optimizer.multiplex();"
         "optimizer.accumulators();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
 /* The sequential pipe line is (and should be kept!) identical to the
  * default pipeline, except that optimizers mitosis & dataflow are
  * omitted.  It is use mainly to make some tests work
@@ -160,7 +161,7 @@ struct PIPELINES {
         "optimizer.multiplex();"
         "optimizer.accumulators();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
 /* The default pipeline used in the November 2009 release
        {"nov2009_pipe",        
         "optimizer.inline();"
@@ -182,7 +183,7 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
  */
 /* Experimental pipelines stressing various components under
  * development.  Do not use any of these pipelines in production
@@ -210,7 +211,7 @@ struct PIPELINES {
         "optimizer.replication();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", 0, 0},
+        "experimental", NULL, NULL, 1},
 */
        {"accumulator_pipe",
         "optimizer.inline();"
@@ -233,7 +234,7 @@ struct PIPELINES {
         "optimizer.multiplex();"
         "optimizer.accumulators();"
         "optimizer.garbageCollector();",
-        "stable", 0, 0},
+        "stable", NULL, NULL, 1},
        {"recycler_pipe",
         "optimizer.inline();"
         "optimizer.remap();"
@@ -252,7 +253,7 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", 0, 0},
+        "experimental", NULL, NULL, 1},
        {"cracker_pipe",
         "optimizer.inline();"
         "optimizer.remap();"
@@ -273,7 +274,7 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", "OPTselcrack", 0},
+        "experimental", "OPTselcrack", NULL, 1},
 /*The STOCHASTIC cracking pipeline*/
        {"crackerst_pipe",
          "optimizer.inline();"
@@ -286,7 +287,7 @@ struct PIPELINES {
          "optimizer.selcrackst();"
          "optimizer.deadcode();"
          "optimizer.commonTerms();"
-        "optimizer.groups();"
+                "optimizer.groups();"
          "optimizer.joinPath();"
          "optimizer.reorder();"
          "optimizer.deadcode();"
@@ -295,7 +296,7 @@ struct PIPELINES {
          "optimizer.history();"
          "optimizer.multiplex();"
          "optimizer.garbageCollector();",
-         "experimental", "OPTselcrackst", 0},
+         "experimental", "OPTselcrackst", NULL, 1},
 /*The HOLISTIC indexing pipeline*/
         {"crackerhol_pipe",
          "optimizer.inline();"
@@ -317,9 +318,7 @@ struct PIPELINES {
          "optimizer.history();"
          "optimizer.multiplex();"
          "optimizer.garbageCollector();",
-         "experimental", "OPTselcrackhol", 0},
-
-
+         "experimental", "OPTselcrackhol", NULL, 1},
        {"sidcrack_pipe",
         "optimizer.inline();"
         "optimizer.remap();"
@@ -340,7 +339,7 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", "OPTsidcrack", 0},
+        "experimental", "OPTsidcrack", NULL, 1},
 /*
  * The Octopus pipeline for distributed processing (Merovingian enabled 
platforms only)
  */
@@ -368,7 +367,7 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", "OPToctopus", 0},
+        "experimental", "OPToctopus", NULL, 1},
 /*
  * The centipede pipe line aims at a map-reduce style of query processing
  */
@@ -395,7 +394,7 @@ struct PIPELINES {
         "optimizer.multiplex();"
         "optimizer.accumulators();"
         "optimizer.garbageCollector();",
-        "experimental", "OPTcentipede", 0},
+        "experimental", "OPTcentipede", NULL, 1},
 #endif
 /* The default + datacyclotron*/
        {"datacyclotron_pipe",
@@ -420,7 +419,7 @@ struct PIPELINES {
         /* "optimizer.replication();" not used */
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", "OPTdatacyclotron", 0},
+        "experimental", "OPTdatacyclotron", NULL, 1},
 /* The default + dictionary*/
        {"dictionary_pipe",
         "optimizer.inline();"
@@ -443,7 +442,7 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", "OPTdictionary", 0},
+        "experimental", "OPTdictionary", NULL, 1},
 /* The default + compression */
        {"compression_pipe",
         "optimizer.inline();"
@@ -467,16 +466,12 @@ struct PIPELINES {
         "optimizer.history();"
         "optimizer.multiplex();"
         "optimizer.garbageCollector();",
-        "experimental", "OPTcompress", 0},
+        "experimental", "OPTcompress", NULL, 1},
+/* sentinel */
+       {NULL, NULL, NULL, NULL, NULL, 0}
 };
 
-#ifdef WIN32
-static int builtinoptimizers = 7;
-#else
-static int builtinoptimizers = 10;
-#endif
 /*
- * @-
  * Debugging the optimizer pipeline",
  * The best way is to use mdb and inspect the information gathered",
  * during the optimization phase.  Several optimizers produce more",
@@ -497,13 +492,13 @@ addPipeDefinition(Client cntxt, str name
        struct PIPELINES oldpipe;
 
        for (i = 0; i < MAXOPTPIPES && pipes[i].name; i++)
-               if (pipes[i].name && strcmp(name, pipes[i].name) == 0)
+               if (strcmp(name, pipes[i].name) == 0)
                        break;
 
-       if (i < builtinoptimizers)
-               throw(MAL, "optimizer.addPipeDefinition", "No overwrite of 
built in allowed");
        if (i == MAXOPTPIPES)
                throw(MAL, "optimizer.addPipeDefinition", "Out of slots");
+       if (pipes[i].name && pipes[i].builtin)
+               throw(MAL, "optimizer.addPipeDefinition", "No overwrite of 
built in allowed");
 
        /* save old value */
        oldpipe = pipes[i];
@@ -530,6 +525,11 @@ addPipeDefinition(Client cntxt, str name
                        freeMalBlk(oldpipe.mb);
                if (oldpipe.status)
                        GDKfree(oldpipe.status);
+               if (++i < MAXOPTPIPES) {
+                       pipes[i].name = pipes[i].def = pipes[i].status = 
pipes[i].prerequisite = NULL;
+                       pipes[i].mb = NULL;
+                       pipes[i].builtin = 0;
+               }
        }
        return msg;
 }
diff --git a/sql/backends/monet5/datacell/opt_datacell.c 
b/sql/backends/monet5/datacell/opt_datacell.c
--- a/sql/backends/monet5/datacell/opt_datacell.c
+++ b/sql/backends/monet5/datacell/opt_datacell.c
@@ -236,7 +236,7 @@ OPTdatacellImplementation(Client cntxt, 
        if (actions)
        {
                addPipeDefinition(cntxt, "datacell_pipe",
-                               
"optimizer.inline();optimizer.remap();optimizer.datacell();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.emptySet();optimizer.aliases();optimizer.mitosis();"
+                               
"optimizer.inline();optimizer.remap();optimizer.datacell();optimizer.garbageCollector();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.emptySet();optimizer.aliases();optimizer.mitosis();"
                                
"optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.groups();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();"
                                
"optimizer.history();optimizer.multiplex();optimizer.accumulators();optimizer.garbageCollector();");
                /* extend the plan with the new optimizer pipe required */
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -2370,9 +2370,10 @@ def killProc(proc, outfile = None, cmd =
             cdb = None
             sym = None
         if cdb:
-            p = subprocess.Popen([cdb, '-pv', '-p', str(proc.pid), '-y', 
r'%s;cache*;srv*http://msdl.microsoft.com/download/symbols' % sym],
-                                 stdin = subprocess.PIPE, stdout = 
subprocess.PIPE)
-            out, err = p.communicate('~*kP\nq\n')
+            p = subprocess.Popen([cdb, '-pv', '-p', str(proc.pid),
+                                  '-y', 
'%s;cache*;srv*http://msdl.microsoft.com/download/symbols' % sym, '-lines', 
'-c', '~*kP;!locks;q'],
+                                 stdout = subprocess.PIPE)
+            out, err = p.communicate()
         else:
             out = ''
     else:
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to