Package org.apache.calcite.rel.rules
Class ReduceExpressionsRule.ReducibleExprLocator
- java.lang.Object
-
- org.apache.calcite.rex.RexVisitorImpl<java.lang.Void>
-
- org.apache.calcite.rel.rules.ReduceExpressionsRule.ReducibleExprLocator
-
- All Implemented Interfaces:
RexVisitor<java.lang.Void>
- Enclosing class:
- ReduceExpressionsRule
protected static class ReduceExpressionsRule.ReducibleExprLocator extends RexVisitorImpl<java.lang.Void>
Helper class used to locate expressions that either can be reduced to literals or contain redundant casts.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
ReduceExpressionsRule.ReducibleExprLocator.Constancy
Whether an expression is constant, and if so, whether it can be reduced to a simpler constant.
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<java.lang.Boolean>
addCasts
private com.google.common.collect.ImmutableMap<RexNode,RexNode>
constants
private java.util.List<RexNode>
constExprs
private java.util.Deque<SqlOperator>
parentCallTypeStack
private java.util.List<RexNode>
removableCasts
private java.util.List<ReduceExpressionsRule.ReducibleExprLocator.Constancy>
stack
private RelDataTypeFactory
typeFactory
-
Fields inherited from class org.apache.calcite.rex.RexVisitorImpl
deep
-
-
Constructor Summary
Constructors Constructor Description ReducibleExprLocator(RelDataTypeFactory typeFactory, com.google.common.collect.ImmutableMap<RexNode,RexNode> constants, java.util.List<RexNode> constExprs, java.util.List<java.lang.Boolean> addCasts, java.util.List<RexNode> removableCasts)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addResult(RexNode exp)
void
analyze(RexNode exp)
private void
analyzeCall(RexCall call, ReduceExpressionsRule.ReducibleExprLocator.Constancy callConstancy)
private java.lang.Boolean
isUdf(SqlOperator operator)
private java.lang.Void
pushVariable()
private void
reduceCasts(RexCall outerCast)
java.lang.Void
visitCall(RexCall call)
java.lang.Void
visitCorrelVariable(RexCorrelVariable variable)
java.lang.Void
visitDynamicParam(RexDynamicParam dynamicParam)
java.lang.Void
visitFieldAccess(RexFieldAccess fieldAccess)
java.lang.Void
visitInputRef(RexInputRef inputRef)
java.lang.Void
visitLiteral(RexLiteral literal)
java.lang.Void
visitOver(RexOver over)
java.lang.Void
visitRangeRef(RexRangeRef rangeRef)
java.lang.Void
visitSubQuery(RexSubQuery subQuery)
-
Methods inherited from class org.apache.calcite.rex.RexVisitorImpl
visitArrayAnd, visitArrayOr, visitLocalRef, visitPatternFieldRef, visitTableInputRef
-
-
-
-
Field Detail
-
typeFactory
private final RelDataTypeFactory typeFactory
-
stack
private final java.util.List<ReduceExpressionsRule.ReducibleExprLocator.Constancy> stack
-
constExprs
private final java.util.List<RexNode> constExprs
-
addCasts
private final java.util.List<java.lang.Boolean> addCasts
-
removableCasts
private final java.util.List<RexNode> removableCasts
-
parentCallTypeStack
private final java.util.Deque<SqlOperator> parentCallTypeStack
-
-
Constructor Detail
-
ReducibleExprLocator
ReducibleExprLocator(RelDataTypeFactory typeFactory, com.google.common.collect.ImmutableMap<RexNode,RexNode> constants, java.util.List<RexNode> constExprs, java.util.List<java.lang.Boolean> addCasts, java.util.List<RexNode> removableCasts)
-
-
Method Detail
-
analyze
public void analyze(RexNode exp)
-
pushVariable
private java.lang.Void pushVariable()
-
addResult
private void addResult(RexNode exp)
-
isUdf
private java.lang.Boolean isUdf(SqlOperator operator)
-
visitInputRef
public java.lang.Void visitInputRef(RexInputRef inputRef)
- Specified by:
visitInputRef
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitInputRef
in classRexVisitorImpl<java.lang.Void>
-
visitLiteral
public java.lang.Void visitLiteral(RexLiteral literal)
- Specified by:
visitLiteral
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitLiteral
in classRexVisitorImpl<java.lang.Void>
-
visitOver
public java.lang.Void visitOver(RexOver over)
- Specified by:
visitOver
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitOver
in classRexVisitorImpl<java.lang.Void>
-
visitCorrelVariable
public java.lang.Void visitCorrelVariable(RexCorrelVariable variable)
- Specified by:
visitCorrelVariable
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitCorrelVariable
in classRexVisitorImpl<java.lang.Void>
-
visitCall
public java.lang.Void visitCall(RexCall call)
- Specified by:
visitCall
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitCall
in classRexVisitorImpl<java.lang.Void>
-
visitSubQuery
public java.lang.Void visitSubQuery(RexSubQuery subQuery)
- Specified by:
visitSubQuery
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitSubQuery
in classRexVisitorImpl<java.lang.Void>
-
analyzeCall
private void analyzeCall(RexCall call, ReduceExpressionsRule.ReducibleExprLocator.Constancy callConstancy)
-
reduceCasts
private void reduceCasts(RexCall outerCast)
-
visitDynamicParam
public java.lang.Void visitDynamicParam(RexDynamicParam dynamicParam)
- Specified by:
visitDynamicParam
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitDynamicParam
in classRexVisitorImpl<java.lang.Void>
-
visitRangeRef
public java.lang.Void visitRangeRef(RexRangeRef rangeRef)
- Specified by:
visitRangeRef
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitRangeRef
in classRexVisitorImpl<java.lang.Void>
-
visitFieldAccess
public java.lang.Void visitFieldAccess(RexFieldAccess fieldAccess)
- Specified by:
visitFieldAccess
in interfaceRexVisitor<java.lang.Void>
- Overrides:
visitFieldAccess
in classRexVisitorImpl<java.lang.Void>
-
-