>From <[email protected]>: [email protected] has uploaded this change for review. ( 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
Change-Id: I1adb17bbf4348d8b495f88eb452cdcd18575f765
---
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, 117 insertions(+), 136 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/77/19377/1
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..f044272 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,7 @@
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) {
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: 1
Gerrit-Owner: [email protected]
Gerrit-MessageType: newchange
