This is an automated email from the ASF dual-hosted git repository.
vsarathy1 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 466e6f771d [ASTERIXDB-3450][COMP] CBO not picking broadcast join for
very small tables.
466e6f771d is described below
commit 466e6f771d4ee2c64fd13dd80cb77b9a35cbfb02
Author: Vijay Sarathy <[email protected]>
AuthorDate: Wed Jul 10 16:03:38 2024 -0700
[ASTERIXDB-3450][COMP] CBO not picking broadcast join for very small tables.
Ext-ref: MB-62636
Change-Id: Ie04758aca3142669811881fad0cda8750c9e2f9b
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18423
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: <[email protected]>
Reviewed-by: Vijay Sarathy <[email protected]>
---
.../apache/asterix/optimizer/cost/CostMethods.java | 3 +-
.../results_cbo/group-by/listify-3.1.plan | 30 +--
.../optimizerts/results_cbo/query_issue849-2.plan | 4 +-
.../results_cbo/subquery/in_as_or_2.plan | 4 +-
.../results_cbo/subquery/in_as_or_2_ps.plan | 8 +-
.../results_cbo/subquery/in_as_or_4.plan | 4 +-
.../results_cbo/subquery/in_as_or_4_ps.plan | 8 +-
.../results_cbo/subquery/in_as_or_6.plan | 4 +-
.../results_cbo/subquery/in_as_or_6_ps.plan | 8 +-
.../filter/not-in_every/not-in_every.201.plan | 2 +-
.../column/filter/subplan/subplan.032.plan | 14 +-
.../column/filter/subplan/subplan.042.plan | 14 +-
.../column/filter/subplan/subplan.062.plan | 6 +-
.../push-limit-to-primary-scan-select.5.plan | 24 +-
.../tpch/query-plans/query-plans.04.plan | 282 ++++++++++-----------
.../tpch/query-plans/query-plans.07.plan | 64 ++---
.../tpch/query-plans/query-plans.09.plan | 38 +--
17 files changed, 258 insertions(+), 259 deletions(-)
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
index 71e9b3c985..360bf238dc 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
@@ -148,7 +148,8 @@ public class CostMethods implements ICostMethods {
public Cost costCartesianProductJoin(JoinNode jn) {
JoinNode leftJn = jn.getLeftJn();
JoinNode rightJn = jn.getRightJn();
- return new Cost(leftJn.getCardinality() * rightJn.getCardinality());
+ return new Cost(
+ Math.max(leftJn.getCardinality(), Cost.MIN_CARD) *
Math.max(rightJn.getCardinality(), Cost.MIN_CARD));
}
public Cost computeCPRightExchangeCost(JoinNode jn) {
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
index 85fa62dc12..ec40853185 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
@@ -8,27 +8,27 @@
-- ASSIGN |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
-- NESTED_LOOP |LOCAL|
+ -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
-- NESTED_LOOP |LOCAL|
- -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- -- UNNEST |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
-- STREAM_PROJECT |LOCAL|
-- ASSIGN |LOCAL|
- -- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- REPLICATE |LOCAL|
+ -- STREAM_PROJECT |LOCAL|
+ -- ASSIGN |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- AGGREGATE |LOCAL|
- -- STREAM_PROJECT |LOCAL|
- -- ASSIGN |LOCAL|
- -- AGGREGATE |LOCAL|
- -- AGGREGATE |LOCAL|
- -- UNNEST |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |LOCAL|
- -- STREAM_PROJECT |LOCAL|
- -- ASSIGN |LOCAL|
+ -- REPLICATE |LOCAL|
+ -- ONE_TO_ONE_EXCHANGE |LOCAL|
+ -- AGGREGATE |LOCAL|
+ -- STREAM_PROJECT |LOCAL|
+ -- ASSIGN |LOCAL|
+ -- AGGREGATE |LOCAL|
+ -- AGGREGATE |LOCAL|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |LOCAL|
-- STREAM_PROJECT |LOCAL|
-- ASSIGN |LOCAL|
-- ONE_TO_ONE_EXCHANGE |LOCAL|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
index e23c4e53d2..21bb45718b 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
@@ -21,11 +21,11 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$47][$$49] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$47] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (test.s) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$49] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |UNPARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2.plan
index 6792ec5bfd..d6e9fa9943 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2.plan
@@ -15,14 +15,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$23][$#1] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (tpch.Customer)
|PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2_ps.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2_ps.plan
index 30c539930d..de7e790441 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2_ps.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_2_ps.plan
@@ -21,14 +21,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$23][$#1]
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23]
|PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (tpch.Customer)
|PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1]
|PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
@@ -54,14 +54,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$23][$#1]
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23]
|PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- DATASOURCE_SCAN
(tpch.Customer) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1]
|PARTITIONED|
+ -- BROADCAST_EXCHANGE
|PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4.plan
index 22ea58acb8..9ba625b66c 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4.plan
@@ -15,14 +15,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$22][$#1] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (tpch.Customer)
|PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4_ps.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4_ps.plan
index 84a931592b..148d1b062a 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4_ps.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_4_ps.plan
@@ -21,14 +21,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$22][$#1]
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$22]
|PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (tpch.Customer)
|PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1]
|PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
@@ -54,14 +54,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$22][$#1]
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$22]
|PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- DATASOURCE_SCAN
(tpch.Customer) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1]
|PARTITIONED|
+ -- BROADCAST_EXCHANGE
|PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6.plan
index 6792ec5bfd..d6e9fa9943 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6.plan
@@ -15,14 +15,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$23][$#1] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (tpch.Customer)
|PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6_ps.plan
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6_ps.plan
index 30c539930d..de7e790441 100644
---
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6_ps.plan
+++
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_6_ps.plan
@@ -21,14 +21,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$23][$#1]
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23]
|PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- DATASOURCE_SCAN (tpch.Customer)
|PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1]
|PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
@@ -54,14 +54,14 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$23][$#1]
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$23]
|PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- DATASOURCE_SCAN
(tpch.Customer) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
-- EMPTY_TUPLE_SOURCE
|PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$#1]
|PARTITIONED|
+ -- BROADCAST_EXCHANGE
|PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE
|UNPARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan
index 31657c94dd..20294f4c5d 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.201.plan
@@ -31,7 +31,7 @@ distribute result [$$d] [cardinality: 3.0, op-cost: 0.0,
total-cost: 15.5]
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 6.0, op-cost: 0.0, total-cost:
6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left outer join (not(if-missing-or-null(neq($$21,
$#1), false))) [cardinality: 3.0, op-cost: 6.0, total-cost: 17.0]
+ left outer join (not(if-missing-or-null(neq($$21,
$#1), false))) [cardinality: 3.0, op-cost: 12.6, total-cost: 23.6]
-- NESTED_LOOP |PARTITIONED|
exchange [cardinality: 6.0, op-cost: 0.0,
total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
index 41ca4c22b0..b69114730d 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.032.plan
@@ -1,16 +1,16 @@
-distribute result [$$70] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+distribute result [$$70] [cardinality: 2.1, op-cost: 0.0, total-cost: 15.41]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 15.41]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 2.1, op-cost: 0.0,
total-cost: 12.0]
+ aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 2.1, op-cost: 0.0,
total-cost: 15.41]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 15.41]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost:
0.0, total-cost: 12.0]
+ aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost:
0.0, total-cost: 15.41]
-- AGGREGATE |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 15.41]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (true) [cardinality: 2.1, op-cost: 1.0, total-cost: 12.0]
+ join (true) [cardinality: 2.1, op-cost: 4.41, total-cost: 15.41]
-- NESTED_LOOP |PARTITIONED|
exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
index fd431a6292..7fe9bcc850 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.042.plan
@@ -1,16 +1,16 @@
-distribute result [$$70] [cardinality: 6.0, op-cost: 0.0, total-cost: 22.0]
+distribute result [$$70] [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 22.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 6.0, op-cost: 0.0,
total-cost: 22.0]
+ aggregate [$$70] <- [agg-sql-sum($$76)] [cardinality: 6.0, op-cost: 0.0,
total-cost: 28.6]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 22.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 6.0, op-cost:
0.0, total-cost: 22.0]
+ aggregate [$$76] <- [agg-sql-count(1)] [cardinality: 6.0, op-cost:
0.0, total-cost: 28.6]
-- AGGREGATE |PARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 22.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 28.6]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (or(eq($$71, "7"), neq($$69, 0))) [cardinality: 6.0, op-cost:
6.0, total-cost: 22.0]
+ join (or(eq($$71, "7"), neq($$69, 0))) [cardinality: 6.0, op-cost:
12.6, total-cost: 28.6]
-- NESTED_LOOP |PARTITIONED|
exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
index 0af00634a7..70f874e510 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/subplan/subplan.062.plan
@@ -1,8 +1,8 @@
-distribute result [$$63] [cardinality: 2.1, op-cost: 0.0, total-cost: 17.0]
+distribute result [$$63] [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 17.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 20.41]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (true) [cardinality: 2.1, op-cost: 1.0, total-cost: 17.0]
+ join (true) [cardinality: 2.1, op-cost: 4.41, total-cost: 20.41]
-- NESTED_LOOP |PARTITIONED|
exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
index eeb828620a..035ab6ee76 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.5.plan
@@ -1,25 +1,25 @@
-distribute result [$$37] [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+distribute result [$$37] [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+ exchange [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 2 [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+ limit 2 [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+ exchange [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- project ([$$37]) [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+ project ([$$37]) [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$37] <- [{"dblpid": $$38}] [cardinality: 63.37, op-cost:
0.0, total-cost: 304.0]
+ assign [$$37] <- [{"dblpid": $$38}] [cardinality: 63.37, op-cost:
0.0, total-cost: 308.0]
-- ASSIGN |PARTITIONED|
- limit 2 [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+ limit 2 [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$38]) [cardinality: 63.37, op-cost: 0.0, total-cost:
304.0]
+ project ([$$38]) [cardinality: 63.37, op-cost: 0.0, total-cost:
308.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 63.37, op-cost: 0.0, total-cost: 304.0]
+ exchange [cardinality: 63.37, op-cost: 0.0, total-cost: 308.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$38, $$41)) [cardinality: 63.37, op-cost: 100.0,
total-cost: 304.0]
+ join (eq($$38, $$41)) [cardinality: 63.37, op-cost: 104.0,
total-cost: 308.0]
-- HYBRID_HASH_JOIN [$$38][$$41] |PARTITIONED|
exchange [cardinality: 100.0, op-cost: 0.0, total-cost:
100.0]
- -- HASH_PARTITION_EXCHANGE [$$38] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$38]) [cardinality: 100.0, op-cost: 0.0,
total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
assign [$$38] <- [$$d.getField(1)] [cardinality:
100.0, op-cost: 0.0, total-cost: 100.0]
@@ -35,7 +35,7 @@ distribute result [$$37] [cardinality: 63.37, op-cost: 0.0,
total-cost: 304.0]
empty-tuple-source [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange [cardinality: 1.0, op-cost: 4.0, total-cost:
104.0]
- -- HASH_PARTITION_EXCHANGE [$$41] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
project ([$$41]) [cardinality: 1.0, op-cost: 0.0,
total-cost: 100.0]
-- STREAM_PROJECT |UNPARTITIONED|
assign [$$41] <- [get-item($$30,
0).getField(0).getField(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
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 1ed08419f8..8b34297b40 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
@@ -40,13 +40,13 @@ distribute result [$$194] [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- 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: 33.96,
op-cost: 0.0, total-cost: 402536.81]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$250, $$244, $$231])
[cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
+ project ([$$250, $$244, $$231])
[cardinality: 33.96, op-cost: 0.0, total-cost: 402536.81]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$231] <-
[get-item($$181, 0)] [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
+ assign [$$231] <-
[get-item($$181, 0)] [cardinality: 33.96, op-cost: 0.0, total-cost: 402536.81]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 37.63,
op-cost: 0.0, total-cost: 20000.0]
+ exchange [cardinality: 33.96,
op-cost: 0.0, total-cost: 402536.81]
-- 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]
@@ -55,146 +55,152 @@ distribute result [$$194] [cardinality: 0.0, op-cost:
0.0, total-cost: 0.0]
-- AGGREGATE
|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]
+ } [cardinality: 0.0,
op-cost: 0.0, total-cost: 402536.81]
--
PRE_CLUSTERED_GROUP_BY[$$200] |PARTITIONED|
- exchange [cardinality:
37.63, op-cost: 0.0, total-cost: 20000.0]
+ exchange [cardinality:
33.96, op-cost: 0.0, total-cost: 402536.81]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
- order (ASC, $$200)
[cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
+ order (ASC, $$200)
[cardinality: 33.96, op-cost: 0.0, total-cost: 402536.81]
-- 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, $$200]) [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
+ exchange [cardinality:
33.96, op-cost: 0.0, total-cost: 402536.81]
+ --
HASH_PARTITION_EXCHANGE [$$200] |PARTITIONED|
+ project ([$$244,
$$208, $$200]) [cardinality: 33.96, op-cost: 0.0, total-cost: 402536.81]
-- STREAM_PROJECT
|PARTITIONED|
- exchange
[cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
+ exchange
[cardinality: 33.96, op-cost: 0.0, total-cost: 402536.81]
--
ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left outer join
(eq($$207, $$200)) [cardinality: 33.96, op-cost: 18085.52, total-cost:
401572.23]
- --
HYBRID_HASH_JOIN [$$200][$$207] |PARTITIONED|
- exchange
[cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
- --
HASH_PARTITION_EXCHANGE [$$200] |PARTITIONED|
- project
([$$244, $$200]) [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.0]
- --
STREAM_PROJECT |PARTITIONED|
- select
(and(eq($$p.getField(5), 37), like($$p.getField(4), "%COPPER"))) [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]
- --
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: 0.0, op-cost: 0.0, total-cost: 0.0]
- --
HASH_PARTITION_EXCHANGE [$$207] |PARTITIONED|
- project
([$$208, $$207]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ join (eq($$218,
$$213)) [cardinality: 33.96, op-cost: 156.81, total-cost: 402536.81]
+ --
HYBRID_HASH_JOIN [$$218][$$213] |PARTITIONED|
+ exchange
[cardinality: 152.81, op-cost: 0.0, total-cost: 402371.01]
+ --
ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ project
([$$244, $$208, $$200, $$218]) [cardinality: 152.81, op-cost: 0.0, total-cost:
402371.01]
--
STREAM_PROJECT |PARTITIONED|
- exchange
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ exchange
[cardinality: 152.81, op-cost: 0.0, total-cost: 402371.01]
--
ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join
(eq($$207, $$209)) [cardinality: 18047.89, op-cost: 38049.55, total-cost:
345401.19]
- --
HYBRID_HASH_JOIN [$$209][$$207] |PARTITIONED|
-
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
- --
HASH_PARTITION_EXCHANGE [$$209] |PARTITIONED|
-
project ([$$208, $$209]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ join
(eq($$223, $$212)) [cardinality: 152.81, op-cost: 173.99, total-cost: 402371.01]
+ --
HYBRID_HASH_JOIN [$$223][$$212] |PARTITIONED|
+
exchange [cardinality: 987.0, op-cost: 148.99, total-cost: 1148.99]
+ --
HASH_PARTITION_EXCHANGE [$$223] |PARTITIONED|
+
project ([$$244, $$208, $$200, $$223]) [cardinality: 987.0, op-cost: 0.0,
total-cost: 1000.0]
--
STREAM_PROJECT |PARTITIONED|
-
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
- --
ONE_TO_ONE_EXCHANGE |PARTITIONED|
-
join (and(eq($$218, $$213), eq($$223, $$212))) [cardinality: 18030.73, op-cost:
79209.84, total-cost: 249302.1]
-
-- HYBRID_HASH_JOIN [$$213, $$223][$$218, $$212] |PARTITIONED|
-
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+
assign [$$223] <- [$$s2.getField(3)] [cardinality: 987.0, op-cost: 0.0,
total-cost: 1000.0]
+ --
ASSIGN |PARTITIONED|
+
project ([$$208, $$244, $$200, $$s2]) [cardinality: 987.0, op-cost: 0.0,
total-cost: 1000.0]
+
-- STREAM_PROJECT |PARTITIONED|
+
exchange [cardinality: 987.0, op-cost: 148.99, total-cost: 1148.99]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-
project ([$$208, $$209, $$213, $$223]) [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-
-- STREAM_PROJECT |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|
-
join (eq($$211, $$210)) [cardinality: 79109.84, op-cost: 84023.26,
total-cost: 169967.26]
-
-- HYBRID_HASH_JOIN [$$210][$$211] |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|
-
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]
+
-- HASH_PARTITION_EXCHANGE [$$210] |PARTITIONED|
+
project ([$$208, $$210, $$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, $$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]
+
left outer join (eq($$207, $$200)) [cardinality: 150.8, op-cost:
80301.99, total-cost: 400640.65]
+
-- HYBRID_HASH_JOIN [$$207][$$200] |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]
-
-- DATASOURCE_SCAN |PARTITIONED|
+
project ([$$208, $$210, $$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|
-
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|
-
join (true) [cardinality: 987.0, op-cost: 987.0, total-cost: 1996.0]
-
-- NESTED_LOOP |PARTITIONED|
-
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-
project ([$$223, $$211]) [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-
-- STREAM_PROJECT |PARTITIONED|
-
assign [$$223] <- [$$s2.getField(3)] [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|
-
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|
-
project ([$$213]) [cardinality: 1.0, op-cost: 0.0,
total-cost: 5.0]
+
join (eq($$207, $$209)) [cardinality: 80151.47, op-cost:
100094.07, total-cost: 300188.15]
+
-- HYBRID_HASH_JOIN [$$209][$$207] |PARTITIONED|
+
exchange [cardinality: 0.0, op-cost: 0.0, total-cost:
0.0]
+
-- HASH_PARTITION_EXCHANGE [$$209] |PARTITIONED|
+
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|
+
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|
+
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|
+
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|
+
exchange [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
+
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+
replicate [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
+
-- REPLICATE |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|
+
project ([$$244, $$200]) [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- STREAM_PROJECT |PARTITIONED|
-
select (eq($$r2.getField(1), "EUROPE")) [cardinality: 1.0,
op-cost: 0.0, total-cost: 5.0]
+
select (and(eq($$p.getField(5), 37), like($$p.getField(4),
"%COPPER"))) [cardinality: 37.63, op-cost: 0.0, total-cost: 20000.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, $$212]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-
-- STREAM_PROJECT |PARTITIONED|
-
assign [$$218] <- [$$n2.getField(2)] [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-
-- ASSIGN |PARTITIONED|
+
assign [$$244] <- [$$p.getField(2)] [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
+
-- ASSIGN |PARTITIONED|
+
project ([$$200, $$p]) [cardinality: 0.0, op-cost:
0.0, total-cost: 0.0]
+
-- STREAM_PROJECT |PARTITIONED|
+
assign [$$200, $$p] <- [$$207, $$p2] [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: 0.0, op-cost: 0.0,
total-cost: 0.0]
+
-- REPLICATE |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: 25.0, op-cost: 25.0, total-cost: 50.0]
+ --
HASH_PARTITION_EXCHANGE [$$212] |PARTITIONED|
+
project ([$$218, $$212]) [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
+ --
STREAM_PROJECT |PARTITIONED|
+
assign [$$218] <- [$$n2.getField(2)] [cardinality: 25.0, op-cost: 0.0,
total-cost: 25.0]
+ --
ASSIGN |PARTITIONED|
+
exchange [cardinality: 25.0, op-cost: 25.0, total-cost: 50.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|
-
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]
- --
HASH_PARTITION_EXCHANGE [$$207] |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|
+
empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ exchange
[cardinality: 1.0, op-cost: 4.0, total-cost: 9.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|
+ project
([$$213]) [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
+ --
STREAM_PROJECT |PARTITIONED|
+ select
(eq($$r2.getField(1), "EUROPE")) [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: 79109.84,
op-cost: 0.0, total-cost: 168971.26]
-- HASH_PARTITION_EXCHANGE [$$203]
|PARTITIONED|
project ([$$237, $$239, $$245,
$$246, $$247, $$225, $$203, $$202]) [cardinality: 79109.84, op-cost: 0.0,
total-cost: 168971.26]
@@ -205,9 +211,9 @@ distribute result [$$194] [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- HYBRID_HASH_JOIN
[$$204][$$201] |PARTITIONED|
exchange [cardinality:
80000.0, op-cost: 0.0, total-cost: 80000.0]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
- project ([$$202, $$203,
$$204]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
+ project ([$$202, $$204,
$$203]) [cardinality: 80000.0, op-cost: 0.0, total-cost: 80000.0]
-- STREAM_PROJECT
|PARTITIONED|
- assign [$$202, $$203,
$$204] <- [$$208, $$209, $$210] [cardinality: 80000.0, op-cost: 0.0,
total-cost: 80000.0]
+ assign [$$202, $$204,
$$203] <- [$$208, $$210, $$209] [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|
@@ -215,7 +221,7 @@ distribute result [$$194] [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- 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|
@@ -231,22 +237,14 @@ distribute result [$$194] [cardinality: 0.0, op-cost:
0.0, total-cost: 0.0]
-- STREAM_PROJECT
|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)]
[cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0]
-- ASSIGN |PARTITIONED|
- project ([$$201, $$s])
[cardinality: 1000.0, op-cost: 0.0, total-cost: 1000.0]
- -- STREAM_PROJECT
|PARTITIONED|
- assign [$$201, $$s]
<- [$$211, $$s2] [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]
+ 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|
- 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|
+
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|
project ([$$238, $$221, $$205])
[cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
index df1c65335c..4269fe6aa5 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.07.plan
@@ -1,48 +1,48 @@
-distribute result [$$149] [cardinality: 25.0, op-cost: 0.0, total-cost:
1574882.92]
+distribute result [$$149] [cardinality: 25.0, op-cost: 0.0, total-cost:
1574886.92]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1574882.92]
+ exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1574886.92]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$149]) [cardinality: 25.0, op-cost: 0.0, total-cost: 1574882.92]
+ project ([$$149]) [cardinality: 25.0, op-cost: 0.0, total-cost: 1574886.92]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}]
[cardinality: 25.0, op-cost: 0.0, total-cost: 1574882.92]
+ assign [$$149] <- [{"$1": 5, "n_name": $$n_name, "revenue": $$165}]
[cardinality: 25.0, op-cost: 0.0, total-cost: 1574886.92]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1574882.92]
+ exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1574886.92]
-- SORT_MERGE_EXCHANGE [$$165(DESC) ] |PARTITIONED|
- order (DESC, $$165) [cardinality: 25.0, op-cost: 116.1, total-cost:
1574882.92]
+ order (DESC, $$165) [cardinality: 25.0, op-cost: 116.1, total-cost:
1574886.92]
-- STABLE_SORT [$$165(DESC)] |PARTITIONED|
- exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1574766.82]
+ exchange [cardinality: 25.0, op-cost: 0.0, total-cost: 1574770.82]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$n_name := $$176]) decor ([]) {
aggregate [$$165] <- [global-sql-sum-serial($$175)]
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |LOCAL|
nested tuple source [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 25.0, op-cost: 38494.17, total-cost:
1574766.82]
+ } [cardinality: 25.0, op-cost: 38494.17, total-cost:
1574770.82]
-- EXTERNAL_GROUP_BY[$$176] |PARTITIONED|
- exchange [cardinality: 25.0, op-cost: 0.0, total-cost:
1536272.65]
+ exchange [cardinality: 25.0, op-cost: 0.0, total-cost:
1536276.65]
-- HASH_PARTITION_EXCHANGE [$$176] |PARTITIONED|
group by ([$$176 := $$150]) decor ([]) {
aggregate [$$175] <-
[local-sql-sum-serial(numeric-multiply($$173, numeric-subtract(1, $$174)))]
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |LOCAL|
nested tuple source [cardinality: 0.0, op-cost:
0.0, total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 25.0, op-cost: 38494.17, total-cost:
1536272.65]
+ } [cardinality: 25.0, op-cost: 38494.17, total-cost:
1536276.65]
-- EXTERNAL_GROUP_BY[$$150] |PARTITIONED|
- exchange [cardinality: 38494.17, op-cost: 0.0, total-cost:
1497778.48]
+ exchange [cardinality: 38494.17, op-cost: 0.0, total-cost:
1497782.48]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$173, $$174, $$150]) [cardinality: 38494.17,
op-cost: 0.0, total-cost: 1497778.48]
+ project ([$$173, $$174, $$150]) [cardinality: 38494.17,
op-cost: 0.0, total-cost: 1497782.48]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 38494.17, op-cost: 0.0,
total-cost: 1497778.48]
+ exchange [cardinality: 38494.17, op-cost: 0.0,
total-cost: 1497782.48]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (and(eq($$154, $$160), eq($$170, $$159)))
[cardinality: 38494.17, op-cost: 23429.97, total-cost: 1497778.48]
+ join (and(eq($$154, $$160), eq($$170, $$159)))
[cardinality: 38494.17, op-cost: 23429.97, total-cost: 1497782.48]
-- HYBRID_HASH_JOIN [$$160, $$170][$$154, $$159]
|PARTITIONED|
- exchange [cardinality: 19481.97, op-cost: 0.0,
total-cost: 1469400.52]
+ exchange [cardinality: 19481.97, op-cost: 0.0,
total-cost: 1469404.52]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$173, $$174, $$150, $$160, $$170])
[cardinality: 19481.97, op-cost: 0.0, total-cost: 1469400.52]
+ project ([$$173, $$174, $$150, $$160, $$170])
[cardinality: 19481.97, op-cost: 0.0, total-cost: 1469404.52]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 19481.97, op-cost: 0.0,
total-cost: 1469400.52]
+ exchange [cardinality: 19481.97, op-cost: 0.0,
total-cost: 1469404.52]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$158, $$156)) [cardinality:
19481.97, op-cost: 620582.08, total-cost: 1469400.52]
+ join (eq($$158, $$156)) [cardinality:
19481.97, op-cost: 620582.08, total-cost: 1469404.52]
-- HYBRID_HASH_JOIN [$$158][$$156]
|PARTITIONED|
exchange [cardinality: 600572.0, op-cost:
0.0, total-cost: 600572.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -60,13 +60,13 @@ distribute result [$$149] [cardinality: 25.0, op-cost: 0.0,
total-cost: 1574882.
-- 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: 4861.28, op-cost:
19445.1, total-cost: 248246.43]
+ exchange [cardinality: 4861.28, op-cost:
19445.1, total-cost: 248250.43]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$150, $$160, $$156])
[cardinality: 4861.28, op-cost: 0.0, total-cost: 228801.33]
+ project ([$$150, $$160, $$156])
[cardinality: 4861.28, op-cost: 0.0, total-cost: 228805.33]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 4861.28,
op-cost: 19445.1, total-cost: 248246.43]
+ exchange [cardinality: 4861.28,
op-cost: 19445.1, total-cost: 248250.43]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$155, $$167))
[cardinality: 4861.28, op-cost: 34995.7, total-cost: 228801.33]
+ join (eq($$155, $$167))
[cardinality: 4861.28, op-cost: 34995.7, total-cost: 228805.33]
-- HYBRID_HASH_JOIN [$$167][$$155]
|PARTITIONED|
exchange [cardinality: 21307.62,
op-cost: 0.0, total-cost: 150000.0]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
@@ -86,13 +86,13 @@ distribute result [$$149] [cardinality: 25.0, op-cost: 0.0,
total-cost: 1574882.
--
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: 3422.02,
op-cost: 13688.08, total-cost: 43805.64]
+ exchange [cardinality: 3422.02,
op-cost: 13688.08, total-cost: 43809.64]
-- BROADCAST_EXCHANGE
|PARTITIONED|
- project ([$$150, $$160, $$155])
[cardinality: 3422.02, op-cost: 0.0, total-cost: 30117.56]
+ project ([$$150, $$160, $$155])
[cardinality: 3422.02, op-cost: 0.0, total-cost: 30121.56]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality:
3422.02, op-cost: 13688.08, total-cost: 43805.64]
+ exchange [cardinality:
3422.02, op-cost: 13688.08, total-cost: 43809.64]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
- join (eq($$153, $$160))
[cardinality: 3422.02, op-cost: 15036.33, total-cost: 30117.56]
+ join (eq($$153, $$160))
[cardinality: 3422.02, op-cost: 15036.33, total-cost: 30121.56]
-- HYBRID_HASH_JOIN
[$$153][$$160] |PARTITIONED|
exchange [cardinality:
15000.0, op-cost: 0.0, total-cost: 15000.0]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
@@ -108,16 +108,16 @@ distribute result [$$149] [cardinality: 25.0, op-cost:
0.0, total-cost: 1574882.
--
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:
5.56, op-cost: 22.22, total-cost: 81.22]
+ exchange [cardinality:
5.56, op-cost: 22.22, total-cost: 85.22]
-- BROADCAST_EXCHANGE
|PARTITIONED|
- project ([$$150, $$160])
[cardinality: 5.56, op-cost: 0.0, total-cost: 59.0]
+ project ([$$150, $$160])
[cardinality: 5.56, op-cost: 0.0, total-cost: 63.0]
-- STREAM_PROJECT
|PARTITIONED|
- exchange [cardinality:
5.56, op-cost: 22.22, total-cost: 81.22]
+ exchange [cardinality:
5.56, op-cost: 22.22, total-cost: 85.22]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
- join (eq($$163,
$$161)) [cardinality: 5.56, op-cost: 25.0, total-cost: 59.0]
+ join (eq($$163,
$$161)) [cardinality: 5.56, op-cost: 29.0, total-cost: 63.0]
-- HYBRID_HASH_JOIN
[$$163][$$161] |PARTITIONED|
exchange
[cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
- --
HASH_PARTITION_EXCHANGE [$$163] |PARTITIONED|
+ --
ONE_TO_ONE_EXCHANGE |PARTITIONED|
project ([$$150,
$$160, $$163]) [cardinality: 25.0, op-cost: 0.0, total-cost: 25.0]
--
STREAM_PROJECT |PARTITIONED|
assign [$$150,
$$163] <- [$$n.getField(1), $$n.getField(2)] [cardinality: 25.0, op-cost: 0.0,
total-cost: 25.0]
@@ -131,7 +131,7 @@ distribute result [$$149] [cardinality: 25.0, op-cost: 0.0,
total-cost: 1574882.
empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--
EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange
[cardinality: 1.0, op-cost: 4.0, total-cost: 9.0]
- --
HASH_PARTITION_EXCHANGE [$$161] |PARTITIONED|
+ --
BROADCAST_EXCHANGE |PARTITIONED|
project
([$$161]) [cardinality: 1.0, op-cost: 0.0, total-cost: 5.0]
--
STREAM_PROJECT |PARTITIONED|
select
(eq($$r.getField(1), "AFRICA")) [cardinality: 1.0, op-cost: 0.0, total-cost:
5.0]
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
index f5c5738e47..1e2dd4868b 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan
@@ -1,40 +1,40 @@
-distribute result [$$199] [cardinality: 2.0, op-cost: 0.0, total-cost:
1259139.68]
+distribute result [$$199] [cardinality: 2.0, op-cost: 0.0, total-cost:
1259243.16]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1259139.68]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1259243.16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$199]) [cardinality: 2.0, op-cost: 0.0, total-cost: 1259139.68]
+ project ([$$199]) [cardinality: 2.0, op-cost: 0.0, total-cost: 1259243.16]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share":
numeric-divide($$214, $$215)}] [cardinality: 2.0, op-cost: 0.0, total-cost:
1259139.68]
+ assign [$$199] <- [{"$1": 8, "o_year": $$o_year, "mkt_share":
numeric-divide($$214, $$215)}] [cardinality: 2.0, op-cost: 0.0, total-cost:
1259243.16]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1259139.68]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1259243.16]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$o_year := $$238]) decor ([]) {
aggregate [$$214, $$215] <- [global-sql-sum-serial($$236),
global-sql-sum-serial($$237)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |LOCAL|
nested tuple source [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 2.0, op-cost: 193.7, total-cost: 1259139.68]
+ } [cardinality: 2.0, op-cost: 193.7, total-cost: 1259243.16]
-- EXTERNAL_GROUP_BY[$$238] |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1258945.98]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 1259049.46]
-- HASH_PARTITION_EXCHANGE [$$238] |PARTITIONED|
group by ([$$238 := $$200]) decor ([]) {
aggregate [$$236, $$237] <-
[local-sql-sum-serial(switch-case(true, eq($$232, "PERU"),
numeric-multiply($$230, numeric-subtract(1, $$231)), 0)),
local-sql-sum-serial(numeric-multiply($$230, numeric-subtract(1, $$231)))]
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- AGGREGATE |LOCAL|
nested tuple source [cardinality: 0.0, op-cost: 0.0,
total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 2.0, op-cost: 193.7, total-cost:
1258945.98]
+ } [cardinality: 2.0, op-cost: 193.7, total-cost:
1259049.46]
-- EXTERNAL_GROUP_BY[$$200] |PARTITIONED|
- exchange [cardinality: 193.7, op-cost: 0.0, total-cost:
1258752.28]
+ exchange [cardinality: 193.7, op-cost: 0.0, total-cost:
1258855.76]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$232, $$230, $$231, $$200]) [cardinality: 193.7,
op-cost: 0.0, total-cost: 1258752.28]
+ project ([$$232, $$230, $$231, $$200]) [cardinality: 193.7,
op-cost: 0.0, total-cost: 1258855.76]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$200] <- [get-year(date($$201))] [cardinality:
193.7, op-cost: 0.0, total-cost: 1258752.28]
+ assign [$$200] <- [get-year(date($$201))] [cardinality:
193.7, op-cost: 0.0, total-cost: 1258855.76]
-- ASSIGN |PARTITIONED|
- project ([$$230, $$231, $$201, $$232]) [cardinality:
193.7, op-cost: 0.0, total-cost: 1258752.28]
+ project ([$$230, $$231, $$201, $$232]) [cardinality:
193.7, op-cost: 0.0, total-cost: 1258855.76]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 193.7, op-cost: 0.0,
total-cost: 1258752.28]
+ exchange [cardinality: 193.7, op-cost: 0.0,
total-cost: 1258855.76]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$216, $$209)) [cardinality: 193.7,
op-cost: 288.86, total-cost: 1258752.28]
+ join (eq($$216, $$209)) [cardinality: 193.7,
op-cost: 288.86, total-cost: 1258855.76]
-- HYBRID_HASH_JOIN [$$216][$$209] |PARTITIONED|
exchange [cardinality: 987.0, op-cost: 0.0,
total-cost: 1000.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -58,13 +58,13 @@ distribute result [$$199] [cardinality: 2.0, op-cost: 0.0,
total-cost: 1259139.6
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
- join (and(eq($$212, $$210),
eq($$218, $$208))) [cardinality: 191.16, op-cost: 938.74, total-cost:
1256617.76]
+ join (and(eq($$212, $$210),
eq($$218, $$208))) [cardinality: 191.16, op-cost: 938.74, total-cost:
1256721.24]
-- HYBRID_HASH_JOIN [$$210,
$$218][$$212, $$208] |PARTITIONED|
exchange [cardinality:
0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE
|PARTITIONED|
project ([$$230, $$231,
$$201, $$223, $$210, $$218]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_PROJECT
|PARTITIONED|
- assign [$$218] <-
[$$c.getField(3)] [cardinality: 838.74, op-cost: 4189.55, total-cost:
1255554.02]
+ assign [$$218] <-
[$$c.getField(3)] [cardinality: 838.74, op-cost: 4189.55, total-cost: 1255657.5]
-- ASSIGN
|PARTITIONED|
project ([$$230,
$$231, $$223, $$210, $$201, $$c]) [cardinality: 0.0, op-cost: 0.0, total-cost:
0.0]
-- STREAM_PROJECT
|PARTITIONED|
@@ -78,7 +78,7 @@ distribute result [$$199] [cardinality: 2.0, op-cost: 0.0,
total-cost: 1259139.6
--
STABLE_SORT [$$226(ASC)] |PARTITIONED|
exchange
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
--
HASH_PARTITION_EXCHANGE [$$226] |PARTITIONED|
- select
(and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 837.9,
op-cost: 14137.91, total-cost: 1248012.87]
+ select
(and(ge($$201, "1995-01-01"), le($$201, "1996-12-31"))) [cardinality: 837.9,
op-cost: 14137.91, total-cost: 1248116.35]
--
STREAM_SELECT |PARTITIONED|
project ([$$230, $$231, $$223, $$210, $$226, $$201]) [cardinality: 0.0,
op-cost: 0.0, total-cost: 0.0]
--
STREAM_PROJECT |PARTITIONED|
@@ -100,7 +100,7 @@ distribute result [$$199] [cardinality: 2.0, op-cost: 0.0,
total-cost: 1259139.6
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-
join (eq($$202, $$221)) [cardinality: 2827.58, op-cost: 601513.27,
total-cost: 1222564.64]
+
join (eq($$202, $$221)) [cardinality: 2827.58, op-cost: 601513.27,
total-cost: 1222668.12]
-- HYBRID_HASH_JOIN [$$221][$$202] |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -120,7 +120,7 @@ distribute result [$$199] [cardinality: 2.0, op-cost: 0.0,
total-cost: 1259139.6
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
-
join (true) [cardinality: 94.07, op-cost: 94.07, total-cost:
20103.07]
+
join (true) [cardinality: 94.07, op-cost: 197.55, total-cost:
20206.55]
-- NESTED_LOOP |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|