org.eigenbase.relopt.volcano
Class VolcanoCost

java.lang.Object
  extended by org.eigenbase.relopt.volcano.VolcanoCost
All Implemented Interfaces:
RelOptCost

 class VolcanoCost
extends Object
implements RelOptCost

VolcanoCost represents the cost of a plan node.

This class is immutable: none of the methods (besides set(double, double, double)) modifies any member variables.


Field Summary
(package private)  double dCpu
           
(package private)  double dIo
           
(package private)  double dRows
           
(package private) static VolcanoCost HUGE
           
(package private) static VolcanoCost INFINITY
           
(package private) static VolcanoCost TINY
           
(package private) static VolcanoCost ZERO
           
 
Constructor Summary
VolcanoCost(double dRows, double dCpu, double dIo)
           
 
Method Summary
 double divideBy(RelOptCost cost)
          Computes the ratio between this cost and another cost.
 boolean equals(RelOptCost other)
          Compares this to another cost.
 double getCpu()
           
 double getIo()
           
 double getRows()
           
 boolean isEqWithEpsilon(RelOptCost other)
          Compares this to another cost, allowing for slight roundoff errors.
 boolean isInfinite()
           
 boolean isLe(RelOptCost other)
          Compares this to another cost.
 boolean isLt(RelOptCost other)
          Compares this to another cost.
 RelOptCost minus(RelOptCost other)
          Subtracts another cost from this.
 RelOptCost multiplyBy(double factor)
          Multiplies this cost by a scalar factor.
 RelOptCost plus(RelOptCost other)
          Adds another cost to this.
 void set(double dRows, double dCpu, double dIo)
           
 String toString()
          Forces implementations to override Object.toString() and provide a good cost rendering to use during tracing.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

INFINITY

static final VolcanoCost INFINITY

HUGE

static final VolcanoCost HUGE

ZERO

static final VolcanoCost ZERO

TINY

static final VolcanoCost TINY

dCpu

double dCpu

dIo

double dIo

dRows

double dRows
Constructor Detail

VolcanoCost

VolcanoCost(double dRows,
            double dCpu,
            double dIo)
Method Detail

getCpu

public double getCpu()
Specified by:
getCpu in interface RelOptCost
Returns:
usage of CPU resources

isInfinite

public boolean isInfinite()
Specified by:
isInfinite in interface RelOptCost
Returns:
true iff this cost represents an expression that hasn't actually been implemented (e.g. a pure relational algebra expression) or can't actually be implemented, e.g. a transfer of data between two disconnected sites

getIo

public double getIo()
Specified by:
getIo in interface RelOptCost
Returns:
usage of I/O resources

isLe

public boolean isLe(RelOptCost other)
Description copied from interface: RelOptCost
Compares this to another cost.

Specified by:
isLe in interface RelOptCost
Parameters:
other - another cost
Returns:
true iff this is less than or equal to other cost

isLt

public boolean isLt(RelOptCost other)
Description copied from interface: RelOptCost
Compares this to another cost.

Specified by:
isLt in interface RelOptCost
Parameters:
other - another cost
Returns:
true iff this is strictly less than other cost

getRows

public double getRows()
Specified by:
getRows in interface RelOptCost
Returns:
number of rows processed; this should not be confused with the row count produced by a relational expression (RelNode.getRows())

equals

public boolean equals(RelOptCost other)
Description copied from interface: RelOptCost
Compares this to another cost.

Specified by:
equals in interface RelOptCost
Parameters:
other - another cost
Returns:
true iff this is exactly equal to other cost

isEqWithEpsilon

public boolean isEqWithEpsilon(RelOptCost other)
Description copied from interface: RelOptCost
Compares this to another cost, allowing for slight roundoff errors.

Specified by:
isEqWithEpsilon in interface RelOptCost
Parameters:
other - another cost
Returns:
true iff this is the same as the other cost within a roundoff margin of error

minus

public RelOptCost minus(RelOptCost other)
Description copied from interface: RelOptCost
Subtracts another cost from this.

Specified by:
minus in interface RelOptCost
Parameters:
other - another cost
Returns:
difference between this and other cost

multiplyBy

public RelOptCost multiplyBy(double factor)
Description copied from interface: RelOptCost
Multiplies this cost by a scalar factor.

Specified by:
multiplyBy in interface RelOptCost
Parameters:
factor - scalar factor
Returns:
scalar product of this and factor

divideBy

public double divideBy(RelOptCost cost)
Description copied from interface: RelOptCost
Computes the ratio between this cost and another cost.

divideBy is the inverse of RelOptCost.multiplyBy(double). For any finite, non-zero cost and factor f, cost.divideBy(cost.multiplyBy(f)) yields 1 / f.

Specified by:
divideBy in interface RelOptCost
Parameters:
cost - Other cost
Returns:
Ratio between costs

plus

public RelOptCost plus(RelOptCost other)
Description copied from interface: RelOptCost
Adds another cost to this.

Specified by:
plus in interface RelOptCost
Parameters:
other - another cost
Returns:
sum of this and other cost

set

public void set(double dRows,
                double dCpu,
                double dIo)

toString

public String toString()
Description copied from interface: RelOptCost
Forces implementations to override Object.toString() and provide a good cost rendering to use during tracing.

Specified by:
toString in interface RelOptCost
Overrides:
toString in class Object