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