Changeset: 041d7927d2e1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=041d7927d2e1
Modified Files:
        sql/benchmarks/tpch/Tests/01-explain.stable.out
        sql/benchmarks/tpch/Tests/01-plan.stable.out
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-plan.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/08-plan.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/21-explain.stable.out
Branch: default
Log Message:

approved output. Plan changes because of stricter groupby/select expression 
ordering. Explains changed because of plan and/or new topn implementation.


diffs (truncated from 1120 to 300 lines):

diff --git a/sql/benchmarks/tpch/Tests/01-explain.stable.out 
b/sql/benchmarks/tpch/Tests/01-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/01-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/01-explain.stable.out
@@ -62,18 +62,18 @@ function user.s2_1{autoCommit=true}(A0:b
     X_17 := sql.bind(X_7,"sys","lineitem","l_shipdate",1);
     X_186 := algebra.thetasubselect(X_17,X_8,X_19,"<=");
     X_20 := sql.subdelta(X_184,X_8,X_14,X_185,X_186);
-    X_22 := sql.bind(X_7,"sys","lineitem","l_returnflag",0);
-    (X_24,r1_28) := sql.bind(X_7,"sys","lineitem","l_returnflag",2);
-    X_26 := sql.bind(X_7,"sys","lineitem","l_returnflag",1);
+    X_22 := sql.bind(X_7,"sys","lineitem","l_linestatus",0);
+    (X_24,r1_28) := sql.bind(X_7,"sys","lineitem","l_linestatus",2);
+    X_26 := sql.bind(X_7,"sys","lineitem","l_linestatus",1);
     X_27 := sql.projectdelta(X_20,X_22,X_24,r1_28,X_26);
-    X_28 := sql.bind(X_7,"sys","lineitem","l_linestatus",0);
-    (X_30,r1_36) := sql.bind(X_7,"sys","lineitem","l_linestatus",2);
-    X_32 := sql.bind(X_7,"sys","lineitem","l_linestatus",1);
+    X_28 := sql.bind(X_7,"sys","lineitem","l_returnflag",0);
+    (X_30,r1_36) := sql.bind(X_7,"sys","lineitem","l_returnflag",2);
+    X_32 := sql.bind(X_7,"sys","lineitem","l_returnflag",1);
     X_33 := sql.projectdelta(X_20,X_28,X_30,r1_36,X_32);
     (X_34,r1_42,r2_42) := group.subgroup(X_33);
     (X_37,r1_45,r2_45) := group.subgroupdone(X_27,X_34);
-    X_40 := algebra.leftfetchjoin(r1_45,X_33);
-    X_41 := algebra.leftfetchjoin(r1_45,X_27);
+    X_40 := algebra.leftfetchjoin(r1_45,X_27);
+    X_41 := algebra.leftfetchjoin(r1_45,X_33);
     X_51 := sql.bind(X_7,"sys","lineitem","l_quantity",0);
     (X_56,r1_64) := sql.bind(X_7,"sys","lineitem","l_quantity",2);
     X_59 := sql.bind(X_7,"sys","lineitem","l_quantity",1);
diff --git a/sql/benchmarks/tpch/Tests/01-plan.stable.out 
b/sql/benchmarks/tpch/Tests/01-plan.stable.out
--- a/sql/benchmarks/tpch/Tests/01-plan.stable.out
+++ b/sql/benchmarks/tpch/Tests/01-plan.stable.out
@@ -55,7 +55,7 @@ project (
 | | select (
 | | | table(sys.lineitem) [ lineitem.l_quantity NOT NULL, 
lineitem.l_extendedprice NOT NULL, lineitem.l_discount NOT NULL, lineitem.l_tax 
NOT NULL, lineitem.l_returnflag NOT NULL, lineitem.l_linestatus NOT NULL, 
lineitem.l_shipdate NOT NULL ] COUNT 
 | | ) [ lineitem.l_shipdate NOT NULL <= sys.sql_sub(date "1998-12-01", 
sec_interval(4) "7776000000") ]
-| ) [ lineitem.l_linestatus NOT NULL, lineitem.l_returnflag NOT NULL ] [ 
lineitem.l_returnflag NOT NULL, lineitem.l_linestatus NOT NULL, sys.sum no nil 
(lineitem.l_quantity NOT NULL) NOT NULL as L1.L1, sys.sum no nil 
(lineitem.l_extendedprice NOT NULL) NOT NULL as L2.L2, sys.sum no nil 
(sys.sql_mul(lineitem.l_extendedprice NOT NULL, 
sys.sql_sub(decimal(15,2)[tinyint "1"], lineitem.l_discount NOT NULL))) as 
L3.L3, sys.sum no nil (sys.sql_mul(sys.sql_mul(lineitem.l_extendedprice NOT 
NULL, sys.sql_sub(decimal(15,2)[tinyint "1"], lineitem.l_discount NOT NULL)), 
sys.sql_add(decimal(15,2)[tinyint "1"], lineitem.l_tax NOT NULL))) as L4.L4, 
sys.avg no nil (double[lineitem.l_quantity NOT NULL] as lineitem.l_quantity) as 
L5.L5, sys.avg no nil (double[lineitem.l_extendedprice NOT NULL] as 
lineitem.l_extendedprice) as L6.L6, sys.avg no nil (double[lineitem.l_discount 
NOT NULL] as lineitem.l_discount) as L7.L7, sys.count() NOT NULL as L10.L10 ]
+| ) [ lineitem.l_returnflag NOT NULL, lineitem.l_linestatus NOT NULL ] [ 
lineitem.l_returnflag NOT NULL, lineitem.l_linestatus NOT NULL, sys.sum no nil 
(lineitem.l_quantity NOT NULL) NOT NULL as L1.L1, sys.sum no nil 
(lineitem.l_extendedprice NOT NULL) NOT NULL as L2.L2, sys.sum no nil 
(sys.sql_mul(lineitem.l_extendedprice NOT NULL, 
sys.sql_sub(decimal(15,2)[tinyint "1"], lineitem.l_discount NOT NULL))) as 
L3.L3, sys.sum no nil (sys.sql_mul(sys.sql_mul(lineitem.l_extendedprice NOT 
NULL, sys.sql_sub(decimal(15,2)[tinyint "1"], lineitem.l_discount NOT NULL)), 
sys.sql_add(decimal(15,2)[tinyint "1"], lineitem.l_tax NOT NULL))) as L4.L4, 
sys.avg no nil (double[lineitem.l_quantity NOT NULL] as lineitem.l_quantity) as 
L5.L5, sys.avg no nil (double[lineitem.l_extendedprice NOT NULL] as 
lineitem.l_extendedprice) as L6.L6, sys.avg no nil (double[lineitem.l_discount 
NOT NULL] as lineitem.l_discount) as L7.L7, sys.count() NOT NULL as L10.L10 ]
 ) [ lineitem.l_returnflag NOT NULL, lineitem.l_linestatus NOT NULL, L1 NOT 
NULL as L1.sum_qty, L2 NOT NULL as L2.sum_base_price, L3 as L3.sum_disc_price, 
L4 as L4.sum_charge, L5 as L5.avg_qty, L6 as L6.avg_price, L7 as L7.avg_disc, 
L10 NOT NULL as L10.count_order ] [ lineitem.l_returnflag ASC NOT NULL, 
lineitem.l_linestatus ASC NOT NULL ]
 
 # 22:46:28 >  
diff --git a/sql/benchmarks/tpch/Tests/02-explain.stable.out 
b/sql/benchmarks/tpch/Tests/02-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/02-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/02-explain.stable.out
@@ -74,12 +74,12 @@ function user.s2_1{autoCommit=true}(A0:i
     X_18 := sql.projectdelta(X_7,X_10,X_13,r1_13,X_16);
     X_21 := sql.bind(X_6,"sys","region","r_name",0);
     X_19:bat[:oid,:oid]  := sql.tid(X_6,"sys","region");
-    X_326 := algebra.subselect(X_21,X_19,A3,A3,true,true,false);
+    X_336 := algebra.subselect(X_21,X_19,A3,A3,true,true,false);
     (X_23,r1_24) := sql.bind(X_6,"sys","region","r_name",2);
-    X_327 := algebra.subselect(r1_24,A3,A3,true,true,false);
+    X_337 := algebra.subselect(r1_24,A3,A3,true,true,false);
     X_25 := sql.bind(X_6,"sys","region","r_name",1);
-    X_328 := algebra.subselect(X_25,X_19,A3,A3,true,true,false);
-    X_26 := sql.subdelta(X_326,X_19,X_23,X_327,X_328);
+    X_338 := algebra.subselect(X_25,X_19,A3,A3,true,true,false);
+    X_26 := sql.subdelta(X_336,X_19,X_23,X_337,X_338);
     X_28 := X_26;
     (X_29,r1_33) := algebra.join(X_18,X_28);
     X_31 := algebra.leftfetchjoin(X_29,X_7);
@@ -108,18 +108,18 @@ function user.s2_1{autoCommit=true}(A0:i
     X_73 := sql.bind(X_6,"sys","part","p_type",0);
     X_79 := sql.bind(X_6,"sys","part","p_size",0);
     X_71:bat[:oid,:oid]  := sql.tid(X_6,"sys","part");
-    X_329 := algebra.subselect(X_79,X_71,A0,A0,true,true,false);
+    X_339 := algebra.subselect(X_79,X_71,A0,A0,true,true,false);
     (X_82,r1_95) := sql.bind(X_6,"sys","part","p_size",2);
-    X_330 := algebra.subselect(r1_95,A0,A0,true,true,false);
+    X_340 := algebra.subselect(r1_95,A0,A0,true,true,false);
     X_85 := sql.bind(X_6,"sys","part","p_size",1);
-    X_331 := algebra.subselect(X_85,X_71,A0,A0,true,true,false);
-    X_87 := sql.subdelta(X_329,X_71,X_82,X_330,X_331);
-    X_332 := algebra.likesubselect(X_73,X_87,A1,"",false);
+    X_341 := algebra.subselect(X_85,X_71,A0,A0,true,true,false);
+    X_87 := sql.subdelta(X_339,X_71,X_82,X_340,X_341);
+    X_342 := algebra.likesubselect(X_73,X_87,A1,"",false);
     (X_75,r1_84) := sql.bind(X_6,"sys","part","p_type",2);
-    X_333 := algebra.likesubselect(r1_84,A1,"",false);
+    X_343 := algebra.likesubselect(r1_84,A1,"",false);
     X_77 := sql.bind(X_6,"sys","part","p_type",1);
-    X_334 := algebra.likesubselect(X_77,X_87,A1,"",false);
-    X_90 := sql.subdelta(X_332,X_87,X_75,X_333,X_334);
+    X_344 := algebra.likesubselect(X_77,X_87,A1,"",false);
+    X_90 := sql.subdelta(X_342,X_87,X_75,X_343,X_344);
     X_91 := X_90;
     (X_92,r1_108) := algebra.join(X_70,X_91);
     X_95 := algebra.leftfetchjoin(X_92,X_54);
@@ -134,101 +134,101 @@ function user.s2_1{autoCommit=true}(A0:i
     X_112 := algebra.leftfetchjoin(r1_134,X_111);
     X_116 := sql.bind(X_6,"sys","region","r_name",0);
     X_113:bat[:oid,:oid]  := sql.tid(X_6,"sys","region");
-    X_335 := algebra.subselect(X_116,X_113,A2,A2,true,true,false);
+    X_345 := algebra.subselect(X_116,X_113,A2,A2,true,true,false);
     (X_118,r1_152) := sql.bind(X_6,"sys","region","r_name",2);
-    X_336 := algebra.subselect(r1_152,A2,A2,true,true,false);
+    X_346 := algebra.subselect(r1_152,A2,A2,true,true,false);
     X_120 := sql.bind(X_6,"sys","region","r_name",1);
-    X_337 := algebra.subselect(X_120,X_113,A2,A2,true,true,false);
-    X_121 := sql.subdelta(X_335,X_113,X_118,X_336,X_337);
+    X_347 := algebra.subselect(X_120,X_113,A2,A2,true,true,false);
+    X_121 := sql.subdelta(X_345,X_113,X_118,X_346,X_347);
     X_124 := X_121;
     (X_125,r1_162) := algebra.join(X_112,X_124);
-    X_338 := algebra.leftfetchjoin(X_125,X_101);
+    X_348 := algebra.leftfetchjoin(X_125,X_101);
     X_127 := sql.bind(X_6,"sys","part","p_partkey",0);
     (X_130,r1_167) := sql.bind(X_6,"sys","part","p_partkey",2);
     X_132 := sql.bind(X_6,"sys","part","p_partkey",1);
     X_133 := sql.projectdelta(X_90,X_127,X_130,r1_167,X_132);
-    X_134:bat[:oid,:int]  := 
algebra.leftfetchjoinPath(X_338,X_96,r1_108,X_133);
+    X_134:bat[:oid,:int]  := 
algebra.leftfetchjoinPath(X_348,X_96,r1_108,X_133);
     (X_135,r1_177) := algebra.join(X_63,X_134);
     X_137:bat[:oid,:oid]  := batcalc.identity(X_134);
     X_138 := algebra.leftfetchjoin(r1_177,X_137);
     (X_139,r1_183,r2_183) := group.subgroupdone(X_138);
-    X_339 := algebra.leftfetchjoin(r1_183,r1_177);
+    X_349 := algebra.leftfetchjoin(r1_183,r1_177);
     X_142 := sql.bind(X_6,"sys","partsupp","ps_supplycost",0);
     (X_147,r1_191) := sql.bind(X_6,"sys","partsupp","ps_supplycost",2);
     X_150 := sql.bind(X_6,"sys","partsupp","ps_supplycost",1);
     X_152 := sql.projectdelta(X_44,X_142,X_147,r1_191,X_150);
     X_154:bat[:oid,:lng]  := algebra.leftfetchjoinPath(X_135,r1_61,X_152);
     X_155:bat[:oid,:lng]  := aggr.submin(X_154,X_139,r1_183,true);
-    X_153:bat[:oid,:lng]  := 
algebra.leftfetchjoinPath(X_339,X_125,X_101,X_96,X_92,X_152);
+    X_153:bat[:oid,:lng]  := 
algebra.leftfetchjoinPath(X_349,X_125,X_101,X_96,X_92,X_152);
     X_157:bat[:oid,:bit]  := batcalc.==(X_153,X_155);
     X_158 := algebra.subselect(X_157,true,true,true,true,false);
-    X_340 := algebra.leftfetchjoin(X_158,r1_183);
-    X_160 := sql.bind(X_6,"sys","supplier","s_acctbal",0);
-    (X_165,r1_224) := sql.bind(X_6,"sys","supplier","s_acctbal",2);
-    X_168 := sql.bind(X_6,"sys","supplier","s_acctbal",1);
-    X_170 := sql.projectdelta(X_32,X_160,X_165,r1_224,X_168);
-    X_171:bat[:oid,:lng]  := 
algebra.leftfetchjoinPath(X_340,r1_177,X_125,X_101,r1_122,X_170);
-    X_172 := pqueue.utopn_min(X_171,100:wrd);
-    X_173 := bat.mirror(X_172);
-    X_174 := sql.bind(X_6,"sys","nation","n_name",0);
-    (X_177,r1_247) := sql.bind(X_6,"sys","nation","n_name",2);
-    X_179 := sql.bind(X_6,"sys","nation","n_name",1);
-    X_180 := sql.projectdelta(X_99,X_174,X_177,r1_247,X_179);
-    X_181:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_340,r1_177,X_125,r1_134,X_180);
-    X_182 := algebra.leftjoin(X_173,X_181);
-    X_183 := pqueue.utopn_max(X_172,X_182,100:wrd);
-    X_184 := bat.mirror(X_183);
-    X_185 := sql.bind(X_6,"sys","supplier","s_name",0);
-    (X_190,r1_267) := sql.bind(X_6,"sys","supplier","s_name",2);
-    X_193 := sql.bind(X_6,"sys","supplier","s_name",1);
-    X_195 := sql.projectdelta(X_32,X_185,X_190,r1_267,X_193);
-    X_196:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_340,r1_177,X_125,X_101,r1_122,X_195);
-    X_197 := algebra.leftjoin(X_184,X_196);
-    X_199 := pqueue.utopn_max(X_183,X_197,100:wrd);
-    X_200 := bat.mirror(X_199);
-    X_201:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_340,r1_177,X_134);
-    X_202 := algebra.leftjoin(X_200,X_201);
-    X_203 := pqueue.topn_max(X_199,X_202,100:wrd);
-    X_205 := algebra.markT(X_203,0@0);
-    X_206 := bat.reverse(X_205);
-    X_213 := sql.bind(X_6,"sys","part","p_mfgr",0);
-    (X_218,r1_316) := sql.bind(X_6,"sys","part","p_mfgr",2);
-    X_221 := sql.bind(X_6,"sys","part","p_mfgr",1);
-    X_223 := sql.projectdelta(X_90,X_213,X_218,r1_316,X_221);
-    X_207 := algebra.leftfetchjoin(X_206,X_171);
-    X_208 := algebra.subslice(X_207,0:wrd,99:wrd);
-    X_341 := algebra.leftfetchjoin(X_208,X_206);
-    X_224:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_341,X_158,r1_183,r1_177,X_125,X_101,X_96,r1_108,X_223);
-    X_225 := sql.bind(X_6,"sys","supplier","s_address",0);
-    (X_228,r1_336) := sql.bind(X_6,"sys","supplier","s_address",2);
-    X_230 := sql.bind(X_6,"sys","supplier","s_address",1);
-    X_231 := sql.projectdelta(X_32,X_225,X_228,r1_336,X_230);
-    X_232:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_341,X_158,r1_183,r1_177,X_125,X_101,r1_122,X_231);
-    X_233 := sql.bind(X_6,"sys","supplier","s_phone",0);
-    (X_237,r1_353) := sql.bind(X_6,"sys","supplier","s_phone",2);
-    X_240 := sql.bind(X_6,"sys","supplier","s_phone",1);
-    X_242 := sql.projectdelta(X_32,X_233,X_237,r1_353,X_240);
-    X_243:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_341,X_158,r1_183,r1_177,X_125,X_101,r1_122,X_242);
-    X_244 := sql.bind(X_6,"sys","supplier","s_comment",0);
-    (X_247,r1_371) := sql.bind(X_6,"sys","supplier","s_comment",2);
-    X_249 := sql.bind(X_6,"sys","supplier","s_comment",1);
-    X_250 := sql.projectdelta(X_32,X_244,X_247,r1_371,X_249);
-    X_251:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_341,X_158,r1_183,r1_177,X_125,X_101,r1_122,X_250);
-    X_209 := algebra.leftfetchjoin(X_208,X_207);
-    X_212:bat[:oid,:int]  := algebra.leftfetchjoin(X_341,X_201);
-    X_211:bat[:oid,:str]  := algebra.leftfetchjoin(X_341,X_181);
-    X_210:bat[:oid,:str]  := algebra.leftfetchjoin(X_341,X_196);
-    X_252 := sql.resultSet(8,1,X_209);
-    sql.rsColumn(X_252,"sys.supplier","s_acctbal","decimal",15,2,X_209);
-    sql.rsColumn(X_252,"sys.supplier","s_name","varchar",25,0,X_210);
-    sql.rsColumn(X_252,"sys.nation","n_name","varchar",25,0,X_211);
-    sql.rsColumn(X_252,"sys.part","p_partkey","int",32,0,X_212);
-    sql.rsColumn(X_252,"sys.part","p_mfgr","varchar",25,0,X_224);
-    sql.rsColumn(X_252,"sys.supplier","s_address","varchar",40,0,X_232);
-    sql.rsColumn(X_252,"sys.supplier","s_phone","varchar",15,0,X_243);
-    sql.rsColumn(X_252,"sys.supplier","s_comment","varchar",101,0,X_251);
-    X_283 := io.stdout();
-    sql.exportResult(X_283,X_252);
+    X_350 := algebra.leftfetchjoin(X_158,r1_183);
+    r1_285:bat[:oid,:int]  := algebra.leftfetchjoinPath(X_350,r1_177,X_134);
+    X_161 := sql.bind(X_6,"sys","supplier","s_name",0);
+    (X_166,r1_227) := sql.bind(X_6,"sys","supplier","s_name",2);
+    X_169 := sql.bind(X_6,"sys","supplier","s_name",1);
+    X_171 := sql.projectdelta(X_32,X_161,X_166,r1_227,X_169);
+    X_172:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_350,r1_177,X_125,X_101,r1_122,X_171);
+    X_173 := sql.bind(X_6,"sys","nation","n_name",0);
+    (X_176,r1_243) := sql.bind(X_6,"sys","nation","n_name",2);
+    X_178 := sql.bind(X_6,"sys","nation","n_name",1);
+    X_179 := sql.projectdelta(X_99,X_173,X_176,r1_243,X_178);
+    X_180:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_350,r1_177,X_125,r1_134,X_179);
+    X_181 := sql.bind(X_6,"sys","supplier","s_acctbal",0);
+    (X_183,r1_255) := sql.bind(X_6,"sys","supplier","s_acctbal",2);
+    X_187 := sql.bind(X_6,"sys","supplier","s_acctbal",1);
+    X_188 := sql.projectdelta(X_32,X_181,X_183,r1_255,X_187);
+    X_189:bat[:oid,:lng]  := 
algebra.leftfetchjoinPath(X_350,r1_177,X_125,X_101,r1_122,X_188);
+    (X_190,r1_273) := pqueue.topn_min(X_189,100:wrd);
+    (X_192,r1_277) := pqueue.topn_max(X_180,X_190,r1_273,100:wrd);
+    (X_194,r1_281) := pqueue.topn_max(X_172,X_192,r1_277,100:wrd);
+    X_196 := pqueue.topn_max(r1_285,X_194,r1_281,100:wrd);
+    X_223 := sql.bind(X_6,"sys","part","p_mfgr",0);
+    (X_228,r1_325) := sql.bind(X_6,"sys","part","p_mfgr",2);
+    X_231 := sql.bind(X_6,"sys","part","p_mfgr",1);
+    X_232 := sql.projectdelta(X_90,X_223,X_228,r1_325,X_231);
+    X_197 := algebra.leftfetchjoin(X_196,r1_285);
+    X_198 := algebra.leftfetchjoin(X_196,X_172);
+    X_199 := algebra.leftfetchjoin(X_196,X_180);
+    X_200 := algebra.leftfetchjoin(X_196,X_189);
+    (X_201,r1_290,r2_290) := algebra.subsort(X_200,true,false);
+    (X_206,r1_295,r2_295) := algebra.subsort(X_199,r1_290,r2_290,false,false);
+    (X_209,r1_298,r2_298) := algebra.subsort(X_198,r1_295,r2_295,false,false);
+    (X_212,r1_301,r2_301) := algebra.subsort(X_197,r1_298,r2_298,false,false);
+    X_215 := algebra.leftfetchjoin(r1_301,X_200);
+    X_218 := algebra.subslice(X_215,0:wrd,99:wrd);
+    X_351 := algebra.leftfetchjoin(X_218,r1_301);
+    X_233:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_351,X_196,X_158,r1_183,r1_177,X_125,X_101,X_96,r1_108,X_232);
+    X_234 := sql.bind(X_6,"sys","supplier","s_address",0);
+    (X_237,r1_345) := sql.bind(X_6,"sys","supplier","s_address",2);
+    X_239 := sql.bind(X_6,"sys","supplier","s_address",1);
+    X_241 := sql.projectdelta(X_32,X_234,X_237,r1_345,X_239);
+    X_242:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_351,X_196,X_158,r1_183,r1_177,X_125,X_101,r1_122,X_241);
+    X_243 := sql.bind(X_6,"sys","supplier","s_phone",0);
+    (X_247,r1_364) := sql.bind(X_6,"sys","supplier","s_phone",2);
+    X_250 := sql.bind(X_6,"sys","supplier","s_phone",1);
+    X_251 := sql.projectdelta(X_32,X_243,X_247,r1_364,X_250);
+    X_252:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_351,X_196,X_158,r1_183,r1_177,X_125,X_101,r1_122,X_251);
+    X_253 := sql.bind(X_6,"sys","supplier","s_comment",0);
+    (X_256,r1_382) := sql.bind(X_6,"sys","supplier","s_comment",2);
+    X_258 := sql.bind(X_6,"sys","supplier","s_comment",1);
+    X_260 := sql.projectdelta(X_32,X_253,X_256,r1_382,X_258);
+    X_261:bat[:oid,:str]  := 
algebra.leftfetchjoinPath(X_351,X_196,X_158,r1_183,r1_177,X_125,X_101,r1_122,X_260);
+    X_219 := algebra.leftfetchjoin(X_218,X_215);
+    X_222:bat[:oid,:int]  := algebra.leftfetchjoin(X_351,X_197);
+    X_221:bat[:oid,:str]  := algebra.leftfetchjoin(X_351,X_199);
+    X_220:bat[:oid,:str]  := algebra.leftfetchjoin(X_351,X_198);
+    X_262 := sql.resultSet(8,1,X_219);
+    sql.rsColumn(X_262,"sys.supplier","s_acctbal","decimal",15,2,X_219);
+    sql.rsColumn(X_262,"sys.supplier","s_name","varchar",25,0,X_220);
+    sql.rsColumn(X_262,"sys.nation","n_name","varchar",25,0,X_221);
+    sql.rsColumn(X_262,"sys.part","p_partkey","int",32,0,X_222);
+    sql.rsColumn(X_262,"sys.part","p_mfgr","varchar",25,0,X_233);
+    sql.rsColumn(X_262,"sys.supplier","s_address","varchar",40,0,X_242);
+    sql.rsColumn(X_262,"sys.supplier","s_phone","varchar",15,0,X_252);
+    sql.rsColumn(X_262,"sys.supplier","s_comment","varchar",101,0,X_261);
+    X_293 := io.stdout();
+    sql.exportResult(X_293,X_262);
 end s2_1;
 # querylog.define("explain 
select\n\ts_acctbal,\n\ts_name,\n\tn_name,\n\tp_partkey,\n\tp_mfgr,\n\ts_address,\n\ts_phone,\n\ts_comment\nfrom\n\tpart,\n\tsupplier,\n\tpartsupp,\n\tnation,\n\tregion\nwhere\n\tp_partkey
 = ps_partkey\n\tand s_suppkey = ps_suppkey\n\tand p_size = 15\n\tand p_type 
like \\'%BRASS\\'\n\tand s_nationkey = n_nationkey\n\tand n_regionkey = 
r_regionkey\n\tand r_name = \\'EUROPE\\'\n\tand ps_supplycost = 
(\n\t\tselect\n\t\t\tmin(ps_supplycost)\n\t\tfrom\n\t\t\tpartsupp,\n\t\t\tsupplier,\n\t\t\tnation,\n\t\t\tregion\n\t\twhere\n\t\t\tp_partkey
 = ps_partkey\n\t\t\tand s_suppkey = ps_suppkey\n\t\t\tand s_nationkey = 
n_nationkey\n\t\t\tand n_regionkey = r_regionkey\n\t\t\tand r_name = 
\\'EUROPE\\'\n\t)\norder by\n\ts_acctbal 
desc,\n\tn_name,\n\ts_name,\n\tp_partkey\nlimit 100;","sequential_pipe")
 
diff --git a/sql/benchmarks/tpch/Tests/03-explain.stable.out 
b/sql/benchmarks/tpch/Tests/03-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/03-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/03-explain.stable.out
@@ -57,93 +57,93 @@ function user.s2_1{autoCommit=true}(A0:b
     X_6 := sql.mvc();
     X_10 := sql.bind(X_6,"sys","orders","o_orderdate",0);
     X_7:bat[:oid,:oid]  := sql.tid(X_6,"sys","orders");
-    X_179 := algebra.thetasubselect(X_10,X_7,A2,"<");
+    X_188 := algebra.thetasubselect(X_10,X_7,A2,"<");
     (X_13,r1_13) := sql.bind(X_6,"sys","orders","o_orderdate",2);
-    X_180 := algebra.thetasubselect(r1_13,A2,"<");
+    X_189 := algebra.thetasubselect(r1_13,A2,"<");
     X_16 := sql.bind(X_6,"sys","orders","o_orderdate",1);
-    X_181 := algebra.thetasubselect(X_16,X_7,A2,"<");
-    X_18 := sql.subdelta(X_179,X_7,X_13,X_180,X_181);
+    X_190 := algebra.thetasubselect(X_16,X_7,A2,"<");
+    X_18 := sql.subdelta(X_188,X_7,X_13,X_189,X_190);
     X_20 := sql.bind_idxbat(X_6,"sys","orders","orders_o_custkey_fkey",0);
     (X_22,r1_25) := 
sql.bind_idxbat(X_6,"sys","orders","orders_o_custkey_fkey",2);
     X_24 := sql.bind_idxbat(X_6,"sys","orders","orders_o_custkey_fkey",1);
     X_25 := sql.projectdelta(X_18,X_20,X_22,r1_25,X_24);
     X_28 := sql.bind(X_6,"sys","customer","c_mktsegment",0);
     X_26:bat[:oid,:oid]  := sql.tid(X_6,"sys","customer");
-    X_182 := algebra.subselect(X_28,X_26,A1,A1,true,true,false);
+    X_191 := algebra.subselect(X_28,X_26,A1,A1,true,true,false);
     (X_30,r1_35) := sql.bind(X_6,"sys","customer","c_mktsegment",2);
-    X_183 := algebra.subselect(r1_35,A1,A1,true,true,false);
+    X_192 := algebra.subselect(r1_35,A1,A1,true,true,false);
     X_32 := sql.bind(X_6,"sys","customer","c_mktsegment",1);
-    X_184 := algebra.subselect(X_32,X_26,A1,A1,true,true,false);
-    X_33 := sql.subdelta(X_182,X_26,X_30,X_183,X_184);
+    X_193 := algebra.subselect(X_32,X_26,A1,A1,true,true,false);
+    X_33 := sql.subdelta(X_191,X_26,X_30,X_192,X_193);
     X_36 := X_33;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to