[ASTERIXDB-3330][COMP]: CBO: Cardinality Estimation bugs
Change-Id: Ife44f819c306752e6fdf6ebcefa4a6abbb5df4c1
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17974
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: <murali.krishna@couchbase.com>
Reviewed-by: Vijay Sarathy <vijay.sarathy@couchbase.com>
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 11f221f..f206ada 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
@@ -193,6 +193,6 @@
}
protected double costSort(double inputCard) {
- return (inputCard <= 0 ? 0 : inputCard * Math.log(inputCard) / Math.log(2)); // log to the base 2
+ return (inputCard <= 1 ? 0 : inputCard * Math.log(inputCard) / Math.log(2)); // log to the base 2
}
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
index 5703741..0a16dfd 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
@@ -1347,7 +1347,7 @@
ILogicalOperator currentOp = inputOp;
boolean constantAssignVarUsedInTopOp = false;
- if (assignsBeforeTopOpRef != null) {
+ if (assignsBeforeTopOpRef != null && !assignsBeforeTopOpRef.isEmpty()) {
// From the first ASSIGN (earliest in the plan) to the last ASSGIN (latest)
for (int i = assignsBeforeTopOpRef.size() - 1; i >= 0; i--) {
AssignOperator tmpOp = (AssignOperator) assignsBeforeTopOpRef.get(i).getValue();
@@ -1613,7 +1613,7 @@
// If there are ASSIGN operators before the SELECT or JOIN operator,
// we need to put these operators between the SELECT or JOIN and the primary index lookup in the left path.
- if (assignsBeforeTopOpRef != null) {
+ if (assignsBeforeTopOpRef != null && !assignsBeforeTopOpRef.isEmpty()) {
// Makes the primary unnest-map as the child of the last ASSIGN (from top) in the path.
assignBeforeTopOp = assignsBeforeTopOpRef.get(assignsBeforeTopOpRef.size() - 1).getValue();
assignBeforeTopOp.getInputs().clear();
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
index 7ed23f7..fb99151 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
@@ -251,9 +251,6 @@
opRef.setValue(root);
if (LOGGER.isTraceEnabled()) {
- String viewInPlan = new ALogicalPlanImpl(opRef).toString(); //useful when debugging
- LOGGER.trace("viewInPlanAgain");
- LOGGER.trace(viewInPlan);
String viewOutPlan = new ALogicalPlanImpl(opRef).toString(); //useful when debugging
LOGGER.trace("viewOutPlan");
LOGGER.trace(viewOutPlan);
@@ -793,7 +790,6 @@
return i;
}
}
-
return -1;
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
index 1797a46..44d9da6 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
@@ -271,8 +271,14 @@
Pair<Double, Double> cardCost = new Pair<>(0.0, 0.0);
for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
- if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_INPUT_CARDINALITY)) {
- cardCost.setFirst((Double) anno.getValue());
+ if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_OUTPUT_CARDINALITY)) {
+ if (op.getSelectCondition() != null) {
+ cardCost.setFirst((Double) anno.getValue());
+ }
+ } else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_INPUT_CARDINALITY)) {
+ if (op.getSelectCondition() == null) {
+ cardCost.setFirst((Double) anno.getValue());
+ }
} else if (anno.getValue() != null && anno.getKey().equals(OperatorAnnotations.OP_COST_TOTAL)) {
cardCost.setSecond((Double) anno.getValue());
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
index 76f87b2..e5166f1 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
@@ -703,7 +703,7 @@
jn.aliases.addAll(jnJ.aliases);
Collections.sort(jn.aliases);
jn.size = jnI.size + jnJ.size;
- jn.setCardinality(jn.computeJoinCardinality());
+ jn.setCardinality(jn.computeJoinCardinality(), true);
} else {
addPlansToThisJn = jnNewBits.jnIndex;
}
@@ -744,7 +744,8 @@
}
double grpInputCard = (double) Math.round(jnArray[jnNumber].getCardinality() * 100) / 100;
- double grpOutputCard = (double) Math.round(jnArray[jnNumber].distinctCardinality * 100) / 100;
+ double grpOutputCard =
+ (double) Math.round(Math.min(grpInputCard, jnArray[jnNumber].distinctCardinality) * 100) / 100;
// set the root group-by/distinct operator's cardinality annotations (if exists)
if (!cboTestMode && this.rootGroupByDistinctOp != null) {
@@ -753,7 +754,7 @@
}
// set the root order by operator's cardinality annotations (if exists)
- if (this.rootOrderByOp != null) {
+ if (!cboTestMode && this.rootOrderByOp != null) {
if (this.rootGroupByDistinctOp != null) {
this.rootOrderByOp.getAnnotations().put(OperatorAnnotations.OP_INPUT_CARDINALITY, grpOutputCard);
this.rootOrderByOp.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY, grpOutputCard);
@@ -805,20 +806,20 @@
if (idxDetails == null) {
return PlanNode.NO_PLAN;
}
- jn.setOrigCardinality(idxDetails.getSourceCardinality());
+ jn.setOrigCardinality(idxDetails.getSourceCardinality(), false);
jn.setAvgDocSize(idxDetails.getSourceAvgItemSize());
jn.setSizeVarsFromDisk(10); // dummy value
jn.setSizeVarsAfterScan(10); // dummy value
}
// multiply by the respective predicate selectivities
- jn.setCardinality(jn.origCardinality * stats.getSelectivity(leafInput, false));
+ jn.setCardinality(jn.origCardinality * stats.getSelectivity(leafInput, false), false);
} else {
// could be unnest or assign
jn.datasetNames = new ArrayList<>(Collections.singleton("unnestOrAssign"));
jn.aliases = new ArrayList<>(Collections.singleton("unnestOrAssign"));
double card = findInListCard(leafInput);
- jn.setOrigCardinality(card);
- jn.setCardinality(card);
+ jn.setOrigCardinality(card, false);
+ jn.setCardinality(card, false);
// just a guess
jn.size = 10;
}
@@ -875,22 +876,22 @@
}
continue;
}
- double origDatasetCard, finalDatasetCard, sampleCard;
+ double origDatasetCard, finalDatasetCard;
+ finalDatasetCard = origDatasetCard = idxDetails.getSourceCardinality();
DataSourceScanOperator scanOp = findDataSourceScanOperator(leafInput);
if (scanOp == null) {
continue; // what happens to the cards and sizes then? this may happen in case of in lists
}
- finalDatasetCard = origDatasetCard = idxDetails.getSourceCardinality();
- ILogicalOperator grpByDistinctOp = this.dataScanAndGroupByDistinctOps.get(scanOp);
- if (grpByDistinctOp != null) {
- long distinctCardinality = stats.findDistinctCardinality(grpByDistinctOp);
- jn.distinctCardinality = (double) distinctCardinality;
- grpByDistinctOp.getAnnotations().put(OperatorAnnotations.OP_INPUT_CARDINALITY,
- (double) Math.round(finalDatasetCard * 100) / 100);
- grpByDistinctOp.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY,
- (double) Math.round(distinctCardinality * 100) / 100);
+ double sampleCard = Math.min(idxDetails.getSampleCardinalityTarget(), origDatasetCard);
+ if (sampleCard == 0) { // should not happen unless the original dataset is empty
+ sampleCard = 1; // we may have to make some adjustments to costs when the sample returns very rows.
+
+ IWarningCollector warningCollector = optCtx.getWarningCollector();
+ if (warningCollector.shouldWarn()) {
+ warningCollector.warn(Warning.of(scanOp.getSourceLocation(), ErrorCode.SAMPLE_HAS_ZERO_ROWS));
+ }
}
List<List<IAObject>> result;
@@ -933,12 +934,12 @@
// There are predicates here. So skip the predicates and get the original dataset card.
// Now apply all the predicates and get the card after all predicates are applied.
result = stats.runSamplingQueryProjection(this.optCtx, leafInput, i, primaryKey);
- double predicateCardinality = stats.findPredicateCardinality(result, true);
+ double predicateCardinalityFromSample = stats.findPredicateCardinality(result, true);
double sizeVarsFromDisk;
double sizeVarsAfterScan;
- if (predicateCardinality > 0.0) { // otherwise, we get nulls for the averages
+ if (predicateCardinalityFromSample > 0.0) { // otherwise, we get nulls for the averages
sizeVarsFromDisk = stats.findSizeVarsFromDisk(result, jn.getNumVarsFromDisk());
sizeVarsAfterScan = stats.findSizeVarsAfterScan(result, jn.getNumVarsFromDisk());
} else { // in case we did not get any tuples from the sample, get the size by setting the predicate to true.
@@ -956,29 +957,42 @@
}
selop.getCondition().setValue(saveExpr); // restore the expression
}
- if (predicateCardinality == 0.0) {
- predicateCardinality = 0.0001 * idxDetails.getSampleCardinalityTarget();
- }
- // now scale up
- sampleCard = Math.min(idxDetails.getSampleCardinalityTarget(), origDatasetCard);
- if (sampleCard == 0) { // should not happen unless the original dataset is empty
- sampleCard = 1; // we may have to make some adjustments to costs when the sample returns very rows.
- IWarningCollector warningCollector = optCtx.getWarningCollector();
- if (warningCollector.shouldWarn()) {
- warningCollector.warn(Warning.of(scanOp.getSourceLocation(), ErrorCode.SAMPLE_HAS_ZERO_ROWS));
- }
+ // Adjust for zero predicate cardinality from the sample.
+ predicateCardinalityFromSample = Math.max(predicateCardinalityFromSample, 0.0001);
+
+ // Do the scale up for the final cardinality after the predicates.
+ boolean scaleUp = sampleCard != origDatasetCard;
+ if (scaleUp) {
+ finalDatasetCard *= predicateCardinalityFromSample / sampleCard;
+ } else {
+ finalDatasetCard = predicateCardinalityFromSample;
}
- finalDatasetCard *= predicateCardinality / sampleCard;
// now switch the input back.
parent.getInputs().get(0).setValue(scanOp);
+
if (jn.getCardinality() == jn.getOrigCardinality()) { // this means there was no selectivity hint provided
- jn.setCardinality(finalDatasetCard);
+ // If the sample size is the same as the original dataset (happens when the dataset
+ // is small), no need to assign any artificial min. cardinality as the sample is accurate.
+ jn.setCardinality(finalDatasetCard, scaleUp);
}
+
jn.setSizeVarsFromDisk(sizeVarsFromDisk);
jn.setSizeVarsAfterScan(sizeVarsAfterScan);
jn.setAvgDocSize(idxDetails.getSourceAvgItemSize());
+
+ // Compute the distinct cardinalities for each base join node.
+ ILogicalOperator grpByDistinctOp = this.dataScanAndGroupByDistinctOps.get(scanOp);
+ if (grpByDistinctOp != null) {
+ long distinctCardinality = stats.findDistinctCardinality(grpByDistinctOp);
+ jn.distinctCardinality = (double) distinctCardinality;
+ double grpInputCard = (double) Math.round(finalDatasetCard * 100) / 100;
+ double grpOutputCard = (double) Math.round(Math.min(grpInputCard, distinctCardinality) * 100) / 100;
+ grpByDistinctOp.getAnnotations().put(OperatorAnnotations.OP_INPUT_CARDINALITY, grpInputCard);
+ grpByDistinctOp.getAnnotations().put(OperatorAnnotations.OP_OUTPUT_CARDINALITY, grpOutputCard);
+ }
}
+
dataScanPlan = jn.addSingleDatasetPlans();
if (dataScanPlan == PlanNode.NO_PLAN) {
return PlanNode.NO_PLAN;
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 e8d96b3..05cf921 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
@@ -131,18 +131,18 @@
return cardinality;
}
- protected void setCardinality(double card) {
+ protected void setCardinality(double card, boolean setMinCard) {
// Minimum cardinality for operators is MIN_CARD to prevent bad plans due to cardinality under estimation errors.
- cardinality = Math.max(card, Cost.MIN_CARD);
+ cardinality = setMinCard ? Math.max(card, Cost.MIN_CARD) : card;
}
public double getOrigCardinality() {
return origCardinality;
}
- protected void setOrigCardinality(double card) {
+ protected void setOrigCardinality(double card, boolean setMinCard) {
// Minimum cardinality for operators is MIN_CARD to prevent bad plans due to cardinality under estimation errors.
- origCardinality = Math.max(card, Cost.MIN_CARD);
+ origCardinality = setMinCard ? Math.max(card, Cost.MIN_CARD) : card;
}
public void setAvgDocSize(double avgDocSize) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
index f3d89c4..ae070b4 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
@@ -204,30 +204,33 @@
if (lexpr.getExpressionTag().equals(LogicalExpressionTag.FUNCTION_CALL)) {
sel = getSelectivityFromAnnotation(
(AbstractFunctionCallExpression) afcExpr.getArguments().get(0).getValue(), join);
- return 1.0 - sel;
+ // We want to return 1.0 and not 0.0 if there was no annotation
+ return (sel == 1.0) ? 1.0 : 1.0 - sel;
}
}
double s;
PredicateCardinalityAnnotation pca = afcExpr.getAnnotation(PredicateCardinalityAnnotation.class);
- if (pca != null) {
- s = pca.getSelectivity();
- if (s <= 0 || s >= 1) {
- IWarningCollector warningCollector = joinEnum.optCtx.getWarningCollector();
- if (warningCollector.shouldWarn()) {
- warningCollector.warn(Warning.of(afcExpr.getSourceLocation(), ErrorCode.INAPPLICABLE_HINT,
- "selectivity", "Selectivity specified: " + s
- + ", has to be a decimal value greater than 0 and less than 1"));
+ if (!join) {
+ if (pca != null) {
+ s = pca.getSelectivity();
+ if (s <= 0 || s >= 1) {
+ IWarningCollector warningCollector = joinEnum.optCtx.getWarningCollector();
+ if (warningCollector.shouldWarn()) {
+ warningCollector.warn(Warning.of(afcExpr.getSourceLocation(), ErrorCode.INAPPLICABLE_HINT,
+ "selectivity", "Selectivity specified: " + s
+ + ", has to be a decimal value greater than 0 and less than 1"));
+ }
+ } else {
+ sel *= s;
}
- } else {
- sel *= s;
}
} else {
JoinProductivityAnnotation jpa = afcExpr.getAnnotation(JoinProductivityAnnotation.class);
s = findJoinSelectivity(jpa, afcExpr);
sel *= s;
}
- if (join && s == 1.0) {
+ if (join && sel == 1.0) {
// assume no selectivity was assigned
joinEnum.singleDatasetPreds.add(afcExpr);
}
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
index fab0c7b..715a293 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q16.plan
@@ -33,11 +33,11 @@
-- HASH_PARTITION_EXCHANGE [$$133, $$134] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- NESTED_LOOP |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$138][$$137] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$138][$$137] |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -46,20 +46,20 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.item) |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.supplier) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.item) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.supplier) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
index 737237c..fa7aebe 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
@@ -41,59 +41,59 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$354][$$365] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.nation) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$351, $$350][$$352, $$362] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$351, $$350] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$355][$$366] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.supplier) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$355] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$351, $$350][$$352, $$362] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$354][$$365] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$354] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.stock) |PARTITIONED|
+ -- DATASOURCE_SCAN (test.nation) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$365] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.supplier) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$366] |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.stock) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$352, $$362] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- UNNEST |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
index 19bf0b1..e58b399 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
@@ -23,21 +23,21 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$274, $$290][$$266, $$269] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$274, $$290] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$256][$$257] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$256] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$258][$$274] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$258] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$260, $$254, $$263][$$276, $$277, $$278] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$260, $$254, $$263] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$245, $$246][$$254, $$281] |PARTITIONED|
@@ -63,7 +63,7 @@
-- DATASOURCE_SCAN (test.orders) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$276, $$277, $$278] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
@@ -71,7 +71,7 @@
-- DATASOURCE_SCAN (test.customer) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$274] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
@@ -79,7 +79,7 @@
-- DATASOURCE_SCAN (test.nation) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$257] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -88,7 +88,7 @@
-- DATASOURCE_SCAN (test.region) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$266, $$269] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
index 91cd909..b17c6bc 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
@@ -18,87 +18,85 @@
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$303, $$324][$$277, $$300] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$277][$$303] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$324][$$300] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$324] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$310, $$311][$$275, $$276] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$305, $$306, $$307][$$291, $$293, $$295] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$288][$$304] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$288] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$304][$$288] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$291, $$293, $$295][$$305, $$306, $$307] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$291, $$293, $$295] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- NESTED_LOOP |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$275, $$276][$$310, $$311] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$275, $$276] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.nation) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- REPLICATE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.stock) |PARTITIONED|
+ -- DATASOURCE_SCAN (test.nation) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$310, $$311] |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- STREAM_SELECT |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- UNNEST |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$305, $$306, $$307] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.customer) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.customer) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$304] |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- STREAM_SELECT |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
+ -- UNNEST |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.nation) |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$300] |PARTITIONED|
+ -- DATASOURCE_SCAN (test.orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.supplier) |PARTITIONED|
+ -- DATASOURCE_SCAN (test.stock) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- REPLICATE |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (test.nation) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (test.supplier) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
index 16343e7..cf15f10 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
@@ -24,25 +24,25 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$347][$$341] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$347] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$308][$$309] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$308] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$311][$$331] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$311] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$313, $$315, $$317][$$333, $$334, $$332] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$313, $$315, $$317] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$306][$$324] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$306] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$296, $$295][$$306, $$336] |PARTITIONED|
@@ -68,7 +68,7 @@
-- DATASOURCE_SCAN (test.orders) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$324] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -77,7 +77,7 @@
-- DATASOURCE_SCAN (test.item) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$333, $$334, $$332] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
@@ -85,7 +85,7 @@
-- DATASOURCE_SCAN (test.customer) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$331] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -96,7 +96,7 @@
-- DATASOURCE_SCAN (test.nation) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$309] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -105,7 +105,7 @@
-- DATASOURCE_SCAN (test.region) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$341] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
index 7283aa0..6069455 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
@@ -24,13 +24,13 @@
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$228][$$224] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$228] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$206][$$207] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$206] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$200, $$199][$$206, $$217] |PARTITIONED|
@@ -54,7 +54,7 @@
-- DATASOURCE_SCAN (test.orders) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$207] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -63,7 +63,7 @@
-- DATASOURCE_SCAN (test.item) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$224] |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
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 ec40853..85fa62d 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|
- -- STREAM_PROJECT |LOCAL|
- -- ASSIGN |LOCAL|
+ -- ONE_TO_ONE_EXCHANGE |LOCAL|
+ -- REPLICATE |LOCAL|
-- ONE_TO_ONE_EXCHANGE |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|
+ -- 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|
-- 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 890a253..e9f6596 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
@@ -30,15 +30,15 @@
}
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STABLE_SORT [$$47(ASC)] |PARTITIONED|
- -- HASH_PARTITION_EXCHANGE [$$47] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- HYBRID_HASH_JOIN [$$47][$$49] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$47] |PARTITIONED|
-- DATASOURCE_SCAN (test.s) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$49] |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 d6e9fa9..6792ec5 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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$23] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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 de7e790..30c5399 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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$23] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$23] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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 9ba625b..22ea58a 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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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 148d1b0..84a9315 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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$22] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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 d6e9fa9..6792ec5 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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$23] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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 de7e790..30c5399 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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$23] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |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|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$23] |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|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$#1] |PARTITIONED|
-- ASSIGN |UNPARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
index c1f2aff..cd5de62 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
@@ -21,15 +21,8 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$122][$$126] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$126][$$122] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$126] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -38,6 +31,13 @@
-- DATASOURCE_SCAN (tpch.LineItem) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$122] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
index c970de6..27e4f5f 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
@@ -17,22 +17,12 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$122][$$125] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$125][$$122] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$124][$$118] |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
- -- UNNEST |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$118][$$124] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -41,3 +31,13 @@
-- DATASOURCE_SCAN (tpch.LineItem) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
index d037732..daf42e8 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
@@ -23,22 +23,12 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$122][$$125] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$125][$$122] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$124][$$118] |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
- -- UNNEST |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$118][$$124] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -47,6 +37,16 @@
-- DATASOURCE_SCAN (tpch.LineItem) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- AGGREGATE |UNPARTITIONED|
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
@@ -69,22 +69,12 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$122][$$125] |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$125][$$122] |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$124][$$118] |PARTITIONED|
- -- RANDOM_PARTITION_EXCHANGE |PARTITIONED|
- -- UNNEST |UNPARTITIONED|
- -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$118][$$124] |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -93,3 +83,13 @@
-- DATASOURCE_SCAN (tpch.LineItem) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- UNNEST |UNPARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
+ -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
index b926894..03a4f96 100644
--- a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
+++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
@@ -27,15 +27,8 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$122][$$126] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$126][$$122] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$126] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -44,6 +37,13 @@
-- DATASOURCE_SCAN (tpch.LineItem) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$122] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
@@ -73,15 +73,8 @@
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- HYBRID_HASH_JOIN [$$122][$$126] |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- STREAM_PROJECT |PARTITIONED|
- -- ASSIGN |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
- -- BROADCAST_EXCHANGE |PARTITIONED|
+ -- HYBRID_HASH_JOIN [$$126][$$122] |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$126] |PARTITIONED|
-- STREAM_PROJECT |PARTITIONED|
-- STREAM_SELECT |PARTITIONED|
-- ASSIGN |PARTITIONED|
@@ -90,6 +83,13 @@
-- DATASOURCE_SCAN (tpch.LineItem) |PARTITIONED|
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
-- EMPTY_TUPLE_SOURCE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$122] |PARTITIONED|
+ -- STREAM_PROJECT |PARTITIONED|
+ -- ASSIGN |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- DATASOURCE_SCAN (tpch.Orders) |PARTITIONED|
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
-- BROADCAST_EXCHANGE |PARTITIONED|
-- UNNEST |UNPARTITIONED|
-- EMPTY_TUPLE_SOURCE |UNPARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
index 333e491..46521c5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/single-collection-queries/single-collection-queries.4.plan
@@ -1,30 +1,30 @@
-distribute result [$$48] [cardinality: 1500.0, op-cost: 0.0, total-cost: 4491.54]
+distribute result [$$48] [cardinality: 1495.77, op-cost: 0.0, total-cost: 4491.54]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 4491.54]
+ exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 4491.54]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$48]) [cardinality: 1500.0, op-cost: 0.0, total-cost: 4491.54]
+ project ([$$48]) [cardinality: 1495.77, op-cost: 0.0, total-cost: 4491.54]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$48] <- [{"$1": $$51}] [cardinality: 1500.0, op-cost: 0.0, total-cost: 4491.54]
+ assign [$$48] <- [{"$1": $$51}] [cardinality: 1495.77, op-cost: 0.0, total-cost: 4491.54]
-- ASSIGN |PARTITIONED|
- project ([$$51]) [cardinality: 1500.0, op-cost: 0.0, total-cost: 4491.54]
+ project ([$$51]) [cardinality: 1495.77, op-cost: 0.0, total-cost: 4491.54]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 4491.54]
+ exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 4491.54]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$o_orderdate := $$54]) decor ([]) {
aggregate [$$51] <- [sql-sum-serial($$53)] [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: 1500.0, op-cost: 1495.77, total-cost: 4491.54]
+ } [cardinality: 1495.77, op-cost: 1495.77, total-cost: 4491.54]
-- EXTERNAL_GROUP_BY[$$54] |PARTITIONED|
- exchange [cardinality: 1500.0, op-cost: 0.0, total-cost: 2995.77]
+ exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 2995.77]
-- HASH_PARTITION_EXCHANGE [$$54] |PARTITIONED|
group by ([$$54 := $$49]) decor ([]) {
aggregate [$$53] <- [sql-count-serial(1)] [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: 1500.0, op-cost: 1495.77, total-cost: 2995.77]
+ } [cardinality: 1495.77, op-cost: 1495.77, total-cost: 2995.77]
-- EXTERNAL_GROUP_BY[$$49] |PARTITIONED|
exchange [cardinality: 1495.77, op-cost: 0.0, total-cost: 1500.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -43,4 +43,4 @@
assign [$$55] <- [5] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- EMPTY_TUPLE_SOURCE |PARTITIONED|
\ No newline at end of file
+ -- EMPTY_TUPLE_SOURCE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan
index 29b2e72..6443cbc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.007.plan
@@ -1,18 +1,18 @@
-distribute result [$$d] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$d] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$d]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- SORT_MERGE_EXCHANGE [$$20(ASC) ] |PARTITIONED|
- order (ASC, $$20) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$20) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STABLE_SORT [$$20(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d, $$20]) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ project ([$$d, $$20]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- select (and(gt($$19, "1"), lt($$19, "3"))) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select (and(gt($$19, "1"), lt($$19, "3"))) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
assign [$$19] <- [$$d.getField("a")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- ASSIGN |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan
index 8f1e8e5..b1679c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.009.plan
@@ -1,18 +1,18 @@
-distribute result [$$d] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- SORT_MERGE_EXCHANGE [$$20(ASC) ] |PARTITIONED|
- order (ASC, $$20) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$20) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STABLE_SORT [$$20(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d, $$20]) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ project ([$$d, $$20]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- select (and(gt($$19, 1), lt($$19, 3))) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select (and(gt($$19, 1), lt($$19, 3))) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
assign [$$19] <- [$$d.getField("a")] [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- ASSIGN |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan
index 3b70b19..7675958 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.011.plan
@@ -1,18 +1,18 @@
-distribute result [$$d] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$d] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$d]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- SORT_MERGE_EXCHANGE [$$28(ASC) ] |PARTITIONED|
- order (ASC, $$28) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$28) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STABLE_SORT [$$28(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d, $$28]) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ project ([$$d, $$28]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$26) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select ($$26) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan
index 15f3bc60..48b09a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.015.plan
@@ -1,18 +1,18 @@
-distribute result [$$d] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$d] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$d]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- SORT_MERGE_EXCHANGE [$$28(ASC) ] |PARTITIONED|
- order (ASC, $$28) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$28) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STABLE_SORT [$$28(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d, $$28]) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ project ([$$d, $$28]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$26) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select ($$26) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan
index b9513d6..b21c699 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.021.plan
@@ -1,16 +1,16 @@
-distribute result [$$item] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$item] [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$item]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$item]) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- SORT_MERGE_EXCHANGE [$$27(ASC), $$item(ASC) ] |PARTITIONED|
- order (ASC, $$27) (ASC, $$item) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$27) (ASC, $$item) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STABLE_SORT [$$27(ASC), $$item(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (eq($$item, 100)) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select (eq($$item, 100)) [cardinality: 1.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$27, $$item]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan
index d104fce..8bc1c8c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.023.plan
@@ -1,16 +1,16 @@
-distribute result [$$item] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$item] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$item]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$item]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- SORT_MERGE_EXCHANGE [$$27(ASC), $$item(ASC) ] |PARTITIONED|
- order (ASC, $$27) (ASC, $$item) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$27) (ASC, $$item) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STABLE_SORT [$$27(ASC), $$item(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (gt($$item, 10000)) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select (gt($$item, 10000)) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$27, $$item]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
index 9f5018d..d8a8cd0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/001/001.025.plan
@@ -1,20 +1,20 @@
-distribute result [$$31] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$31] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$31]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$31]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$31] <- [{"a": $$34, "item": $$item}] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ assign [$$31] <- [{"a": $$34, "item": $$item}] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- ASSIGN |PARTITIONED|
- project ([$$34, $$item]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$34, $$item]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- SORT_MERGE_EXCHANGE [$$35(ASC), $$34(ASC), $$item(ASC) ] |PARTITIONED|
- order (ASC, $$35) (ASC, $$34) (ASC, $$item) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$35) (ASC, $$34) (ASC, $$item) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.0]
-- STABLE_SORT [$$35(ASC), $$34(ASC), $$item(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (gt($$item, 10)) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select (gt($$item, 10)) [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$35, $$34, $$item]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan
index 9936002..3be0e8f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/005/005.008.plan
@@ -1,18 +1,18 @@
-distribute result [$$48] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$48] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ project ([$$48]) [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$48] <- [{"$1": $$50}] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ assign [$$48] <- [{"$1": $$50}] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ aggregate [$$50] <- [agg-sql-sum($$52)] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ aggregate [$$52] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- AGGREGATE |PARTITIONED|
- select (gt(numeric-add($$D, 1), 2018)) [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ select (gt(numeric-add($$D, 1), 2018)) [cardinality: 2.0, op-cost: 0.0, total-cost: 30.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$D]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan
index a66d6a8..73b314b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/006/006.010.plan
@@ -1,18 +1,18 @@
-distribute result [$$51] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+distribute result [$$51] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$51]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ project ([$$51]) [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$51] <- [{"$1": $$53}] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ assign [$$51] <- [{"$1": $$53}] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$53] <- [agg-sql-sum($$57)] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ aggregate [$$53] <- [agg-sql-sum($$57)] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ aggregate [$$57] <- [agg-sql-count(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- AGGREGATE |PARTITIONED|
- select ($$44) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.0]
+ select ($$44) [cardinality: 1.0, op-cost: 0.0, total-cost: 8.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$44]) [cardinality: 8.0, op-cost: 0.0, total-cost: 8.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan
index 307a75a..dfc23ab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/007/007.010.plan
@@ -1,18 +1,18 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+distribute result [$$37] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ project ([$$37]) [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$37] <- [{"$1": $$39}] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ assign [$$37] <- [{"$1": $$39}] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$39] <- [agg-sql-sum($$42)] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ aggregate [$$39] <- [agg-sql-sum($$42)] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$42] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ aggregate [$$42] <- [agg-sql-count(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- AGGREGATE |PARTITIONED|
- select (array-contains($$C.getField("checkin_times").getField("dates"), "2018-05-25")) [cardinality: 2.1, op-cost: 0.0, total-cost: 30.0]
+ select (array-contains($$C.getField("checkin_times").getField("dates"), "2018-05-25")) [cardinality: 1.0, op-cost: 0.0, total-cost: 30.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$C]) [cardinality: 30.0, op-cost: 0.0, total-cost: 30.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan
index d5c9c4e..c523b20 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.101.plan
@@ -1,18 +1,18 @@
-distribute result [$$d] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$d] [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$d]) [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 17.61]
-- SORT_MERGE_EXCHANGE [$$20(ASC) ] |PARTITIONED|
- order (ASC, $$20) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$20) [cardinality: 5.0, op-cost: 11.61, total-cost: 17.61]
-- STABLE_SORT [$$20(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 5.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d, $$20]) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ project ([$$d, $$20]) [cardinality: 5.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$18) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select ($$18) [cardinality: 5.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$20, $$d, $$18]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
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 b4d870f..b1b4bc2 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
@@ -1,16 +1,16 @@
-distribute result [$$d] [cardinality: 6.0, op-cost: 0.0, total-cost: 41.94]
+distribute result [$$d] [cardinality: 6.0, op-cost: 0.0, total-cost: 37.02]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 41.94]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 37.02]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 6.0, op-cost: 0.0, total-cost: 41.94]
+ project ([$$d]) [cardinality: 6.0, op-cost: 0.0, total-cost: 37.02]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 41.94]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 37.02]
-- SORT_MERGE_EXCHANGE [$$24(ASC) ] |PARTITIONED|
- project ([$$d, $$24]) [cardinality: 6.0, op-cost: 0.0, total-cost: 41.94]
+ project ([$$d, $$24]) [cardinality: 6.0, op-cost: 0.0, total-cost: 37.02]
-- STREAM_PROJECT |PARTITIONED|
select ($$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 41.94]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 37.02]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$24 := $$20]) decor ([$$d]) {
aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
@@ -19,11 +19,11 @@
-- STREAM_SELECT |LOCAL|
nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 6.0, op-cost: 17.97, total-cost: 41.94]
+ } [cardinality: 6.0, op-cost: 15.51, total-cost: 37.02]
-- PRE_CLUSTERED_GROUP_BY[$$20] |PARTITIONED|
- exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 23.97]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 21.51]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$20) [cardinality: 6.0, op-cost: 17.97, total-cost: 23.97]
+ order (ASC, $$20) [cardinality: 6.0, op-cost: 15.51, total-cost: 21.51]
-- STABLE_SORT [$$20(ASC)] |PARTITIONED|
exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- HASH_PARTITION_EXCHANGE [$$20] |PARTITIONED|
@@ -31,7 +31,7 @@
-- 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: 6.6, op-cost: 12.6, total-cost: 29.1]
+ left outer join (not(if-missing-or-null(neq($$21, $#1), false))) [cardinality: 6.0, op-cost: 6.0, total-cost: 17.0]
-- 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/not-in_every/not-in_every.301.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan
index 232b103..ec838b6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/filter/not-in_every/not-in_every.301.plan
@@ -1,18 +1,18 @@
-distribute result [$$d] [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+distribute result [$$d] [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d]) [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ project ([$$d]) [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 8.25]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 10.75]
-- SORT_MERGE_EXCHANGE [$$28(ASC) ] |PARTITIONED|
- order (ASC, $$28) [cardinality: 2.1, op-cost: 2.25, total-cost: 8.25]
+ order (ASC, $$28) [cardinality: 3.0, op-cost: 4.75, total-cost: 10.75]
-- STABLE_SORT [$$28(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$d, $$28]) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ project ([$$d, $$28]) [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$26) [cardinality: 2.1, op-cost: 0.0, total-cost: 6.0]
+ select ($$26) [cardinality: 3.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_SELECT |PARTITIONED|
project ([$$28, $$d, $$26]) [cardinality: 6.0, op-cost: 0.0, total-cost: 6.0]
-- STREAM_PROJECT |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
index 809fffc..9f01ff8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.004.plan
@@ -1,26 +1,26 @@
-distribute result [$$18] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$18] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$18]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$18]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$18] <- [{"display_url": $$22}] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$18] <- [{"display_url": $$22}] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$22]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$22]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- SORT_MERGE_EXCHANGE [$$20(ASC) ] |PARTITIONED|
- order (ASC, $$20) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$20) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$20(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$22, $$20]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$22, $$20]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$22] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$22] <- [get-item($$p.getField("entities").getField("urls"), 0).getField("display_url")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$20, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$20, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
index ff4f100..4c75f25 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.006.plan
@@ -1,32 +1,32 @@
-distribute result [$$22] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$22] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$22]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$22]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$22] <- [{"display_url": $$27}] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$22] <- [{"display_url": $$27}] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$27]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$27]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- SORT_MERGE_EXCHANGE [$$25(ASC) ] |PARTITIONED|
- order (ASC, $$25) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$25) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$25(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$27, $$25]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$27, $$25]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$27] <- [array-star($$24).getField("display_url")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$27] <- [array-star($$24).getField("display_url")] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- select (not(is-missing($$24))) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (not(is-missing($$24))) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_SELECT |PARTITIONED|
- project ([$$25, $$24]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$25, $$24]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$24] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$24] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
index b8e63d5..8631f06 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.008.plan
@@ -1,30 +1,30 @@
-distribute result [$$28] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$28] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$28]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$28]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$28] <- [{"display_url": $$urls.getField("display_url")}] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$urls]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$urls]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- SORT_MERGE_EXCHANGE [$$30(ASC) ] |PARTITIONED|
- order (ASC, $$30) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$30) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$30(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$urls, $$30]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$urls, $$30]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- unnest $$urls <- scan-collection($$31) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ unnest $$urls <- scan-collection($$31) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- UNNEST |PARTITIONED|
- project ([$$30, $$31]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$30, $$31]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$31] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$31] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$30, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$30, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
index e50e0db..0579a38 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.010.plan
@@ -1,16 +1,16 @@
-distribute result [$$50] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+distribute result [$$50] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$50] <- [agg-sql-sum($$54)] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ aggregate [$$50] <- [agg-sql-sum($$54)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$54] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ aggregate [$$54] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- AGGREGATE |PARTITIONED|
- select ($$42) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select ($$42) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_SELECT |PARTITIONED|
- project ([$$42]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$42]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
subplan {
aggregate [$$42] <- [empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
@@ -23,17 +23,17 @@
-- UNNEST |LOCAL|
nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- NESTED_TUPLE_SOURCE |LOCAL|
- } [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ } [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- SUBPLAN |PARTITIONED|
- project ([$$51]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$51]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$51] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$51] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$p]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$p]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$49, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$49, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
index 1ed05d54..7355bbe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/array-access-pushdown/array-access-pushdown.012.plan
@@ -1,26 +1,26 @@
-distribute result [$$19] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$19]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$19]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$19] <- [get-item(get-item(get-item($$25.getField("coordinates"), 0), 0), 0)] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$19] <- [get-item(get-item(get-item($$25.getField("coordinates"), 0), 0), 0)] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$25]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$25]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- SORT_MERGE_EXCHANGE [$$21(ASC) ] |PARTITIONED|
- order (ASC, $$21) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$21) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$21(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$25, $$21]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$25, $$21]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$25] <- [$$p.getField("place").getField("bounding_box")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$25] <- [$$p.getField("place").getField("bounding_box")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$21, $$p] <- test.ColumnDataset project ({place:{bounding_box:{coordinates:[[[any]]]}}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$21, $$p] <- test.ColumnDataset project ({place:{bounding_box:{coordinates:[[[any]]]}}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
index 8dd8690..2f7637f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.010.plan
@@ -1,24 +1,24 @@
-distribute result [$$18] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$18] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$18]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$18]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$18] <- [{"id": $$20.getField("id"), "name": $$20.getField("name")}] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$18] <- [{"id": $$20.getField("id"), "name": $$20.getField("name")}] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$20]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$20]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$20] <- [$$p.getField("user")] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$20] <- [$$p.getField("user")] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$p]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$p]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- SORT_MERGE_EXCHANGE [$$21(ASC) ] |PARTITIONED|
- order (ASC, $$21) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$21) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$21(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$21, $$p] <- test.ColumnDataset4 project ({user:{name:any,id:any}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$21, $$p] <- test.ColumnDataset4 project ({user:{name:any,id:any}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
index c4b9b3b..46ba8c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/field-access-pushdown/field-access-pushdown.012.plan
@@ -1,16 +1,16 @@
-distribute result [$$34] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+distribute result [$$34] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- aggregate [$$34] <- [agg-sql-sum($$35)] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ aggregate [$$34] <- [agg-sql-sum($$35)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$35] <- [agg-sql-count(1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ aggregate [$$35] <- [agg-sql-count(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- AGGREGATE |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$33, $$p] <- test.ColumnDataset4 project ({}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$33, $$p] <- test.ColumnDataset4 project ({}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
index 47546eb..76ba916 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.012.plan
@@ -1,28 +1,28 @@
-distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$32]) [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ project ([$$32]) [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$32] <- [{"c1": $$40, "c2": $$41}] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ assign [$$32] <- [{"c1": $$40, "c2": $$41}] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ] |PARTITIONED|
- order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 23.25]
+ order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
-- STABLE_SORT [$$40(ASC), $$41(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$40, $$41]) [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ project ([$$40, $$41]) [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- STREAM_PROJECT |PARTITIONED|
- select (eq($$37, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 10.5, total-cost: 21.0]
+ select (eq($$37, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
-- STREAM_SELECT |PARTITIONED|
- assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ASSIGN |PARTITIONED|
- project ([$$40, $$37, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$40, $$37, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
index 90f5172..e3ab5d1 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.014.plan
@@ -1,30 +1,30 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$37] <- [{"c1": $$47, "c2": $$48}] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ assign [$$37] <- [{"c1": $$47, "c2": $$48}] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ] |PARTITIONED|
- order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 23.25]
+ order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
-- STABLE_SORT [$$47(ASC), $$48(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$47, $$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ project ([$$47, $$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- STREAM_PROJECT |PARTITIONED|
- select (eq($$42, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 10.5, total-cost: 21.0]
+ select (eq($$42, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
-- STREAM_SELECT |PARTITIONED|
- select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_SELECT |PARTITIONED|
- assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ASSIGN |PARTITIONED|
- project ([$$47, $$42, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$47, $$42, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
assign [$$42] <- [to-string($$t1.getField("c_s"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
- select (eq($$t1.getField("c_i64"), 2)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_SELECT |PARTITIONED|
assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
@@ -52,7 +52,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
index a93082e..9f54990 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.021.plan
@@ -1,28 +1,28 @@
-distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$32]) [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ project ([$$32]) [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$32] <- [{"c1": $$40, "c2": $$41}] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ assign [$$32] <- [{"c1": $$40, "c2": $$41}] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ] |PARTITIONED|
- order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 23.25]
+ order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
-- STABLE_SORT [$$40(ASC), $$41(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$40, $$41]) [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ project ([$$40, $$41]) [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- STREAM_PROJECT |PARTITIONED|
- select (eq($$37, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 10.5, total-cost: 21.0]
+ select (eq($$37, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
-- STREAM_SELECT |PARTITIONED|
- assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ASSIGN |PARTITIONED|
- project ([$$40, $$37, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$40, $$37, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$36, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$45, 1, $$45, true, true, true) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ unnest-map [$$36, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$45, 1, $$45, true, true, true) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$35, $$t1] <- test.TestOpenColumn1 project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
index acadbbd..f9b8fa0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.023.plan
@@ -1,30 +1,30 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$37] <- [{"c1": $$47, "c2": $$48}] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ assign [$$37] <- [{"c1": $$47, "c2": $$48}] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ] |PARTITIONED|
- order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 23.25]
+ order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
-- STABLE_SORT [$$47(ASC), $$48(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$47, $$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ project ([$$47, $$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- STREAM_PROJECT |PARTITIONED|
- select (eq($$42, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 10.5, total-cost: 21.0]
+ select (eq($$42, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
-- STREAM_SELECT |PARTITIONED|
- select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_SELECT |PARTITIONED|
- assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ASSIGN |PARTITIONED|
- project ([$$47, $$42, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$47, $$42, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$41, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$52, 1, $$52, true, true, true) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ unnest-map [$$41, $$t2] <- index-search("TestOpenRow2", 0, "Default", "test", "TestOpenRow2", true, false, 1, $$52, 1, $$52, true, true, true) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
assign [$$42] <- [to-string($$t1.getField("c_s"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
- select (eq($$t1.getField("c_i64"), 2)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_SELECT |PARTITIONED|
assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
@@ -52,7 +52,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$40, $$t1] <- test.TestOpenColumn1 project ({c_i64:any,c_s:any,c_x:any}) filter on: eq($$t1.getField("c_i64"), 2) range-filter on: eq($$t1.getField("c_i64"), 2) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
index ddb3f27..446cab5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.031.plan
@@ -1,28 +1,28 @@
-distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+distribute result [$$32] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$32]) [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ project ([$$32]) [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$32] <- [{"c1": $$40, "c2": $$41}] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ assign [$$32] <- [{"c1": $$40, "c2": $$41}] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- SORT_MERGE_EXCHANGE [$$40(ASC), $$41(ASC) ] |PARTITIONED|
- order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 23.25]
+ order (ASC, $$40) (ASC, $$41) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
-- STABLE_SORT [$$40(ASC), $$41(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$40, $$41]) [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ project ([$$40, $$41]) [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- STREAM_PROJECT |PARTITIONED|
- select (eq($$37, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 10.5, total-cost: 21.0]
+ select (eq($$37, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
-- STREAM_SELECT |PARTITIONED|
- assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$41] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ASSIGN |PARTITIONED|
- project ([$$40, $$37, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$40, $$37, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ unnest-map [$$36, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$45, 1, $$45, true, true, true) project ({c_s:any,c_x:any}) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$35, $$t1] <- test.TestOpenRow1 [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$35, $$t1] <- test.TestOpenRow1 [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
index a8e1b83..dce1f3f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/join/condition-pushdown/condition-pushdown.033.plan
@@ -1,30 +1,30 @@
-distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$37] <- [{"c1": $$47, "c2": $$48}] [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ assign [$$37] <- [{"c1": $$47, "c2": $$48}] [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 23.25]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 13.35]
-- SORT_MERGE_EXCHANGE [$$47(ASC), $$48(ASC) ] |PARTITIONED|
- order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 23.25]
+ order (ASC, $$47) (ASC, $$48) [cardinality: 2.1, op-cost: 2.25, total-cost: 13.35]
-- STABLE_SORT [$$47(ASC), $$48(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$47, $$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 21.0]
+ project ([$$47, $$48]) [cardinality: 2.1, op-cost: 0.0, total-cost: 11.1]
-- STREAM_PROJECT |PARTITIONED|
- select (eq($$42, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 10.5, total-cost: 21.0]
+ select (eq($$42, $$t2.getField("c_s"))) [cardinality: 2.1, op-cost: 6.1, total-cost: 11.1]
-- STREAM_SELECT |PARTITIONED|
- select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq($$t2.getField("c_i64"), 2.25)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_SELECT |PARTITIONED|
- assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$48] <- [$$t2.getField("c_x")] [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ASSIGN |PARTITIONED|
- project ([$$47, $$42, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$47, $$42, $$t2]) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ unnest-map [$$41, $$t2] <- index-search("TestOpenColumn2", 0, "Default", "test", "TestOpenColumn2", true, false, 1, $$52, 1, $$52, true, true, true) project ({c_i64:any,c_s:any,c_x:any}) range-filter on: eq($$t2.getField("c_i64"), 2.25) [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
assign [$$42] <- [to-string($$t1.getField("c_s"))] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
- select (eq($$t1.getField("c_i64"), 2)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq($$t1.getField("c_i64"), 2)) [cardinality: 1.0, op-cost: 0.0, total-cost: 1.0]
-- STREAM_SELECT |PARTITIONED|
assign [$$47] <- [$$t1.getField("c_x")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ASSIGN |PARTITIONED|
@@ -52,7 +52,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$40, $$t1] <- test.TestOpenRow1 [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$40, $$t1] <- test.TestOpenRow1 [cardinality: 1.0, op-cost: 1.0, total-cost: 1.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan
index 6168bb4..f003312 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.004.plan
@@ -1,38 +1,38 @@
-distribute result [$$61] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+distribute result [$$61] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$61]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ project ([$$61]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$61] <- [{"$1": $$66, "$2": $$67}] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ assign [$$61] <- [{"$1": $$66, "$2": $$67}] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$66, $$67] <- [agg-global-sql-sum($$70), agg-global-sql-sum($$71)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ aggregate [$$66, $$67] <- [agg-global-sql-sum($$70), agg-global-sql-sum($$71)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$70, $$71] <- [agg-local-sql-sum($$54), agg-local-sql-sum($$59)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ aggregate [$$70, $$71] <- [agg-local-sql-sum($$54), agg-local-sql-sum($$59)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- AGGREGATE |PARTITIONED|
- project ([$$54, $$59]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ project ([$$54, $$59]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$59, $$54] <- [object-length($$p2), object-length($$p1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ assign [$$59, $$54] <- [object-length($$p2), object-length($$p1)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ASSIGN |PARTITIONED|
- project ([$$p1, $$p2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ project ([$$p1, $$p2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$63, $$62)) [cardinality: 2.1, op-cost: 4.2, total-cost: 12.6]
+ join (eq($$63, $$62)) [cardinality: 2.1, op-cost: 4.0, total-cost: 12.0]
-- HYBRID_HASH_JOIN [$$62][$$63] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 2.1, total-cost: 4.2]
+ exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- HASH_PARTITION_EXCHANGE [$$62] |PARTITIONED|
- data-scan []<-[$$62, $$p1] <- test.ColumnDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$62, $$p1] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.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: 2.1, op-cost: 2.1, total-cost: 4.2]
+ exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- HASH_PARTITION_EXCHANGE [$$63] |PARTITIONED|
- data-scan []<-[$$63, $$p2] <- test.RowDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$63, $$p2] <- test.RowDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan
index f2c16a9..9bc4e63 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.006.plan
@@ -1,28 +1,28 @@
-distribute result [$$p1] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.6]
+distribute result [$$p1] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.6]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.6]
+ project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.6]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.0]
-- SORT_MERGE_EXCHANGE [$$16(ASC) ] |PARTITIONED|
- order (ASC, $$16) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.6]
+ order (ASC, $$16) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.0]
-- STABLE_SORT [$$16(ASC)] |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- distinct ([$$p1]) [cardinality: 2.0, op-cost: 2.25, total-cost: 6.6]
+ distinct ([$$p1]) [cardinality: 2.0, op-cost: 2.0, total-cost: 6.0]
-- PRE_SORTED_DISTINCT_BY |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$p1) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$p1) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$p1(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$p1] |PARTITIONED|
- select (neq($$16, "0")) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (neq($$16, "0")) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$16, $$p1] <- test.ColumnDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$16, $$p1] <- test.ColumnDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan
index 366a247..e95038f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.008.plan
@@ -1,56 +1,52 @@
-distribute result [$$69] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+distribute result [$$69] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$69]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ project ([$$69]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$69] <- [{"text": $$text, "$1": $$73}] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ assign [$$69] <- [{"text": $$text, "$1": $$73}] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- SORT_MERGE_EXCHANGE [$$text(ASC) ] |PARTITIONED|
- order (ASC, $$text) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.3]
- -- STABLE_SORT [$$text(ASC)] |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.3]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- group by ([$$text := $$81]) decor ([]) {
- aggregate [$$73] <- [global-sql-sum-serial($$80)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ group by ([$$text := $$81]) decor ([]) {
+ aggregate [$$73] <- [agg-global-sql-sum($$80)] [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: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- SORT_GROUP_BY[$$81] |PARTITIONED|
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- HASH_PARTITION_EXCHANGE [$$81] |PARTITIONED|
+ group by ([$$81 := $$71]) decor ([]) {
+ aggregate [$$80] <- [agg-local-sql-sum(sql-count($$75))] [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: 2.1, total-cost: 6.3]
- -- EXTERNAL_GROUP_BY[$$81] |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.2]
- -- HASH_PARTITION_EXCHANGE [$$81] |PARTITIONED|
- group by ([$$81 := $$71]) decor ([]) {
- aggregate [$$80] <- [local-sql-sum-serial(sql-count($$75))] [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: 2.1, total-cost: 4.2]
- -- EXTERNAL_GROUP_BY[$$71] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (eq(lowercase($$71), "string")) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- STREAM_SELECT |PARTITIONED|
- project ([$$75, $$71]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- STREAM_PROJECT |PARTITIONED|
- assign [$$71] <- [$$ht.getField("display_url")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- ASSIGN |PARTITIONED|
- unnest $$ht <- scan-collection($$75) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- UNNEST |PARTITIONED|
- project ([$$75]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ } [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- SORT_GROUP_BY[$$71] |PARTITIONED|
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ select (eq(lowercase($$71), "string")) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- STREAM_SELECT |PARTITIONED|
+ project ([$$75, $$71]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$71] <- [$$ht.getField("display_url")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- ASSIGN |PARTITIONED|
+ unnest $$ht <- scan-collection($$75) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- UNNEST |PARTITIONED|
+ project ([$$75]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$75] <- [$$p1.getField("entities").getField("urls")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- ASSIGN |PARTITIONED|
+ project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$75] <- [$$p1.getField("entities").getField("urls")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- ASSIGN |PARTITIONED|
- project ([$$p1]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- STREAM_PROJECT |PARTITIONED|
- select (neq($$72, "0")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (neq($$72, "0")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- STREAM_SELECT |PARTITIONED|
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$72, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$72, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
- -- 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|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan
index 964914b..625c281 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.010.plan
@@ -1,58 +1,54 @@
-distribute result [$$68] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+distribute result [$$68] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$68]) [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ project ([$$68]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$68] <- [{"text": $$text, "$1": $$72}] [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ assign [$$68] <- [{"text": $$text, "$1": $$72}] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 8.3]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- SORT_MERGE_EXCHANGE [$$text(ASC) ] |PARTITIONED|
- order (ASC, $$text) [cardinality: 2.0, op-cost: 2.0, total-cost: 8.3]
- -- STABLE_SORT [$$text(ASC)] |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 6.3]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- group by ([$$text := $$79]) decor ([]) {
- aggregate [$$72] <- [global-sql-sum-serial($$78)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ group by ([$$text := $$79]) decor ([]) {
+ aggregate [$$72] <- [agg-global-sql-sum($$78)] [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: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- SORT_GROUP_BY[$$79] |PARTITIONED|
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- HASH_PARTITION_EXCHANGE [$$79] |PARTITIONED|
+ group by ([$$79 := $$70]) decor ([]) {
+ aggregate [$$78] <- [agg-local-sql-sum(sql-sum($$75))] [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: 2.1, total-cost: 6.3]
- -- EXTERNAL_GROUP_BY[$$79] |PARTITIONED|
- exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.2]
- -- HASH_PARTITION_EXCHANGE [$$79] |PARTITIONED|
- group by ([$$79 := $$70]) decor ([]) {
- aggregate [$$78] <- [local-sql-sum-serial(sql-sum($$75))] [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: 2.1, total-cost: 4.2]
- -- EXTERNAL_GROUP_BY[$$70] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (eq(lowercase($$70), "string")) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- STREAM_SELECT |PARTITIONED|
- project ([$$75, $$70]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ } [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- SORT_GROUP_BY[$$70] |PARTITIONED|
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ select (eq(lowercase($$70), "string")) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
+ -- STREAM_SELECT |PARTITIONED|
+ project ([$$75, $$70]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- STREAM_PROJECT |PARTITIONED|
+ assign [$$75, $$70] <- [$$ht.getField("indices"), $$ht.getField("display_url")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- ASSIGN |PARTITIONED|
+ project ([$$ht]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$75, $$70] <- [$$ht.getField("indices"), $$ht.getField("display_url")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- ASSIGN |PARTITIONED|
- project ([$$ht]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ unnest $$ht <- scan-collection($$74) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- UNNEST |PARTITIONED|
+ project ([$$74]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- unnest $$ht <- scan-collection($$74) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- UNNEST |PARTITIONED|
- project ([$$74]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$74] <- [$$p1.getField("entities").getField("urls")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- ASSIGN |PARTITIONED|
+ project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$74] <- [$$p1.getField("entities").getField("urls")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- ASSIGN |PARTITIONED|
- project ([$$p1]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
- -- STREAM_PROJECT |PARTITIONED|
- select (neq($$71, "0")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
- -- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (neq($$71, "0")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ -- STREAM_SELECT |PARTITIONED|
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
+ -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ data-scan []<-[$$71, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any,indices:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
+ -- DATASOURCE_SCAN |PARTITIONED|
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$71, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any,indices:any}]}}) filter on: eq(lowercase(scan-collection($$p1.getField("entities").getField("urls")).getField("display_url")), "string") [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
- -- 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|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan
index 8f9fcf0..56818bf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.012.plan
@@ -1,32 +1,32 @@
-distribute result [$$22] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$22] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$22]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$22]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$22] <- [{"display_url": $$27}] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$22] <- [{"display_url": $$27}] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$27]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$27]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- SORT_MERGE_EXCHANGE [$$25(ASC) ] |PARTITIONED|
- order (ASC, $$25) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$25) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$25(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$27, $$25]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$27, $$25]) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$27] <- [get-item($$24, 0).getField("display_url")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$27] <- [get-item($$24, 0).getField("display_url")] [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- select (eq(sql-count($$24), 1)) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (eq(sql-count($$24), 1)) [cardinality: 1.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_SELECT |PARTITIONED|
- project ([$$25, $$24]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$25, $$24]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$24] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$24] <- [$$p.getField("entities").getField("urls")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$25, $$p] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan
index a214af8..d3f44d6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.014.plan
@@ -1,42 +1,42 @@
-distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+distribute result [$$101] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$101]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ project ([$$101]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$101] <- [{"uname": $$uname, "cnt": $$105}] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ assign [$$101] <- [{"uname": $$uname, "cnt": $$105}] [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- SORT_MERGE_EXCHANGE [$$105(DESC), $$uname(ASC) ] |PARTITIONED|
- order (DESC, $$105) (ASC, $$uname) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ order (DESC, $$105) (ASC, $$uname) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- STABLE_SORT [$$105(DESC), $$uname(ASC)] |PARTITIONED|
- exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$uname := $$116]) decor ([]) {
aggregate [$$105] <- [agg-sql-sum($$115)] [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: 6.6]
+ } [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- SORT_GROUP_BY[$$116] |PARTITIONED|
- exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- HASH_PARTITION_EXCHANGE [$$116] |PARTITIONED|
group by ([$$116 := $$102]) decor ([]) {
aggregate [$$115] <- [agg-sql-count(1)] [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: 6.6]
+ } [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- SORT_GROUP_BY[$$102] |PARTITIONED|
- exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ project ([$$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- STREAM_PROJECT |PARTITIONED|
select ($$92) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_SELECT |PARTITIONED|
- project ([$$92, $$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ project ([$$92, $$102]) [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.6]
+ exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 6.5]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
group by ([$$114 := $$112]) decor ([$$102]) {
aggregate [$$92] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
@@ -45,41 +45,41 @@
-- 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: 2.25, total-cost: 6.6]
+ } [cardinality: 0.0, op-cost: 2.25, total-cost: 6.5]
-- PRE_CLUSTERED_GROUP_BY[$$112] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.25]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$112) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$112) [cardinality: 2.0, op-cost: 2.25, total-cost: 4.25]
-- STABLE_SORT [$$112(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$112] |PARTITIONED|
- project ([$$102, $$113, $$112]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$102, $$113, $$112]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left outer join (eq($$106, $$88)) [cardinality: 2.1, op-cost: 4.2, total-cost: 12.6]
+ left outer join (eq($$106, $$88)) [cardinality: 2.1, op-cost: 2.0, total-cost: 8.0]
-- HYBRID_HASH_JOIN [$$106][$$88] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$106] |PARTITIONED|
- running-aggregate [$$112] <- [create-query-uid()] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ running-aggregate [$$112] <- [create-query-uid()] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- RUNNING_AGGREGATE |PARTITIONED|
- project ([$$102, $$106]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$102, $$106]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$106] <- [$$ht1.getField("display_url")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$106] <- [$$ht1.getField("display_url")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$102, $$ht1]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$102, $$ht1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- unnest $$ht1 <- scan-collection($$107) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ unnest $$ht1 <- scan-collection($$107) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- UNNEST |PARTITIONED|
- project ([$$107, $$102]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$107, $$102]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$107, $$102] <- [$$p1.getField("entities").getField("urls"), $$p1.getField("user").getField("name")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$107, $$102] <- [$$p1.getField("entities").getField("urls"), $$p1.getField("user").getField("name")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$p1]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$p1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$103, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]},user:{name:any}}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$103, $$p1] <- test.ColumnDataset project ({entities:{urls:[{display_url:any}]},user:{name:any}}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -103,7 +103,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$104, $$p2] <- test.RowDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$104, $$p2] <- test.RowDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan
index 2c56948..69b9fe2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/column/pushdown/other-pushdowns/other-pushdowns.015.plan
@@ -1,52 +1,52 @@
-distribute result [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+distribute result [$$52] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$52]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ project ([$$52]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$52] <- [{"$1": $$57}] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ assign [$$52] <- [{"$1": $$57}] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$57] <- [agg-sql-sum($$60)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ aggregate [$$57] <- [agg-sql-sum($$60)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- AGGREGATE |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- aggregate [$$60] <- [agg-sql-count($$50)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ aggregate [$$60] <- [agg-sql-count($$50)] [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- AGGREGATE |PARTITIONED|
- project ([$$50]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ project ([$$50]) [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.6]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 12.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$55, $$56)) [cardinality: 2.1, op-cost: 4.2, total-cost: 12.6]
+ join (eq($$55, $$56)) [cardinality: 2.1, op-cost: 4.0, total-cost: 12.0]
-- HYBRID_HASH_JOIN [$$55][$$56] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 2.1, total-cost: 4.2]
+ exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- HASH_PARTITION_EXCHANGE [$$55] |PARTITIONED|
- assign [$$50] <- [$$55.getField("y")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$50] <- [$$55.getField("y")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [$$c.getField("x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [$$c.getField("x")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$c]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$c]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 2.1, total-cost: 4.2]
+ exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$c] <- test.ColumnDataset project ({x:any}) [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$c] <- test.ColumnDataset project ({x:any}) [cardinality: 2.0, op-cost: 2.0, total-cost: 2.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: 2.1, op-cost: 2.1, total-cost: 4.2]
+ exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- HASH_PARTITION_EXCHANGE [$$56] |PARTITIONED|
- project ([$$56]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$56]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$56] <- [$$r.getField("x")] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$56] <- [$$r.getField("x")] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- project ([$$r]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$r]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 2.1, total-cost: 4.2]
+ exchange [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$54, $$r] <- test.RowDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$54, $$r] <- test.RowDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
index 252264a..1361fdb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
@@ -1,60 +1,60 @@
-distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ] |PARTITIONED|
- order (ASC, $$53) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 26.65]
+ order (ASC, $$53) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 25.75]
-- STABLE_SORT [$$53(ASC), $$54(ASC)] |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$53, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ project ([$$53, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$62) [cardinality: 3.0, op-cost: 11.4, total-cost: 21.9]
+ select ($$62) [cardinality: 3.0, op-cost: 11.0, total-cost: 21.0]
-- STREAM_SELECT |PARTITIONED|
- window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- WINDOW_STREAM |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$53) (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ order (ASC, $$53) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$53(ASC), $$54(DESC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$53] |PARTITIONED|
- project ([$$53, $$54]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$54]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_SELECT |PARTITIONED|
- project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$61) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ order (ASC, $$61) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$61(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$53, $$55, $$61]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$53, $$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [int32($$t1.getField("c_int32"))] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [int32($$t1.getField("c_int32"))] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index db7e8fc..ce7648e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -1,62 +1,62 @@
-distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ] |PARTITIONED|
- order (ASC, $$73) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 26.65]
+ order (ASC, $$73) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 25.75]
-- STABLE_SORT [$$73(ASC), $$54(ASC)] |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$73, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ project ([$$73, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$74) [cardinality: 3.0, op-cost: 11.4, total-cost: 21.9]
+ select ($$74) [cardinality: 3.0, op-cost: 11.0, total-cost: 21.0]
-- STREAM_SELECT |PARTITIONED|
- window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- WINDOW_STREAM |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$73) (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ order (ASC, $$73) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$73(ASC), $$54(DESC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$73] |PARTITIONED|
- union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- UNION_ALL |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$70, $$53]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$70, $$53]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$53, $$55, $$61]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- split ($$62) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- SPLIT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$53, $$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [int32($$t1.getField("c_int32"))] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [int32($$t1.getField("c_int32"))] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -72,21 +72,21 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- split ($$62) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- SPLIT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$53, $$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [int32($$t1.getField("c_int32"))] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [int32($$t1.getField("c_int32"))] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$t1] <- test.ds_outer_untyped [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
index ce1a0a4..354bace 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
@@ -1,60 +1,60 @@
-distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ assign [$$52] <- [{"t1_id": $$53, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- SORT_MERGE_EXCHANGE [$$53(ASC), $$54(ASC) ] |PARTITIONED|
- order (ASC, $$53) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 26.65]
+ order (ASC, $$53) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 25.75]
-- STABLE_SORT [$$53(ASC), $$54(ASC)] |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$53, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ project ([$$53, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$62) [cardinality: 3.0, op-cost: 11.4, total-cost: 21.9]
+ select ($$62) [cardinality: 3.0, op-cost: 11.0, total-cost: 21.0]
-- STREAM_SELECT |PARTITIONED|
- window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ window-aggregate [$$62] <- [win-mark-first-missing-impl($$54)] partition [$$53] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- WINDOW_STREAM |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$53) (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ order (ASC, $$53) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$53(ASC), $$54(DESC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$53] |PARTITIONED|
- project ([$$53, $$54]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$54]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
select (eq($$55, $$t2.getField("c_int32"))) retain-untrue ($$54 <- missing) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_SELECT |PARTITIONED|
- project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55, $$54, $$t2]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$61) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ order (ASC, $$61) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$61(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$53, $$55, $$61]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$53, $$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [int32($$t1.getField(1))] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [int32($$t1.getField(1))] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 74c21b9..0e7b3a6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -1,62 +1,62 @@
-distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+distribute result [$$52] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ project ([$$52]) [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ assign [$$52] <- [{"t1_id": $$73, "t2_id": $$54}] [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 26.65]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 25.75]
-- SORT_MERGE_EXCHANGE [$$73(ASC), $$54(ASC) ] |PARTITIONED|
- order (ASC, $$73) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 26.65]
+ order (ASC, $$73) (ASC, $$54) [cardinality: 3.0, op-cost: 4.75, total-cost: 25.75]
-- STABLE_SORT [$$73(ASC), $$54(ASC)] |PARTITIONED|
- exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$73, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.9]
+ project ([$$73, $$54]) [cardinality: 3.0, op-cost: 0.0, total-cost: 21.0]
-- STREAM_PROJECT |PARTITIONED|
- select ($$74) [cardinality: 3.0, op-cost: 11.4, total-cost: 21.9]
+ select ($$74) [cardinality: 3.0, op-cost: 11.0, total-cost: 21.0]
-- STREAM_SELECT |PARTITIONED|
- window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ window-aggregate [$$74] <- [win-mark-first-missing-impl($$54)] partition [$$73] order (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- WINDOW_STREAM |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- order (ASC, $$73) (DESC, $$54) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ order (ASC, $$73) (DESC, $$54) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STABLE_SORT [$$73(ASC), $$54(DESC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- HASH_PARTITION_EXCHANGE [$$73] |PARTITIONED|
- union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ union ($$70, $$61, $$54) ($$53, $$53, $$73) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- UNION_ALL |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$70, $$53]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$70, $$53]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
select (eq($$55, $$71.getField(1))) retain-untrue ($$70 <- missing) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$53, $$55, $$61]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55, $$61]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- split ($$62) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- SPLIT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$53, $$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [int32($$t1.getField(1))] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [int32($$t1.getField(1))] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -72,21 +72,21 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- split ($$62) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ split ($$62) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- SPLIT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$53, $$55]) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ project ([$$53, $$55]) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$55] <- [int32($$t1.getField(1))] [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ assign [$$55] <- [int32($$t1.getField(1))] [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$53, $$t1] <- test.ds_outer_typed [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
index 38c5f61..08a8317 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
@@ -1,18 +1,18 @@
-distribute result [$$c] [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$c] [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 5 offset 5 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 5 offset 5 [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 10 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 10 [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$c]) [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ project ([$$c]) [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 1152.42, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$18, $$19, $$c] <- test.LineItem condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+ data-scan []<-[$$18, $$19, $$c] <- test.LineItem condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 1152.42, op-cost: 6005.0, total-cost: 6005.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
index a9d2b4f..653da45 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
@@ -1,24 +1,24 @@
-distribute result [$$20] [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$20] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 5 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- project ([$$20]) [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ project ([$$20]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ assign [$$20] <- [{"shipdate": substring($$c.getField(10), 0, 4), "suppkey": gt($$21, 0)}] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ASSIGN |PARTITIONED|
- limit 5 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |PARTITIONED|
- assign [$$21] <- [$$c.getField(2)] [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ assign [$$21] <- [$$c.getField(2)] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ASSIGN |PARTITIONED|
- project ([$$c]) [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ project ([$$c]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$22, $$23, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+ data-scan []<-[$$22, $$23, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
index f5fb51e..d6b8239 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
@@ -1,18 +1,18 @@
-distribute result [$$c] [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$c] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 5 offset 5 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 5 offset 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 10 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 10 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$c]) [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ project ([$$c]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$15, $$16, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+ data-scan []<-[$$15, $$16, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
index 7aa0db8..f5a335b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
@@ -1,18 +1,18 @@
-distribute result [$$c] [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+distribute result [$$c] [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 5 offset 5 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 5 offset 5 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 10 [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ limit 10 [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$c]) [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ project ([$$c]) [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 6005.0, op-cost: 0.0, total-cost: 6005.0]
+ exchange [cardinality: 6010.65, op-cost: 0.0, total-cost: 6005.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$17, $$18, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6005.0, op-cost: 6005.0, total-cost: 6005.0]
+ data-scan []<-[$$17, $$18, $$c] <- test.LineItem condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 6010.65, op-cost: 6005.0, total-cost: 6005.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.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.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
index 6427067..cdc4cc7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.3.plan
@@ -1,18 +1,18 @@
-distribute result [$$paper] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$paper] [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 5 offset 5 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ limit 5 offset 5 [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 10 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ limit 10 [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$paper]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ project ([$$paper]) [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 24.0, op-cost: 0.0, total-cost: 100.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$15, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+ data-scan []<-[$$15, $$paper] <- test.DBLP1 condition (contains($$paper.getField(1), "kimL89")) limit 10 [cardinality: 24.0, op-cost: 100.0, total-cost: 100.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.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 afebd75..44c16f4 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: 2.1, op-cost: 0.0, total-cost: 316.8]
+distribute result [$$37] [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 2 [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ limit 2 [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ project ([$$37]) [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$37] <- [{"dblpid": $$38}] [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ assign [$$37] <- [{"dblpid": $$38}] [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- ASSIGN |PARTITIONED|
- limit 2 [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ limit 2 [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$38]) [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ project ([$$38]) [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 316.8]
+ exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 304.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- join (eq($$38, $$41)) [cardinality: 2.1, op-cost: 108.4, total-cost: 316.8]
+ join (eq($$38, $$41)) [cardinality: 2.1, op-cost: 100.0, total-cost: 304.0]
-- HYBRID_HASH_JOIN [$$38][$$41] |PARTITIONED|
exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
- -- ONE_TO_ONE_EXCHANGE |PARTITIONED|
+ -- HASH_PARTITION_EXCHANGE [$$38] |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]
@@ -34,29 +34,29 @@
-- 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: 100.0, op-cost: 8.4, total-cost: 108.4]
- -- BROADCAST_EXCHANGE |PARTITIONED|
- project ([$$41]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 104.0]
+ -- HASH_PARTITION_EXCHANGE [$$41] |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: 100.0, op-cost: 0.0, total-cost: 100.0]
+ assign [$$41] <- [get-item($$30, 0).getField(0).getField(1)] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- ASSIGN |UNPARTITIONED|
- aggregate [$$30] <- [listify($$29)] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ aggregate [$$30] <- [listify($$29)] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- AGGREGATE |UNPARTITIONED|
- limit 1 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ limit 1 [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 100.0, op-cost: 8.4, total-cost: 108.4]
+ exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 104.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- project ([$$29]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ project ([$$29]) [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$29] <- [{"d": $$d}] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ assign [$$29] <- [{"d": $$d}] [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- ASSIGN |PARTITIONED|
- limit 1 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ limit 1 [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$d]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ project ([$$d]) [cardinality: 1.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 100.0, op-cost: 8.4, total-cost: 108.4]
+ exchange [cardinality: 1.0, op-cost: 4.0, total-cost: 104.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$40, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+ data-scan []<-[$$40, $$d] <- test.DBLP1 condition (ends-with($$d.getField(1), "Blakeley95")) limit 1 [cardinality: 1.0, op-cost: 100.0, total-cost: 100.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.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.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
index 9312e62..92cdd0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.6.plan
@@ -1,26 +1,26 @@
-distribute result [$$19] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+distribute result [$$19] [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 1 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ limit 1 [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- project ([$$19]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ project ([$$19]) [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$19] <- [{"$1": substring($$20, 0, 21)}] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ assign [$$19] <- [{"$1": substring($$20, 0, 21)}] [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- ASSIGN |PARTITIONED|
- limit 1 [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ limit 1 [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$20]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ project ([$$20]) [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$20] <- [$$DBLP1.getField(1)] [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ assign [$$20] <- [$$DBLP1.getField(1)] [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- ASSIGN |PARTITIONED|
- project ([$$DBLP1]) [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ project ([$$DBLP1]) [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 100.0, op-cost: 0.0, total-cost: 100.0]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 100.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$21, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1 [cardinality: 100.0, op-cost: 100.0, total-cost: 100.0]
+ data-scan []<-[$$21, $$DBLP1] <- test.DBLP1 condition (gt($$DBLP1.getField(1), "series")) limit 1 [cardinality: 2.0, op-cost: 100.0, total-cost: 100.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.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.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
index 190a98e..d70573c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan
@@ -1,26 +1,26 @@
-distribute result [$$22] [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+distribute result [$$22] [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 2 [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ limit 2 [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 2 [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ limit 2 [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$22]) [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ project ([$$22]) [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$22] <- [$$26.getField("lang")] [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ assign [$$22] <- [$$26.getField("lang")] [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- ASSIGN |PARTITIONED|
- project ([$$26]) [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ project ([$$26]) [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$26] <- [$$t.getField("user")] [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ assign [$$26] <- [$$t.getField("user")] [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- ASSIGN |PARTITIONED|
- project ([$$t]) [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ project ([$$t]) [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 12.0, op-cost: 0.0, total-cost: 12.0]
+ exchange [cardinality: 3.0, op-cost: 0.0, total-cost: 12.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$25, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2 [cardinality: 12.0, op-cost: 12.0, total-cost: 12.0]
+ data-scan []<-[$$25, $$t] <- test.TweetMessages condition (and(ge($$t.getField("user").getField("friends_count"), 0), le($$t.getField("user").getField("friends_count"), 150))) limit 2 [cardinality: 3.0, op-cost: 12.0, total-cost: 12.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan
index cda317c..2ec98bb 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.4.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$30]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$30]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$30] <- [$$md.getField("name")] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$30] <- [$$md.getField("name")] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$md]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$md]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- SORT_MERGE_EXCHANGE [$$32(ASC) ] |PARTITIONED|
- order (ASC, $$32) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$32) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$32(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (neq(uuid(), uuid())) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (neq(uuid(), uuid())) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan
index 71bc6b0..32dbed9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/objects/load-record-fields/load-record-fields.6.plan
@@ -1,24 +1,24 @@
-distribute result [$$30] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+distribute result [$$30] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- DISTRIBUTE_RESULT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- project ([$$30]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$30]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$30] <- [$$md.getField("name")] [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ assign [$$30] <- [$$md.getField("name")] [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- ASSIGN |PARTITIONED|
- project ([$$md]) [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ project ([$$md]) [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- STREAM_PROJECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 4.35]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 4.0]
-- SORT_MERGE_EXCHANGE [$$32(ASC) ] |PARTITIONED|
- order (ASC, $$32) [cardinality: 2.1, op-cost: 2.25, total-cost: 4.35]
+ order (ASC, $$32) [cardinality: 2.0, op-cost: 2.0, total-cost: 4.0]
-- STABLE_SORT [$$32(ASC)] |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ select (neq(current-date(), date: { 1980-09-10 })) [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- STREAM_SELECT |PARTITIONED|
- exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
+ exchange [cardinality: 2.0, op-cost: 0.0, total-cost: 2.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.1, op-cost: 2.1, total-cost: 2.1]
+ data-scan []<-[$$32, $$md] <- test.MyDataset [cardinality: 2.0, op-cost: 2.0, total-cost: 2.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan
index 38d0890..de730dc 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.08.plan
@@ -1,30 +1,30 @@
-distribute result [$$88] [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+distribute result [$$88] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$88]) [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ project ([$$88]) [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$88] <- [{"id": $$91, "review": $$95}] [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ assign [$$88] <- [{"id": $$91, "review": $$95}] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- ASSIGN |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- order (ASC, $$91) [cardinality: 20.0, op-cost: 2.25, total-cost: 22.25]
+ order (ASC, $$91) [cardinality: 6.0, op-cost: 15.51, total-cost: 35.51]
-- STABLE_SORT [$$91(ASC)] |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$91, $$95]) [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ project ([$$91, $$95]) [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$95] <- [$$d.getField(1)] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ assign [$$95] <- [$$d.getField(1)] [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$91, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3 [cardinality: 20.0, op-cost: 20.0, total-cost: 20.0]
+ data-scan []<-[$$91, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3 [cardinality: 6.0, op-cost: 20.0, total-cost: 20.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan
index 288cbb8..40bee5c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/view/view-pushdown/view-pushdown.12.plan
@@ -1,30 +1,30 @@
-distribute result [$$94] [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+distribute result [$$94] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- DISTRIBUTE_RESULT |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- project ([$$94]) [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ project ([$$94]) [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- STREAM_PROJECT |UNPARTITIONED|
- assign [$$94] <- [{"id": $$97, "review": $$101}] [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ assign [$$94] <- [{"id": $$97, "review": $$101}] [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- ASSIGN |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 22.25]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 35.51]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- order (ASC, $$97) [cardinality: 20.0, op-cost: 2.25, total-cost: 22.25]
+ order (ASC, $$97) [cardinality: 6.0, op-cost: 15.51, total-cost: 35.51]
-- STABLE_SORT [$$97(ASC)] |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- ONE_TO_ONE_EXCHANGE |UNPARTITIONED|
- limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- STREAM_LIMIT |UNPARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- RANDOM_MERGE_EXCHANGE |PARTITIONED|
- limit 3 [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ limit 3 [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- STREAM_LIMIT |PARTITIONED|
- project ([$$97, $$101]) [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ project ([$$97, $$101]) [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- STREAM_PROJECT |PARTITIONED|
- assign [$$101] <- [$$d.getField(1)] [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ assign [$$101] <- [$$d.getField(1)] [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- ASSIGN |PARTITIONED|
- exchange [cardinality: 20.0, op-cost: 0.0, total-cost: 20.0]
+ exchange [cardinality: 6.0, op-cost: 0.0, total-cost: 20.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- data-scan []<-[$$97, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3 [cardinality: 20.0, op-cost: 20.0, total-cost: 20.0]
+ data-scan []<-[$$97, $$d] <- test.DatasetWithKnownField condition (and(not(is-unknown(int64-default-null($$d.getField("year")))), not(is-unknown(int64-default-null($$d.getField("quarter")))), eq($$d.getField(1), "good"))) limit 3 [cardinality: 6.0, op-cost: 20.0, total-cost: 20.0]
-- DATASOURCE_SCAN |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java
index 36ee59f..8a08161 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/AbstractLogicalOperatorPrettyPrintVisitor.java
@@ -29,6 +29,7 @@
import org.apache.hyracks.algebricks.core.algebra.base.OperatorAnnotations;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
@@ -76,7 +77,11 @@
Double opCard;
if (op.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) {
- opCard = (Double) getAnnotationValue(op, OperatorAnnotations.OP_INPUT_CARDINALITY);
+ if (((DataSourceScanOperator) op).getSelectCondition() != null) {
+ opCard = (Double) getAnnotationValue(op, OperatorAnnotations.OP_OUTPUT_CARDINALITY);
+ } else {
+ opCard = (Double) getAnnotationValue(op, OperatorAnnotations.OP_INPUT_CARDINALITY);
+ }
} else {
opCard = (Double) getAnnotationValue(op, OperatorAnnotations.OP_OUTPUT_CARDINALITY);
}