Changeset: e6ee1ab0a644 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e6ee1ab0a644
Modified Files:
sql/backends/monet5/sql.mx
Branch: gdk-calc
Log Message:
Merge with default branch.
diffs (truncated from 1373 to 300 lines):
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1014,6 +1014,8 @@ SQLdebugRendering(MapiHdl hdl)
mnstr_printf(toConsole, "%s\n", reply);
if (strncmp(reply, "mdb>#EOD", 8) == 0) {
cnt = 0;
+ while ((reply = fetch_line(hdl)))
+ mnstr_printf(toConsole, "%s\n", reply);
break;
}
}
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -404,7 +404,8 @@ void freeClient(Client c)
c->promptlength=-1;
if(c->errbuf){
GDKsetbuf(0);
- GDKfree(c->errbuf);
+ if ( c->father == NULL)
+ GDKfree(c->errbuf);
c->errbuf=0;
}
c->father = 0;
diff --git a/monetdb5/mal/mal_listing.c b/monetdb5/mal/mal_listing.c
--- a/monetdb5/mal/mal_listing.c
+++ b/monetdb5/mal/mal_listing.c
@@ -614,21 +614,21 @@ instruction2str(MalBlkPtr mb, MalStkPtr
}
str
-function2str(MalBlkPtr mb, int flg)
+mal2str(MalBlkPtr mb, int flg, int first, int last)
{
str ps, *txt;
int i, *len, totlen = 0;
txt = GDKmalloc(sizeof(str) * mb->stop);
len = GDKmalloc(sizeof(int) * mb->stop);
- for (i = 0; i < mb->stop; i++) {
+ for (i = first; i < last; i++) {
txt[i] = instruction2str(mb, 0, getInstrPtr(mb, i), flg);
if ( txt[i])
totlen += len[i] = (int)strlen(txt[i]);
}
ps = GDKmalloc(totlen + mb->stop + 1);
totlen = 0;
- for (i = 0; i < mb->stop; i++)
+ for (i = first; i < last; i++)
if( txt[i]){
strncpy(ps + totlen, txt[i], len[i]);
ps[totlen + len[i]] = '\n';
@@ -641,6 +641,11 @@ function2str(MalBlkPtr mb, int flg)
return ps;
}
+str
+function2str(MalBlkPtr mb, int flg){
+ return mal2str(mb,flg,0,mb->stop);
+}
+
void
promptInstruction(stream *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int flg)
{
diff --git a/monetdb5/mal/mal_listing.h b/monetdb5/mal/mal_listing.h
--- a/monetdb5/mal/mal_listing.h
+++ b/monetdb5/mal/mal_listing.h
@@ -32,6 +32,7 @@ mal_export void printInstruction(stream
mal_export str instructionCall(MalBlkPtr mb, InstrPtr p, str s, str base,
size_t len);
mal_export void promptInstruction(stream *fd, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p, int flg);
mal_export str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int
hidden);
+mal_export str mal2str(MalBlkPtr mb, int flg, int first, int last);
mal_export str function2str(MalBlkPtr mb, int flg);
#endif /* _MAL_LIST_H */
diff --git a/monetdb5/modules/atoms/mtime.mx b/monetdb5/modules/atoms/mtime.mx
--- a/monetdb5/modules/atoms/mtime.mx
+++ b/monetdb5/modules/atoms/mtime.mx
@@ -2244,7 +2244,7 @@ date_extract_weekofyear(int *ret, date *
return MAL_SUCCEED;
}
-/* Returns the current day of the week where 1=monday, .., 7=sunday */
+/* Returns the current day of the week where 1=sunday, .., 7=saturday */
static inline str
date_extract_dayofweek(int *ret, date *v)
{
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
@@ -33,21 +33,53 @@
*/
#include "monetdb_config.h"
#include "opt_pipes.h"
+#include "mal_client.h"
+#include "mal_instruction.h"
+#include "mal_function.h"
+#include "mal_listing.h"
#define MAXOPTPIPES 64
struct PIPELINES{
- char name[50];
- char def[256];
+ char *name;
+ char *def;
+ MalBlkPtr mb;
} pipes[MAXOPTPIPES] ={
/* The minimal pipeline necessary by the server to operate correctly*/
-{ "minimal_pipe", "inline,remap,deadcode,multiplex,garbageCollector"},
+{ "minimal_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.deadcode();"
+ "optimizer.multiplex();"
+ "optimizer.garbageCollector();",
+ 0},
/*
* The default pipe line contains as of Feb2010 mitosis-mergetable-reorder,
* aimed at large tables and improved access locality
*/
-{ "default_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,accumulators,garbageCollector"
},
+{ "default_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.mitosis();"
+ "optimizer.mergetable();"
+ "optimizer.deadcode();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.reorder();"
+ "optimizer.deadcode();"
+ "optimizer.reduce();"
+ "optimizer.dataflow();"
+ "optimizer.history();"
+ "optimizer.multiplex();"
+ "optimizer.accumulators();"
+ "optimizer.garbageCollector();",
+ 0},
/*
* The no_mitosis pipe line is (and should be kept!) identical to the default
pipeline,
@@ -55,57 +87,371 @@ struct PIPELINES{
* deterministically, and to check / debug whether "unexpected" problems are
related to
* mitosis (and/or mergetable).
*/
-{ "no_mitosis_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,accumulators,garbageCollector"
},
+{ "no_mitosis_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.mergetable();"
+ "optimizer.deadcode();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.reorder();"
+ "optimizer.deadcode();"
+ "optimizer.reduce();"
+ "optimizer.dataflow();"
+ "optimizer.history();"
+ "optimizer.multiplex();"
+ "optimizer.accumulators();"
+ "optimizer.garbageCollector();",
+ 0},
/* 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 deterministically, i.e., avoid ambigious output, by avoiding
parallelism.
*/
-{ "sequential_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,history,multiplex,accumulators,garbageCollector"
},
+{ "sequential_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.mergetable();"
+ "optimizer.deadcode();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.reorder();"
+ "optimizer.deadcode();"
+ "optimizer.reduce();"
+ "optimizer.history();"
+ "optimizer.multiplex();"
+ "optimizer.accumulators();"
+ "optimizer.garbageCollector();",
+ 0 },
-/* The default pipeline used in the November 2009 release*/
-{ "nov2009_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector"
},
+/* The default pipeline used in the November 2009 release
+{ "nov2009_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.mergetable();"
+ "optimizer.deadcode();"
+ "optimizer.constants();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.deadcode();"
+ "optimizer.reduce();"
+ "optimizer.dataflow();"
+ "optimizer.history();"
+ "optimizer.multiplex();"
+ "optimizer.garbageCollector();",
+ 0},
+*/
/*
* Experimental pipelines stressing various components under development
* Do not use any of these pipelines in production settings!
*/
-{"replication_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,replication,multiplex,garbageCollector"
},
+/* Not yet compiled
+{"replication_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.mergetable();"
+ "optimizer.deadcode();"
+ "optimizer.constants();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.deadcode();"
+ "optimizer.reduce();"
+ "optimizer.dataflow();"
+ "optimizer.history();"
+ "optimizer.replication();"
+ "optimizer.multiplex();"
+ "optimizer.garbageCollector();",
+ 0 },
+*/
-{"accumulator_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,accumulators,garbageCollector"},
+{"accumulator_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.mergetable();"
+ "optimizer.deadcode();"
+ "optimizer.constants();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.deadcode();"
+ "optimizer.reduce();"
+ "optimizer.dataflow();"
+ "optimizer.history();"
+ "optimizer.multiplex();"
+ "optimizer.accumulators();"
+ "optimizer.garbageCollector();",
+ 0},
-{"recycler_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,deadcode,commonTerms,joinPath,deadcode,recycle,reduce,history,multiplex,garbageCollector"},
+{"recycler_pipe",
+ "optimizer.inline();"
+ "optimizer.remap();"
+ "optimizer.evaluate();"
+ "optimizer.costModel();"
+ "optimizer.coercions();"
+ "optimizer.emptySet();"
+ "optimizer.aliases();"
+ "optimizer.deadcode();"
+ "optimizer.commonTerms();"
+ "optimizer.joinPath();"
+ "optimizer.deadcode();"
+ "optimizer.recycle();"
+ "optimizer.reduce();"
+ "optimizer.history();"
+ "optimizer.multiplex();"
+ "optimizer.garbageCollector();",
+ 0},
-{"cracker_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,selcrack,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector"},
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list