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 da...@apache.org on 2013/06/21 09:47:52 UTC

svn commit: r1495305 [15/21] - in /db/derby/code/trunk: java/engine/org/apache/derby/ java/engine/org/apache/derby/catalog/types/ java/engine/org/apache/derby/iapi/services/io/ java/engine/org/apache/derby/iapi/sql/ java/engine/org/apache/derby/iapi/sq...

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java Fri Jun 21 07:47:47 2013
@@ -23,41 +23,35 @@ package	org.apache.derby.impl.sql.compil
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.reference.ClassName;
+import org.apache.derby.iapi.reference.SQLState;
+import org.apache.derby.iapi.services.classfile.VMOpcode;
+import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
 import org.apache.derby.iapi.sql.compile.CostEstimate;
-import org.apache.derby.iapi.sql.compile.Optimizer;
 import org.apache.derby.iapi.sql.compile.Optimizable;
 import org.apache.derby.iapi.sql.compile.OptimizablePredicateList;
+import org.apache.derby.iapi.sql.compile.Optimizer;
 import org.apache.derby.iapi.sql.compile.RequiredRowOrdering;
 import org.apache.derby.iapi.sql.compile.RowOrdering;
-import org.apache.derby.iapi.sql.compile.C_NodeTypes;
-
-import org.apache.derby.iapi.sql.dictionary.DataDictionary;
 import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
+import org.apache.derby.iapi.sql.dictionary.DataDictionary;
 import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
-
-import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.services.compiler.MethodBuilder;
-
 import org.apache.derby.iapi.store.access.Qualifier;
-
-import org.apache.derby.iapi.services.sanity.SanityManager;
-
 import org.apache.derby.iapi.types.DataTypeDescriptor;
 import org.apache.derby.iapi.types.TypeId;
-
 import org.apache.derby.iapi.util.JBitSet;
-import org.apache.derby.iapi.reference.SQLState;
-import org.apache.derby.iapi.reference.ClassName;
-import org.apache.derby.iapi.services.classfile.VMOpcode;
-
 
 /**
  * A RowResultSetNode represents the result set for a VALUES clause.
  *
  */
 
-public class RowResultSetNode extends FromTable
+class RowResultSetNode extends FromTable
 {
 	SubqueryList subquerys;
     private List<AggregateNode> aggregates;
@@ -67,17 +61,22 @@ public class RowResultSetNode extends Fr
     boolean   hasJDBClimitClause; //  were OFFSET/FETCH FIRST specified by a JDBC LIMIT clause?
 
 	/**
-	 * Initializer for a RowResultSetNode.
+     * Constructor for a RowResultSetNode.
 	 *
 	 * @param valuesClause	The result column list for the VALUES clause.
 	 * @param tableProperties	Properties list associated with the table
+     * @param cm            The context manager
 	 */
-	public void init(Object valuesClause, Object tableProperties)
-	{
-		super.init(null, tableProperties);
-		resultColumns = (ResultColumnList) valuesClause;
-		if (resultColumns != null)
+    RowResultSetNode(ResultColumnList valuesClause,
+                     Properties tableProperties,
+                     ContextManager cm) {
+        super(null /* correlationName */, tableProperties, cm);
+        setNodeType(C_NodeTypes.ROW_RESULT_SET_NODE);
+        resultColumns = valuesClause;
+
+        if (resultColumns != null) {
 			resultColumns.markInitialSize();
+        }
 	}
 
 	/**
@@ -86,7 +85,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @return	This object as a String
 	 */
-
+    @Override
 	public String toString()
 	{
 		if (SanityManager.DEBUG)
@@ -101,7 +100,7 @@ public class RowResultSetNode extends Fr
 		}
 	}
 
-	public String statementToString()
+    String statementToString()
 	{
 		return "VALUES";
 	}
@@ -112,8 +111,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @param depth		The depth of this node in the tree
 	 */
-
-	public void printSubNodes(int depth)
+    @Override
+    void printSubNodes(int depth)
 	{
 		if (SanityManager.DEBUG)
 		{
@@ -146,6 +145,7 @@ public class RowResultSetNode extends Fr
 	/**
 	 * Modify the RCL of this node to match the target of the insert.
 	 */
+    @Override
 	ResultSetNode enhanceRCLForInsert(
 			InsertNode target, boolean inOrder, int[] colMap)
 		throws StandardException
@@ -165,6 +165,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	public CostEstimate estimateCost(OptimizablePredicateList predList,
 										ConglomerateDescriptor cd,
 										CostEstimate outerCost,
@@ -201,8 +202,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode bindNonVTITables(DataDictionary dataDictionary, 
+    @Override
+    ResultSetNode bindNonVTITables(DataDictionary dataDictionary,
 							FromList fromListParam) 
 					throws StandardException
 	{
@@ -221,15 +222,13 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public void bindExpressions(FromList fromListParam)
+    @Override
+    void bindExpressions(FromList fromListParam)
 					throws StandardException
 	{
 		int nestingLevel;
 
-		subquerys = (SubqueryList) getNodeFactory().getNode(
-										C_NodeTypes.SUBQUERY_LIST,
-										getContextManager());
+        subquerys = new SubqueryList(getContextManager());
 
         aggregates = new ArrayList<AggregateNode>();
 
@@ -288,11 +287,11 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void bindExpressionsWithTables(FromList fromListParam)
+    @Override
+    void bindExpressionsWithTables(FromList fromListParam)
 					throws StandardException
 	{
 		/* We don't have any tables, so just return */
-		return;
 	}
 
 	/**
@@ -304,8 +303,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public void bindTargetExpressions(FromList fromListParam)
+    @Override
+    void bindTargetExpressions(FromList fromListParam)
 					throws StandardException
 	{
 		bindExpressions(fromListParam);
@@ -318,7 +317,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void bindUntypedNullsToResultColumns(ResultColumnList bindingRCL)
+    @Override
+    void bindUntypedNullsToResultColumns(ResultColumnList bindingRCL)
 				throws StandardException
 	{
 		/*
@@ -349,8 +349,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultColumn getMatchingColumn(
+    @Override
+    ResultColumn getMatchingColumn(
 						ColumnReference columnReference)
 						throws StandardException
 	{
@@ -365,7 +365,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public String getExposedName() throws StandardException
+    @Override
+    String getExposedName() throws StandardException
 	{
 		return null;
 	}
@@ -378,10 +379,10 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void verifySelectStarSubquery(FromList outerFromList, int subqueryType) 
+    @Override
+    void verifySelectStarSubquery(FromList outerFromList, int subqueryType)
 					throws StandardException
 	{
-		return; 
 	}
 
 	/**
@@ -392,6 +393,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @param orderByList	The order by list
 	 */
+    @Override
 	void pushOrderByList(OrderByList orderByList)
 	{
 		this.orderByList = orderByList;
@@ -404,6 +406,7 @@ public class RowResultSetNode extends Fr
      * @param fetchFirst the OFFSET FIRST, if any
      * @param hasJDBClimitClause true if the clauses were added by (and have the semantics of) a JDBC limit clause
      */
+    @Override
     void pushOffsetFetchFirst( ValueNode offset, ValueNode fetchFirst, boolean hasJDBClimitClause )
     {
         this.offset = offset;
@@ -436,8 +439,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode preprocess(int numTables,
+    @Override
+    ResultSetNode preprocess(int numTables,
 									GroupByList gbl,
 									FromList fromList)
 								throws StandardException
@@ -446,17 +449,12 @@ public class RowResultSetNode extends Fr
 		if (subquerys.size() > 0)
 		{
 			subquerys.preprocess(
-								numTables,
-								(FromList) getNodeFactory().getNode(
-									C_NodeTypes.FROM_LIST,
-									getNodeFactory().doJoinOrderOptimization(),
-									getContextManager()),
-								(SubqueryList) getNodeFactory().getNode(
-													C_NodeTypes.SUBQUERY_LIST,
-													getContextManager()),
-								(PredicateList) getNodeFactory().getNode(
-													C_NodeTypes.PREDICATE_LIST,
-													getContextManager()));
+                numTables,
+                new FromList(
+                    getOptimizerFactory().doJoinOrderOptimization(),
+                    getContextManager()),
+                new SubqueryList(getContextManager()),
+                new PredicateList(getContextManager()));
 		}
 
 		/* Allocate a dummy referenced table map */ 
@@ -483,7 +481,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode ensurePredicateList(int numTables) 
+    @Override
+    ResultSetNode ensurePredicateList(int numTables)
 		throws StandardException
 	{
 		return genProjectRestrict(numTables);
@@ -500,7 +499,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode addNewPredicate(Predicate predicate)
+    @Override
+    ResultSetNode addNewPredicate(Predicate predicate)
 			throws StandardException
 	{
 		PredicateList		predList;
@@ -525,14 +525,10 @@ public class RowResultSetNode extends Fr
 		prRCList.genVirtualColumnNodes(this, resultColumns);
 
 		/* Put the new predicate in a list */
-		predList = (PredicateList) getNodeFactory().getNode(
-										C_NodeTypes.PREDICATE_LIST,
-										getContextManager());
+        predList = new PredicateList(getContextManager());
 		predList.addPredicate(predicate);
 
-		/* Finally, we create the new ProjectRestrictNode */
-		return (ResultSetNode) getNodeFactory().getNode(
-								C_NodeTypes.PROJECT_RESTRICT_NODE,
+        return new ProjectRestrictNode(
 								this,
 								prRCList,
 								null,	/* Restriction */
@@ -558,7 +554,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @return boolean	Whether or not the FromSubquery is flattenable.
 	 */
-	public boolean flattenableInFromSubquery(FromList fromList)
+    @Override
+    boolean flattenableInFromSubquery(FromList fromList)
 	{
 		if ((subquerys != null) &&
 			(subquerys.size() > 0))
@@ -617,7 +614,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode optimize(DataDictionary dataDictionary,
+    @Override
+    ResultSetNode optimize(DataDictionary dataDictionary,
 								  PredicateList	predicateList,
 								  double outerRows) 
 			throws StandardException
@@ -627,16 +625,14 @@ public class RowResultSetNode extends Fr
 		** CostEstimate object, so we can represent the cost of this node.
 		** This seems like overkill, but it's just an object allocation...
 		*/
-		Optimizer optimizer =
-					getOptimizer(
-								(FromList) getNodeFactory().getNode(
-									C_NodeTypes.FROM_LIST,
-									getNodeFactory().doJoinOrderOptimization(),
-									getContextManager()),
-								predicateList,
-								dataDictionary,
-								(RequiredRowOrdering) null);
-		costEstimate = optimizer.newCostEstimate();
+        Optimizer opt = getOptimizer(
+                new FromList(getOptimizerFactory().doJoinOrderOptimization(),
+                             getContextManager()),
+                predicateList,
+                dataDictionary,
+                (RequiredRowOrdering) null);
+
+        costEstimate = opt.newCostEstimate();
 
 		// RESOLVE: THE COST SHOULD TAKE SUBQUERIES INTO ACCOUNT
 		costEstimate.setCost(0.0d, outerRows, outerRows);
@@ -650,6 +646,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	public Optimizable modifyAccessPath(JBitSet outerTables) throws StandardException
 	{
 		/* For most types of Optimizable, do nothing */
@@ -661,7 +658,8 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode modifyAccessPaths() throws StandardException
+    @Override
+    ResultSetNode modifyAccessPaths() throws StandardException
 	{
 		ResultSetNode treeTop = this;
 
@@ -672,12 +670,10 @@ public class RowResultSetNode extends Fr
 		 */
 		if (orderByList != null)
 		{
-			treeTop = (ResultSetNode) getNodeFactory().getNode(
-											C_NodeTypes.ORDER_BY_NODE,
-											treeTop,
-											orderByList,
-											tableProperties,
-											getContextManager());
+            treeTop = new OrderByNode(treeTop,
+                                      orderByList,
+                                      tableProperties,
+                                      getContextManager());
 		}
 
         if (offset != null || fetchFirst != null) {
@@ -685,13 +681,12 @@ public class RowResultSetNode extends Fr
                 treeTop.getResultColumns().copyListAndObjects();
             newRcl.genVirtualColumnNodes(treeTop, treeTop.getResultColumns());
 
-            treeTop = (ResultSetNode)getNodeFactory().getNode(
-                C_NodeTypes.ROW_COUNT_NODE,
+            treeTop = new RowCountNode(
                 treeTop,
                 newRcl,
                 offset,
                 fetchFirst,
-                Boolean.valueOf( hasJDBClimitClause ),
+                hasJDBClimitClause,
                 getContextManager());
         }
 
@@ -706,6 +701,7 @@ public class RowResultSetNode extends Fr
 	 * @return Whether or not this ResultSet tree is guaranteed to return
 	 * at most 1 row based on heuristics.
 	 */
+    @Override
 	boolean returnsAtMostOneRow()
 	{
 		return true;
@@ -719,6 +715,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	void setTableConstructorTypes(ResultColumnList typeColumns)
 			throws StandardException
 	{
@@ -869,6 +866,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
      */
+    @Override
     void generate(ActivationClassBuilder acb, MethodBuilder mb)
 							throws StandardException
 	{
@@ -921,6 +919,7 @@ public class RowResultSetNode extends Fr
 	/**
      * {@inheritDoc}
 	 */
+    @Override
 	void replaceOrForbidDefaults(TableDescriptor ttd,
                                  ResultColumnList tcl,
                                  boolean allowDefaults)
@@ -936,6 +935,7 @@ public class RowResultSetNode extends Fr
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	void optimizeSubqueries(DataDictionary dd, double rowCount)
 		throws StandardException
 	{
@@ -945,6 +945,7 @@ public class RowResultSetNode extends Fr
 	/**
 	 * @see ResultSetNode#adjustForSortElimination
 	 */
+    @Override
 	void adjustForSortElimination()
 	{
 	}

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=1495305&r1=1495304&r2=1495305&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 Fri Jun 21 07:47:47 2013
@@ -21,32 +21,27 @@
 
 package	org.apache.derby.impl.sql.compile;
 
-import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import java.lang.reflect.Modifier;
+import java.util.List;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.reference.ClassName;
+import org.apache.derby.iapi.services.classfile.VMOpcode;
 import org.apache.derby.iapi.services.compiler.LocalField;
-
+import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.context.ContextManager;
 import org.apache.derby.iapi.services.sanity.SanityManager;
-
-import org.apache.derby.iapi.types.JSQLType;
-
-import org.apache.derby.iapi.types.DataTypeDescriptor;
-import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
 import org.apache.derby.iapi.sql.compile.Visitor;
-
-import org.apache.derby.iapi.reference.ClassName;
-
+import org.apache.derby.iapi.types.DataTypeDescriptor;
+import org.apache.derby.iapi.types.JSQLType;
 import org.apache.derby.iapi.util.JBitSet;
-import org.apache.derby.iapi.services.classfile.VMOpcode;
-
-import java.lang.reflect.Modifier;
-
-import java.util.List;
 
 /**
  * This node type converts a value in the SQL domain to a value in the Java
  * domain.
  */
 
-public class SQLToJavaValueNode extends JavaValueNode
+class SQLToJavaValueNode extends JavaValueNode
 {
 	ValueNode	value;
 
@@ -67,21 +62,22 @@ public class SQLToJavaValueNode extends 
 	 *
 	 * @param value		A ValueNode representing a SQL value to convert to
 	 *					the Java domain.
+     * @param cm        The context manager
 	 */
+    SQLToJavaValueNode(ValueNode value, ContextManager cm) {
+        super(cm);
+        setNodeType(C_NodeTypes.SQL_TO_JAVA_VALUE_NODE);
+        this.value = value;
+    }
 
-	public void init(Object value)
-	{
-		this.value = (ValueNode) value;
-	}
-
-	/**
+    /**
 	 * Prints the sub-nodes of this object.  See QueryTreeNode.java for
 	 * how tree printing is supposed to work.
 	 *
 	 * @param depth		The depth of this node in the tree
 	 */
-
-	public void printSubNodes(int depth)
+    @Override
+    void printSubNodes(int depth)
 	{
 		if (SanityManager.DEBUG)
 		{
@@ -102,8 +98,9 @@ public class SQLToJavaValueNode extends 
 	  *	@return	name of java class type
 	  *
 	  */
+    @Override
     String getJavaTypeName()
-	throws StandardException
+            throws StandardException
 	{
 		JSQLType	myType = getJSQLType();
 
@@ -118,6 +115,7 @@ public class SQLToJavaValueNode extends 
 	  *
 	  * @exception StandardException		Thrown on error
 	  */
+    @Override
     String getPrimitiveTypeName()
 		throws StandardException
 	{
@@ -144,6 +142,7 @@ public class SQLToJavaValueNode extends 
 	  *	@return	the corresponding JSQLType
 	  *
 	  */
+    @Override
     JSQLType getJSQLType() throws StandardException
 	{
 		if ( jsqlType == null )
@@ -195,9 +194,7 @@ public class SQLToJavaValueNode extends 
 		return this;
 	}
 
-    /**
-     * Override behavior in superclass.
-     */
+    @Override
     DataTypeDescriptor getDataType() throws StandardException
     {
         return value.getTypeServices();
@@ -287,6 +284,7 @@ public class SQLToJavaValueNode extends 
 	 * @return	The variant type for the underlying expression.
 	 * @exception StandardException	thrown on error
 	 */
+    @Override
     int getOrderableVariantType() throws StandardException
 	{
 		return value.getOrderableVariantType();
@@ -483,6 +481,7 @@ public class SQLToJavaValueNode extends 
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	Object getConstantValueAsObject()
 		throws StandardException
 	{
@@ -496,6 +495,7 @@ public class SQLToJavaValueNode extends 
 	 *
 	 * @exception StandardException on error
 	 */
+    @Override
 	void acceptChildren(Visitor v)
 		throws StandardException
 	{

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SavepointNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SavepointNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SavepointNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SavepointNode.java Fri Jun 21 07:47:47 2013
@@ -21,39 +21,43 @@
 
 package	org.apache.derby.impl.sql.compile;
 
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.services.context.ContextManager;
 import org.apache.derby.iapi.services.sanity.SanityManager;
-
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
 import org.apache.derby.iapi.sql.execute.ConstantAction;
 
-import org.apache.derby.iapi.error.StandardException;
-
 /**
  * A SavepointNode is the root of a QueryTree that represents a Savepoint (ROLLBACK savepoint, RELASE savepoint and SAVEPOINT)
  * statement.
  */
 
-public class SavepointNode extends DDLStatementNode
+class SavepointNode extends DDLStatementNode
 {
 	private String	savepointName; //name of the savepoint
 	private int	savepointStatementType; //Type of savepoint statement ie rollback, release or set savepoint
 
 	/**
-	 * Initializer for a SavepointNode
-	 *
-	 * @param objectName		The name of the savepoint
-	 * @param savepointStatementType		Type of savepoint statement ie rollback, release or set savepoint
+     * Constructor for a SavepointNode
 	 *
+     * @param objectName              The name of the savepoint
+     * @param savepointStatementType  Type of savepoint statement ie rollback,
+     *                                release or set savepoint
+     * @param cm                      The context manager
+     *
 	 * @exception StandardException		Thrown on error
 	 */
 
-	public void init(
-			Object objectName,
-			Object savepointStatementType)
+    SavepointNode(
+            String objectName,
+            int savepointStatementType,
+            ContextManager cm)
 		throws StandardException
 	{
-		initAndCheck(null);	
-		this.savepointName = (String) objectName;
-		this.savepointStatementType = ((Integer) savepointStatementType).intValue();
+        super(cm);
+        setNodeType(C_NodeTypes.SAVEPOINT_NODE);
+        this.savepointName = objectName;
+        this.savepointStatementType = savepointStatementType;
 
 		if (SanityManager.DEBUG)
 		{
@@ -71,7 +75,7 @@ public class SavepointNode extends DDLSt
 	 *
 	 * @return	This object as a String
 	 */
-
+    @Override
 	public String toString()
 	{
 		if (SanityManager.DEBUG)
@@ -86,7 +90,7 @@ public class SavepointNode extends DDLSt
 		}
 	}
 
-	public String statementToString()
+    String statementToString()
 	{
 		if (savepointStatementType == 1)
 			return "SAVEPOINT";
@@ -104,6 +108,7 @@ public class SavepointNode extends DDLSt
 	 *
 	 * @return boolean	Whether or not this Statement requires a set/clear savepoint
 	 */
+    @Override
 	public boolean needsSavepoint()
 	{
 		return false;
@@ -116,7 +121,8 @@ public class SavepointNode extends DDLSt
 	 *
 	 * @exception StandardException		Thrown on failure
 	 */
-	public ConstantAction	makeConstantAction() throws StandardException
+    @Override
+    public ConstantAction makeConstantAction() throws StandardException
 	{
 		return(
             getGenericConstantActionFactory().getSavepointConstantAction(

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ScrollInsensitiveResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ScrollInsensitiveResultSetNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ScrollInsensitiveResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ScrollInsensitiveResultSetNode.java Fri Jun 21 07:47:47 2013
@@ -21,14 +21,14 @@
 
 package	org.apache.derby.impl.sql.compile;
 
+import java.util.Properties;
 import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.services.compiler.MethodBuilder;
 import org.apache.derby.iapi.reference.ClassName;
-
-import org.apache.derby.iapi.services.sanity.SanityManager;
-
 import org.apache.derby.iapi.services.classfile.VMOpcode;
+import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
 
 /**
  * A ScrollInsensitiveResultSetNode represents the insensitive scrolling cursor
@@ -37,23 +37,24 @@ import org.apache.derby.iapi.services.cl
  *
  */
 
-public class ScrollInsensitiveResultSetNode  extends SingleChildResultSetNode
+class ScrollInsensitiveResultSetNode  extends SingleChildResultSetNode
 {
 	/**
-	 * Initializer for a ScrollInsensitiveResultSetNode.
+     * Constructor for a ScrollInsensitiveResultSetNode.
 	 *
 	 * @param childResult	The child ResultSetNode
 	 * @param rcl			The RCL for the node
 	 * @param tableProperties	Properties list associated with the table
+     * @param cm            The context manager
 	 */
-
-	public void init(
-							Object childResult,
-							Object rcl,
-							Object tableProperties)
-	{
-		init(childResult, tableProperties);
-		resultColumns = (ResultColumnList) rcl;
+    ScrollInsensitiveResultSetNode(
+                            ResultSetNode childResult,
+                            ResultColumnList rcl,
+                            Properties tableProperties,
+                            ContextManager cm) {
+        super(childResult, tableProperties, cm);
+        setNodeType(C_NodeTypes.SCROLL_INSENSITIVE_RESULT_SET_NODE);
+        resultColumns = rcl;
 	}
 
     /**
@@ -61,6 +62,7 @@ public class ScrollInsensitiveResultSetN
 	 *
 	 * @exception StandardException		Thrown on error
      */
+    @Override
     void generate(ActivationClassBuilder acb, MethodBuilder mb)
 							throws StandardException
 	{

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=1495305&r1=1495304&r2=1495305&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 Fri Jun 21 07:47:47 2013
@@ -22,31 +22,24 @@
 
 package	org.apache.derby.impl.sql.compile;
 
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.reference.Limits;
+import org.apache.derby.iapi.reference.SQLState;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.sql.compile.CompilerContext;
 import org.apache.derby.iapi.sql.compile.CostEstimate;
 import org.apache.derby.iapi.sql.compile.Optimizer;
 import org.apache.derby.iapi.sql.compile.Visitor;
-import org.apache.derby.iapi.sql.compile.C_NodeTypes;
-
 import org.apache.derby.iapi.sql.conn.Authorizer;
-
-import org.apache.derby.iapi.sql.compile.CompilerContext;
 import org.apache.derby.iapi.sql.dictionary.DataDictionary;
 import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
-
-
-import org.apache.derby.iapi.reference.Limits;
-import org.apache.derby.iapi.reference.SQLState;
-import org.apache.derby.iapi.error.StandardException;
-
-
-import org.apache.derby.iapi.services.sanity.SanityManager;
-
 import org.apache.derby.iapi.util.JBitSet;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-
 /**
  * A SelectNode represents the result set for any of the basic DML
  * operations: SELECT, INSERT, UPDATE, and DELETE.  (A RowResultSetNode
@@ -60,7 +53,7 @@ import java.util.List;
  *
  */
 
-public class SelectNode extends ResultSetNode
+class SelectNode extends ResultSetNode
 {
 	/**
 	 * List of tables in the FROM clause of this SELECT
@@ -142,25 +135,30 @@ public class SelectNode extends ResultSe
 	ValueNode havingClause;
 	
 	private int nestingLevel;
-	public void init(Object selectList,
-			  Object fromList,
-			  Object whereClause,
-			  Object groupByList,
-			  Object havingClause,
-			  Object windowDefinitionList)
-			throws StandardException
-	{
+
+    SelectNode(ResultColumnList selectList,
+              FromList fromList,
+              ValueNode whereClause,
+              GroupByList groupByList,
+              ValueNode havingClause,
+              WindowList windowDefinitionList,
+              ContextManager cm) throws StandardException {
+        super(cm);
+        setNodeType(C_NodeTypes.SELECT_NODE);
         /* RESOLVE -
 		 * Consider adding selectAggregates and whereAggregates 
 		 */
-		resultColumns = (ResultColumnList) selectList;
-		if (resultColumns != null)
+        resultColumns = selectList;
+
+        if (resultColumns != null) {
 			resultColumns.markInitialSize();
-		this.fromList = (FromList) fromList;
-		this.whereClause = (ValueNode) whereClause;
-		this.originalWhereClause = (ValueNode) whereClause;
-		this.groupByList = (GroupByList) groupByList;
-		this.havingClause = (ValueNode)havingClause;
+        }
+
+        this.fromList = fromList;
+        this.whereClause = whereClause;
+        this.originalWhereClause = whereClause;
+        this.groupByList = groupByList;
+        this.havingClause = havingClause;
 
 		// This initially represents an explicit <window definition list>, as
 		// opposed to <in-line window specifications>, see 2003, 6.10 and 6.11.
@@ -168,7 +166,7 @@ public class SelectNode extends ResultSe
 		// in-line window specifications used in window functions in the SELECT
 		// column list and in genProjectRestrict for such window specifications
 		// used in window functions in ORDER BY.
-		this.windows = (WindowList)windowDefinitionList;
+        this.windows = windowDefinitionList;
 
 		bindTargetListOnly = false;
 		
@@ -225,8 +223,7 @@ public class SelectNode extends ResultSe
 
 		if (wl == null) {
 			// This is the first window we see, so initialize list.
-			wl = new WindowList();
-			wl.setContextManager(getContextManager());
+            wl = new WindowList(getContextManager());
 		}
 
 		WindowDefinitionNode equiv = wdn.findEquivalentWindow(wl);
@@ -251,7 +248,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return	This object as a String
 	 */
-
+    @Override
 	public String toString()
 	{
 		if (SanityManager.DEBUG)
@@ -265,17 +262,17 @@ public class SelectNode extends ResultSe
 		}
 	}
 
-	public String statementToString()
+    String statementToString()
 	{
 		return "SELECT";
 	}
 
-	public void makeDistinct()
+    void makeDistinct()
 	{
 		isDistinct = true;
 	}
 
-	public void clearDistinct()
+    void clearDistinct()
 	{
 		isDistinct = false;
 	}
@@ -292,7 +289,8 @@ public class SelectNode extends ResultSe
 	 * @param depth		The depth of this node in the tree
 	 */
 
-	public void printSubNodes(int depth)
+    @Override
+    void printSubNodes(int depth)
 	{
 		if (SanityManager.DEBUG)
 		{
@@ -380,7 +378,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return FromList	The fromList for this SelectNode.
 	 */
-	public FromList getFromList()
+    @Override
+    FromList getFromList()
 	{
 		return fromList;
 	}
@@ -396,7 +395,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return	ColumnReference	ColumnReference to the column, if found
 	 */
-	public ColumnReference findColumnReferenceInResult(String colName)
+    ColumnReference findColumnReferenceInResult(String colName)
 					throws StandardException
 	{
 		if (fromList.size() != 1)
@@ -431,7 +430,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return ValueNode	The whereClause for this SelectNode.
 	 */
-	public ValueNode getWhereClause()
+    ValueNode getWhereClause()
 	{
 		return whereClause;
 	}
@@ -441,7 +440,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return PredicateList	The wherePredicates for this SelectNode.
 	 */
-	public PredicateList getWherePredicates()
+    PredicateList getWherePredicates()
 	{
 		return wherePredicates;
 	}
@@ -451,7 +450,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return SubqueryList	The selectSubquerys for this SelectNode.
 	 */
-	public SubqueryList getSelectSubquerys()
+    SubqueryList getSelectSubquerys()
 	{
 		return selectSubquerys;
 	}
@@ -461,7 +460,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return SubqueryList	The whereSubquerys for this SelectNode.
 	 */
-	public SubqueryList getWhereSubquerys()
+    SubqueryList getWhereSubquerys()
 	{
 		return whereSubquerys;
 	}
@@ -479,21 +478,18 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode bindNonVTITables(DataDictionary dataDictionary,
+    @Override
+    ResultSetNode bindNonVTITables(DataDictionary dataDictionary,
 						   FromList fromListParam) 
 					throws StandardException
 	{
 		int fromListSize = fromList.size();
 		
 
-		wherePredicates = (PredicateList) getNodeFactory().getNode(
-											C_NodeTypes.PREDICATE_LIST,
-											getContextManager());
-		preJoinFL = (FromList) getNodeFactory().getNode(
-									C_NodeTypes.FROM_LIST,
-									getNodeFactory().doJoinOrderOptimization(),
-									getContextManager());
+        wherePredicates = new PredicateList(getContextManager());
+        preJoinFL =
+            new FromList(getOptimizerFactory().doJoinOrderOptimization(),
+                         getContextManager());
 
 		/* Set the nesting level in the fromList */
 		if (fromListParam.size() == 0)
@@ -534,7 +530,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void bindExpressions(FromList fromListParam)
+    @Override
+    void bindExpressions(FromList fromListParam)
 					throws StandardException
 	{
 		int fromListParamSize = fromListParam.size();
@@ -559,9 +556,7 @@ public class SelectNode extends ResultSe
 			fromList.bindExpressions( fromListParam );
 		}
 
-		selectSubquerys = (SubqueryList) getNodeFactory().getNode(
-											C_NodeTypes.SUBQUERY_LIST,
-											getContextManager());
+        selectSubquerys = new SubqueryList(getContextManager());
 		selectAggregates = new ArrayList<AggregateNode>();
 
 		/* Splice our FromList on to the beginning of fromListParam, before binding
@@ -601,9 +596,7 @@ public class SelectNode extends ResultSe
 		}
 
 		whereAggregates = new ArrayList<AggregateNode>();
-		whereSubquerys = (SubqueryList) getNodeFactory().getNode(
-												C_NodeTypes.SUBQUERY_LIST,
-												getContextManager());
+        whereSubquerys = new SubqueryList(getContextManager());
         
         CompilerContext cc = getCompilerContext();
         
@@ -647,9 +640,7 @@ public class SelectNode extends ResultSe
             int previousReliability = orReliability( CompilerContext.HAVING_CLAUSE_RESTRICTION );
 
 			havingAggregates = new ArrayList<AggregateNode>();
-			havingSubquerys = (SubqueryList) getNodeFactory().getNode(
-					C_NodeTypes.SUBQUERY_LIST,
-					getContextManager());
+            havingSubquerys = new SubqueryList(getContextManager());
 			havingClause.bindExpression(
 					fromListParam, havingSubquerys, havingAggregates);
 			havingClause = havingClause.checkIsBoolean();
@@ -738,7 +729,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void bindExpressionsWithTables(FromList fromListParam)
+    @Override
+    void bindExpressionsWithTables(FromList fromListParam)
 					throws StandardException
 	{
 		/* We have tables, so simply call bindExpressions() */
@@ -754,8 +746,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public void bindTargetExpressions(FromList fromListParam)
+    @Override
+    void bindTargetExpressions(FromList fromListParam)
 					throws StandardException
 	{
 		/*
@@ -785,8 +777,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public void bindResultColumns(FromList fromListParam)
+    @Override
+    void bindResultColumns(FromList fromListParam)
 				throws StandardException
 	{
 		/* We first bind the resultColumns for any FromTable which
@@ -837,7 +829,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
+    @Override
     void bindResultColumns(TableDescriptor targetTableDescriptor,
             FromVTI targetVTI, ResultColumnList targetColumnList,
             DMLStatementNode statement, FromList fromListParam)
@@ -882,7 +874,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void verifySelectStarSubquery(FromList outerFromList, int subqueryType) 
+    @Override
+    void verifySelectStarSubquery(FromList outerFromList, int subqueryType)
 					throws StandardException
 	{
         for (int i = 0; i < resultColumns.size(); i++) {
@@ -939,6 +932,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
     FromTable getFromTableByName(String name, String schemaName, boolean exactMatch)
 		throws StandardException
 	{
@@ -952,8 +946,8 @@ public class SelectNode extends ResultSe
 	 * @exception StandardException		Thrown if a ? parameter found
 	 *									directly under a ResultColumn
 	 */
-
-	public void rejectParameters() throws StandardException
+    @Override
+    void rejectParameters() throws StandardException
 	{
 		super.rejectParameters();
 		fromList.rejectParameters();
@@ -967,6 +961,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @param orderByList	The order by list
 	 */
+    @Override
 	void pushOrderByList(OrderByList orderByList)
 	{
         if (orderByLists[0] != null) {
@@ -1008,6 +1003,7 @@ public class SelectNode extends ResultSe
      * @param fetchFirst the OFFSET FIRST, if any
      * @param hasJDBClimitClause true if the clauses were added by (and have the semantics of) a JDBC limit clause
      */
+    @Override
     void pushOffsetFetchFirst( ValueNode offset, ValueNode fetchFirst, boolean hasJDBClimitClause )
     {
         this.offset = offset;
@@ -1040,8 +1036,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode preprocess(int numTables,
+    @Override
+    ResultSetNode preprocess(int numTables,
 									GroupByList gbl,
 									FromList fl)
 								throws StandardException
@@ -1067,9 +1063,9 @@ public class SelectNode extends ResultSe
 		boolean anyChange = fromList.LOJ_reorderable(numTables);
 		if (anyChange)
 		{
-			FromList afromList = (FromList) getNodeFactory().getNode(C_NodeTypes.FROM_LIST,
-																	 getNodeFactory().doJoinOrderOptimization(),
-																	 getContextManager());
+            FromList afromList = new FromList(
+                    getOptimizerFactory().doJoinOrderOptimization(),
+                    getContextManager());
 			bindExpressions(afromList);
             fromList.bindResultColumns(afromList);
 		}
@@ -1433,7 +1429,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode addNewPredicate(Predicate predicate)
+    @Override
+    ResultSetNode addNewPredicate(Predicate predicate)
 			throws StandardException
 	{
 		wherePredicates.addPredicate(predicate);
@@ -1455,7 +1452,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return boolean	Whether or not the FromSubquery is flattenable.
 	 */
-	public boolean flattenableInFromSubquery(FromList fromList)
+    @Override
+    boolean flattenableInFromSubquery(FromList fromList)
 	{
 		if (isDistinct) 
 		{
@@ -1520,24 +1518,23 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode genProjectRestrict(int origFromListSize)
+    @Override
+    ResultSetNode genProjectRestrict(int origFromListSize)
 				throws StandardException
 	{
         boolean[] eliminateSort = new boolean[orderByLists.length];
 
 		ResultSetNode		prnRSN;
 
-		prnRSN = (ResultSetNode) getNodeFactory().getNode(
-								C_NodeTypes.PROJECT_RESTRICT_NODE,
-								fromList.elementAt(0),	/* Child ResultSet */
-								resultColumns,		/* Projection */
-								whereClause,			/* Restriction */
-								wherePredicates,/* Restriction as PredicateList */
-								selectSubquerys,/* Subquerys in Projection */
-								whereSubquerys,	/* Subquerys in Restriction */
-								null,
-								getContextManager()	 );
+        prnRSN = new ProjectRestrictNode(
+                (ResultSetNode)fromList.elementAt(0),   /* Child ResultSet */
+                resultColumns,      /* Projection */
+                whereClause,            /* Restriction */
+                wherePredicates,/* Restriction as PredicateList */
+                selectSubquerys,/* Subquerys in Projection */
+                whereSubquerys, /* Subquerys in Restriction */
+                null,
+                getContextManager());
 
 		/*
 		** If we have aggregates OR a select list we want
@@ -1555,16 +1552,13 @@ public class SelectNode extends ResultSe
 				havingAggregates.addAll(selectAggregates);
 				aggs = havingAggregates;
 			}
-			GroupByNode gbn = (GroupByNode) getNodeFactory().getNode(
-												C_NodeTypes.GROUP_BY_NODE,
-												prnRSN,
-												groupByList,
-												aggs,
-												havingClause,
-												havingSubquerys,
-												null,
-												new Integer(nestingLevel),
-												getContextManager());
+            GroupByNode gbn = new GroupByNode(prnRSN,
+                    groupByList,
+                    aggs,
+                    havingClause,
+                    havingSubquerys,
+                    nestingLevel,
+                    getContextManager());
 			gbn.considerPostOptimizeOptimizations(originalWhereClause != null);
 			gbn.assignCostEstimate(optimizer.getOptimizedCost());
 
@@ -1588,15 +1582,14 @@ public class SelectNode extends ResultSe
 					SQLState.LANG_WINDOW_LIMIT_EXCEEDED);
 			}
 
-			WindowNode wn = (WindowNode)windows.elementAt(0);
+            WindowDefinitionNode wn =
+                    (WindowDefinitionNode)windows.elementAt(0);
 
-			WindowResultSetNode wrsn =
-				(WindowResultSetNode)getNodeFactory().getNode(
-					C_NodeTypes.WINDOW_RESULTSET_NODE,
+            WindowResultSetNode wrsn = new WindowResultSetNode(
 					prnRSN,
 					wn,
 					windowFuncCalls,
-					new Integer(nestingLevel),
+                    nestingLevel,
 					getContextManager());
 
 			prnRSN = wrsn.getParent();
@@ -1659,12 +1652,8 @@ public class SelectNode extends ResultSe
 				 * duplicates without a sorter. 
 				 */
 				boolean inSortedOrder = isOrderedResult(resultColumns, prnRSN, !(orderByAndDistinctMerged));
-				prnRSN = (ResultSetNode) getNodeFactory().getNode(
-											C_NodeTypes.DISTINCT_NODE,
-											prnRSN,
-											new Boolean(inSortedOrder),
-											null,
-											getContextManager());
+                prnRSN = new DistinctNode(
+                        prnRSN, inSortedOrder, null, getContextManager());
 				prnRSN.costEstimate = costEstimate.cloneMe();
 
                 // Remember whether or not we can eliminate the sort.
@@ -1683,12 +1672,10 @@ public class SelectNode extends ResultSe
             {
                 if (orderByLists[i].getSortNeeded())
                 {
-                    prnRSN = (ResultSetNode) getNodeFactory().getNode(
-                            C_NodeTypes.ORDER_BY_NODE,
-                            prnRSN,
-                            orderByLists[i],
-                            null,
-                            getContextManager());
+                    prnRSN = new OrderByNode(prnRSN,
+                                             orderByLists[i],
+                                             null,
+                                             getContextManager());
                     prnRSN.costEstimate = costEstimate.cloneMe();
                 }
 
@@ -1712,8 +1699,7 @@ public class SelectNode extends ResultSe
 
                     topList.removeOrderByColumns();
                     topList.genVirtualColumnNodes(prnRSN, newSelectList);
-                    prnRSN = (ResultSetNode) getNodeFactory().getNode(
-                            C_NodeTypes.PROJECT_RESTRICT_NODE,
+                    prnRSN = new ProjectRestrictNode(
                             prnRSN,
                             topList,
                             null,
@@ -1734,13 +1720,12 @@ public class SelectNode extends ResultSe
                 ResultColumnList newSelectList = topList.copyListAndObjects();
                 prnRSN.setResultColumns(newSelectList);
                 topList.genVirtualColumnNodes(prnRSN, newSelectList);
-                prnRSN = (ResultSetNode)getNodeFactory().getNode(
-                        C_NodeTypes.ROW_COUNT_NODE,
+                prnRSN = new RowCountNode(
                         prnRSN,
                         topList,
                         offset,
                         fetchFirst,
-                        Boolean.valueOf( hasJDBClimitClause ),
+                        hasJDBClimitClause,
                         getContextManager());
             }
         }
@@ -1773,8 +1758,7 @@ public class SelectNode extends ResultSe
 
 			topList.removeGeneratedGroupingColumns();
 			topList.genVirtualColumnNodes(prnRSN, newSelectList);
-			prnRSN = (ResultSetNode) getNodeFactory().getNode(
-						C_NodeTypes.PROJECT_RESTRICT_NODE,
+            prnRSN = new ProjectRestrictNode(
 						prnRSN,
 						topList,
 						null,
@@ -1880,7 +1864,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode ensurePredicateList(int numTables) 
+    @Override
+    ResultSetNode ensurePredicateList(int numTables)
 		throws StandardException
 	{
 		return this;
@@ -1898,13 +1883,13 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode optimize(DataDictionary dataDictionary,
+    @Override
+    ResultSetNode optimize(DataDictionary dataDictionary,
 								  PredicateList	predicateList,
 								  double outerRows) 
 				throws StandardException
 	{
-		Optimizer		 optimizer;
+        Optimizer        opt;
 
 		/* Optimize any subquerys before optimizing the underlying result set */
 
@@ -1973,19 +1958,17 @@ public class SelectNode extends ResultSe
 		if (predicateList != null)
 		{
 			if (wherePredicates == null) {
-				wherePredicates = (PredicateList) getNodeFactory().getNode(
-						C_NodeTypes.PREDICATE_LIST,
-						getContextManager());
+                wherePredicates = new PredicateList(getContextManager());
 			}
 
-			Predicate pred = null;
 			int sz = predicateList.size();
-			for (int i = sz - 1; i >= 0; i--)
+
+            for (int i = sz - 1; i >= 0; i--)
 			{
 				// We can tell if a predicate was pushed into this select
 				// node because it will have been "scoped" for this node
 				// or for some result set below this one.
-				pred = (Predicate)predicateList.getOptPredicate(i);
+                Predicate pred = (Predicate)predicateList.getOptPredicate(i);
 				if (pred.isScopedToSourceResultSet())
 				{
 					// If we're pushing the predicate down here, we have to
@@ -1998,18 +1981,18 @@ public class SelectNode extends ResultSe
 			}
 		}
 
-		optimizer = getOptimizer(fromList,
+        opt = getOptimizer(fromList,
 								wherePredicates,
 								dataDictionary,
                                 orderByLists[0]); // use first one
-		optimizer.setOuterRows(outerRows);
+        opt.setOuterRows(outerRows);
 
 		/* Optimize this SelectNode */
-		while (optimizer.getNextPermutation())
+        while (opt.getNextPermutation())
 		{
-			while (optimizer.getNextDecoratedPermutation())
+            while (opt.getNextDecoratedPermutation())
 			{
-				optimizer.costPermutation();
+                opt.costPermutation();
 			}
 		}
 
@@ -2021,10 +2004,9 @@ public class SelectNode extends ResultSe
 		 */
 		if (wherePredicates != null)
 		{
-			Predicate pred = null;
 			for (int i = wherePredicates.size() - 1; i >= 0; i--)
 			{
-				pred = (Predicate)wherePredicates.getOptPredicate(i);
+                Predicate pred = (Predicate)wherePredicates.getOptPredicate(i);
 				if (pred.isScopedForPush())
 				{
 					predicateList.addOptPredicate(pred);
@@ -2034,7 +2016,7 @@ public class SelectNode extends ResultSe
 		}
 
 		/* Get the cost */
-		costEstimate = optimizer.getOptimizedCost();
+        costEstimate = opt.getOptimizedCost();
 
 		/* Update row counts if this is a scalar aggregate */
 		if ((selectAggregates != null) && (selectAggregates.size() > 0)) 
@@ -2067,7 +2049,8 @@ public class SelectNode extends ResultSe
 	 * @return The modified query tree
 	 * @exception StandardException        Thrown on error
 	 */
-	public ResultSetNode modifyAccessPaths(PredicateList predList)
+    @Override
+    ResultSetNode modifyAccessPaths(PredicateList predList)
 		throws StandardException
 	{
 		// Take the received list of predicates and propagate them to the
@@ -2083,7 +2066,8 @@ public class SelectNode extends ResultSe
 				"modifying access paths.");
 		}
 
-		((OptimizerImpl)optimizer).addScopedPredicatesToList(predList);
+        ((OptimizerImpl)optimizer).
+                addScopedPredicatesToList(predList, getContextManager());
 		return modifyAccessPaths();
 	}
 
@@ -2094,7 +2078,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode modifyAccessPaths() throws StandardException
+    @Override
+    ResultSetNode modifyAccessPaths() throws StandardException
 	{
 		int				 origFromListSize = fromList.size();
 		ResultColumnList leftRCList;
@@ -2125,10 +2110,10 @@ public class SelectNode extends ResultSe
 			// and thus removed from the list.
 			if (wherePredicates != null)
 			{
-				Predicate pred = null;
 				for (int i = wherePredicates.size() - 1; i >= 0; i--)
 				{
-					pred = (Predicate)wherePredicates.getOptPredicate(i);
+                    Predicate pred =
+                            (Predicate)wherePredicates.getOptPredicate(i);
 					if (pred.isScopedForPush())
 					{
 						SanityManager.THROWASSERT("Found scoped predicate " +
@@ -2198,20 +2183,16 @@ public class SelectNode extends ResultSe
 			 * replace the 1st 2 entries in the FromList.
 			 */
 			fromList.setElementAt(
-						 (JoinNode) getNodeFactory().getNode(
-												C_NodeTypes.JOIN_NODE,
-												leftResultSet,
-												rightResultSet,
-												null,
-												null,
-												leftRCList,
-												null,
-												//user supplied optimizer overrides
-												fromList.properties,
-												getContextManager()
-												),
-							0
-						);
+                new JoinNode(leftResultSet,
+                             rightResultSet,
+                             null,
+                             null,
+                             leftRCList,
+                             null,
+                             //user supplied optimizer overrides
+                             fromList.properties,
+                             getContextManager()),
+                0);
 
 			fromList.removeElementAt(1);
 		}
@@ -2226,7 +2207,8 @@ public class SelectNode extends ResultSe
 	 * 			the final cost estimate for the best join order of
 	 *          this SelectNode's optimizer.
 	 */
-	public CostEstimate getFinalCostEstimate()
+    @Override
+    CostEstimate getFinalCostEstimate()
 		throws StandardException
 	{
 		return optimizer.getFinalCost();
@@ -2235,6 +2217,7 @@ public class SelectNode extends ResultSe
 	/**
 		Determine if this select is updatable or not, for a cursor.
 	 */
+    @Override
 	boolean isUpdatableCursor(DataDictionary dd) throws StandardException
 	{
 		TableDescriptor	targetTableDescriptor;
@@ -2327,6 +2310,7 @@ public class SelectNode extends ResultSe
 		Assumes that isCursorUpdatable has been called, and that it
 		is only called for updatable cursors.
 	 */
+    @Override
 	FromTable getCursorTargetTable()
 	{
 		if (SanityManager.DEBUG)
@@ -2345,7 +2329,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public boolean referencesTarget(String name, boolean baseTable)
+    @Override
+    boolean referencesTarget(String name, boolean baseTable)
 		throws StandardException
 	{
 		if (fromList.referencesTarget(name, baseTable) ||
@@ -2369,6 +2354,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	boolean subqueryReferencesTarget(String name, boolean baseTable)
 		throws StandardException
 	{
@@ -2388,7 +2374,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void bindUntypedNullsToResultColumns(ResultColumnList bindingRCL)
+    @Override
+    void bindUntypedNullsToResultColumns(ResultColumnList bindingRCL)
 				throws StandardException
 	{
 		fromList.bindUntypedNullsToResultColumns(bindingRCL);
@@ -2471,7 +2458,8 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return	The lock mode
 	 */
-	public int updateTargetLockMode()
+    @Override
+    int updateTargetLockMode()
 	{
 		/* Do row locking if there is a restriction */
 		return fromList.updateTargetLockMode();
@@ -2485,9 +2473,12 @@ public class SelectNode extends ResultSe
 	 * @return Whether or not this ResultSet tree is guaranteed to return
 	 * at most 1 row based on heuristics.
 	 */
+    @Override
 	boolean returnsAtMostOneRow()
 	{
-		return (groupByList == null && selectAggregates != null && selectAggregates.size() != 0);
+        return (groupByList == null &&
+                selectAggregates != null &&
+                !selectAggregates.isEmpty());
 	}
 
 	/**
@@ -2497,6 +2488,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	public boolean referencesSessionSchema()
 		throws StandardException
 	{
@@ -2515,6 +2507,7 @@ public class SelectNode extends ResultSe
 	 *
 	 * @exception StandardException on error
 	 */
+    @Override
 	void acceptChildren(Visitor v)
 		throws StandardException
 	{
@@ -2591,7 +2584,7 @@ public class SelectNode extends ResultSe
 	/**
 	 * @return true if there are aggregates in the select list.
 	 */
-	public boolean hasAggregatesInSelectList() 
+    boolean hasAggregatesInSelectList()
 	{
 		return !selectAggregates.isEmpty();
 	}
@@ -2605,13 +2598,13 @@ public class SelectNode extends ResultSe
 	 *
 	 * @return true if this select node has any windows on it
 	 */
-	public boolean hasWindows()
+    boolean hasWindows()
 	{
 		return windows != null;
 	}
 
 
-	public static void checkNoWindowFunctions(QueryTreeNode clause,
+    static void checkNoWindowFunctions(QueryTreeNode clause,
 											   String clauseName)
 			throws StandardException {
 
@@ -2632,6 +2625,7 @@ public class SelectNode extends ResultSe
      *
      * A no-op for SelectNode.
      */
+    @Override
     void replaceOrForbidDefaults(TableDescriptor ttd,
                                  ResultColumnList tcl,
                                  boolean allowDefaults)

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetOperatorNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetOperatorNode.java Fri Jun 21 07:47:47 2013
@@ -21,25 +21,20 @@
 
 package	org.apache.derby.impl.sql.compile;
 
-import org.apache.derby.iapi.services.sanity.SanityManager;
-
+import java.util.HashMap;
+import java.util.Properties;
 import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.reference.SQLState;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.services.sanity.SanityManager;
 import org.apache.derby.iapi.sql.compile.CostEstimate;
 import org.apache.derby.iapi.sql.compile.Optimizable;
 import org.apache.derby.iapi.sql.compile.OptimizablePredicate;
 import org.apache.derby.iapi.sql.compile.OptimizablePredicateList;
-
 import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
-
-import org.apache.derby.iapi.reference.SQLState;
 import org.apache.derby.iapi.types.DataTypeDescriptor;
-
 import org.apache.derby.iapi.util.JBitSet;
 
-import java.util.HashMap;
-
 /**
  * A SetOperatorNode represents a UNION, INTERSECT, or EXCEPT in a DML statement. Binding and optimization
  * preprocessing is the same for all of these operations, so they share bind methods in this abstract class.
@@ -82,26 +77,23 @@ abstract class SetOperatorNode extends T
 	private HashMap<Predicate,Predicate> rightScopedPreds;
 
 	/**
-	 * Initializer for a SetOperatorNode.
+     * Constructor for a SetOperatorNode.
 	 *
 	 * @param leftResult		The ResultSetNode on the left side of this union
 	 * @param rightResult		The ResultSetNode on the right side of this union
 	 * @param all				Whether or not this is an ALL.
 	 * @param tableProperties	Properties list associated with the table
+     * @param cm                The context manager
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public void init(
-					Object leftResult,
-					Object rightResult,
-					Object all,
-					Object tableProperties)
-			throws StandardException
-	{
-		super.init(leftResult, rightResult, tableProperties);
-
-		this.all = ((Boolean) all).booleanValue();
+    SetOperatorNode(ResultSetNode leftResult,
+                    ResultSetNode rightResult,
+                    boolean all,
+                    Properties tableProperties,
+                    ContextManager cm) throws StandardException {
+        super(leftResult, rightResult, tableProperties, cm);
+        this.all = all;
 
 		/* resultColumns cannot be null, so we make a copy of the left RCL
 		 * for now.  At bind() time, we need to recopy the list because there
@@ -240,8 +232,7 @@ abstract class SetOperatorNode extends T
 			// _unscoped_ form, which means they are intended for _this_
 			// node instead of this node's children.  That's exactly what
 			// we want.
-			ResultSetNode prnRSN = (ResultSetNode) getNodeFactory().getNode(
-				C_NodeTypes.PROJECT_RESTRICT_NODE,
+            ResultSetNode prnRSN = new ProjectRestrictNode(
 				topNode,					// Child ResultSet
 				topNode.getResultColumns(),	// Projection
 				null,						// Restriction
@@ -308,6 +299,7 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	public boolean pushOptPredicate(OptimizablePredicate optimizablePredicate)
 		throws StandardException
 	{
@@ -327,15 +319,14 @@ abstract class SetOperatorNode extends T
 		// Check to see if the child nodes reference any base tables; if either
 		// child does not reference at least one base table, then we don't try
 		// to push the predicate.
-		boolean canPush = false;
-
 		JBitSet tableNums = new JBitSet(getReferencedTableMap().size());
 		BaseTableNumbersVisitor btnVis =
 			new BaseTableNumbersVisitor(tableNums);
 
 		// Check the left child.
 		leftResultSet.accept(btnVis);
-		canPush = (tableNums.getFirstSetBit() != -1);
+
+        boolean canPush = (tableNums.getFirstSetBit() != -1);
 
 		/* If we can't push it to _both_ children, then we don't push at all.
 		 * RESOLVE: We can add the ability to push a predicate to one side
@@ -430,7 +421,7 @@ abstract class SetOperatorNode extends T
 		// cases where predicates are not pushed all the way down; see
 		// modifyAccessPaths() in this class for more.
 		if (pushedPredicates == null)
-			pushedPredicates = new PredicateList();
+            pushedPredicates = new PredicateList(getContextManager());
 
 		pushedPredicates.addOptPredicate(pred);
 		return true;
@@ -441,6 +432,7 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
 	public void pullOptPredicates(
 		OptimizablePredicateList optimizablePredicates)
 		throws StandardException
@@ -476,11 +468,10 @@ abstract class SetOperatorNode extends T
 		 * which the scoped predicate was created because we can potentially
 		 * push that predicate elsewhere
 		 */
-		Predicate pred = null;
 		RemapCRsVisitor rcrv = new RemapCRsVisitor(false);
 		for (int i = 0; i < pushedPredicates.size(); i++)
 		{
-			pred = (Predicate)pushedPredicates.getOptPredicate(i);
+            Predicate pred = (Predicate)pushedPredicates.getOptPredicate(i);
 			if (pred.isScopedForPush())
 			{
 				/* We don't need to pull the predicate if it's scoped, but
@@ -529,7 +520,7 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @return	This object as a String
 	 */
-
+    @Override
 	public String toString()
 	{
 		if (SanityManager.DEBUG)
@@ -549,8 +540,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @param depth		The depth of this node in the tree
 	 */
-
-	public void printSubNodes(int depth)
+    @Override
+    void printSubNodes(int depth)
 	{
 		if (SanityManager.DEBUG)
 		{
@@ -584,7 +575,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void bindResultColumns(FromList fromListParam)
+    @Override
+    void bindResultColumns(FromList fromListParam)
 					throws StandardException
 	{
 		super.bindResultColumns(fromListParam);
@@ -619,7 +611,7 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
+    @Override
     void bindResultColumns(TableDescriptor targetTableDescriptor,
             FromVTI targetVTI, ResultColumnList targetColumnList,
             DMLStatementNode statement, FromList fromListParam)
@@ -679,7 +671,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error.
 	 */
-	public void bindUntypedNullsToResultColumns(ResultColumnList rcl)
+    @Override
+    void bindUntypedNullsToResultColumns(ResultColumnList rcl)
 				throws StandardException
 	{
 		/*
@@ -706,6 +699,7 @@ abstract class SetOperatorNode extends T
     /**
      * {@inheritDoc}
      */
+    @Override
     void replaceOrForbidDefaults(TableDescriptor ttd,
                                  ResultColumnList tcl,
                                  boolean allowDefaults)
@@ -784,6 +778,7 @@ abstract class SetOperatorNode extends T
 		}
 	}
 
+    @Override
     public void bindExpressions(FromList fromList) throws StandardException {
         // Actions for UnionNode qua top node of a multi-valued table value
         // constructor
@@ -805,8 +800,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public void bindTargetExpressions(FromList fromListParam)
+    @Override
+    void bindTargetExpressions(FromList fromListParam)
 					throws StandardException
 	{
 		leftResultSet.bindTargetExpressions(fromListParam);
@@ -821,6 +816,7 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @param orderByList	The order by list
 	 */
+    @Override
 	void pushOrderByList(OrderByList orderByList)
 	{
         if (this.orderByLists[0] != null) {
@@ -858,6 +854,7 @@ abstract class SetOperatorNode extends T
      * @param fetchFirst the OFFSET FIRST, if any
      * @param hasJDBClimitClause true if the clauses were added by (and have the semantics of) a JDBC limit clause
      */
+    @Override
     void pushOffsetFetchFirst( ValueNode offset, ValueNode fetchFirst, boolean hasJDBClimitClause )
     {
         this.offset = offset;
@@ -890,8 +887,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
-	public ResultSetNode preprocess(int numTables,
+    @Override
+    ResultSetNode preprocess(int numTables,
 									GroupByList gbl,
 									FromList fromList)
 								throws StandardException
@@ -904,7 +901,7 @@ abstract class SetOperatorNode extends T
 
 		/* Build the referenced table map (left || right) */
 		referencedTableMap = (JBitSet) leftResultSet.getReferencedTableMap().clone();
-		referencedTableMap.or((JBitSet) rightResultSet.getReferencedTableMap());
+        referencedTableMap.or(rightResultSet.getReferencedTableMap());
 
 		/* If this is a UNION without an all and we have
 		 * an order by then we can consider eliminating the sort for the
@@ -965,7 +962,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode ensurePredicateList(int numTables) 
+    @Override
+    ResultSetNode ensurePredicateList(int numTables)
 		throws StandardException
 	{
 		return genProjectRestrict(numTables);
@@ -979,7 +977,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public void verifySelectStarSubquery(FromList outerFromList, int subqueryType) 
+    @Override
+    void verifySelectStarSubquery(FromList outerFromList, int subqueryType)
 					throws StandardException
 	{
 		/* Check both sides - SELECT * is not valid on either side */
@@ -1000,6 +999,7 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
+    @Override
     FromTable getFromTableByName(String name, String schemaName, boolean exactMatch)
 		throws StandardException
 	{
@@ -1064,15 +1064,15 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public ResultSetNode setResultToBooleanTrueNode(boolean onlyConvertAlls)
+    @Override
+    ResultSetNode setResultToBooleanTrueNode(boolean onlyConvertAlls)
 		throws StandardException
 	{
 		// First create a FromList to hold this node (and only this node).
 
-		FromList fromList =
-			(FromList) getNodeFactory().getNode(
-				C_NodeTypes.FROM_LIST,
-				getContextManager());
+        FromList fromList = new FromList(
+                getOptimizerFactory().doJoinOrderOptimization(),
+                getContextManager());
 
 		fromList.addFromTable(this);
 
@@ -1094,25 +1094,17 @@ abstract class SetOperatorNode extends T
 
 		// Now create a ResultColumnList that simply holds the "*".
 
-		ResultColumnList rcl =
-			(ResultColumnList) getNodeFactory().getNode(
-				C_NodeTypes.RESULT_COLUMN_LIST,
-				getContextManager());
+        ResultColumnList rcl = new ResultColumnList(getContextManager());
 
-		ResultColumn allResultColumn =
-			(ResultColumn) getNodeFactory().getNode(
-				C_NodeTypes.ALL_RESULT_COLUMN,
-				null,
-				getContextManager());
+       ResultColumn allResultColumn =
+                new AllResultColumn(null, getContextManager());
 
 		rcl.addResultColumn(allResultColumn);
 
 		/* Create a new SELECT node of the form:
 		 *  SELECT * FROM <thisSetOperatorNode>
 		 */
-		ResultSetNode result =
-			(ResultSetNode) getNodeFactory().getNode(
-				C_NodeTypes.SELECT_NODE,
+        ResultSetNode result = new SelectNode(
 				rcl,      // ResultColumns
 				fromList, // FROM list
 				null,     // WHERE clause
@@ -1144,7 +1136,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @return boolean	Whether or not the FromSubquery is flattenable.
 	 */
-	public boolean flattenableInFromSubquery(FromList fromList)
+    @Override
+    boolean flattenableInFromSubquery(FromList fromList)
 	{
 		/* Unions in FromSubquerys are not flattenable.	 */
 		return false;
@@ -1158,7 +1151,8 @@ abstract class SetOperatorNode extends T
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-	public boolean performMaterialization(JBitSet outerTables)
+    @Override
+    boolean performMaterialization(JBitSet outerTables)
 		throws StandardException
 	{
 		// RESOLVE - just say no to materialization right now - should be a cost based decision
@@ -1185,10 +1179,7 @@ abstract class SetOperatorNode extends T
 		throws StandardException
 	{
 		if (leftOptPredicates == null) {
-			leftOptPredicates =
-				(PredicateList) getNodeFactory().getNode(
-					C_NodeTypes.PREDICATE_LIST,
-					getContextManager());
+            leftOptPredicates = new PredicateList(getContextManager());
 		}
 
 		return leftOptPredicates;
@@ -1203,10 +1194,7 @@ abstract class SetOperatorNode extends T
 		throws StandardException
 	{
 		if (rightOptPredicates == null) {
-			rightOptPredicates =
-				(PredicateList) getNodeFactory().getNode(
-					C_NodeTypes.PREDICATE_LIST,
-					getContextManager());
+            rightOptPredicates = new PredicateList(getContextManager());
 		}
 
 		return rightOptPredicates;

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetRoleNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetRoleNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetRoleNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetRoleNode.java Fri Jun 21 07:47:47 2013
@@ -22,39 +22,41 @@
 package     org.apache.derby.impl.sql.compile;
 
 import java.util.List;
-
+import org.apache.derby.iapi.error.StandardException;
 import org.apache.derby.iapi.reference.ClassName;
 import org.apache.derby.iapi.services.classfile.VMOpcode;
 import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.context.ContextManager;
 import org.apache.derby.iapi.services.sanity.SanityManager;
-import org.apache.derby.iapi.error.StandardException;
-import org.apache.derby.iapi.sql.execute.ConstantAction;
 import org.apache.derby.iapi.sql.StatementType;
-
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.sql.execute.ConstantAction;
 
 /**
  * A SetRoleNode is the root of a QueryTree that represents a SET ROLE
  * statement.
  */
 
-public class SetRoleNode extends MiscellaneousStatementNode
+class SetRoleNode extends MiscellaneousStatementNode
 {
     private String      name;
     private int         type;
 
     /**
-     * Initializer for a SetRoleNode
      *
-     * @param roleName  The name of the new role, null if NONE specified
-     * @param type      Type of role name could be USER or dynamic parameter
-     *
-     */
-    public void init(Object roleName, Object type)
-    {
-        this.name = (String) roleName;
-        if (type != null) {
-            this.type = ((Integer)type).intValue();
-        }
+     * @param roleName The name of the new role, null if NONE specified
+     * @param type Type of role name could be USER or dynamic parameter
+     * @param cm Context manager
+     * @throws StandardException
+     */
+    SetRoleNode(
+            String roleName,
+            int type,
+            ContextManager cm) throws StandardException {
+        super(cm);
+        this.name = roleName;
+        this.type = type;
+        setNodeType(C_NodeTypes.SET_ROLE_NODE);
     }
 
     /**
@@ -63,7 +65,7 @@ public class SetRoleNode extends Miscell
      *
      * @return  This object as a String
      */
-
+    @Override
     public String toString()
     {
         if (SanityManager.DEBUG) {
@@ -87,6 +89,7 @@ public class SetRoleNode extends Miscell
      *
      * @exception StandardException         Thrown on failure
      */
+    @Override
     public ConstantAction   makeConstantAction() throws StandardException
     {
         return getGenericConstantActionFactory().
@@ -100,7 +103,7 @@ public class SetRoleNode extends Miscell
      *
      * @exception StandardException         Thrown on error
      */
-
+    @Override
     void generate(ActivationClassBuilder acb, MethodBuilder mb)
             throws StandardException
     {
@@ -132,7 +135,8 @@ public class SetRoleNode extends Miscell
     private void generateParameterValueSet(ActivationClassBuilder acb)
         throws StandardException
     {
-        List parameterList = getCompilerContext().getParameterList();
+        List<ParameterNode>
+            parameterList = getCompilerContext().getParameterList();
         // parameter list size should be 1
         if (SanityManager.DEBUG) {
             SanityManager.ASSERT(parameterList != null &&
@@ -149,6 +153,7 @@ public class SetRoleNode extends Miscell
      *          NEED_NOTHING_ACTIVATION depending on params
      *
      */
+    @Override
     int activationKind()
     {
         /*
@@ -169,6 +174,7 @@ public class SetRoleNode extends Miscell
 	 *
 	 * @return false
 	 */
+    @Override
 	public boolean isAtomic()
 	{
 		return false;

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetSchemaNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetSchemaNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetSchemaNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetSchemaNode.java Fri Jun 21 07:47:47 2013
@@ -22,17 +22,15 @@
 package	org.apache.derby.impl.sql.compile;
 
 import java.util.List;
-
+import org.apache.derby.iapi.error.StandardException;
 import org.apache.derby.iapi.reference.ClassName;
 import org.apache.derby.iapi.services.classfile.VMOpcode;
-
 import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.context.ContextManager;
 import org.apache.derby.iapi.services.sanity.SanityManager;
-
-import org.apache.derby.iapi.error.StandardException;
-import org.apache.derby.iapi.sql.execute.ConstantAction;
 import org.apache.derby.iapi.sql.StatementType;
-
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.sql.execute.ConstantAction;
 
 /**
  * A SetSchemaNode is the root of a QueryTree that 
@@ -43,32 +41,36 @@ import org.apache.derby.iapi.sql.Stateme
  *
  */
 
-public class SetSchemaNode extends MiscellaneousStatementNode
+class SetSchemaNode extends MiscellaneousStatementNode
 {
 	private String 	name;
 	private int 	type;
 	
 	/**
-	 * Initializer for a SetSchemaNode
+     * Constructor for a SetSchemaNode
 	 *
 	 * @param schemaName	The name of the new schema
 	 * @param type			Type of schema name could be USER or dynamic parameter
+     * @param cm            The context manager
 	 *
 	 */
-	public void init(Object schemaName, Object type)
-	{
-		this.name = (String) schemaName;
-		if (type != null)
-			this.type = ((Integer)type).intValue();
+    SetSchemaNode(
+            String schemaName,
+            int type,
+            ContextManager cm) {
+        super(cm);
+        this.name = schemaName;
+        this.type = type;
+        setNodeType(C_NodeTypes.SET_SCHEMA_NODE);
 	}
 
-	/**
+    /**
 	 * Convert this object to a String.  See comments in QueryTreeNode.java
 	 * for how this should be done for tree printing.
 	 *
 	 * @return	This object as a String
 	 */
-
+    @Override
 	public String toString()
 	{
 		if (SanityManager.DEBUG)
@@ -84,7 +86,7 @@ public class SetSchemaNode extends Misce
 		}
 	}
 
-	public String statementToString()
+    String statementToString()
 	{
 		return "SET SCHEMA";
 	}
@@ -94,7 +96,8 @@ public class SetSchemaNode extends Misce
 	 *
 	 * @exception StandardException		Thrown on failure
 	 */
-	public ConstantAction	makeConstantAction() throws StandardException
+    @Override
+    public ConstantAction makeConstantAction() throws StandardException
 	{
 		return	getGenericConstantActionFactory().getSetSchemaConstantAction(name, type);		
 	}
@@ -106,7 +109,7 @@ public class SetSchemaNode extends Misce
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
+    @Override
     void generate(ActivationClassBuilder acb, MethodBuilder mb)
 							throws StandardException
 	{
@@ -136,7 +139,8 @@ public class SetSchemaNode extends Misce
 	void generateParameterValueSet(ActivationClassBuilder acb)
 		throws StandardException
 	{
-		List parameterList = getCompilerContext().getParameterList();
+        List<ParameterNode>
+            parameterList = getCompilerContext().getParameterList();
 		// parameter list size should be 1
 		if (SanityManager.DEBUG)
 			SanityManager.ASSERT(parameterList != null && parameterList.size() == 1);
@@ -152,6 +156,7 @@ public class SetSchemaNode extends Misce
 	 *			NEED_NOTHING_ACTIVATION depending on params
 	 *
 	 */
+    @Override
 	int activationKind()
 	{
 		/*

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetTransactionIsolationNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetTransactionIsolationNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetTransactionIsolationNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SetTransactionIsolationNode.java Fri Jun 21 07:47:47 2013
@@ -21,22 +21,14 @@
 
 package	org.apache.derby.impl.sql.compile;
 
-import org.apache.derby.iapi.services.context.ContextManager;
-
-import org.apache.derby.iapi.services.compiler.MethodBuilder;
-
 import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.sql.execute.ConstantAction;
-
-import org.apache.derby.iapi.sql.Activation;
-import org.apache.derby.iapi.sql.ResultSet;
-
-import org.apache.derby.impl.sql.compile.ActivationClassBuilder;
-
-import org.apache.derby.iapi.services.sanity.SanityManager;
 import org.apache.derby.iapi.reference.ClassName;
 import org.apache.derby.iapi.services.classfile.VMOpcode;
+import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.sql.execute.ConstantAction;
 
 /**
  * A SetTransactionIsolationNode is the root of a QueryTree that represents a SET
@@ -44,18 +36,21 @@ import org.apache.derby.iapi.services.cl
  *
  */
 
-public class SetTransactionIsolationNode extends TransactionStatementNode
+class SetTransactionIsolationNode extends TransactionStatementNode
 {
 	private int		isolationLevel;
 
 	/**
-	 * Initializer for SetTransactionIsolationNode
+     * Constructor for SetTransactionIsolationNode
 	 *
 	 * @param isolationLevel		The new isolation level
-	 */
-	public void init(Object isolationLevel)
+     * @param cm                    The context manager
+     */
+    SetTransactionIsolationNode(int isolationLevel, ContextManager cm)
 	{
-		this.isolationLevel = ((Integer) isolationLevel).intValue();
+        super(cm);
+        setNodeType(C_NodeTypes.SET_TRANSACTION_ISOLATION_NODE);
+        this.isolationLevel = isolationLevel;
 	}
 
 	/**
@@ -64,7 +59,7 @@ public class SetTransactionIsolationNode
 	 *
 	 * @return	This object as a String
 	 */
-
+    @Override
 	public String toString()
 	{
 		if (SanityManager.DEBUG)
@@ -78,7 +73,7 @@ public class SetTransactionIsolationNode
 		}
 	}
 
-	public String statementToString()
+    String statementToString()
 	{
 		return "SET TRANSACTION ISOLATION";
 	}
@@ -90,6 +85,7 @@ public class SetTransactionIsolationNode
 	 * @param mb	The method for the method to be built
 	 * @exception StandardException thrown if generation fails
 	 */
+    @Override
     void generate(ActivationClassBuilder acb, MethodBuilder mb)
 							throws StandardException
 	{
@@ -106,7 +102,8 @@ public class SetTransactionIsolationNode
 	 *
 	 * @exception StandardException		Thrown on failure
 	 */
-	public ConstantAction	makeConstantAction() throws StandardException
+    @Override
+    public ConstantAction makeConstantAction() throws StandardException
 	{
 		return getGenericConstantActionFactory().getSetTransactionIsolationConstantAction(isolationLevel);
 	}

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java Fri Jun 21 07:47:47 2013
@@ -21,42 +21,32 @@
 
 package	org.apache.derby.impl.sql.compile;
 
-import org.apache.derby.iapi.sql.compile.C_NodeTypes;
-
-import org.apache.derby.iapi.error.StandardException;
-
-
-import org.apache.derby.iapi.types.TypeId;
-import org.apache.derby.iapi.types.DataTypeDescriptor;
-
-
-import org.apache.derby.iapi.reference.SQLState;
-import org.apache.derby.iapi.reference.ClassName;
-
 import java.sql.Types;
-
 import java.util.List;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.reference.ClassName;
+import org.apache.derby.iapi.reference.SQLState;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.types.DataTypeDescriptor;
+import org.apache.derby.iapi.types.TypeId;
 
 /**
  * This node represents a unary upper or lower operator
  *
  */
 
-public class SimpleStringOperatorNode extends UnaryOperatorNode
+class SimpleStringOperatorNode extends UnaryOperatorNode
 {
-	/**
-	 * Initializer for a SimpleOperatorNode
-	 *
-	 * @param operand		The operand
-	 * @param methodName	The method name
-	 */
-
-	public void init(Object operand, Object methodName)
-	{
-		super.init(operand, methodName, methodName);
-	}
+    SimpleStringOperatorNode(
+            ValueNode operand,
+            String methodName,
+            ContextManager cm) throws StandardException {
+        super(operand, methodName, methodName, cm);
+        setNodeType(C_NodeTypes.SIMPLE_STRING_OPERATOR_NODE);
+    }
 
-	/**
+    /**
 	 * Bind this operator
 	 *
 	 * @param fromList			The query's FROM list
@@ -67,7 +57,7 @@ public class SimpleStringOperatorNode ex
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
+    @Override
     ValueNode bindExpression(
         FromList fromList, SubqueryList subqueryList, List<AggregateNode> aggregates)
 			throws StandardException
@@ -103,12 +93,7 @@ public class SimpleStringOperatorNode ex
 								getCastToCharWidth(
 									operand.getTypeServices()));
 			
-					operand =  (ValueNode)
-						getNodeFactory().getNode(
-							C_NodeTypes.CAST_NODE,
-							operand,
-							dtd,
-							getContextManager());
+                    operand = new CastNode(operand, dtd, getContextManager());
 					
 				// DERBY-2910 - Match current schema collation for implicit cast as we do for
 				// explicit casts per SQL Spec 6.12 (10)					
@@ -140,7 +125,7 @@ public class SimpleStringOperatorNode ex
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
-
+    @Override
 	void bindParameter()
 			throws StandardException
 	{
@@ -159,7 +144,8 @@ public class SimpleStringOperatorNode ex
 	 * This is a length operator node.  Overrides this method
 	 * in UnaryOperatorNode for code generation purposes.
 	 */
-	public String getReceiverInterfaceName() {
+    @Override
+    String getReceiverInterfaceName() {
 	    return ClassName.StringDataValue;
 	}
 }