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 [19/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/WindowNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowNode.java Fri Jun 21 07:47:47 2013
@@ -22,6 +22,7 @@
 package org.apache.derby.impl.sql.compile;
 
 import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.services.context.ContextManager;
 
 /**
  * Superclass of window definition and window reference.
@@ -32,32 +33,29 @@ public abstract class WindowNode extends
      * The provided name of the window if explicitly defined in a window
      * clause. If the definition is inlined, currently the definition has
      * windowName "IN_LINE".  The standard 2003 sec. 4.14.9 calls for a
-     * impl. defined one.
+     * implementation defined one.
      */
     private String windowName;
 
 
     /**
-     * Initializer
+     * Constructor
      *
-     * @param arg1 The window name
+     * @param windowName The window name
+     * @param cm         The context manager
      *
      * @exception StandardException
      */
-    public void init(Object arg1)
-        throws StandardException
+    WindowNode(String windowName, ContextManager cm) throws StandardException
     {
-        windowName = (String)arg1;
+        super(cm);
+        this.windowName = windowName;
     }
 
-
     /**
      * @return the name of this window
      */
     public String getName() {
         return windowName;
     }
-
-
-
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowReferenceNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowReferenceNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowReferenceNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowReferenceNode.java Fri Jun 21 07:47:47 2013
@@ -22,6 +22,8 @@
 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.sql.compile.C_NodeTypes;
 
 /**
  * Represents a reference to an explicitly defined window
@@ -29,19 +31,21 @@ import org.apache.derby.iapi.error.Stand
 public final class WindowReferenceNode extends WindowNode
 {
     /**
-     * Initializer
+     * Constructor
      *
-     * @param arg1 The window name referenced
+     * @param windowName The window name referenced
+     * @param cm         The context manager
      *
      * @exception StandardException
      */
-    public void init(Object arg1)
+    WindowReferenceNode(String windowName, ContextManager cm)
         throws StandardException
     {
-        super.init(arg1);
+        super(windowName, cm);
+        setNodeType(C_NodeTypes.WINDOW_REFERENCE_NODE);
     }
 
-    // java.lang.Object override
+    @Override
     public String toString() {
         return "referenced window: " + getName() + "\n" +
             super.toString();

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowResultSetNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/WindowResultSetNode.java Fri Jun 21 07:47:47 2013
@@ -26,46 +26,50 @@ import org.apache.derby.iapi.error.Stand
 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.io.FormatableBitSet;
 import org.apache.derby.iapi.services.sanity.SanityManager;
-import org.apache.derby.iapi.sql.LanguageFactory;
 import org.apache.derby.iapi.sql.compile.C_NodeTypes;
 
 
 /**
  * A WindowResultSetNode represents a result set for a window partitioning on a
- * select. Modelled on the code in GroupByNode.
+ * select. Modeled on the code in GroupByNode.
  */
-public class WindowResultSetNode extends SingleChildResultSetNode
+class WindowResultSetNode extends SingleChildResultSetNode
 {
     /**
      * The parent to the WindowResultSetNode.  We generate a ProjectRestrict
      * over the windowing node and parent is set to that node.
      */
     FromTable   parent;
-    List windowFuncCalls;
+    List<WindowFunctionNode> windowFuncCalls;
     WindowDefinitionNode wdn;
 
     /**
-     * Intializer for a WindowResultSetNode.
-     * @param bottomPR The project restrict result set we want to wrap
-     * @param windowDef The window definition
-     * @param windowFuncCalls All window function calls in SELECT's select list
-     * and order by list.
+     * Constructor for a WindowResultSetNode.
+     *
+     * @param bottomPR     The project restrict result set we want to wrap
+     * @param windowDef    The window definition
+     * @param windowFuncCalls
+     *                     All window function calls in SELECT's select list
+     *                     and order by list.
      * @param nestingLevel Nesting level
+     * @param cm           The context manager
      *
      * @exception StandardException     Thrown on error
      */
-    public void init(
-        Object bottomPR,
-        Object windowDef,
-        Object windowFuncCalls,
-        Object nestingLevel) throws StandardException
+    WindowResultSetNode(ResultSetNode            bottomPR,
+                        WindowDefinitionNode     windowDef,
+                        List<WindowFunctionNode> windowFuncCalls,
+                        int                      nestingLevel,
+                        ContextManager           cm) throws StandardException
     {
-        super.init(bottomPR, null);
-        this.wdn = (WindowDefinitionNode)windowDef;
-        this.windowFuncCalls = (List) windowFuncCalls;
-        setLevel(((Integer)nestingLevel).intValue());
+        super(bottomPR, null, cm);
+        setNodeType(C_NodeTypes.WINDOW_RESULTSET_NODE);
+        this.wdn = windowDef;
+        this.windowFuncCalls = windowFuncCalls;
+        setLevel(nestingLevel);
 
         ResultColumnList newBottomRCL;
 
@@ -98,9 +102,7 @@ public class WindowResultSetNode extends
         /*
         ** Get the new PR, put above the WindowResultSetNode.
         */
-        ResultColumnList rclNew = (ResultColumnList)getNodeFactory().
-            getNode(C_NodeTypes.RESULT_COLUMN_LIST,
-                    getContextManager());
+        ResultColumnList rclNew = new ResultColumnList(getContextManager());
 
         int sz = resultColumns.size();
         for (int i = 0; i < sz; i++)
@@ -116,32 +118,25 @@ public class WindowResultSetNode extends
         // have to be projected out upstream.
         rclNew.copyOrderBySelect(resultColumns);
 
-        parent = (FromTable) getNodeFactory().getNode(
-                                        C_NodeTypes.PROJECT_RESTRICT_NODE,
-                                        this, // child
-                                        rclNew,
-                                        null, // havingClause,
-                                        null, // restriction list
-                                        null, // project subqueries
-                                        null, // havingSubquerys,
-                                        null, // tableProperties,
-                                        getContextManager());
+        parent = new ProjectRestrictNode(this, // child
+                                         rclNew,
+                                         null, // havingClause,
+                                         null, // restriction list
+                                         null, // project subqueries
+                                         null, // havingSubquerys,
+                                         null, // tableProperties,
+                                         getContextManager());
 
 
         /*
          * Reset the bottom RCL to be empty.
          */
-        childResult.setResultColumns((ResultColumnList)
-                                            getNodeFactory().getNode(
-                                                C_NodeTypes.RESULT_COLUMN_LIST,
-                                                getContextManager()));
+        childResult.setResultColumns(new ResultColumnList(getContextManager()));
 
         /*
          * Set the Windowing RCL to be empty
          */
-        resultColumns = (ResultColumnList) getNodeFactory().getNode(
-                                            C_NodeTypes.RESULT_COLUMN_LIST,
-                                            getContextManager());
+        resultColumns = new ResultColumnList(getContextManager());
 
 
         // Add all referenced columns in select list to windowing node's RCL
@@ -150,8 +145,6 @@ public class WindowResultSetNode extends
         CollectNodesVisitor<ColumnReference> getCRVisitor =
             new CollectNodesVisitor<ColumnReference>(ColumnReference.class);
 
-        ResultColumnList prcl = parent.getResultColumns();
-
         parent.getResultColumns().accept(getCRVisitor);
 
         // Find all unique columns referenced and add those to windowing result
@@ -179,10 +172,9 @@ public class WindowResultSetNode extends
         ResultColumnList windowingRCL = resultColumns;
 
         for (int i= 0; i< uniqueCols.size(); i++) {
-            ValueNode crOrVcn = (ValueNode) uniqueCols.get(i);
+            ValueNode crOrVcn = uniqueCols.get(i);
 
-            ResultColumn newRC = (ResultColumn) getNodeFactory().getNode(
-                    C_NodeTypes.RESULT_COLUMN,
+            ResultColumn newRC = new ResultColumn(
                     "##UnWindowingColumn",
                     crOrVcn,
                     getContextManager());
@@ -194,8 +186,7 @@ public class WindowResultSetNode extends
             newRC.setVirtualColumnId(bottomRCL.size());
 
             // now add this column to the windowing result column list
-            ResultColumn wRC = (ResultColumn) getNodeFactory().getNode(
-                    C_NodeTypes.RESULT_COLUMN,
+            ResultColumn wRC = new ResultColumn(
                     "##UnWindowingColumn",
                     crOrVcn,
                     getContextManager());
@@ -208,11 +199,10 @@ public class WindowResultSetNode extends
              ** Reset the original node to point to the
              ** Windowing result set.
              */
-            VirtualColumnNode vc = (VirtualColumnNode) getNodeFactory().getNode(
-                    C_NodeTypes.VIRTUAL_COLUMN_NODE,
+            VirtualColumnNode vc = new VirtualColumnNode(
                     this, // source result set.
                     wRC,
-                    new Integer(windowingRCL.size()),
+                    windowingRCL.size(),
                     getContextManager());
 
             SubstituteExpressionVisitor seVis =
@@ -223,15 +213,15 @@ public class WindowResultSetNode extends
 
 
     /**
-     * @return true if an equivalent column reference to cand is already
-     * present in uniqueColRefs
+     * @return {@code true} if an equivalent column reference to {@code cand}
+     *         is already present in {@code uniqueColRefs}
      */
-    private boolean colRefAlreadySeen(List uniqueColRefs,
+    private boolean colRefAlreadySeen(List<ValueNode> uniqueColRefs,
                                       ColumnReference cand)
             throws StandardException {
 
         for (int i= 0; i< uniqueColRefs.size(); i++) {
-            ColumnReference cr = (ColumnReference) uniqueColRefs.get(i);
+            ColumnReference cr = (ColumnReference)uniqueColRefs.get(i);
 
             if (cr.isEquivalent(cand)) {
                 return true;
@@ -250,24 +240,18 @@ public class WindowResultSetNode extends
          * call with an RC.  We toss out the list of RCs, we need to get
          * each RC as we process its corresponding window function.
          */
-        LanguageFactory lf =
-            getLanguageConnectionContext().getLanguageFactory();
-
         ResultColumnList bottomRCL  = childResult.getResultColumns();
         ResultColumnList windowingRCL = resultColumns;
 
         ReplaceWindowFuncCallsWithCRVisitor replaceCallsVisitor =
             new ReplaceWindowFuncCallsWithCRVisitor(
-                (ResultColumnList) getNodeFactory().getNode(
-                    C_NodeTypes.RESULT_COLUMN_LIST,
-                    getContextManager()),
+                new ResultColumnList(getContextManager()),
                 ((FromTable) childResult).getTableNumber(),
                 ResultSetNode.class);
         parent.getResultColumns().accept(replaceCallsVisitor);
 
         for (int i=0; i < windowFuncCalls.size(); i++) {
-            WindowFunctionNode winFunc =
-                (WindowFunctionNode) windowFuncCalls.get(i);
+            WindowFunctionNode winFunc = windowFuncCalls.get(i);
 
             if (SanityManager.DEBUG) {
                 SanityManager.ASSERT(
@@ -280,8 +264,7 @@ public class WindowResultSetNode extends
                 (WindowDefinitionNode)winFunc.getWindow();
 
             if (funcWindow == wdn) {
-                ResultColumn newRC = (ResultColumn) getNodeFactory().getNode(
-                    C_NodeTypes.RESULT_COLUMN,
+                ResultColumn newRC = new ResultColumn(
                     "##winFuncResult",
                     winFunc.getNewNullResultExpression(),
                     getContextManager());
@@ -290,27 +273,21 @@ public class WindowResultSetNode extends
                 newRC.bindResultColumnToExpression();
                 bottomRCL.addElement(newRC);
                 newRC.setVirtualColumnId(bottomRCL.size());
-                int winFuncResultVColId = newRC.getVirtualColumnId();
 
                 /*
                 ** Set the WindowResultSetNode result column to point to this.
                 ** The Windowing Node result was created when we called
                 ** ReplaceWindowFuncCallsWithCRVisitor.
                 */
-                ColumnReference newColumnRef =
-                    (ColumnReference) getNodeFactory().getNode(
-                        C_NodeTypes.COLUMN_REFERENCE,
-                        newRC.getName(),
-                        null,
-                        getContextManager());
+                ColumnReference newColumnRef = new ColumnReference(
+                        newRC.getName(), null, getContextManager());
 
                 newColumnRef.setSource(newRC);
                 newColumnRef.setNestingLevel(this.getLevel());
                 newColumnRef.setSourceLevel(this.getLevel());
                 newColumnRef.markGeneratedToReplaceWindowFunctionCall();
 
-                ResultColumn tmpRC = (ResultColumn) getNodeFactory().getNode(
-                    C_NodeTypes.RESULT_COLUMN,
+                ResultColumn tmpRC = new ResultColumn(
                     newRC.getColumnName(),
                     newColumnRef,
                     getContextManager());
@@ -338,6 +315,7 @@ public class WindowResultSetNode extends
      * override
      * @see QueryTreeNode#generate
      */
+    @Override
     void generate(ActivationClassBuilder acb, MethodBuilder mb)
             throws StandardException
     {
@@ -415,6 +393,7 @@ public class WindowResultSetNode extends
      * QueryTreeNode override
      * @see QueryTreeNode#printSubNodes
      */
+    @Override
     public void printSubNodes(int depth) {
         if (SanityManager.DEBUG) {
 			super.printSubNodes(depth);

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLConstantNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLConstantNode.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLConstantNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLConstantNode.java Fri Jun 21 07:47:47 2013
@@ -23,31 +23,16 @@ package    org.apache.derby.impl.sql.com
 
 import org.apache.derby.iapi.error.StandardException;
 import org.apache.derby.iapi.services.compiler.MethodBuilder;
-import org.apache.derby.iapi.services.io.StoredFormatIds;
-import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.services.context.ContextManager;
+import org.apache.derby.iapi.sql.compile.C_NodeTypes;
 import org.apache.derby.iapi.types.TypeId;
 
-import org.apache.derby.impl.sql.compile.ExpressionClassBuilder;
-
-import org.apache.derby.iapi.util.ReuseFactory;
-
 public final class XMLConstantNode extends ConstantNode
 {
-    /**
-     * Initializer for an XMLConstantNode.
-     *
-     * @param arg1 The TypeId for the type of the node
-     *
-     * @exception StandardException
-     */
-    public void init(
-                    Object arg1)
-        throws StandardException
-    {
-        super.init(
-                    arg1,
-                    Boolean.TRUE,
-                    ReuseFactory.getInteger(0));
+    XMLConstantNode(TypeId t, ContextManager cm)
+            throws StandardException {
+        super(t, true, 0, cm);
+        setNodeType(C_NodeTypes.XML_CONSTANT_NODE);
     }
 
     /**
@@ -60,6 +45,7 @@ public final class XMLConstantNode exten
      *
      * @exception StandardException        Thrown on error
      */
+    @Override
     Object getConstantValueAsObject() throws StandardException 
     {
         return value.getObject();

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java Fri Jun 21 07:47:47 2013
@@ -26,19 +26,11 @@ import javax.xml.parsers.DocumentBuilder
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
 import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
-import org.apache.derby.iapi.util.JBitSet;
+import org.apache.derby.iapi.services.context.ContextManager;
 import org.apache.derby.iapi.services.monitor.Monitor;
 import org.apache.derby.iapi.sql.compile.AccessPath;
 import org.apache.derby.iapi.sql.compile.CostEstimate;
@@ -50,7 +42,11 @@ import org.apache.derby.iapi.sql.compile
 import org.apache.derby.iapi.sql.compile.RequiredRowOrdering;
 import org.apache.derby.iapi.sql.dictionary.AliasDescriptor;
 import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
+import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
 import org.apache.derby.iapi.util.IdUtil;
+import org.apache.derby.iapi.util.JBitSet;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 /**
  * Optimizer tracer which produces output in an xml format.
@@ -496,14 +492,22 @@ class   XMLOptTrace implements  OptTrace
         try {
             if ( isBaseTable( optimizable ) )
             {
-                TableDescriptor td = ((FromBaseTable) ((ProjectRestrictNode) optimizable).getChildResult()).getTableDescriptor();
-                return makeTableName( td.getSchemaName(), td.getName() );
+                ProjectRestrictNode prn = (ProjectRestrictNode) optimizable;
+                TableDescriptor td = 
+                    ((FromBaseTable) prn.getChildResult()).getTableDescriptor();
+                return makeTableName( td.getSchemaName(),
+                                      td.getName(),
+                                      prn.getContextManager() );
             }
             else if ( isTableFunction( optimizable ) )
             {
+                ProjectRestrictNode prn = (ProjectRestrictNode) optimizable;
                 AliasDescriptor ad =
-                    ((StaticMethodCallNode) ((FromVTI) ((ProjectRestrictNode) optimizable).getChildResult()).getMethodCall() ).ad;
-                return makeTableName( ad.getSchemaName(), ad.getName() );
+                    ((StaticMethodCallNode) ((FromVTI) prn.getChildResult()).
+                        getMethodCall() ).ad;
+                return makeTableName( ad.getSchemaName(), 
+                                      ad.getName(),
+                                      prn.getContextManager() );
             }
             else if ( isFromTable( optimizable ) )
             {
@@ -521,7 +525,7 @@ class   XMLOptTrace implements  OptTrace
         String  nodeClass = optimizable.getClass().getName();
         String  unqualifiedName = nodeClass.substring( nodeClass.lastIndexOf( "." ) + 1 );
 
-        return makeTableName( null, unqualifiedName );
+        return makeTableName( null, unqualifiedName, null );
     }
 
     /** Return true if the optimizable is a base table */
@@ -556,10 +560,10 @@ class   XMLOptTrace implements  OptTrace
     }
 
     /** Make a TableName */
-    private TableName   makeTableName( String schemaName, String unqualifiedName )
+    private TableName   makeTableName(
+            String schemaName, String unqualifiedName, ContextManager cm )
     {
-        TableName   result = new TableName();
-        result.init( schemaName, unqualifiedName );
+        TableName result = new TableName(schemaName, unqualifiedName, cm);
 
         return result;
     }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLTypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLTypeCompiler.java?rev=1495305&r1=1495304&r2=1495305&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLTypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLTypeCompiler.java Fri Jun 21 07:47:47 2013
@@ -21,23 +21,19 @@
 
 package org.apache.derby.impl.sql.compile;
 
+import org.apache.derby.iapi.reference.ClassName;
+import org.apache.derby.iapi.services.io.StoredFormatIds;
 import org.apache.derby.iapi.services.loader.ClassFactory;
 import org.apache.derby.iapi.services.sanity.SanityManager;
-import org.apache.derby.iapi.services.io.StoredFormatIds;
 import org.apache.derby.iapi.sql.compile.TypeCompiler;
-
-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.ClassName;
+import org.apache.derby.iapi.types.TypeId;
 
 /**
  * This class implements TypeCompiler for the XML type.
  */
 
-public class XMLTypeCompiler extends BaseTypeCompiler
+class XMLTypeCompiler extends BaseTypeCompiler
 {
     /**
      * Tell whether this type (XML) can be converted to the given type.
@@ -145,6 +141,7 @@ public class XMLTypeCompiler extends Bas
     /**
      * @see BaseTypeCompiler#dataValueMethodName
      */
+    @Override
     protected String dataValueMethodName()
     {
         int formatId = getStoredFormatIdFromTypeId();