>From Vijay Sarathy <[email protected]>: Vijay Sarathy has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19377 )
Change subject: [ASTERIXDB-3558][COMP] Allow Cartesian products at all levels if outer joins are present ...................................................................... [ASTERIXDB-3558][COMP] Allow Cartesian products at all levels if outer joins are present Ext-Ref: 65071 Change-Id: I1adb17bbf4348d8b495f88eb452cdcd18575f765 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19377 Reviewed-by: <[email protected]> Reviewed-by: Vijay Sarathy <[email protected]> Tested-by: Jenkins <[email protected]> --- M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java 2 files changed, 124 insertions(+), 136 deletions(-) Approvals: [email protected]: Looks good to me, but someone else must approve Vijay Sarathy: Looks good to me, approved Jenkins: Verified diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java index bc4709e..edd4301 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java @@ -1333,7 +1333,8 @@ List<Integer> newJoinConditions = this.getNewJoinConditionsOnly(); // these will be a subset of applicable join conditions. if ((newJoinConditions.size() == 0) && joinEnum.connectedJoinGraph) { // at least one plan must be there at each level as the graph is fully connected. - if (leftJn.cardinality * rightJn.cardinality > 10000.0 && level > joinEnum.cboFullEnumLevel) { + if (leftJn.cardinality * rightJn.cardinality > 10000.0 && level > joinEnum.cboFullEnumLevel + && !joinEnum.outerJoin) { // when outer joins are present, moving joins around is restricted return; } } diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan index 66fe341..d2c7c52 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan @@ -38,159 +38,137 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| join (and(eq($$250, $$203), eq($$202, $$231))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- HYBRID_HASH_JOIN [$$250, $$231][$$203, $$202] |PARTITIONED| - exchange [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + exchange [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + assign [$$231] <- [get-item($$181, 0)] project: [$$250, $$244, $$231] [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- ASSIGN |PARTITIONED| - exchange [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + exchange [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| group by ([$$250 := $$200]) decor ([$$244]) { aggregate [$$181] <- [listify($$215)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- AGGREGATE |LOCAL| aggregate [$$215] <- [agg-sql-min($$208)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- AGGREGATE |LOCAL| - select (not(is-missing($$249))) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- STREAM_SELECT |LOCAL| - nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- NESTED_TUPLE_SOURCE |LOCAL| - } [cardinality: 0.0, op-cost: 0.0, total-cost: 20000.0] + nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- NESTED_TUPLE_SOURCE |LOCAL| + } [cardinality: 0.0, op-cost: 0.0, total-cost: 264479.97] -- PRE_CLUSTERED_GROUP_BY[$$200] |PARTITIONED| - exchange [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + exchange [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - order (ASC, $$200) [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + order (ASC, $$200) [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- STABLE_SORT [$$200(ASC)] |PARTITIONED| - exchange [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$244, $$208, $$249, $$200]) [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + exchange [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] + -- HASH_PARTITION_EXCHANGE [$$200] |PARTITIONED| + project ([$$244, $$208, $$200]) [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- STREAM_PROJECT |PARTITIONED| - exchange [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + exchange [cardinality: 30.16, op-cost: 0.0, total-cost: 264479.97] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - left outer join (eq($$207, $$200)) [cardinality: 30.16, op-cost: 16067.92, total-cost: 394475.1] - -- HYBRID_HASH_JOIN [$$200][$$207] |PARTITIONED| - exchange [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] - -- HASH_PARTITION_EXCHANGE [$$200] |PARTITIONED| - select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] - -- STREAM_SELECT |PARTITIONED| - assign [$$244] <- [$$p.getField(2)] [cardinality: 20000.0, op-cost: 0.0, total-cost: 20000.0] - -- ASSIGN |PARTITIONED| - exchange [cardinality: 20000.0, op-cost: 0.0, total-cost: 20000.0] + join (and(eq($$218, $$213), eq($$223, $$212))) [cardinality: 30.16, op-cost: 250.8, total-cost: 264479.97] + -- HYBRID_HASH_JOIN [$$213, $$223][$$218, $$212] |PARTITIONED| + exchange [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + assign [$$223] <- [$$s2.getField(3)] project: [$$244, $$208, $$200, $$213, $$223] [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0] + -- ASSIGN |PARTITIONED| + project ([$$208, $$213, $$244, $$200, $$s2]) [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0] + -- STREAM_PROJECT |PARTITIONED| + exchange [cardinality: 987.0, op-cost: 0.0, total-cost: 1000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$200, $$p] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0] - -- DATASOURCE_SCAN |PARTITIONED| + unnest-map [$$211, $$s2] <- index-search("supplier", 0, "Default", "tpch", "supplier", true, true, 1, $$210, 1, $$210, true, true, true) [cardinality: 987.0, op-cost: 1000.0, total-cost: 1000.0] + -- BTREE_SEARCH |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- EMPTY_TUPLE_SOURCE |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- HASH_PARTITION_EXCHANGE [$$207] |PARTITIONED| - project ([$$208, $$249, $$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- STREAM_PROJECT |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - join (eq($$207, $$209)) [cardinality: 16030.29, op-cost: 36033.87, total-cost: 342339.25] - -- HYBRID_HASH_JOIN [$$209][$$207] |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- HASH_PARTITION_EXCHANGE [$$209] |PARTITIONED| - assign [$$249] <- [true] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ASSIGN |PARTITIONED| - project ([$$208, $$209]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- STREAM_PROJECT |PARTITIONED| + order (ASC, $$210) [cardinality: 987.0, op-cost: 1000.0, total-cost: 1000.0] + -- STABLE_SORT [$$210(ASC)] |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - join (eq($$218, $$213)) [cardinality: 16015.05, op-cost: 80079.26, total-cost: 250271.52] - -- HYBRID_HASH_JOIN [$$218][$$213] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$210] |PARTITIONED| + project ([$$208, $$210, $$213, $$244, $$200]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- STREAM_PROJECT |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$208, $$209, $$218]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- STREAM_PROJECT |PARTITIONED| + join (eq($$207, $$209)) [cardinality: 150.8, op-cost: 80225.92, total-cost: 262744.94] + -- HYBRID_HASH_JOIN [$$209][$$207] |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - join (eq($$211, $$210)) [cardinality: 80075.26, op-cost: 84023.26, total-cost: 170183.26] - -- HYBRID_HASH_JOIN [$$210][$$211] |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + replicate [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] + -- REPLICATE |PARTITIONED| + exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - replicate [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] - -- REPLICATE |PARTITIONED| + project ([$$208, $$210, $$209]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] + -- STREAM_PROJECT |PARTITIONED| exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$208, $$209, $$210]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] - -- STREAM_PROJECT |PARTITIONED| - exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] + data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 80000.0, op-cost: 80000.0, total-cost: 80000.0] + -- DATASOURCE_SCAN |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$208, $$209, $$210, $$ps2] <- tpch.partsupp [cardinality: 80000.0, op-cost: 80000.0, total-cost: 80000.0] + empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- EMPTY_TUPLE_SOURCE |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- BROADCAST_EXCHANGE |PARTITIONED| + left outer join (eq($$207, $$200)) [cardinality: 37.67, op-cost: 20169.33, total-cost: 102368.36] + -- HYBRID_HASH_JOIN [$$207][$$200] |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + join (true) [cardinality: 20018.81, op-cost: 42039.51, total-cost: 62048.51] + -- NESTED_LOOP |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + project ([$$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- STREAM_PROJECT |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + data-scan []<-[$$207, $$p2] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0] -- DATASOURCE_SCAN |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- EMPTY_TUPLE_SOURCE |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- BROADCAST_EXCHANGE |PARTITIONED| + replicate [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0] + -- REPLICATE |PARTITIONED| + exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0] + -- STREAM_SELECT |PARTITIONED| + exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 5.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 5.0, op-cost: 5.0, total-cost: 5.0] + -- DATASOURCE_SCAN |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- EMPTY_TUPLE_SOURCE |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- BROADCAST_EXCHANGE |PARTITIONED| - project ([$$218, $$211]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- STREAM_PROJECT |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - join (eq($$223, $$212)) [cardinality: 987.0, op-cost: 1087.0, total-cost: 2212.0] - -- HYBRID_HASH_JOIN [$$223][$$212] |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - assign [$$223] <- [$$s2.getField(3)] project: [$$211, $$223] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ASSIGN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - replicate [cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0] - -- REPLICATE |PARTITIONED| - exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$211, $$s2] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0] - -- DATASOURCE_SCAN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- EMPTY_TUPLE_SOURCE |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- BROADCAST_EXCHANGE |PARTITIONED| - assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ASSIGN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - replicate [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] - -- REPLICATE |PARTITIONED| - exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0] - -- DATASOURCE_SCAN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- EMPTY_TUPLE_SOURCE |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- BROADCAST_EXCHANGE |PARTITIONED| - replicate [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0] - -- REPLICATE |PARTITIONED| - exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - select (eq($$r2.getField(1), "EUROPE")) project: [$$213] [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0] - -- STREAM_SELECT |PARTITIONED| - exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 5.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$213, $$r2] <- tpch.region [cardinality: 5.0, op-cost: 5.0, total-cost: 5.0] - -- DATASOURCE_SCAN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- EMPTY_TUPLE_SOURCE |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- HASH_PARTITION_EXCHANGE [$$207] |PARTITIONED| - project ([$$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- STREAM_PROJECT |PARTITIONED| + select (and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) project: [$$244, $$200] [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0] + -- STREAM_SELECT |PARTITIONED| + assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ASSIGN |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + data-scan []<-[$$200, $$p] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0] + -- DATASOURCE_SCAN |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- EMPTY_TUPLE_SOURCE |PARTITIONED| + exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0] + -- BROADCAST_EXCHANGE |PARTITIONED| + assign [$$218] <- [$$n2.getField(2)] project: [$$218, $$212] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] + -- ASSIGN |PARTITIONED| + exchange [cardinality: 25.0, op-cost: 100.0, total-cost: 125.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + replicate [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] + -- REPLICATE |PARTITIONED| + exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + data-scan []<-[$$212, $$n2] <- tpch.nation [cardinality: 25.0, op-cost: 25.0, total-cost: 25.0] + -- DATASOURCE_SCAN |PARTITIONED| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$207, $$p2] <- tpch.part [cardinality: 20000.0, op-cost: 20000.0, total-cost: 20000.0] - -- DATASOURCE_SCAN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- EMPTY_TUPLE_SOURCE |PARTITIONED| exchange [cardinality: 80075.26, op-cost: 0.0, total-cost: 168971.26] -- HASH_PARTITION_EXCHANGE [$$203] |PARTITIONED| project ([$$237, $$239, $$245, $$246, $$247, $$225, $$203, $$202]) [cardinality: 80075.26, op-cost: 0.0, total-cost: 168971.26] @@ -201,7 +179,7 @@ -- HYBRID_HASH_JOIN [$$204][$$201] |PARTITIONED| exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - assign [$$202, $$203, $$204] <- [$$208, $$209, $$210] project: [$$202, $$203, $$204] [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] + assign [$$202, $$204, $$203] <- [$$208, $$210, $$209] project: [$$202, $$204, $$203] [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ASSIGN |PARTITIONED| exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -209,7 +187,7 @@ -- REPLICATE |PARTITIONED| exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$208, $$209, $$210]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] + project ([$$208, $$210, $$209]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- STREAM_PROJECT |PARTITIONED| exchange [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0] -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -223,20 +201,14 @@ -- BROADCAST_EXCHANGE |PARTITIONED| assign [$$247, $$246, $$245, $$237, $$239, $$225] <- [$$s.getField(6), $$s.getField(4), $$s.getField(2), $$s.getField(5), $$s.getField(1), $$s.getField(3)] project: [$$237, $$239, $$245, $$246, $$247, $$225, $$201] [cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0] -- ASSIGN |PARTITIONED| - assign [$$201, $$s] <- [$$211, $$s2] project: [$$201, $$s] [cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0] - -- ASSIGN |PARTITIONED| - exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - replicate [cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0] - -- REPLICATE |PARTITIONED| - exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$211, $$s2] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0] - -- DATASOURCE_SCAN |PARTITIONED| - exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + exchange [cardinality: 1000.0, op-cost: 3948.0, total-cost: 4948.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + data-scan []<-[$$201, $$s] <- tpch.supplier [cardinality: 1000.0, op-cost: 1000.0, total-cost: 1000.0] + -- DATASOURCE_SCAN |PARTITIONED| + exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] + -- EMPTY_TUPLE_SOURCE |PARTITIONED| exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] -- HASH_PARTITION_EXCHANGE [$$205] |PARTITIONED| assign [$$238, $$221] <- [$$n.getField(1), $$n.getField(2)] project: [$$238, $$221, $$205] [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0] -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19377 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: I1adb17bbf4348d8b495f88eb452cdcd18575f765 Gerrit-Change-Number: 19377 Gerrit-PatchSet: 7 Gerrit-Owner: [email protected] Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Vijay Sarathy <[email protected]> Gerrit-Reviewer: [email protected] Gerrit-MessageType: merged
