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

Reply via email to