This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit fc007b8105398b37e423ebccc58b90683994b060 Author: Ali Alsuliman <[email protected]> AuthorDate: Tue Sep 20 11:50:53 2022 -0700 [ASTERIXDB-3046][COMP] Make ICost comparable - user model changes: no - storage format changes: no - interface changes: no Change-Id: I230d731d510c8da395539acab8901ee2a388c88c Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17233 Reviewed-by: Ali Alsuliman <[email protected]> Reviewed-by: Wail Alkowaileet <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17332 Reviewed-by: Michael Blow <[email protected]> Tested-by: Michael Blow <[email protected]> --- .../org/apache/asterix/optimizer/cost/Cost.java | 48 +++++++++------------- .../org/apache/asterix/optimizer/cost/ICost.java | 19 ++++----- 2 files changed, 28 insertions(+), 39 deletions(-) diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java index 7e74f91ef1..5dda277f02 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java @@ -22,8 +22,6 @@ package org.apache.asterix.optimizer.cost; public class Cost implements ICost { public static final double MAX_CARD = 1.0e200; - protected static final int COST_GT = 1; - protected static final int COST_LT = -1; protected static final int COST_EQ = 0; private final double cost; @@ -37,63 +35,57 @@ public class Cost implements ICost { } @Override - public Cost zeroCost() { + public ICost zeroCost() { return new Cost(); } @Override - public Cost maxCost() { + public ICost maxCost() { return new Cost(MAX_CARD); } @Override - public Cost costAdd(ICost iCost2) { - return new Cost(this.computeTotalCost() + iCost2.computeTotalCost()); + public ICost costAdd(ICost cost) { + return new Cost(computeTotalCost() + cost.computeTotalCost()); } @Override - public Cost costAdd(ICost iCost2, ICost iCost3) { - return this.costAdd(iCost2.costAdd(iCost3)); + public boolean costEQ(ICost cost) { + return compareTo(cost) == COST_EQ; } @Override - public int costCompare(ICost iCost2) { - if (this.computeTotalCost() > iCost2.computeTotalCost()) { - return COST_GT; - } else if (this.computeTotalCost() < iCost2.computeTotalCost()) { - return COST_LT; - } else { - return COST_EQ; - } + public boolean costLT(ICost cost) { + return compareTo(cost) < COST_EQ; } @Override - public boolean costEQ(ICost iCost2) { - return this.costCompare(iCost2) == COST_EQ; + public boolean costGT(ICost cost) { + return compareTo(cost) > COST_EQ; } @Override - public boolean costLT(ICost iCost2) { - return this.costCompare(iCost2) == COST_LT; + public boolean costLE(ICost cost) { + return compareTo(cost) <= COST_EQ; } @Override - public boolean costGT(ICost iCost2) { - return this.costCompare(iCost2) == COST_GT; + public boolean costGE(ICost cost) { + return compareTo(cost) >= COST_EQ; } @Override - public boolean costLE(ICost iCost2) { - return this.costLT(iCost2) || this.costEQ(iCost2); + public double computeTotalCost() { + return cost; } @Override - public boolean costGE(ICost iCost2) { - return this.costGT(iCost2) || this.costEQ(iCost2); + public int compareTo(ICost cost) { + return Double.compare(computeTotalCost(), cost.computeTotalCost()); } @Override - public double computeTotalCost() { - return this.cost; + public String toString() { + return Double.toString(cost); } } diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java index 6f4c7d7fd5..99c336224e 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java @@ -19,27 +19,24 @@ package org.apache.asterix.optimizer.cost; -public interface ICost { +public interface ICost extends Comparable<ICost> { ICost zeroCost(); ICost maxCost(); - ICost costAdd(ICost cost2); + ICost costAdd(ICost cost); - ICost costAdd(ICost cost2, ICost cost3); + boolean costEQ(ICost cost); - int costCompare(ICost cost2); + boolean costLT(ICost cost); - boolean costEQ(ICost cost2); + boolean costGT(ICost cost); - boolean costLT(ICost cost2); + boolean costLE(ICost cost); - boolean costGT(ICost cost2); - - boolean costLE(ICost cost2); - - boolean costGE(ICost cost2); + boolean costGE(ICost cost); double computeTotalCost(); + }
