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