Package org.apache.calcite.rex
Class RexInterpreter
- java.lang.Object
-
- org.apache.calcite.rex.RexInterpreter
-
- All Implemented Interfaces:
RexVisitor<java.lang.Comparable>
public class RexInterpreter extends java.lang.Object implements RexVisitor<java.lang.Comparable>
EvaluatesRexNode
expressions.Caveats:
- It uses interpretation, so it is not very efficient.
- It is intended for testing, so does not cover very many functions and operators. (Feel free to contribute more!)
- It is not well tested.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
RexInterpreter.Truthy
An enum that wraps boolean and unknown values and makes them comparable.
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<RexNode,java.lang.Comparable>
environment
private static NullSentinel
N
-
Constructor Summary
Constructors Modifier Constructor Description private
RexInterpreter(java.util.Map<RexNode,java.lang.Comparable> environment)
Creates an interpreter.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.Comparable
case_(java.util.List<java.lang.Comparable> values)
private java.lang.Comparable
cast(RexCall call, java.util.List<java.lang.Comparable> values)
private java.lang.Comparable
ceil(RexCall call, java.util.List<java.lang.Comparable> values)
private java.lang.Comparable
coalesce(RexCall call, java.util.List<java.lang.Comparable> values)
private java.lang.Comparable
compare(java.util.List<java.lang.Comparable> values, java.util.function.IntPredicate p)
private boolean
containsNull(java.util.List<java.lang.Comparable> values)
static java.lang.Comparable
evaluate(RexNode e, java.util.Map<RexNode,java.lang.Comparable> map)
Evaluates an expression in an environment.private java.lang.Comparable
extract(RexCall call, java.util.List<java.lang.Comparable> values)
private java.lang.Comparable
getOrUnbound(RexNode e)
private java.lang.Comparable
not(java.lang.Comparable value)
private java.math.BigDecimal
number(java.lang.Comparable comparable)
private org.apache.calcite.avatica.util.TimeUnitRange
subUnit(org.apache.calcite.avatica.util.TimeUnitRange unit)
private java.lang.IllegalArgumentException
unbound(RexNode e)
java.lang.Comparable
visitCall(RexCall call)
java.lang.Comparable
visitCorrelVariable(RexCorrelVariable correlVariable)
java.lang.Comparable
visitDynamicParam(RexDynamicParam dynamicParam)
java.lang.Comparable
visitFieldAccess(RexFieldAccess fieldAccess)
java.lang.Comparable
visitInputRef(RexInputRef inputRef)
java.lang.Comparable
visitLiteral(RexLiteral literal)
java.lang.Comparable
visitLocalRef(RexLocalRef localRef)
java.lang.Comparable
visitOver(RexOver over)
java.lang.Comparable
visitPatternFieldRef(RexPatternFieldRef fieldRef)
java.lang.Comparable
visitRangeRef(RexRangeRef rangeRef)
java.lang.Comparable
visitSubQuery(RexSubQuery subQuery)
java.lang.Comparable
visitTableInputRef(RexTableInputRef fieldRef)
-
-
-
Field Detail
-
N
private static final NullSentinel N
-
environment
private final java.util.Map<RexNode,java.lang.Comparable> environment
-
-
Constructor Detail
-
RexInterpreter
private RexInterpreter(java.util.Map<RexNode,java.lang.Comparable> environment)
Creates an interpreter.- Parameters:
environment
- Values of certain expressions (usuallyRexInputRef
s)
-
-
Method Detail
-
evaluate
public static java.lang.Comparable evaluate(RexNode e, java.util.Map<RexNode,java.lang.Comparable> map)
Evaluates an expression in an environment.
-
unbound
private java.lang.IllegalArgumentException unbound(RexNode e)
-
getOrUnbound
private java.lang.Comparable getOrUnbound(RexNode e)
-
visitInputRef
public java.lang.Comparable visitInputRef(RexInputRef inputRef)
- Specified by:
visitInputRef
in interfaceRexVisitor<java.lang.Comparable>
-
visitLocalRef
public java.lang.Comparable visitLocalRef(RexLocalRef localRef)
- Specified by:
visitLocalRef
in interfaceRexVisitor<java.lang.Comparable>
-
visitLiteral
public java.lang.Comparable visitLiteral(RexLiteral literal)
- Specified by:
visitLiteral
in interfaceRexVisitor<java.lang.Comparable>
-
visitOver
public java.lang.Comparable visitOver(RexOver over)
- Specified by:
visitOver
in interfaceRexVisitor<java.lang.Comparable>
-
visitCorrelVariable
public java.lang.Comparable visitCorrelVariable(RexCorrelVariable correlVariable)
- Specified by:
visitCorrelVariable
in interfaceRexVisitor<java.lang.Comparable>
-
visitDynamicParam
public java.lang.Comparable visitDynamicParam(RexDynamicParam dynamicParam)
- Specified by:
visitDynamicParam
in interfaceRexVisitor<java.lang.Comparable>
-
visitRangeRef
public java.lang.Comparable visitRangeRef(RexRangeRef rangeRef)
- Specified by:
visitRangeRef
in interfaceRexVisitor<java.lang.Comparable>
-
visitFieldAccess
public java.lang.Comparable visitFieldAccess(RexFieldAccess fieldAccess)
- Specified by:
visitFieldAccess
in interfaceRexVisitor<java.lang.Comparable>
-
visitSubQuery
public java.lang.Comparable visitSubQuery(RexSubQuery subQuery)
- Specified by:
visitSubQuery
in interfaceRexVisitor<java.lang.Comparable>
-
visitTableInputRef
public java.lang.Comparable visitTableInputRef(RexTableInputRef fieldRef)
- Specified by:
visitTableInputRef
in interfaceRexVisitor<java.lang.Comparable>
-
visitPatternFieldRef
public java.lang.Comparable visitPatternFieldRef(RexPatternFieldRef fieldRef)
- Specified by:
visitPatternFieldRef
in interfaceRexVisitor<java.lang.Comparable>
-
visitCall
public java.lang.Comparable visitCall(RexCall call)
- Specified by:
visitCall
in interfaceRexVisitor<java.lang.Comparable>
-
extract
private java.lang.Comparable extract(RexCall call, java.util.List<java.lang.Comparable> values)
-
coalesce
private java.lang.Comparable coalesce(RexCall call, java.util.List<java.lang.Comparable> values)
-
ceil
private java.lang.Comparable ceil(RexCall call, java.util.List<java.lang.Comparable> values)
-
subUnit
private org.apache.calcite.avatica.util.TimeUnitRange subUnit(org.apache.calcite.avatica.util.TimeUnitRange unit)
-
cast
private java.lang.Comparable cast(RexCall call, java.util.List<java.lang.Comparable> values)
-
not
private java.lang.Comparable not(java.lang.Comparable value)
-
case_
private java.lang.Comparable case_(java.util.List<java.lang.Comparable> values)
-
number
private java.math.BigDecimal number(java.lang.Comparable comparable)
-
compare
private java.lang.Comparable compare(java.util.List<java.lang.Comparable> values, java.util.function.IntPredicate p)
-
containsNull
private boolean containsNull(java.util.List<java.lang.Comparable> values)
-
-