Changeset: f63936b77e0f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f63936b77e0f Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/optimizer/opt_mask.c sql/test/Tests/setoptimizer.stable.out Branch: msk-type Log Message:
Checked in the msk-type patches. Not approved test yet, because the next step is to convert the current mask.{mark,umask} operations into proper MSK operations instead of fake OID lists. Then we can 1) determine their cost and 2) we can gradually move the code into the relevant operations. There are likely some collaterals to deal with. diffs (209 lines): diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -16373,7 +16373,7 @@ stdout of test 'MAL-signatures` in direc [ "mapi", "stop", "command mapi.stop():void ", "SERVERstop;", "" ] [ "mapi", "suspend", "command mapi.suspend():void ", "SERVERsuspend;", "" ] [ "mapi", "trace", "command mapi.trace(X_1:int, X_2:int):void ", "SERVERtrace;", "" ] -[ "mask", "mask", "pattern mask.mask(X_1:any):bat[:any_1] ", "MSKmask;", "" ] +[ "mask", "mask", "pattern mask.mask(X_1:bat[:oid]):bat[:oid] ", "MSKmask;", "" ] [ "mask", "select", "command mask.select(X_1:bat[:any_1], X_2:any_1, X_3:any_1, X_4:bit, X_5:bit, X_6:bit):bat[:oid] ", "MSKselect1;", "" ] [ "mask", "select", "command mask.select(X_1:bat[:any_1], X_2:any_1, X_3:any_1, X_4:bit, X_5:bit, X_6:bit, X_7:bit):bat[:oid] ", "MSKselect1nil;", "" ] [ "mask", "select", "command mask.select(X_1:bat[:any_1], X_2:bat[:oid], X_3:any_1, X_4:any_1, X_5:bit, X_6:bit, X_7:bit):bat[:oid] ", "MSKselect2;", "" ] @@ -16381,7 +16381,7 @@ stdout of test 'MAL-signatures` in direc [ "mask", "selectNotNil", "command mask.selectNotNil(X_1:bat[:any_2]):bat[:any_2] ", "MSKselectNotNil;", "" ] [ "mask", "thetaselect", "command mask.thetaselect(X_1:bat[:any_1], X_2:any_1, X_3:str):bat[:oid] ", "MSKthetaselect1;", "" ] [ "mask", "thetaselect", "command mask.thetaselect(X_1:bat[:any_1], X_2:bat[:oid], X_3:any_1, X_4:str):bat[:oid] ", "MSKthetaselect2;", "" ] -[ "mask", "umask", "pattern mask.umask(X_1:any):bat[:any_1] ", "MSKumask;", "" ] +[ "mask", "umask", "pattern mask.umask(X_1:bat[:oid]):bat[:oid] ", "MSKumask;", "" ] [ "mat", "new", "pattern mat.new(X_1:bat[:any_2]...):bat[:any_2] ", "MATpack;", "" ] [ "mat", "pack", "pattern mat.pack(X_1:bat[:any_2]...):bat[:any_2] ", "MATpack;", "" ] [ "mat", "pack", "pattern mat.pack(X_1:any_2...):bat[:any_2] ", "MATpackValues;", "" ] @@ -16591,6 +16591,8 @@ stdout of test 'MAL-signatures` in direc [ "optimizer", "json", "pattern optimizer.json(X_1:str, X_2:str):str ", "OPTwrapper;", "" ] [ "optimizer", "macro", "pattern optimizer.macro(X_1:str, X_2:str):void ", "OPTmacro;", "" ] [ "optimizer", "macro", "pattern optimizer.macro(X_1:str, X_2:str, X_3:str, X_4:str):void ", "OPTmacro;", "" ] +[ "optimizer", "mask", "pattern optimizer.mask():str ", "OPTwrapper;", "" ] +[ "optimizer", "mask", "pattern optimizer.mask(X_1:str, X_2:str):str ", "OPTwrapper;", "" ] [ "optimizer", "matpack", "pattern optimizer.matpack():str ", "OPTwrapper;", "" ] [ "optimizer", "matpack", "pattern optimizer.matpack(X_1:str, X_2:str):str ", "OPTwrapper;", "" ] [ "optimizer", "mergetable", "pattern optimizer.mergetable():str ", "OPTwrapper;", "" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -23029,7 +23029,7 @@ stdout of test 'MAL-signatures` in direc [ "mapi", "stop", "command mapi.stop():void ", "SERVERstop;", "" ] [ "mapi", "suspend", "command mapi.suspend():void ", "SERVERsuspend;", "" ] [ "mapi", "trace", "command mapi.trace(X_1:int, X_2:int):void ", "SERVERtrace;", "" ] -[ "mask", "mask", "pattern mask.mask(X_1:any):bat[:any_1] ", "MSKmask;", "" ] +[ "mask", "mask", "pattern mask.mask(X_1:bat[:oid]):bat[:oid] ", "MSKmask;", "" ] [ "mask", "select", "command mask.select(X_1:bat[:any_1], X_2:any_1, X_3:any_1, X_4:bit, X_5:bit, X_6:bit):bat[:oid] ", "MSKselect1;", "" ] [ "mask", "select", "command mask.select(X_1:bat[:any_1], X_2:any_1, X_3:any_1, X_4:bit, X_5:bit, X_6:bit, X_7:bit):bat[:oid] ", "MSKselect1nil;", "" ] [ "mask", "select", "command mask.select(X_1:bat[:any_1], X_2:bat[:oid], X_3:any_1, X_4:any_1, X_5:bit, X_6:bit, X_7:bit):bat[:oid] ", "MSKselect2;", "" ] @@ -23037,7 +23037,7 @@ stdout of test 'MAL-signatures` in direc [ "mask", "selectNotNil", "command mask.selectNotNil(X_1:bat[:any_2]):bat[:any_2] ", "MSKselectNotNil;", "" ] [ "mask", "thetaselect", "command mask.thetaselect(X_1:bat[:any_1], X_2:any_1, X_3:str):bat[:oid] ", "MSKthetaselect1;", "" ] [ "mask", "thetaselect", "command mask.thetaselect(X_1:bat[:any_1], X_2:bat[:oid], X_3:any_1, X_4:str):bat[:oid] ", "MSKthetaselect2;", "" ] -[ "mask", "umask", "pattern mask.umask(X_1:any):bat[:any_1] ", "MSKumask;", "" ] +[ "mask", "umask", "pattern mask.umask(X_1:bat[:oid]):bat[:oid] ", "MSKumask;", "" ] [ "mat", "new", "pattern mat.new(X_1:bat[:any_2]...):bat[:any_2] ", "MATpack;", "" ] [ "mat", "pack", "pattern mat.pack(X_1:bat[:any_2]...):bat[:any_2] ", "MATpack;", "" ] [ "mat", "pack", "pattern mat.pack(X_1:any_2...):bat[:any_2] ", "MATpackValues;", "" ] @@ -23248,6 +23248,8 @@ stdout of test 'MAL-signatures` in direc [ "optimizer", "json", "pattern optimizer.json(X_1:str, X_2:str):str ", "OPTwrapper;", "" ] [ "optimizer", "macro", "pattern optimizer.macro(X_1:str, X_2:str):void ", "OPTmacro;", "" ] [ "optimizer", "macro", "pattern optimizer.macro(X_1:str, X_2:str, X_3:str, X_4:str):void ", "OPTmacro;", "" ] +[ "optimizer", "mask", "pattern optimizer.mask():str ", "OPTwrapper;", "" ] +[ "optimizer", "mask", "pattern optimizer.mask(X_1:str, X_2:str):str ", "OPTwrapper;", "" ] [ "optimizer", "matpack", "pattern optimizer.matpack():str ", "OPTwrapper;", "" ] [ "optimizer", "matpack", "pattern optimizer.matpack(X_1:str, X_2:str):str ", "OPTwrapper;", "" ] [ "optimizer", "mergetable", "pattern optimizer.mergetable():str ", "OPTwrapper;", "" ] 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 @@ -991,6 +991,7 @@ str OPTjitImplementation(Client cntxt, M str OPTjsonImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OPTmacro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str OPTmacroImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTmaskImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OPTmatpackImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OPTmergetableImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); @@ -1595,6 +1596,7 @@ stream *maleventstream; str manifoldRef; str mapiRef; str markRef; +str maskRef; str matRef; str maxRef; str max_no_nilRef; @@ -1870,6 +1872,7 @@ str transaction_rollbackRef; void trimMalVariables(MalBlkPtr mb, MalStkPtr stk); void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb); void typeChecker(Module scope, MalBlkPtr mb, InstrPtr p, int p_idx, int silent); +str umaskRef; str uniqueRef; str unlockRef; str unpackRef; 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 @@ -53,8 +53,8 @@ stdout of test 'opt_sql_append` in direc % .%1 # table_name % def # name % clob # type -% 580 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();" ] +% 597 # length +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.mask();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name @@ -63,7 +63,7 @@ stdout of test 'opt_sql_append` in direc function user.main():void; X_1:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';":str, "sequential_pipe":str, 21:int); X_4:int := sql.mvc(); - (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := sql.copy_from(0x7f92641ac1e0:ptr, "|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int); + (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := sql.copy_from(0x7fb42c1da100:ptr, "|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int); X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, X_26:bat[:int]); X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, X_27:bat[:int]); X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, X_28:bat[:int]); @@ -113,8 +113,9 @@ end user.main; % .%1 # table_name % def # name % clob # type -% 603 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.sql_append();optimizer.garbageCollector();" ] +% 620 # length +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.mask();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.sql_append();optimizer.garbageCollector();" ] +#rollback; #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name @@ -123,7 +124,7 @@ end user.main; function user.main():void; X_1:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';":str, "user_0":str, 21:int); X_4:int := sql.mvc(); - (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := sql.copy_from(0x7f92641ac1e0:ptr, "|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int); + (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := sql.copy_from(0x7fb42c1da100:ptr, "|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int); X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, X_26:bat[:int]); X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, X_27:bat[:int]); X_40:lng := aggr.count(X_28:bat[:int]); diff --git a/monetdb5/optimizer/opt_mask.c b/monetdb5/optimizer/opt_mask.c --- a/monetdb5/optimizer/opt_mask.c +++ b/monetdb5/optimizer/opt_mask.c @@ -15,8 +15,8 @@ str OPTmaskImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { - int i, k, limit, slimit; - InstrPtr p=0, q=0, *old= mb->stmt; + int i, j, k, limit, slimit; + InstrPtr p=0, q=0, r=0, *old= mb->stmt; int actions = 0; int *varused=0; char buf[256]; @@ -46,19 +46,34 @@ OPTmaskImplementation(Client cntxt, MalB p = old[i]; if( p == 0) continue; //left behind by others? + for(j=p->retc; j< p->argc; j++){ + k = getArg(p,j); + if(varused[k]) { + // we should actually postpone its reconstruction to JIT + r = newInstruction(mb, maskRef, umaskRef); + getArg(r,0) = k; + r= pushArgument(mb, r, varused[k]); + pushInstruction(mb,r); + varused[k] = 0; + } + } pushInstruction(mb, p); if ( getModuleId(p) == algebraRef && (getFunctionId(p) == selectRef || getFunctionId(p) == thetaselectRef)){ k= getArg(p,0); + setDestVar(p, newTmpVariable(mb, newBatType(TYPE_oid))); + setVarFixed(mb,getArg(p,0)); // setDestVar(p, newTmpVariable(mb, newBatType(TYPE_msk))); TODO - setDestVar(p, newTmpVariable(mb, newBatType(TYPE_oid))); - setModuleId(p, maskRef); + // setModuleId(p, maskRef); - q = newInstruction(mb, maskRef, umaskRef); - getArg(q,0) = k; + // Inject a dummy pair, just based on :oid for now and later to be switched to :msk + q = newInstruction(mb, maskRef, maskRef); + setDestVar(q, newTmpVariable(mb, newBatType(TYPE_oid))); + setVarFixed(mb,getArg(q,0)); q= pushArgument(mb, q, getArg(p,0)); pushInstruction(mb,q); - actions ++; + varused[k] = getArg(q,0); + actions++; } } diff --git a/sql/test/Tests/setoptimizer.stable.out b/sql/test/Tests/setoptimizer.stable.out --- a/sql/test/Tests/setoptimizer.stable.out +++ b/sql/test/Tests/setoptimizer.stable.out @@ -67,13 +67,13 @@ stdout of test 'setoptimizer` in directo % .%1, .%1, .%1 # table_name % name, def, status # name % clob, clob, clob # type -% 15, 641, 6 # length -[ "minimal_pipe", "optimizer.inline();optimizer.remap();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.garbageCollector();", "stable" ] -[ "default_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();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.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] -[ "oltp_pipe", "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.deadcode();optimizer.postfix();optimizer.oltp();optimizer.wlc();optimizer.garbageCollector();", "stable" ] -[ "volcano_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();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.volcano();optimizer.profiler();optimizer.candidates();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] -[ "no_mitosis_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();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.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] -[ "sequential_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] +% 15, 658, 6 # length +[ "minimal_pipe", "optimizer.inline();optimizer.remap();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.mask();optimizer.garbageCollector();", "stable" ] +[ "default_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();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.mask();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] +[ "oltp_pipe", "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.mask();optimizer.deadcode();optimizer.postfix();optimizer.oltp();optimizer.wlc();optimizer.garbageCollector();", "stable" ] +[ "volcano_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();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.volcano();optimizer.profiler();optimizer.candidates();optimizer.mask();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] +[ "no_mitosis_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();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.mask();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] +[ "sequential_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.deadcode();optimizer.aliases();optimizer.constants();optimizer.commonTerms();optimizer.projectionpath();optimizer.deadcode();optimizer.reorder();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();optimizer.mask();optimizer.deadcode();optimizer.postfix();optimizer.wlc();optimizer.garbageCollector();", "stable" ] # 02:57:35 > # 02:57:35 > "Done." _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list