Changeset: 6db31f60efeb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6db31f60efeb Modified Files: monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single monetdb5/optimizer/opt_pipes.c 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/mergetables/Tests/mergequery.stable.out sql/test/remote/Tests/partition_elim.stable.out Branch: Jul2015 Log Message:
apply the alias optimizer after the pushselect as the later introduces new aliases. Partial solution to bug 3361. diffs (truncated from 1175 to 300 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 @@ -56,7 +56,7 @@ Ready. % def # name % clob # type % 449 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name @@ -90,7 +90,7 @@ end user.s4_1; % def # name % clob # type % 472 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.sql_append();optimizer.garbageCollector();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.sql_append();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name diff --git a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single --- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single +++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.single @@ -56,7 +56,7 @@ Ready. % def # name % clob # type % 449 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name @@ -88,7 +88,7 @@ end user.s4_1; % def # name % clob # type % 472 # length -[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.sql_append();optimizer.garbageCollector();" ] +[ "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.sql_append();optimizer.garbageCollector();" ] #explain copy into ttt from '/tmp/xyz'; % .explain # table_name % mal # name 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 @@ -67,8 +67,8 @@ static struct PIPELINES { "optimizer.costModel();" "optimizer.coercions();" "optimizer.evaluate();" + "optimizer.pushselect();" "optimizer.aliases();" - "optimizer.pushselect();" "optimizer.mitosis();" "optimizer.mergetable();" "optimizer.deadcode();" diff --git a/sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out b/sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out --- a/sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out +++ b/sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out @@ -80,7 +80,7 @@ end user.s3_1; % 98 # length function user.s4_1{autoCommit=true}(A0:int):void; X_30:void := querylog.define("explain select * from test where value > 1;","default_pipe",57); -barrier X_91 := language.dataflow(); +barrier X_90 := language.dataflow(); X_14 := bat.new(nil:oid,nil:str); X_22 := bat.append(X_14,"sys.test"); X_17 := bat.new(nil:oid,nil:str); @@ -115,9 +115,9 @@ barrier X_91 := language.dataflow(); X_44 := algebra.thetasubselect(X_9,X_51,A0,">"); X_69 := sql.subdelta(X_63,X_51,X_59,X_66,X_44); X_72 := sql.projectdelta(X_69,X_54,X_59,X_60,X_9); - X_74 := mat.packIncrement(X_70,3); - X_75 := mat.packIncrement(X_74,X_71); - X_12 := mat.packIncrement(X_75,X_72); + X_73 := mat.packIncrement(X_70,3); + X_74 := mat.packIncrement(X_73,X_71); + X_12 := mat.packIncrement(X_74,X_72); language.pass(X_47); language.pass(X_52); language.pass(X_55); @@ -132,7 +132,7 @@ barrier X_91 := language.dataflow(); language.pass(X_59); language.pass(X_60); language.pass(X_9); -exit X_91; +exit X_90; sql.resultSet(X_22,X_24,X_25,X_27,X_29,X_12); end user.s4_1; #select * from test where value >= 12345678900; # value > INT_MAX @@ -147,7 +147,7 @@ end user.s4_1; % 99 # length function user.s5_1{autoCommit=true}(A0:int):void; X_30:void := querylog.define("explain select * from test where value >= 1;","default_pipe",57); -barrier X_91 := language.dataflow(); +barrier X_90 := language.dataflow(); X_14 := bat.new(nil:oid,nil:str); X_22 := bat.append(X_14,"sys.test"); X_17 := bat.new(nil:oid,nil:str); @@ -182,9 +182,9 @@ barrier X_91 := language.dataflow(); X_44 := algebra.thetasubselect(X_9,X_51,A0,">="); X_69 := sql.subdelta(X_63,X_51,X_59,X_66,X_44); X_72 := sql.projectdelta(X_69,X_54,X_59,X_60,X_9); - X_74 := mat.packIncrement(X_70,3); - X_75 := mat.packIncrement(X_74,X_71); - X_12 := mat.packIncrement(X_75,X_72); + X_73 := mat.packIncrement(X_70,3); + X_74 := mat.packIncrement(X_73,X_71); + X_12 := mat.packIncrement(X_74,X_72); language.pass(X_47); language.pass(X_52); language.pass(X_55); @@ -199,7 +199,7 @@ barrier X_91 := language.dataflow(); language.pass(X_59); language.pass(X_60); language.pass(X_9); -exit X_91; +exit X_90; sql.resultSet(X_22,X_24,X_25,X_27,X_29,X_12); end user.s5_1; #select * from test where value < 12345678900; # value > INT_MAX @@ -217,7 +217,7 @@ end user.s5_1; % 98 # length function user.s6_1{autoCommit=true}(A0:int):void; X_30:void := querylog.define("explain select * from test where value < 1;","default_pipe",57); -barrier X_91 := language.dataflow(); +barrier X_90 := language.dataflow(); X_14 := bat.new(nil:oid,nil:str); X_22 := bat.append(X_14,"sys.test"); X_17 := bat.new(nil:oid,nil:str); @@ -252,9 +252,9 @@ barrier X_91 := language.dataflow(); X_44 := algebra.thetasubselect(X_9,X_51,A0,"<"); X_69 := sql.subdelta(X_63,X_51,X_59,X_66,X_44); X_72 := sql.projectdelta(X_69,X_54,X_59,X_60,X_9); - X_74 := mat.packIncrement(X_70,3); - X_75 := mat.packIncrement(X_74,X_71); - X_12 := mat.packIncrement(X_75,X_72); + X_73 := mat.packIncrement(X_70,3); + X_74 := mat.packIncrement(X_73,X_71); + X_12 := mat.packIncrement(X_74,X_72); language.pass(X_47); language.pass(X_52); language.pass(X_55); @@ -269,7 +269,7 @@ barrier X_91 := language.dataflow(); language.pass(X_59); language.pass(X_60); language.pass(X_9); -exit X_91; +exit X_90; sql.resultSet(X_22,X_24,X_25,X_27,X_29,X_12); end user.s6_1; #select * from test where value <= 12345678900; # value > INT_MAX @@ -287,7 +287,7 @@ end user.s6_1; % 99 # length function user.s7_1{autoCommit=true}(A0:int):void; X_30:void := querylog.define("explain select * from test where value <= 1;","default_pipe",57); -barrier X_91 := language.dataflow(); +barrier X_90 := language.dataflow(); X_14 := bat.new(nil:oid,nil:str); X_22 := bat.append(X_14,"sys.test"); X_17 := bat.new(nil:oid,nil:str); @@ -322,9 +322,9 @@ barrier X_91 := language.dataflow(); X_44 := algebra.thetasubselect(X_9,X_51,A0,"<="); X_69 := sql.subdelta(X_63,X_51,X_59,X_66,X_44); X_72 := sql.projectdelta(X_69,X_54,X_59,X_60,X_9); - X_74 := mat.packIncrement(X_70,3); - X_75 := mat.packIncrement(X_74,X_71); - X_12 := mat.packIncrement(X_75,X_72); + X_73 := mat.packIncrement(X_70,3); + X_74 := mat.packIncrement(X_73,X_71); + X_12 := mat.packIncrement(X_74,X_72); language.pass(X_47); language.pass(X_52); language.pass(X_55); @@ -339,7 +339,7 @@ barrier X_91 := language.dataflow(); language.pass(X_59); language.pass(X_60); language.pass(X_9); -exit X_91; +exit X_90; sql.resultSet(X_22,X_24,X_25,X_27,X_29,X_12); end user.s7_1; #select * from test where value <> 12345678900; # value > INT_MAX @@ -357,7 +357,7 @@ end user.s7_1; % 99 # length function user.s8_1{autoCommit=true}(A0:int):void; X_29:void := querylog.define("explain select * from test where value <> 1;","default_pipe",57); -barrier X_90 := language.dataflow(); +barrier X_89 := language.dataflow(); X_13 := bat.new(nil:oid,nil:str); X_21 := bat.append(X_13,"sys.test"); X_16 := bat.new(nil:oid,nil:str); @@ -392,9 +392,9 @@ barrier X_90 := language.dataflow(); X_43 := algebra.subselect(X_9,X_50,A0,A0,true,true,true); X_68 := sql.subdelta(X_62,X_50,X_58,X_65,X_43); X_71 := sql.projectdelta(X_68,X_53,X_58,X_59,X_9); - X_73 := mat.packIncrement(X_69,3); - X_74 := mat.packIncrement(X_73,X_70); - X_11 := mat.packIncrement(X_74,X_71); + X_72 := mat.packIncrement(X_69,3); + X_73 := mat.packIncrement(X_72,X_70); + X_11 := mat.packIncrement(X_73,X_71); language.pass(X_46); language.pass(X_51); language.pass(X_54); @@ -409,7 +409,7 @@ barrier X_90 := language.dataflow(); language.pass(X_58); language.pass(X_59); language.pass(X_9); -exit X_90; +exit X_89; sql.resultSet(X_21,X_23,X_24,X_26,X_28,X_11); end user.s8_1; #drop table test; diff --git a/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out b/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out --- a/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out +++ b/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out @@ -37,15 +37,14 @@ Ready. % clob # type % 107 # length function user.s2_1(A0:int):void; - X_21:void := querylog.define("explain select count(*) from tmp where i = 20160222;","default_pipe",11); + X_20:void := querylog.define("explain select count(*) from tmp where i = 20160222;","default_pipe",10); X_2 := sql.mvc(); X_6:bat[:oid,:int] := sql.bind(X_2,"sys","tmp","i",0); - X_9 := X_6; X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","tmp"); - X_10 := algebra.subselect(X_9,X_3,A0,A0,true,false,false); - X_13 := algebra.leftfetchjoin(X_10,X_9); - X_14 := aggr.count(X_13); - sql.resultSet("sys.L1","L1","wrd",64,0,7,X_14); + X_9 := algebra.subselect(X_6,X_3,A0,A0,true,false,false); + X_12 := algebra.leftfetchjoin(X_9,X_6); + X_13 := aggr.count(X_12); + sql.resultSet("sys.L1","L1","wrd",64,0,7,X_13); end user.s2_1; # optimizer.mitosis() # optimizer.dataflow() @@ -55,16 +54,15 @@ end user.s2_1; % clob # type % 113 # length function user.s3_1(A0:str):void; - X_23:void := querylog.define("explain select count(*) from tmp where i = \\'20160222\\';","default_pipe",12); + X_22:void := querylog.define("explain select count(*) from tmp where i = \\'20160222\\';","default_pipe",11); X_2 := sql.mvc(); X_6:bat[:oid,:int] := sql.bind(X_2,"sys","tmp","i",0); - X_9 := X_6; X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","tmp"); - X_10 := calc.int(A0,8,0); - X_12 := algebra.subselect(X_9,X_3,X_10,X_10,true,false,false); - X_15 := algebra.leftfetchjoin(X_12,X_9); - X_16 := aggr.count(X_15); - sql.resultSet("sys.L1","L1","wrd",64,0,7,X_16); + X_9 := calc.int(A0,8,0); + X_11 := algebra.subselect(X_6,X_3,X_9,X_9,true,false,false); + X_14 := algebra.leftfetchjoin(X_11,X_6); + X_15 := aggr.count(X_14); + sql.resultSet("sys.L1","L1","wrd",64,0,7,X_15); end user.s3_1; # optimizer.mitosis() # optimizer.dataflow() @@ -74,16 +72,15 @@ end user.s3_1; % clob # type % 108 # length function user.s4_1(A0:lng):void; - X_23:void := querylog.define("explain select count(*) from tmp where i = 201602221;","default_pipe",12); + X_22:void := querylog.define("explain select count(*) from tmp where i = 201602221;","default_pipe",11); X_2 := sql.mvc(); X_6:bat[:oid,:int] := sql.bind(X_2,"sys","tmp","i",0); - X_9 := X_6; - X_10:bat[:oid,:lng] := batcalc.lng(0,X_9,10,0); + X_9:bat[:oid,:lng] := batcalc.lng(0,X_6,10,0); X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","tmp"); - X_12 := algebra.subselect(X_10,X_3,A0,A0,true,false,false); - X_15 := algebra.leftfetchjoin(X_12,X_9); - X_16 := aggr.count(X_15); - sql.resultSet("sys.L1","L1","wrd",64,0,7,X_16); + X_11 := algebra.subselect(X_9,X_3,A0,A0,true,false,false); + X_14 := algebra.leftfetchjoin(X_11,X_6); + X_15 := aggr.count(X_14); + sql.resultSet("sys.L1","L1","wrd",64,0,7,X_15); end user.s4_1; # optimizer.mitosis() # optimizer.dataflow() 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 @@ -66,7 +66,7 @@ Ready. % clob, clob, clob # type % 15, 470, 6 # length [ "minimal_pipe", "optimizer.inline();optimizer.remap();optimizer.deadcode();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();", "stable" ] -[ "default_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();", "stable" ] +[ "default_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();", "stable" ] [ "no_mitosis_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();", "stable" ] [ "sequential_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();", "stable" ] [ "recycler_pipe", "optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.recycler();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();", "stable" ] diff --git a/sql/test/Tests/setoptimizer.stable.out.Windows b/sql/test/Tests/setoptimizer.stable.out.Windows --- a/sql/test/Tests/setoptimizer.stable.out.Windows +++ b/sql/test/Tests/setoptimizer.stable.out.Windows @@ -66,7 +66,7 @@ Ready. % clob, clob, clob # type _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list