Changeset: 459795ba3ad2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=459795ba3ad2 Modified Files: monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows monetdb5/optimizer/opt_pipes.c sql/test/Tests/setoptimizer.test tools/mserver/mserver5.1.in Branch: default Log Message:
Run the first iteration of deadcode optimizer earlier in the MAL optimization phase. This benefits mitosis/mergetable optimization by reducing the number of instructions to be replicated diffs (280 lines): 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 @@ -10,7 +10,7 @@ % def # name % clob # type % 626 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name @@ -20,11 +20,11 @@ function user.main():void; querylog.define("explain copy into ttt from \\'/tmp/xyz\\';":str, "sequential_pipe":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x7f8a2c1d2180:ptr, "|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); - (X_86:int, X_85:ptr, X_90:ptr, X_93:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); - X_88:ptr := sql.append_exec(X_85:ptr, X_28:bat[:int]); - X_91:ptr := sql.append_exec(X_90:ptr, X_29:bat[:int]); - X_94:ptr := sql.append_exec(X_93:ptr, X_30:bat[:int]); - X_40:int := sql.append_finish(X_86:int, X_88:ptr, X_91:ptr, X_94:ptr); + (X_87:int, X_86:ptr, X_91:ptr, X_94:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); + X_89:ptr := sql.append_exec(X_86:ptr, X_28:bat[:int]); + X_92:ptr := sql.append_exec(X_91:ptr, X_29:bat[:int]); + X_95:ptr := sql.append_exec(X_94:ptr, X_30:bat[:int]); + X_40:int := sql.append_finish(X_87:int, X_89:ptr, X_92:ptr, X_95:ptr); X_42:lng := aggr.count(X_30:bat[:int]); sql.affectedRows(X_40:int, X_42:lng); end user.main; @@ -72,7 +72,7 @@ end user.main; % def # name % clob # type % 649 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] #rollback; #explain copy into ttt from '/tmp/xyz'; % .explain # table_name @@ -83,11 +83,11 @@ function user.main():void; querylog.define("explain copy into ttt from \\'/tmp/xyz\\';":str, "user_0":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x7f8a2c1d2180:ptr, "|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); - (X_87:int, X_86:ptr, X_91:ptr, X_94:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); - X_89:ptr := sql.append_exec(X_86:ptr, X_28:bat[:int]); - X_92:ptr := sql.append_exec(X_91:ptr, X_29:bat[:int]); - X_95:ptr := sql.append_exec(X_94:ptr, X_30:bat[:int]); - X_40:int := sql.append_finish(X_87:int, X_89:ptr, X_92:ptr, X_95:ptr); + (X_88:int, X_87:ptr, X_92:ptr, X_95:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); + X_90:ptr := sql.append_exec(X_87:ptr, X_28:bat[:int]); + X_93:ptr := sql.append_exec(X_92:ptr, X_29:bat[:int]); + X_96:ptr := sql.append_exec(X_95:ptr, X_30:bat[:int]); + X_40:int := sql.append_finish(X_88:int, X_90:ptr, X_93:ptr, X_96:ptr); X_42:lng := aggr.count(X_30:bat[:int]); sql.affectedRows(X_40:int, X_42:lng); end user.main; diff --git a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows --- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows +++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows @@ -11,7 +11,7 @@ % def # name % clob # type % 626 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] #explain copy into ttt from E'\\tmp/xyz'; % .explain # table_name % mal # name @@ -21,11 +21,11 @@ function user.main():void; querylog.define("explain copy into ttt from E\\'\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x0000025CF9E874C0:ptr, "|":str, "\n":str, nil:str, "null":str, "\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); - (X_86:int, X_85:ptr, X_90:ptr, X_93:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); - X_88:ptr := sql.append_exec(X_85:ptr, X_28:bat[:int]); - X_91:ptr := sql.append_exec(X_90:ptr, X_29:bat[:int]); - X_94:ptr := sql.append_exec(X_93:ptr, X_30:bat[:int]); - X_40:int := sql.append_finish(X_86:int, X_88:ptr, X_91:ptr, X_94:ptr); + (X_87:int, X_86:ptr, X_91:ptr, X_94:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); + X_89:ptr := sql.append_exec(X_86:ptr, X_28:bat[:int]); + X_92:ptr := sql.append_exec(X_91:ptr, X_29:bat[:int]); + X_95:ptr := sql.append_exec(X_94:ptr, X_30:bat[:int]); + X_40:int := sql.append_finish(X_87:int, X_89:ptr, X_92:ptr, X_95:ptr); X_42:lng := aggr.count(X_30:bat[:int]); sql.affectedRows(X_40:int, X_42:lng); end user.main; @@ -64,11 +64,11 @@ function user.main():void; querylog.define("explain copy into ttt from E\\'a:\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x0000025CF9E874C0:ptr, "|":str, "\n":str, nil:str, "null":str, "a:\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); - (X_86:int, X_85:ptr, X_90:ptr, X_93:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); - X_88:ptr := sql.append_exec(X_85:ptr, X_28:bat[:int]); - X_91:ptr := sql.append_exec(X_90:ptr, X_29:bat[:int]); - X_94:ptr := sql.append_exec(X_93:ptr, X_30:bat[:int]); - X_40:int := sql.append_finish(X_86:int, X_88:ptr, X_91:ptr, X_94:ptr); + (X_87:int, X_86:ptr, X_91:ptr, X_94:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); + X_89:ptr := sql.append_exec(X_86:ptr, X_28:bat[:int]); + X_92:ptr := sql.append_exec(X_91:ptr, X_29:bat[:int]); + X_95:ptr := sql.append_exec(X_94:ptr, X_30:bat[:int]); + X_40:int := sql.append_finish(X_87:int, X_89:ptr, X_92:ptr, X_95:ptr); X_42:lng := aggr.count(X_30:bat[:int]); sql.affectedRows(X_40:int, X_42:lng); end user.main; @@ -113,7 +113,7 @@ end user.main; % def # name % clob # type % 649 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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();" ] #rollback; #explain copy into ttt from E'\\tmp/xyz'; % .explain # table_name @@ -124,11 +124,11 @@ function user.main():void; querylog.define("explain copy into ttt from E\\'\\\\\\\\tmp/xyz\\';":str, "user_0":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x0000023F54B19930:ptr, "|":str, "\n":str, nil:str, "null":str, "\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); - (X_87:int, X_86:ptr, X_91:ptr, X_94:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); - X_89:ptr := sql.append_exec(X_86:ptr, X_28:bat[:int]); - X_92:ptr := sql.append_exec(X_91:ptr, X_29:bat[:int]); - X_95:ptr := sql.append_exec(X_94:ptr, X_30:bat[:int]); - X_40:int := sql.append_finish(X_87:int, X_89:ptr, X_92:ptr, X_95:ptr); + (X_88:int, X_87:ptr, X_92:ptr, X_95:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); + X_90:ptr := sql.append_exec(X_87:ptr, X_28:bat[:int]); + X_93:ptr := sql.append_exec(X_92:ptr, X_29:bat[:int]); + X_96:ptr := sql.append_exec(X_95:ptr, X_30:bat[:int]); + X_40:int := sql.append_finish(X_88:int, X_90:ptr, X_93:ptr, X_96:ptr); X_42:lng := aggr.count(X_30:bat[:int]); sql.affectedRows(X_40:int, X_42:lng); end user.main; @@ -168,11 +168,11 @@ function user.main():void; querylog.define("explain copy into ttt from \\'Z:/tmp/xyz\\';":str, "user_0":str, 22:int); X_4:int := sql.mvc(); (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := sql.copy_from(0x0000023F54B19930:ptr, "|":str, "\n":str, nil:str, "null":str, "Z:/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int); - (X_87:int, X_86:ptr, X_91:ptr, X_94:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); - X_89:ptr := sql.append_exec(X_86:ptr, X_28:bat[:int]); - X_92:ptr := sql.append_exec(X_91:ptr, X_29:bat[:int]); - X_95:ptr := sql.append_exec(X_94:ptr, X_30:bat[:int]); - X_40:int := sql.append_finish(X_87:int, X_89:ptr, X_92:ptr, X_95:ptr); + (X_88:int, X_87:ptr, X_92:ptr, X_95:ptr) := sql.append_prep(X_4:int, "sys":str, "ttt":str, "averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str, "b":str, "c":str); + X_90:ptr := sql.append_exec(X_87:ptr, X_28:bat[:int]); + X_93:ptr := sql.append_exec(X_92:ptr, X_29:bat[:int]); + X_96:ptr := sql.append_exec(X_95:ptr, X_30:bat[:int]); + X_40:int := sql.append_finish(X_88:int, X_90:ptr, X_93:ptr, X_96:ptr); X_42:lng := aggr.count(X_30:bat[:int]); sql.affectedRows(X_40:int, X_42:lng); end user.main; 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 @@ -70,13 +70,13 @@ static struct PIPELINES { "optimizer.aliases();" "optimizer.evaluate();" "optimizer.emptybind();" + "optimizer.deadcode();" /* Feb2021 update, I pushed deadcode optimizer earlier in the pipeline so it runs before mitosis, thus removing less instructions */ "optimizer.pushselect();" "optimizer.aliases();" "optimizer.mitosis();" "optimizer.mergetable();" "optimizer.bincopyfrom();" "optimizer.parappend();" - "optimizer.deadcode();" "optimizer.aliases();" "optimizer.constants();" "optimizer.commonTerms();" @@ -108,13 +108,13 @@ static struct PIPELINES { "optimizer.coercions();" "optimizer.evaluate();" "optimizer.emptybind();" + "optimizer.deadcode();" /* Feb2021 update, I pushed deadcode optimizer earlier in the pipeline so it runs before mitosis, thus removing less instructions */ "optimizer.pushselect();" "optimizer.aliases();" "optimizer.mitosis();" "optimizer.mergetable();" "optimizer.bincopyfrom();" "optimizer.parappend();" - "optimizer.deadcode();" "optimizer.aliases();" "optimizer.constants();" "optimizer.commonTerms();" @@ -146,13 +146,13 @@ static struct PIPELINES { "optimizer.aliases();" "optimizer.evaluate();" "optimizer.emptybind();" + "optimizer.deadcode();" /* Feb2021 update, I pushed deadcode optimizer earlier in the pipeline so it runs before mitosis, thus removing less instructions */ "optimizer.pushselect();" "optimizer.aliases();" "optimizer.mitosis();" "optimizer.mergetable();" "optimizer.bincopyfrom();" "optimizer.parappend();" - "optimizer.deadcode();" "optimizer.aliases();" "optimizer.constants();" "optimizer.commonTerms();" @@ -191,12 +191,12 @@ static struct PIPELINES { "optimizer.aliases();" "optimizer.evaluate();" "optimizer.emptybind();" + "optimizer.deadcode();" /* Feb2021 update, I pushed deadcode optimizer earlier in the pipeline so it runs before mitosis, thus removing less instructions */ "optimizer.pushselect();" "optimizer.aliases();" "optimizer.mergetable();" "optimizer.bincopyfrom();" "optimizer.parappend();" - "optimizer.deadcode();" "optimizer.aliases();" "optimizer.constants();" "optimizer.commonTerms();" @@ -234,12 +234,12 @@ static struct PIPELINES { "optimizer.aliases();" "optimizer.evaluate();" "optimizer.emptybind();" + "optimizer.deadcode();" /* Feb2021 update, I pushed deadcode optimizer earlier in the pipeline so it runs before mitosis, thus removing less instructions */ "optimizer.pushselect();" "optimizer.aliases();" "optimizer.mergetable();" "optimizer.bincopyfrom();" "optimizer.parappend();" - "optimizer.deadcode();" "optimizer.aliases();" "optimizer.constants();" "optimizer.commonTerms();" diff --git a/sql/test/Tests/setoptimizer.test b/sql/test/Tests/setoptimizer.test --- a/sql/test/Tests/setoptimizer.test +++ b/sql/test/Tests/setoptimizer.test @@ -29,21 +29,21 @@ query TTT rowsort select * from optimizers() ---- 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.bincopyfrom();optimizer.parappend();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(); +optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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 minimal_pipe optimizer.inline();optimizer.remap();optimizer.bincopyfrom();optimizer.parappend();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.profiler();optimizer.candidates();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.bincopyfrom();optimizer.parappend();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(); +optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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.bincopyfrom();optimizer.parappend();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(); +optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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 sequential_pipe -optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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(); +optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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 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.bincopyfrom();optimizer.parappend();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(); +optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.aliases();optimizer.evaluate();optimizer.emptybind();optimizer.deadcode();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.bincopyfrom();optimizer.parappend();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 diff --git a/tools/mserver/mserver5.1.in b/tools/mserver/mserver5.1.in --- a/tools/mserver/mserver5.1.in +++ b/tools/mserver/mserver5.1.in @@ -368,7 +368,7 @@ minimal_pipe=inline,remap,deadcode,multi The default pipeline contains the mitosis-mergetable-reorder optimizers, aimed at large tables and improved access locality. .\" this documentation must be kept in sync with the respective code in monetdb5/optimizer/opt_pipes.c -default_pipe=inline,remap,costModel,coercions,aliases,evaluate,emptybind,pushselect,aliases,mitosis,mergetable,deadcode,aliases,constants,commonTerms,projectionpath,deadcode,reorder,matpack,dataflow,querylog,multiplex,generator,profiler,candidates,postfix,deadcode,wlc,garbageCollector +default_pipe=inline,remap,costModel,coercions,aliases,evaluate,emptybind,deadcode,pushselect,aliases,mitosis,mergetable,aliases,constants,commonTerms,projectionpath,deadcode,reorder,matpack,dataflow,querylog,multiplex,generator,profiler,candidates,postfix,deadcode,wlc,garbageCollector .TP .B no_mitosis_pipe The no_mitosis pipeline is identical to the default pipeline, except @@ -377,7 +377,7 @@ It is used mainly to make some tests wor check/debug whether "unexpected" problems are related to mitosis (and/or mergetable). .\" this documentation must be kept in sync with the respective code in monetdb5/optimizer/opt_pipes.c -no_mitosis_pipe=inline,remap,costModel,coercions,aliases,evaluate,emptybind,pushselect,aliases,mergetable,deadcode,aliases,constants,commonTerms,projectionpath,deadcode,reorder,matpack,dataflow,querylog,multiplex,generator,profiler,candidates,postfix,deadcode,wlc,garbageCollector +no_mitosis_pipe=inline,remap,costModel,coercions,aliases,evaluate,emptybind,deadcode,pushselect,aliases,mergetable,aliases,constants,commonTerms,projectionpath,deadcode,reorder,matpack,dataflow,querylog,multiplex,generator,profiler,candidates,postfix,deadcode,wlc,garbageCollector .TP .B sequential_pipe The sequential pipeline is identical to the default pipeline, except @@ -385,7 +385,7 @@ that optimizers mitosis & dataflow are o It is use mainly to make some tests work deterministically, i.e., avoid ambigious output, by avoiding parallelism. .\" this documentation must be kept in sync with the respective code in monetdb5/optimizer/opt_pipes.c -sequential_pipe=inline,remap,costModel,coercions,aliases,evaluate,emptybind,pushselect,aliases,mergetable,deadcode,aliases,constants,commonTerms,projectionpath,deadcode,reorder,matpack,querylog,multiplex,generator,profiler,candidates,postfix,deadcode,wlc,garbageCollector +sequential_pipe=inline,remap,costModel,coercions,aliases,evaluate,emptybind,deadcode,pushselect,aliases,mergetable,aliases,constants,commonTerms,projectionpath,deadcode,reorder,matpack,querylog,multiplex,generator,profiler,candidates,postfix,deadcode,wlc,garbageCollector .RE .TP .B embedded_py _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list