Class ReplaceAggregatesWithCRVisitor
- java.lang.Object
-
- org.apache.derby.impl.sql.compile.ReplaceAggregatesWithCRVisitor
-
-
Field Summary
Fields Modifier and Type Field Description private ResultColumnList
rcl
private java.lang.Class<?>
skipOverClass
private int
tableNumber
-
Constructor Summary
Constructors Constructor Description ReplaceAggregatesWithCRVisitor(ResultColumnList rcl, int tableNumber)
Replace all aggregates with column references.ReplaceAggregatesWithCRVisitor(ResultColumnList rcl, int tableNumber, java.lang.Class<?> skipOverClass)
ReplaceAggregatesWithCRVisitor(ResultColumnList rcl, java.lang.Class<?> nodeToSkip)
Replace all aggregates with column references.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
skipChildren(Visitable node)
Don't visit children under the skipOverClass node, if it isn't null.boolean
stopTraversal()
Method that is called to see if query tree traversal should be stopped before visiting all nodes.Visitable
visit(Visitable node)
Don't do anything unless we have an aggregate node.boolean
visitChildrenFirst(Visitable node)
Method that is called to see ifvisit()
should be called on the children ofnode
before it is called onnode
itself.
-
-
-
Field Detail
-
rcl
private ResultColumnList rcl
-
skipOverClass
private java.lang.Class<?> skipOverClass
-
tableNumber
private int tableNumber
-
-
Constructor Detail
-
ReplaceAggregatesWithCRVisitor
ReplaceAggregatesWithCRVisitor(ResultColumnList rcl, int tableNumber)
Replace all aggregates with column references. Add the reference to the RCL. Delegates most work to AggregateNode.replaceAggregatesWithColumnReferences(rcl, tableNumber).- Parameters:
rcl
- the result column listtableNumber
- The tableNumber for the new CRs
-
ReplaceAggregatesWithCRVisitor
ReplaceAggregatesWithCRVisitor(ResultColumnList rcl, int tableNumber, java.lang.Class<?> skipOverClass)
-
ReplaceAggregatesWithCRVisitor
ReplaceAggregatesWithCRVisitor(ResultColumnList rcl, java.lang.Class<?> nodeToSkip)
Replace all aggregates with column references. Add the reference to the RCL. Delegates most work to AggregateNode.replaceAggregatesWithColumnReferences(rcl). Doesn't traverse below the passed in class.- Parameters:
rcl
- the result column listnodeToSkip
- don't examine anything below nodeToSkip
-
-
Method Detail
-
visit
public Visitable visit(Visitable node) throws StandardException
Don't do anything unless we have an aggregate node.- Specified by:
visit
in interfaceVisitor
- Parameters:
node
- the node to process- Returns:
- me
- Throws:
StandardException
- on error
-
skipChildren
public boolean skipChildren(Visitable node)
Don't visit children under the skipOverClass node, if it isn't null.- Specified by:
skipChildren
in interfaceVisitor
- Parameters:
node
- the node to process- Returns:
- true/false
-
visitChildrenFirst
public boolean visitChildrenFirst(Visitable node)
Description copied from interface:Visitor
Method that is called to see ifvisit()
should be called on the children ofnode
before it is called onnode
itself. If this method always returnstrue
, the visitor will walk the tree bottom-up. If it always returnsfalse
, the tree is visited top-down.- Specified by:
visitChildrenFirst
in interfaceVisitor
- Parameters:
node
- the top node of a sub-tree about to be visited- Returns:
true
ifnode
's children should be visited beforenode
,false
otherwise
-
stopTraversal
public boolean stopTraversal()
Description copied from interface:Visitor
Method that is called to see if query tree traversal should be stopped before visiting all nodes. Useful for short circuiting traversal if we already know we are done.- Specified by:
stopTraversal
in interfaceVisitor
- Returns:
- true/false
-
-