Changeset: 21be4e42cb7d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=21be4e42cb7d Modified Files: clients/Tests/exports.stable.out monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/mal/mal.c monetdb5/mal/mal.h monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_profiler.c monetdb5/mal/mal_runtime.c monetdb5/modules/atoms/uuid.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/UDF/pyapi/pyapi.c 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/leaks/Tests/check1.stable.out.int128 sql/test/leaks/Tests/check2.stable.out.int128 sql/test/leaks/Tests/check3.stable.out.int128 sql/test/leaks/Tests/check4.stable.out.int128 sql/test/leaks/Tests/check5.stable.out.int128 sql/test/mapi/Tests/sql_int128.stable.out sql/test/mergetables/Tests/mergequery.stable.out sql/test/remote/Tests/partition_elim.stable.out Branch: oltp Log Message:
Merge with default diffs (truncated from 4154 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 @@ -510,13 +510,11 @@ MapiMsg mapi_disconnect(Mapi mid); MapiMsg mapi_error(Mapi mid); char *mapi_error_str(Mapi mid); MapiMsg mapi_execute(MapiHdl hdl); -MapiMsg mapi_execute_array(MapiHdl hdl, char **val); MapiMsg mapi_explain(Mapi mid, FILE *fd); MapiMsg mapi_explain_query(MapiHdl hdl, FILE *fd); MapiMsg mapi_explain_result(MapiHdl hdl, FILE *fd); mapi_int64 mapi_fetch_all_rows(MapiHdl hdl); char *mapi_fetch_field(MapiHdl hdl, int fnr); -char **mapi_fetch_field_array(MapiHdl hdl); size_t mapi_fetch_field_len(MapiHdl hdl, int fnr); char *mapi_fetch_line(MapiHdl hdl); MapiMsg mapi_fetch_reset(MapiHdl hdl); @@ -562,17 +560,12 @@ MapiMsg mapi_param_string(MapiHdl hdl, i MapiMsg mapi_param_type(MapiHdl hdl, int fnr, int ctype, int sqltype, void *ptr); MapiMsg mapi_ping(Mapi mid); MapiHdl mapi_prepare(Mapi mid, const char *cmd); -MapiHdl mapi_prepare_array(Mapi mid, const char *cmd, char **val); MapiMsg mapi_prepare_handle(MapiHdl hdl, const char *cmd); MapiHdl mapi_query(Mapi mid, const char *cmd); -MapiHdl mapi_query_array(Mapi mid, const char *cmd, char **val); MapiMsg mapi_query_done(MapiHdl hdl); MapiMsg mapi_query_handle(MapiHdl hdl, const char *cmd); MapiMsg mapi_query_part(MapiHdl hdl, const char *cmd, size_t size); MapiHdl mapi_query_prep(Mapi mid); -MapiHdl mapi_quick_query(Mapi mid, const char *cmd, FILE *fd); -MapiHdl mapi_quick_query_array(Mapi mid, const char *cmd, char **val, FILE *fd); -MapiMsg mapi_quick_response(MapiHdl hdl, FILE *fd); char *mapi_quote(const char *msg, int size); MapiMsg mapi_read_response(MapiHdl hdl); MapiMsg mapi_reconnect(Mapi mid); @@ -1027,6 +1020,7 @@ str CMDgetPageSize(int *ret); str CMDgetSystemTime(lng *ret); str CMDgetTrace(bat *res, str *ev); str CMDgetUserTime(lng *ret); +str CMDgetprofilerlimit(int *res); str CMDifthen(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str CMDmodules(bat *bid); str CMDnoopProfiler(void *res); @@ -1082,6 +1076,7 @@ str CMDscience_cst_bat_pow_flt(bat *ret, str CMDsetHeartbeat(void *res, int *ev); str CMDsetName(str *rname, const bat *b, str *name); str CMDsetoid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str CMDsetprofilerlimit(void *res, int *lim); str CMDstartProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str CMDstartTrace(void *res); str CMDstartTracePath(void *res, str *path); @@ -1586,12 +1581,10 @@ int OPTvolcanoImplementation(Client cntx str OPTwrapper(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str PCREilike2(bit *ret, const str *s, const str *pat); str PCREilike3(bit *ret, const str *s, const str *pat, const str *esc); -str PCREilike_join_pcre(bat *l, bat *r, const bat *b, const bat *pat, const str *esc); str PCREimatch(bit *ret, const str *val, const str *pat); str PCREindex(int *ret, const pcre *pat, const str *val); str PCRElike2(bit *ret, const str *s, const str *pat); str PCRElike3(bit *ret, const str *s, const str *pat, const str *esc); -str PCRElike_join_pcre(bat *l, bat *r, const bat *b, const bat *pat, const str *esc); str PCRElikesubselect1(bat *ret, const bat *bid, const bat *cid, const str *pat, const str *esc, const bit *anti); str PCRElikesubselect2(bat *ret, const bat *bid, const bat *sid, const str *pat, const str *esc, const bit *caseignore, const bit *anti); str PCRElikesubselect3(bat *ret, const bat *bid, const bat *sid, const str *pat, const str *esc, const bit *anti); @@ -2150,6 +2143,7 @@ str getTypeIdentifier(malType tpe); str getTypeName(malType tpe); lng getUserTime(void); lng getVolume(MalStkPtr stk, InstrPtr pci, int rd); +int getprofilerlimit(void); str grantRef; str grant_functionRef; str grant_rolesRef; @@ -2261,6 +2255,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; @@ -2368,7 +2363,6 @@ str partitionRef; str passRef; str pcreRef; str pcre_init(void *ret); -var_t pcre_put(Heap *h, var_t *bun, pcre *val); str pinRef; str plusRef; str postludeRef; @@ -2474,11 +2468,11 @@ 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); str setWriteModeRef; +void setprofilerlimit(int limit); str setprofilerpoolsize(int size); str shortStmtRendering(MalBlkPtr mb, MalStkPtr stl, InstrPtr p); void showAllScenarios(stream *f); 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,28 +55,28 @@ Ready. % .L1 # table_name % def # name % clob # type -% 596 # 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.oltp();optimizer.garbageCollector();" ] +% 561 # 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.oltp();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name % clob # type -% 126 # length +% 146 # length function user.s8_1():void; - X_38:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","default_pipe",16); - oltp.lock(534); - X_0 := sql.mvc(); - (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0,nil:str); - X_25 := sql.append(X_0,"sys","ttt","a",X_21); - X_30 := sql.append(X_25,"sys","ttt","b",X_22); - X_33 := sql.append(X_30,"sys","ttt","c",X_23); - X_35 := aggr.count(X_23); - sql.affectedRows(X_33,X_35); + X_0:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","default_pipe",21:int); + oltp.lock(534: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); + 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); + X_38 := aggr.count(X_26); + sql.affectedRows(X_36,X_38); catch MALexception:str; exit MALexception:str; catch SQLexception:str; exit SQLexception:str; - oltp.release(534); + oltp.release(534:int); end user.s8_1; #inline actions= 0 time=1 usec #candidates actions= 1 time=14 usec @@ -120,28 +120,28 @@ end user.s8_1; % .L1 # table_name % def # name % clob # type -% 619 # 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.oltp();optimizer.sql_append();optimizer.garbageCollector();" ] +% 584 # 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.oltp();optimizer.sql_append();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name % clob # type -% 126 # length +% 146 # length function user.s24_1():void; - X_38:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","user_1",16); - oltp.lock(534); - X_0 := sql.mvc(); - (X_21:bat[:int],X_22:bat[:int],X_23:bat[:int]) := sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0,nil:str); - X_25 := sql.append(X_0,"sys","ttt","a",X_21); - X_30 := sql.append(X_25,"sys","ttt","b",X_22); - X_35 := aggr.count(X_23); - X_33 := sql.append(X_30,"sys","ttt","c",X_23); - sql.affectedRows(X_33,X_35); + X_0:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","user_1",21:int); + oltp.lock(534: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); + 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); + X_36 := sql.append(X_33,"sys","ttt","c",X_26); + sql.affectedRows(X_36,X_38); catch MALexception:str; exit MALexception:str; catch SQLexception:str; exit SQLexception:str; - oltp.release(534); + oltp.release(534:int); end user.s24_1; #inline actions= 0 time=1 usec #candidates actions= 1 time=14 usec diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c --- a/monetdb5/mal/mal.c +++ b/monetdb5/mal/mal.c @@ -10,10 +10,12 @@ #include <monetdb_config.h> #include <mal.h> -char monet_cwd[PATHLENGTH] = { 0 }; -size_t monet_memory = 0; +char monet_cwd[PATHLENGTH] = { 0 }; +size_t monet_memory = 0; char monet_characteristics[PATHLENGTH]; -int mal_trace; /* enable profile events on console */ +int mal_trace; /* enable profile events on console */ +str mal_session_uuid; /* unique marker for the session */ + #ifdef HAVE_HGE int have_hge; #endif diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h --- a/monetdb5/mal/mal.h +++ b/monetdb5/mal/mal.h @@ -52,6 +52,7 @@ mal_export char monet_characteristics[P mal_export lng memorypool; /* memory claimed by concurrent threads */ mal_export int memoryclaims; /* number of threads active with expensive operations */ mal_export int mal_trace; /* enable profile events on console */ +mal_export str mal_session_uuid; /* unique marker for the session */ #ifdef HAVE_HGE mal_export int have_hge; #endif 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 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list