Changeset: 41a8fcd9918f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=41a8fcd9918f
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_profiler.c
        monetdb5/modules/kernel/algebra.mal
        monetdb5/optimizer/Tests/GCexample01.stable.out
        monetdb5/optimizer/Tests/dataflow3.stable.out
        monetdb5/optimizer/opt_aliases.c
        monetdb5/optimizer/opt_candidates.c
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_jit.c
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_querylog.c
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
        sql/backends/monet5/sql_gencode.c
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.sql
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.sql
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.sql
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2013/Tests/between.Bug-3259.sql
        sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.sql
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out.single
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.sql
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
        sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
        sql/test/Tests/setoptimizer.stable.out
        sql/test/Tests/setoptimizer.stable.out.Windows
        sql/test/mapi/Tests/sql_int128.stable.out
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
Branch: default
Log Message:

Merge.


diffs (truncated from 3300 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2205,6 +2205,7 @@ str mal_quote(const char *msg, size_t si
 MT_Lock mal_remoteLock;
 void mal_resource_reset(void) __attribute__((__visibility__("hidden")));
 void mal_runtime_reset(void) __attribute__((__visibility__("hidden")));
+str mal_session_uuid;
 int mal_trace;
 void mal_unquote(char *msg);
 str manifoldRef;
@@ -2410,7 +2411,6 @@ void setHeartbeat(int delay);
 void setPolymorphic(InstrPtr p, int tpe, int force);
 void setReturnArgument(InstrPtr p, int varid);
 str setScenario(Client c, str nme);
-void setVarName(MalBlkPtr mb, int i, str nme);
 void setVarType(MalBlkPtr mb, int i, int tpe);
 str setVariableRef;
 void setVariableScope(MalBlkPtr mb);
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -55,18 +55,17 @@ Ready.
 % .L1 # table_name
 % def # name
 % clob # type
-% 579 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.jit();optimizer.garbageCollector();"
        ]
+% 544 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.garbageCollector();"
   ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
 % clob # type
 % 146 # length
 function user.s8_1():void;
-    X_41:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",11:int);
+    X_0:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",21:int);
     X_3 := sql.mvc();
     (X_24:bat[:int],X_25:bat[:int],X_26:bat[:int]) := 
sql.copy_from(nil:ptr,"|","\\n",nil:str,"null","/tmp/xyz",-1:lng,0:lng,0:int,0:int,nil:str);
-# querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","default_pipe")
     X_28 := sql.append(X_3,"sys","ttt","a",X_24);
     X_33 := sql.append(X_28,"sys","ttt","b",X_25);
     X_36 := sql.append(X_33,"sys","ttt","c",X_26);
@@ -115,18 +114,17 @@ end user.s8_1;
 % .L1 # table_name
 % def # name
 % clob # type
-% 602 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.jit();optimizer.sql_append();optimizer.garbageCollector();"
 ]
+% 567 # length
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.sql_append();optimizer.garbageCollector();"
    ]
 #explain copy into ttt from '/tmp/xyz';
 % .explain # table_name
 % mal # name
 % clob # type
 % 146 # length
 function user.s24_1():void;
-    X_41:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",11:int);
+    X_0:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",21:int);
     X_3 := sql.mvc();
     (X_24:bat[:int],X_25:bat[:int],X_26:bat[:int]) := 
sql.copy_from(nil:ptr,"|","\\n",nil:str,"null","/tmp/xyz",-1:lng,0:lng,0:int,0:int,nil:str);
-# querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","user_1")
     X_28 := sql.append(X_3,"sys","ttt","a",X_24);
     X_33 := sql.append(X_28,"sys","ttt","b",X_25);
     X_38 := aggr.count(X_26);
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -882,16 +882,16 @@ freeVariable(MalBlkPtr mb, int varid)
 
 /* A special action is to reduce the variable space by removing all
  * that do not contribute.
+ * All temporary variables are renamed in the process to trim the varid.
  */
 void
 trimMalVariables_(MalBlkPtr mb, MalStkPtr glb)
 {
-       int *vars, cnt = 0, i, j;
-       int maxid = 0,m;
+       int *alias, cnt = 0, i, j;
        InstrPtr q;
 
-       vars = (int *) GDKzalloc(mb->vtop * sizeof(int));
-       if (vars == NULL)
+       alias = (int *) GDKzalloc(mb->vtop * sizeof(int));
+       if (alias == NULL)
                return;                                 /* forget it if we run 
out of memory */
 
        /* build the alias table */
@@ -902,11 +902,6 @@ trimMalVariables_(MalBlkPtr mb, MalStkPt
                        freeVariable(mb, i);
                        continue;
                }
-               if( isTmpVar(mb,i) ){
-                       m = atoi(getVarName(mb,i)+2);
-                       if( m > maxid)
-                               maxid = m;
-               }
         if (i > cnt) {
             /* remap temporary variables */
             VarRecord *t = mb->var[cnt];
@@ -916,7 +911,7 @@ trimMalVariables_(MalBlkPtr mb, MalStkPt
 
                /* valgrind finds a leak when we move these variable record
                 * pointers around. */
-               vars[i] = cnt;
+               alias[i] = cnt;
                if (glb && i != cnt) {
                        glb->stk[cnt] = glb->stk[i];
                        VALempty(&glb->stk[i]);
@@ -926,7 +921,7 @@ trimMalVariables_(MalBlkPtr mb, MalStkPt
 #ifdef DEBUG_REDUCE
        mnstr_printf(GDKout, "Variable reduction %d -> %d\n", mb->vtop, cnt);
        for (i = 0; i < mb->vtop; i++)
-               mnstr_printf(GDKout, "map %d->%d\n", i, vars[i]);
+               mnstr_printf(GDKout, "map %d->%d\n", i, alias[i]);
 #endif
 
        /* remap all variable references to their new position. */
@@ -934,16 +929,20 @@ trimMalVariables_(MalBlkPtr mb, MalStkPt
                for (i = 0; i < mb->stop; i++) {
                        q = getInstrPtr(mb, i);
                        for (j = 0; j < q->argc; j++)
-                               getArg(q, j) = vars[getArg(q, j)];
+                               getArg(q, j) = alias[getArg(q, j)];
                }
        }
-       /* reset the variable counter */
-       mb->vid= maxid + 1;
+       /* rename the temporary variable */
+       mb->vid = 0;
+       for( i =0; i< cnt; i++)
+       if( isTmpVar(mb,i))
+        (void) snprintf(mb->var[i]->id, IDLENGTH,"%c%c%d", REFMARKER, 
TMPMARKER,mb->vid++);
+       
 #ifdef DEBUG_REDUCE
        mnstr_printf(GDKout, "After reduction \n");
        printFunction(GDKout, mb, 0, 0);
 #endif
-       GDKfree(vars);
+       GDKfree(alias);
        mb->vtop = cnt;
 }
 
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -146,7 +146,6 @@ mal_export int findVariable(MalBlkPtr mb
 mal_export int findVariableLength(MalBlkPtr mb, str name, int len);
 mal_export malType getType(MalBlkPtr mb, str nme);
 mal_export str getArgDefault(MalBlkPtr mb, InstrPtr p, int idx);
-mal_export void setVarName(MalBlkPtr mb, int i, str nme);
 mal_export int newVariable(MalBlkPtr mb, const char *name, size_t len, malType 
type);
 mal_export int cloneVariable(MalBlkPtr dst, MalBlkPtr src, int varid);
 mal_export void renameVariable(MalBlkPtr mb, int i, str pattern, int newid);
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -148,7 +148,7 @@ renderProfilerEvent(MalBlkPtr mb, MalStk
        logadd("\"pc\":%d,%s", mb?getPC(mb,pci):0, prettify);
        logadd("\"tag\":%d,%s", stk?stk->tag:0, prettify);
        if( mal_session_uuid)
-               logadd("\"session\":%s,%s",mal_session_uuid,prettify);
+               logadd("\"session\":\"%s\",%s",mal_session_uuid,prettify);
 
        if( start){
                logadd("\"state\":\"start\",%s", prettify);
@@ -291,7 +291,7 @@ This information can be used to determin
                                                        
logadd("\"seqbase\":\""BUNFMT"\",%s", d->hseqbase, pret);
                                                        
logadd("\"hghbase\":\""BUNFMT"\",%s", d->hseqbase + cnt, pret);
                                                        v= 
BBPquickdesc(VIEWtparent(d),0);
-                                                       
logadd("\"kind\":\"%s\",%s", ( v->batPersistence == PERSISTENT ? 
"persistent":"transient"), pret);
+                                                       
logadd("\"kind\":\"%s\",%s", (v &&  v->batPersistence == PERSISTENT ? 
"persistent":"transient"), pret);
                                                } else
                                                        
logadd("\"kind\":\"%s\",%s", ( d->batPersistence == PERSISTENT ? 
"persistent":"transient"), pret);
                                                total += cnt * d->twidth;
diff --git a/monetdb5/modules/kernel/algebra.mal 
b/monetdb5/modules/kernel/algebra.mal
--- a/monetdb5/modules/kernel/algebra.mal
+++ b/monetdb5/modules/kernel/algebra.mal
@@ -7,14 +7,10 @@
 # 
 module algebra;
 
-# TO BE REMOVED OR CHANGED FOR HEADLESS
-
 command groupby(gids:bat[:oid], cnts:bat[:lng]) :bat[:oid]
 address ALGgroupby
 comment "Produces a new BAT with groups identified by the head column. The 
result contains tail times the head value, ie the tail contains the result 
group sizes.";
 
-#END OF HEADLESS PLANS
-
 command find(b:bat[:any_1], t:any_1):oid
 address ALGfind
 comment "Returns the index position of a value.  If no such BUN exists return 
OID-nil." ;
diff --git a/monetdb5/optimizer/Tests/GCexample01.stable.out 
b/monetdb5/optimizer/Tests/GCexample01.stable.out
--- a/monetdb5/optimizer/Tests/GCexample01.stable.out
+++ b/monetdb5/optimizer/Tests/GCexample01.stable.out
@@ -37,19 +37,17 @@ function user.qry():void;               
 barrier (x:oid,z:int) := iterator.new(b:bat[:int]);    #[5] (0) ITRbunIterator 
7 8 <- 1 
     io.print(x:oid);                           #[6] (0) IOprint_val 9 <- 7 
 exit (x:oid,z:int);                            #[7] (0)  7 8 
-    b:bat[:int] := nil:bat[:int];              #[8] (0)  1 <- 16 
-barrier (x:oid,z:int) := iterator.new(c:bat[:int]);    #[9] (0) ITRbunIterator 
7 8 <- 3 
-    io.print(x:oid);                           #[10] (0) IOprint_val 10 <- 7 
-    redo (x:oid,z:int) := iterator.next(c:bat[:int]);  #[11] (0) ITRbunNext 7 
8 <- 3 
-exit (x:oid,z:int);                            #[12] (0)  7 8 
-    c:bat[:int] := nil:bat[:int];              #[13] (0)  3 <- 18 
+barrier (x:oid,z:int) := iterator.new(c:bat[:int]);    #[8] (0) ITRbunIterator 
7 8 <- 3 
+    io.print(x:oid);                           #[9] (0) IOprint_val 10 <- 7 
+    redo (x:oid,z:int) := iterator.next(c:bat[:int]);  #[10] (0) ITRbunNext 7 
8 <- 3 
+exit (x:oid,z:int);                            #[11] (0)  7 8 
 # do not close d, it may be reused 
-barrier go:bit := true:bit;                    #[15] (0)  12 <- 13 
-    io.print(d:bat[:int]);                     #[16] (0) IOprint_val 14 <- 4 
-    redo go:bit := true:bit;                   #[17] (0)  12 <- 13 
-exit go:bit;                                   #[18] (0)  12 
-    d:bat[:int] := nil:bat[:int];              #[19] (0)  4 <- 20 
-end user.qry;                                  #[20] (0)  
+barrier go:bit := true:bit;                    #[13] (0)  12 <- 13 
+    io.print(d:bat[:int]);                     #[14] (0) IOprint_val 14 <- 4 
+    redo go:bit := true:bit;                   #[15] (0)  12 <- 13 
+exit go:bit;                                   #[16] (0)  12 
+end user.qry;                                  #[17] (0)  
+#garbagecollector     actions= 1 time=22 usec 
 function user.qry():void;                      #[0] (0)  0 
     b:bat[:int] := bat.new(:int);              #[1] (0) CMDBATnew 1 <- 2 
     c:bat[:int] := bat.new(:int);              #[2] (0) CMDBATnew 3 <- 2 
@@ -58,19 +56,17 @@ function user.qry():void;               
 barrier (x:oid,z:int) := iterator.new(b:bat[:int]);    #[5] (0) ITRbunIterator 
7 8 <- 1 
     io.print(x:oid);                           #[6] (0) IOprint_val 9 <- 7 
 exit (x:oid,z:int);                            #[7] (0)  7 8 
-    b:bat[:int] := nil:bat[:int];              #[8] (0)  1 <- 16 
-barrier (x:oid,z:int) := iterator.new(c:bat[:int]);    #[9] (0) ITRbunIterator 
7 8 <- 3 
-    io.print(x:oid);                           #[10] (0) IOprint_val 10 <- 7 
-    redo (x:oid,z:int) := iterator.next(c:bat[:int]);  #[11] (0) ITRbunNext 7 
8 <- 3 
-exit (x:oid,z:int);                            #[12] (0)  7 8 
-    c:bat[:int] := nil:bat[:int];              #[13] (0)  3 <- 18 
+barrier (x:oid,z:int) := iterator.new(c:bat[:int]);    #[8] (0) ITRbunIterator 
7 8 <- 3 
+    io.print(x:oid);                           #[9] (0) IOprint_val 10 <- 7 
+    redo (x:oid,z:int) := iterator.next(c:bat[:int]);  #[10] (0) ITRbunNext 7 
8 <- 3 
+exit (x:oid,z:int);                            #[11] (0)  7 8 
 # do not close d, it may be reused      
-barrier go:bit := true:bit;                    #[15] (0)  12 <- 13 
-    io.print(d:bat[:int]);                     #[16] (0) IOprint_val 14 <- 4 
-    redo go:bit := true:bit;                   #[17] (0)  12 <- 13 
-exit go:bit;                                   #[18] (0)  12 
-    d:bat[:int] := nil:bat[:int];              #[19] (0)  4 <- 20 
-end user.qry;                                  #[20] (0)  
+barrier go:bit := true:bit;                    #[13] (0)  12 <- 13 
+    io.print(d:bat[:int]);                     #[14] (0) IOprint_val 14 <- 4 
+    redo go:bit := true:bit;                   #[15] (0)  12 <- 13 
+exit go:bit;                                   #[16] (0)  12 
+end user.qry;                                  #[17] (0)  
+#garbagecollector     actions= 1 time=22 usec 
 
 # 23:17:49 >  
 # 23:17:49 >  Done.
diff --git a/monetdb5/optimizer/Tests/dataflow3.stable.out 
b/monetdb5/optimizer/Tests/dataflow3.stable.out
--- a/monetdb5/optimizer/Tests/dataflow3.stable.out
+++ b/monetdb5/optimizer/Tests/dataflow3.stable.out
@@ -26,13 +26,13 @@ Ready.
 
 #mdb.list("user","s1_0");
 function user.s1_0():void;
-barrier X_31 := language.dataflow();
+barrier X_30 := language.dataflow();
     X17 := bat.new(:lng);
     X54 := bat.new(:lng);
     X55 := bat.new(:lng);
     X56 := bat.new(:lng);
     X57 := bat.new(:lng);
-exit X_31;
+exit X_30;
     X59 := 
remote.connect("mapi:monetdb://volund.ins.cwi.nl:50000/sn4","monetdb","monetdb","msql");
     remote.register(X59,"user","s1_0map");
     X66 := remote.put(X59,X54);
diff --git a/monetdb5/optimizer/opt_aliases.c b/monetdb5/optimizer/opt_aliases.c
--- a/monetdb5/optimizer/opt_aliases.c
+++ b/monetdb5/optimizer/opt_aliases.c
@@ -11,14 +11,7 @@
 #include "opt_aliases.h"
 
 /* an alias is recognized by a simple assignment */
-int
-OPTisAlias(InstrPtr p){
-       if( p->token == ASSIGNsymbol &&
-               p->barrier == 0 && 
-               p->argc == 2)
-               return TRUE;
-       return FALSE;
-}
+#define OPTisAlias(X) (X->token == ASSIGNsymbol && X->barrier == 0 && X->argc 
== 2)
 
 void
 OPTaliasRemap(InstrPtr p, int *alias){
@@ -39,7 +32,6 @@ OPTaliasesImplementation(Client cntxt, M
        (void) cntxt;
 
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to