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

Reply via email to