You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2009/10/27 13:42:07 UTC
svn commit: r830154 - in /db/derby/code/trunk/java/engine/org/apache/derby:
iapi/sql/compile/ impl/sql/compile/
Author: kahatlen
Date: Tue Oct 27 12:42:04 2009
New Revision: 830154
URL: http://svn.apache.org/viewvc?rev=830154&view=rev
Log:
DERBY-4421: Allow visitors to process the nodes bottom-up
Added the method visitChildrenFirst() to the Visitor interface to
allow the visitor to specify whether they should walk the tree
top-down or bottom-up. Implemented the method in all existing visitors
and made it return false to preserve the current behaviour with
top-down walking.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Visitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTableNumbersVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryListOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CallStatementNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CoalesceFunctionNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CollectNodesVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConditionalNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateViewNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLStatementNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromVTI.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByColumn.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasCorrelatedCRsVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasNodeVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasVariantValueNodeVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashTableNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/IndexToBaseRowNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NonStaticMethodCallNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OrderByColumn.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/Predicate.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReferencedTablesVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RemapCRsVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceAggregatesWithCRVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceWindowFuncCallsWithCRVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultColumn.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultSetNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SQLToJavaValueNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubqueryNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VTIDeferModPolicy.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VerifyAggregateExpressionsVisitor.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Visitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Visitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Visitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Visitor.java Tue Oct 27 12:42:04 2009
@@ -65,6 +65,19 @@
throws StandardException;
/**
+ * Method that is called to see if {@code visit()} should be called on
+ * the children of {@code node} before it is called on {@code node} itself.
+ * If this method always returns {@code true}, the visitor will walk the
+ * tree bottom-up. If it always returns {@code false}, the tree is visited
+ * top-down.
+ *
+ * @param node the top node of a sub-tree about to be visited
+ * @return {@code true} if {@code node}'s children should be visited
+ * before {@code node}, {@code false} otherwise
+ */
+ boolean visitChildrenFirst(Visitable node);
+
+ /**
* Method that is called to see
* if query tree traversal should be
* stopped before visiting all nodes.
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTableNumbersVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTableNumbersVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTableNumbersVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTableNumbersVisitor.java Tue Oct 27 12:42:04 2009
@@ -223,4 +223,12 @@
return false;
}
+ /**
+ * @see org.apache.derby.iapi.sql.compile.Visitor#visitChildrenFirst
+ */
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryListOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryListOperatorNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryListOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryListOperatorNode.java Tue Oct 27 12:42:04 2009
@@ -375,22 +375,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (leftOperand != null && !v.stopTraversal())
{
@@ -401,8 +395,6 @@
{
rightOperandList = (ValueNodeList)rightOperandList.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryOperatorNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BinaryOperatorNode.java Tue Oct 27 12:42:04 2009
@@ -853,22 +853,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (leftOperand != null && !v.stopTraversal())
{
@@ -879,8 +873,6 @@
{
rightOperand = (ValueNode)rightOperand.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CallStatementNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CallStatementNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CallStatementNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CallStatementNode.java Tue Oct 27 12:42:04 2009
@@ -239,29 +239,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (!v.stopTraversal())
{
methodCall = (JavaToSQLValueNode) methodCall.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java Tue Oct 27 12:42:04 2009
@@ -975,29 +975,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (castOperand != null && !v.stopTraversal())
{
castOperand = (ValueNode)castOperand.accept(v);
}
-
- return returnNode;
}
/** This method gets called by the parser to indiciate that this CAST node
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CoalesceFunctionNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CoalesceFunctionNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CoalesceFunctionNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CoalesceFunctionNode.java Tue Oct 27 12:42:04 2009
@@ -379,23 +379,25 @@
}
return true;
}
- public Visitable accept(Visitor v) throws StandardException
+
+ /**
+ * Accept the visitor for all visitable children of this node.
+ *
+ * @param v the visitor
+ * @throws StandardException on error in the visitor
+ */
+ void acceptChildren(Visitor v) throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this) || v.stopTraversal())
- {
- return returnNode;
- }
-
+ super.acceptChildren(v);
+
int size = argumentsList.size();
for (int index = 0; index < size; index++)
{
argumentsList.setElementAt(
(QueryTreeNode)(argumentsList.elementAt(index)).accept(v), index);
}
- return returnNode;
}
+
/**
* Preprocess an expression tree. We do a number of transformations
* here (including subqueries, IN lists, LIKE and BETWEEN) plus
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CollectNodesVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CollectNodesVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CollectNodesVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CollectNodesVisitor.java Tue Oct 27 12:42:04 2009
@@ -69,6 +69,11 @@
this.skipOverClass = skipOverClass;
}
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
public boolean stopTraversal()
{
return false;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConditionalNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConditionalNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConditionalNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConditionalNode.java Tue Oct 27 12:42:04 2009
@@ -718,22 +718,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (testCondition != null && !v.stopTraversal())
{
@@ -744,8 +738,6 @@
{
thenElseList = (ValueNodeList)thenElseList.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateViewNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateViewNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateViewNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateViewNode.java Tue Oct 27 12:42:04 2009
@@ -391,34 +391,21 @@
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
-
- if (!v.stopTraversal())
- {
- super.accept(v);
- }
+ super.acceptChildren(v);
if (queryExpression != null && !v.stopTraversal())
{
queryExpression = (ResultSetNode)queryExpression.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLStatementNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLStatementNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLStatementNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLStatementNode.java Tue Oct 27 12:42:04 2009
@@ -484,27 +484,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
+ super.acceptChildren(v);
if (resultSet != null && !v.stopTraversal())
{
resultSet = (ResultSetNode)resultSet.accept(v);
}
-
- return this;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java Tue Oct 27 12:42:04 2009
@@ -4587,26 +4587,17 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
-
- Visitable returnNode = super.accept(v);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
-
-
+ super.acceptChildren(v);
if (nonStoreRestrictionList != null && !v.stopTraversal()) {
nonStoreRestrictionList.accept(v);
@@ -4623,8 +4614,6 @@
if (requalificationRestrictionList != null && !v.stopTraversal()) {
requalificationRestrictionList.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java Tue Oct 27 12:42:04 2009
@@ -1602,27 +1602,6 @@
isTransparent = true;
}
- /**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
- *
- * @param v the visitor
- *
- * @exception StandardException on error
- */
- public Visitable accept(Visitor v)
- throws StandardException
- {
- int size = size();
- for (int index = 0; index < size; index++)
- {
- FromTable fromTable = (FromTable) elementAt(index);
- setElementAt((QueryTreeNode) fromTable.accept(v), index);
- }
-
- return this;
- }
-
/**
* Set windows field to the supplied value.
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromVTI.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromVTI.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromVTI.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromVTI.java Tue Oct 27 12:42:04 2009
@@ -1431,29 +1431,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (!v.stopTraversal())
{
methodCall = (MethodCallNode) methodCall.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByColumn.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByColumn.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByColumn.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByColumn.java Tue Oct 27 12:42:04 2009
@@ -140,26 +140,19 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException {
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this)) {
- return returnNode;
- }
+ super.acceptChildren(v);
if (columnExpression != null) {
columnExpression = (ValueNode)columnExpression.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasCorrelatedCRsVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasCorrelatedCRsVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasCorrelatedCRsVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasCorrelatedCRsVisitor.java Tue Oct 27 12:42:04 2009
@@ -106,6 +106,11 @@
return false;
}
+ public boolean visitChildrenFirst(Visitable v)
+ {
+ return false;
+ }
+
////////////////////////////////////////////////
//
// CLASS INTERFACE
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasNodeVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasNodeVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasNodeVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasNodeVisitor.java Tue Oct 27 12:42:04 2009
@@ -111,6 +111,14 @@
skipOverClass.isInstance(node);
}
+ /**
+ * Visit parent before children.
+ */
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
////////////////////////////////////////////////
//
// CLASS INTERFACE
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasVariantValueNodeVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasVariantValueNodeVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasVariantValueNodeVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HasVariantValueNodeVisitor.java Tue Oct 27 12:42:04 2009
@@ -131,6 +131,11 @@
return false;
}
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
/**
* Stop traversal if we found the target node
*
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashTableNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashTableNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashTableNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashTableNode.java Tue Oct 27 12:42:04 2009
@@ -409,22 +409,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (searchPredicateList != null && !v.stopTraversal())
{
@@ -435,7 +429,5 @@
{
joinPredicateList = (PredicateList)joinPredicateList.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/IndexToBaseRowNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/IndexToBaseRowNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/IndexToBaseRowNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/IndexToBaseRowNode.java Tue Oct 27 12:42:04 2009
@@ -412,29 +412,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (source != null && !v.stopTraversal())
{
source = (FromBaseTable)source.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java Tue Oct 27 12:42:04 2009
@@ -338,29 +338,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (javaNode != null && !v.stopTraversal())
{
javaNode = (JavaValueNode)javaNode.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java Tue Oct 27 12:42:04 2009
@@ -1932,22 +1932,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (resultColumns != null && !v.stopTraversal())
{
@@ -1963,8 +1957,6 @@
{
usingClause = (ResultColumnList)usingClause.accept(v);
}
-
- return returnNode;
}
// This method returns the table references in Join node, and this may be
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/MethodCallNode.java Tue Oct 27 12:42:04 2009
@@ -1239,22 +1239,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
for (int parm = 0;
!v.stopTraversal() && parm < methodParms.length;
@@ -1265,7 +1259,5 @@
methodParms[parm] = (JavaValueNode)methodParms[parm].accept(v);
}
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NonStaticMethodCallNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NonStaticMethodCallNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NonStaticMethodCallNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NonStaticMethodCallNode.java Tue Oct 27 12:42:04 2009
@@ -466,28 +466,20 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (receiver != null && !v.stopTraversal())
{
receiver = (JavaValueNode)receiver.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OrderByColumn.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OrderByColumn.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OrderByColumn.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OrderByColumn.java Tue Oct 27 12:42:04 2009
@@ -501,28 +501,21 @@
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (expression != null && !v.stopTraversal())
{
expression = (ValueNode)expression.accept(v);
}
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/Predicate.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/Predicate.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/Predicate.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/Predicate.java Tue Oct 27 12:42:04 2009
@@ -810,29 +810,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (andNode != null && !v.stopTraversal())
{
andNode = (AndNode)andNode.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java Tue Oct 27 12:42:04 2009
@@ -1812,22 +1812,16 @@
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (restriction != null && !v.stopTraversal())
{
@@ -1838,8 +1832,6 @@
{
restrictionList = (PredicateList)restrictionList.accept(v);
}
-
- return returnNode;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNode.java Tue Oct 27 12:42:04 2009
@@ -688,17 +688,45 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept a visitor, and call {@code v.visit()} on child nodes as
+ * necessary. Sub-classes should not override this method, but instead
+ * override the {@link #acceptChildren(Visitor)} method.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ public final Visitable accept(Visitor v)
throws StandardException
{
- return v.visit(this);
+ final boolean childrenFirst = v.visitChildrenFirst(this);
+ final boolean skipChildren = v.skipChildren(this);
+
+ if (childrenFirst && !skipChildren && !v.stopTraversal()) {
+ acceptChildren(v);
+ }
+
+ final Visitable ret = v.stopTraversal() ? this : v.visit(this);
+
+ if (!childrenFirst && !skipChildren && !v.stopTraversal()) {
+ acceptChildren(v);
+ }
+
+ return ret;
+ }
+
+ /**
+ * Accept a visitor on all child nodes. All sub-classes that add fields
+ * that should be visited, should override this method and call
+ * {@code accept(v)} on all visitable fields, as well as
+ * {@code super.acceptChildren(v)} to make sure all visitable fields
+ * defined by the super-class are accepted too.
+ *
+ * @param v the visitor
+ * @throws StandardException on errors raised by the visitor
+ */
+ void acceptChildren(Visitor v) throws StandardException {
+ // no children
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java Tue Oct 27 12:42:04 2009
@@ -124,29 +124,21 @@
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
int size = size();
for (int index = 0; index < size; index++)
{
setElementAt((QueryTreeNode)((QueryTreeNode) elementAt(index)).accept(v), index);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReferencedTablesVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReferencedTablesVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReferencedTablesVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReferencedTablesVisitor.java Tue Oct 27 12:42:04 2009
@@ -91,6 +91,11 @@
node instanceof ResultSetNode);
}
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
public boolean stopTraversal()
{
return false;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RemapCRsVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RemapCRsVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RemapCRsVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RemapCRsVisitor.java Tue Oct 27 12:42:04 2009
@@ -93,6 +93,11 @@
return (node instanceof SubqueryNode);
}
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
public boolean stopTraversal()
{
return false;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceAggregatesWithCRVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceAggregatesWithCRVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceAggregatesWithCRVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceAggregatesWithCRVisitor.java Tue Oct 27 12:42:04 2009
@@ -116,6 +116,11 @@
skipOverClass.isInstance(node);
}
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
public boolean stopTraversal()
{
return false;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceWindowFuncCallsWithCRVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceWindowFuncCallsWithCRVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceWindowFuncCallsWithCRVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ReplaceWindowFuncCallsWithCRVisitor.java Tue Oct 27 12:42:04 2009
@@ -97,6 +97,16 @@
/**
* Vistor override.
* @return false
+ * @see Visitor#visitChildrenFirst
+ */
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
+
+ /**
+ * Vistor override.
+ * @return false
* @see Visitor#skipChildren
*/
public boolean stopTraversal()
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultColumn.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultColumn.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultColumn.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultColumn.java Tue Oct 27 12:42:04 2009
@@ -1534,28 +1534,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (expression != null && !v.stopTraversal())
{
setExpression( (ValueNode)expression.accept(v) );
}
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultSetNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultSetNode.java Tue Oct 27 12:42:04 2009
@@ -1601,28 +1601,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (resultColumns != null && !v.stopTraversal())
{
resultColumns = (ResultColumnList)resultColumns.accept(v);
}
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SQLToJavaValueNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SQLToJavaValueNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SQLToJavaValueNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SQLToJavaValueNode.java Tue Oct 27 12:42:04 2009
@@ -496,28 +496,20 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (value != null && !v.stopTraversal())
{
value = (ValueNode)value.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java Tue Oct 27 12:42:04 2009
@@ -2344,27 +2344,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
-
- if (!v.stopTraversal())
- {
- super.accept(v);
- }
+ super.acceptChildren(v);
if (fromList != null && !v.stopTraversal())
{
@@ -2384,8 +2373,6 @@
if (havingClause != null && !v.stopTraversal()) {
havingClause = (ValueNode)havingClause.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java Tue Oct 27 12:42:04 2009
@@ -609,28 +609,20 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (childResult != null && !v.stopTraversal())
{
childResult = (ResultSetNode)childResult.accept(v);
}
-
- return returnNode;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubqueryNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubqueryNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubqueryNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubqueryNode.java Tue Oct 27 12:42:04 2009
@@ -2194,29 +2194,23 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
+ super.acceptChildren(v);
/* shortcut if we've already done it
*/
if ((v instanceof HasCorrelatedCRsVisitor) && doneCorrelationCheck)
{
((HasCorrelatedCRsVisitor) v).setHasCorrelatedCRs(foundCorrelation);
- return returnNode;
- }
-
- if (v.skipChildren(this))
- {
- return returnNode;
+ return;
}
if (resultSet != null && !v.stopTraversal())
@@ -2228,7 +2222,6 @@
{
leftOperand = (ValueNode)leftOperand.accept(v);
}
- return returnNode;
}
private boolean isIN()
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SubstituteExpressionVisitor.java Tue Oct 27 12:42:04 2009
@@ -80,4 +80,9 @@
false:
skipOverClass.isInstance(node);
}
+
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java Tue Oct 27 12:42:04 2009
@@ -946,22 +946,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- if (v.skipChildren(this))
- {
- return v.visit(this);
- }
-
- Visitable returnNode = super.accept(v);
+ super.acceptChildren(v);
if (leftResultSet != null && !v.stopTraversal())
{
@@ -971,7 +965,6 @@
{
rightResultSet = (ResultSetNode)rightResultSet.accept(v);
}
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java Tue Oct 27 12:42:04 2009
@@ -464,22 +464,16 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (receiver != null && !v.stopTraversal())
{
@@ -495,8 +489,6 @@
{
rightOperand = (ValueNode)rightOperand.accept(v);
}
-
- return returnNode;
}
/**
* Bind trim expression.
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java Tue Oct 27 12:42:04 2009
@@ -743,29 +743,21 @@
}
/**
- * Accept a visitor, and call v.visit()
- * on child nodes as necessary.
+ * Accept the visitor for all visitable children of this node.
*
* @param v the visitor
*
* @exception StandardException on error
*/
- public Visitable accept(Visitor v)
+ void acceptChildren(Visitor v)
throws StandardException
{
- Visitable returnNode = v.visit(this);
-
- if (v.skipChildren(this))
- {
- return returnNode;
- }
+ super.acceptChildren(v);
if (operand != null && !v.stopTraversal())
{
operand = (ValueNode)operand.accept(v);
}
-
- return returnNode;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VTIDeferModPolicy.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VTIDeferModPolicy.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VTIDeferModPolicy.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VTIDeferModPolicy.java Tue Oct 27 12:42:04 2009
@@ -204,4 +204,9 @@
{
return false;
} // end of skipChildren
+
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
} // end of class VTIDeferModPolicy
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VerifyAggregateExpressionsVisitor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VerifyAggregateExpressionsVisitor.java?rev=830154&r1=830153&r2=830154&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VerifyAggregateExpressionsVisitor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/VerifyAggregateExpressionsVisitor.java Tue Oct 27 12:42:04 2009
@@ -145,4 +145,9 @@
{
return false;
}
+
+ public boolean visitChildrenFirst(Visitable node)
+ {
+ return false;
+ }
}