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

Reply via email to