org.eigenbase.rex
Class RexUtil.ExpressionNormalizer

java.lang.Object
  extended by org.eigenbase.rex.RexVisitorImpl<RexNode>
      extended by org.eigenbase.rex.RexUtil.ExpressionNormalizer
All Implemented Interfaces:
RexVisitor<RexNode>
Enclosing class:
RexUtil

private static class RexUtil.ExpressionNormalizer
extends RexVisitorImpl<RexNode>

Walks over expressions and builds a bank of common sub-expressions.


Nested Class Summary
private static class RexUtil.ExpressionNormalizer.SubExprExistsException
          Thrown if there is a sub-expression.
 
Field Summary
(package private)  boolean allowDups
           
(package private)  Map<String,RexNode> mapDigestToExpr
           
 
Fields inherited from class org.eigenbase.rex.RexVisitorImpl
deep
 
Constructor Summary
protected RexUtil.ExpressionNormalizer(boolean allowDups)
           
 
Method Summary
protected  RexNode lookup(RexNode expr)
           
protected  RexNode register(RexNode expr)
           
 RexNode visitCall(RexCall call)
           
 RexNode visitCorrelVariable(RexCorrelVariable correlVariable)
           
 RexNode visitDynamicParam(RexDynamicParam dynamicParam)
           
 RexNode visitFieldAccess(RexFieldAccess fieldAccess)
           
 RexNode visitInputRef(RexInputRef inputRef)
           
 RexNode visitLiteral(RexLiteral literal)
           
 RexNode visitRangeRef(RexRangeRef rangeRef)
           
 
Methods inherited from class org.eigenbase.rex.RexVisitorImpl
visitArrayAnd, visitArrayOr, visitLocalRef, visitOver
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mapDigestToExpr

final Map<String,RexNode> mapDigestToExpr

allowDups

final boolean allowDups
Constructor Detail

RexUtil.ExpressionNormalizer

protected RexUtil.ExpressionNormalizer(boolean allowDups)
Method Detail

register

protected RexNode register(RexNode expr)

lookup

protected RexNode lookup(RexNode expr)

visitInputRef

public RexNode visitInputRef(RexInputRef inputRef)
Specified by:
visitInputRef in interface RexVisitor<RexNode>
Overrides:
visitInputRef in class RexVisitorImpl<RexNode>

visitLiteral

public RexNode visitLiteral(RexLiteral literal)
Specified by:
visitLiteral in interface RexVisitor<RexNode>
Overrides:
visitLiteral in class RexVisitorImpl<RexNode>

visitCorrelVariable

public RexNode visitCorrelVariable(RexCorrelVariable correlVariable)
Specified by:
visitCorrelVariable in interface RexVisitor<RexNode>
Overrides:
visitCorrelVariable in class RexVisitorImpl<RexNode>

visitCall

public RexNode visitCall(RexCall call)
Specified by:
visitCall in interface RexVisitor<RexNode>
Overrides:
visitCall in class RexVisitorImpl<RexNode>

visitDynamicParam

public RexNode visitDynamicParam(RexDynamicParam dynamicParam)
Specified by:
visitDynamicParam in interface RexVisitor<RexNode>
Overrides:
visitDynamicParam in class RexVisitorImpl<RexNode>

visitRangeRef

public RexNode visitRangeRef(RexRangeRef rangeRef)
Specified by:
visitRangeRef in interface RexVisitor<RexNode>
Overrides:
visitRangeRef in class RexVisitorImpl<RexNode>

visitFieldAccess

public RexNode visitFieldAccess(RexFieldAccess fieldAccess)
Specified by:
visitFieldAccess in interface RexVisitor<RexNode>
Overrides:
visitFieldAccess in class RexVisitorImpl<RexNode>