You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2023/01/30 03:27:05 UTC

[asterixdb] 16/30: [ASTERIXDB-3046][COMP] Make ICost comparable

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 <al...@gmail.com>
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 <al...@gmail.com>
    Reviewed-by: Wail Alkowaileet <wa...@gmail.com>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17332
    Reviewed-by: Michael Blow <mb...@apache.org>
    Tested-by: Michael Blow <mb...@apache.org>
---
 .../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();
+
 }