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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list