org.eigenbase.rel.rules
Class PushProjector.InputSpecialOpFinder

java.lang.Object
  extended by org.eigenbase.rex.RexVisitorImpl<Void>
      extended by org.eigenbase.rel.rules.PushProjector.InputSpecialOpFinder
All Implemented Interfaces:
RexVisitor<Void>
Enclosing class:
PushProjector

private class PushProjector.InputSpecialOpFinder
extends RexVisitorImpl<Void>

Visitor which builds a bitmap of the inputs used by an expressions, as well as locating expressions corresponding to special operators.


Field Summary
private  BitSet leftFields
           
private  PushProjector.ExprCondition preserveExprCondition
           
private  List<RexNode> preserveLeft
           
private  List<RexNode> preserveRight
           
private  BitSet rexRefs
           
private  BitSet rightFields
           
 
Fields inherited from class org.eigenbase.rex.RexVisitorImpl
deep
 
Constructor Summary
PushProjector.InputSpecialOpFinder(BitSet rexRefs, BitSet leftFields, BitSet rightFields, PushProjector.ExprCondition preserveExprCondition, List<RexNode> preserveLeft, List<RexNode> preserveRight)
           
 
Method Summary
private  void addExpr(List<RexNode> exprList, RexNode newExpr)
          Adds an expression to a list if the same expression isn't already in the list.
 void apply(RexNode[] exprs, RexNode expr)
          Applies this visitor to an array of expressions and an optional single expression.
private  boolean preserve(RexNode call)
           
 Void visitCall(RexCall call)
           
 Void visitInputRef(RexInputRef inputRef)
           
 
Methods inherited from class org.eigenbase.rex.RexVisitorImpl
visitArrayAnd, visitArrayOr, visitCorrelVariable, visitDynamicParam, visitFieldAccess, visitLiteral, visitLocalRef, visitOver, visitRangeRef
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rexRefs

private final BitSet rexRefs

leftFields

private final BitSet leftFields

rightFields

private final BitSet rightFields

preserveExprCondition

private final PushProjector.ExprCondition preserveExprCondition

preserveLeft

private final List<RexNode> preserveLeft

preserveRight

private final List<RexNode> preserveRight
Constructor Detail

PushProjector.InputSpecialOpFinder

public PushProjector.InputSpecialOpFinder(BitSet rexRefs,
                                          BitSet leftFields,
                                          BitSet rightFields,
                                          PushProjector.ExprCondition preserveExprCondition,
                                          List<RexNode> preserveLeft,
                                          List<RexNode> preserveRight)
Method Detail

visitCall

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

preserve

private boolean preserve(RexNode call)

visitInputRef

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

apply

public void apply(RexNode[] exprs,
                  RexNode expr)
Applies this visitor to an array of expressions and an optional single expression.


addExpr

private void addExpr(List<RexNode> exprList,
                     RexNode newExpr)
Adds an expression to a list if the same expression isn't already in the list. Expressions are identical if their digests are the same.

Parameters:
exprList - current list of expressions
newExpr - new expression to be added