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 dj...@apache.org on 2007/05/18 00:10:44 UTC

svn commit: r539142 - in /db/derby/code/trunk/java/engine/org/apache/derby: iapi/sql/compile/ impl/sql/compile/

Author: djd
Date: Thu May 17 15:10:43 2007
New Revision: 539142

URL: http://svn.apache.org/viewvc?view=rev&rev=539142
Log:
Cleanup TypeCompiler.generateNull() and generateDataValue() to not pass the base class name since
it is not required. Add comments to BaseTypeCompiler's implementation of these methods
describing what they are doing.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/TypeCompiler.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CLOBTypeCompiler.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharTypeCompiler.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ExpressionClassBuilder.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UserDefinedTypeCompiler.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/TypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/TypeCompiler.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/TypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/TypeCompiler.java Thu May 17 15:10:43 2007
@@ -184,11 +184,10 @@
 	 * @param collationType For character DVDs, this will be used to determine
 	 *   what Collator should be associated with the DVD which in turn will 
 	 *   decide whether to generate CollatorSQLcharDVDs or SQLcharDVDs.
-	 * @param className name of the base class of the activation's hierarchy
 	 */
 
 	void generateNull(ExpressionClassBuilder eb,
-			MethodBuilder mb, int collationType, String className);
+			MethodBuilder mb, int collationType);
 
 
 	/**
@@ -209,13 +208,12 @@
 	 *   what Collator should be associated with the DVD which in turn will 
 	 *   decide whether to generate CollatorSQLcharDVDs or SQLcharDVDs. For 
 	 *   other types of DVDs, this parameter will be ignored.
-	 * @param className name of the base class of the activation's hierarchy
 	 * @param field LocalField
 	 */
 	void generateDataValue(
 			ExpressionClassBuilder eb,
 			MethodBuilder mb, int collationType, 
-			String className, LocalField field);
+			LocalField field);
 
 	/**
 	 * Return the maximum width for this data type when cast to a char type.

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseTypeCompiler.java Thu May 17 15:10:43 2007
@@ -93,10 +93,24 @@
 										);
 	}
 
-	/** @see TypeCompiler#generateNull(ExpressionClassBuilder, MethodBuilder, int, String)*/
+    /**
+     * The caller will have pushed a DataValueFactory and a null or a value
+     * of the correct type (interfaceName()). Thus upon entry the
+     * stack looks like on of:
+     * ...,dvf,ref
+     * ...,dvf,null
+     * 
+     * This method then sets up to call the required method
+     * on DataValueFactory using the nullMethodName().
+     * The value left on the stack will be a DataValueDescriptor
+     * of the correct type:
+     * 
+     * ...,dvd
+     * 
+     * @see TypeCompiler#generateNull(ExpressionClassBuilder, MethodBuilder, int)
+     */
 	public void generateNull(ExpressionClassBuilder e,
-			MethodBuilder mb, int collationType, 
-			String className)
+			MethodBuilder mb, int collationType)
 	{
 		mb.callMethod(VMOpcode.INVOKEINTERFACE, (String) null,
 									nullMethodName(),
@@ -104,10 +118,42 @@
 									1);
 	}
 
-	/** @see TypeCompiler#generateDataValue(ExpressionClassBuilder, MethodBuilder, int, String, LocalField) */
-	public void generateDataValue(ExpressionClassBuilder eb,
+    
+    /**
+     * The caller will have pushed a DataValueFactory and  value
+     * of that can be converted to the correct type, e.g. int
+     * for a SQL INTEGER.
+     *  
+     * Thus upon entry the
+     * stack looks like:
+     * ...,dvf,value
+     * 
+     * If field is not null then it is used as the holder
+     * of the generated DataValueDescriptor to avoid object
+     * creations on multiple passes through this code.
+     * The field may contain null or a valid value.
+     * 
+     * This method then sets up to call the required method
+     * on DataValueFactory using the dataValueMethodName().
+     * The value left on the stack will be a DataValueDescriptor
+     * of the correct type:
+     * 
+     * If the field contained a valid value then generated
+     * code will return that value rather than a newly created
+     * object. If field was not-null then the generated code
+     * will set the value of field to be the return from
+     * the DataValueFactory method call. Thus if the field
+     * was empty (set to null) when this code is executed it
+     * will contain the newly generated value, otherwise it
+     * will be reset to the same value.
+     * 
+     * ...,dvd
+     * 
+     * @see TypeCompiler#generateDataValue(ExpressionClassBuilder, MethodBuilder, int, LocalField)
+     */
+    public void generateDataValue(ExpressionClassBuilder eb,
 			MethodBuilder mb, int collationType,
-			String className, LocalField field)
+			LocalField field)
 	{
 		String				interfaceName = interfaceName();
 
@@ -162,12 +208,11 @@
 	 *   what Collator should be associated with the DVD which in turn will 
 	 *   decide whether to generate CollatorSQLcharDVDs or SQLcharDVDs. For 
 	 *   other types of DVDs, this parameter will be ignored.
-	 * @param className name of the base class of the activation's hierarchy
 	 */
-	protected void generateCollationSensitiveDataValue(
+	void generateCollationSensitiveDataValue(
 			ExpressionClassBuilder eb,
 			MethodBuilder mb, 
-			int collationType, String className){		
+			int collationType){		
 		if (collationType == StringDataValue.COLLATION_TYPE_UCS_BASIC)
 			return; 
 		//In case of character DVDs, for territory based collation, we need to 

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CLOBTypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CLOBTypeCompiler.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CLOBTypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CLOBTypeCompiler.java Thu May 17 15:10:43 2007
@@ -144,19 +144,18 @@
     	public void generateDataValue(
     			ExpressionClassBuilder eb,
 				MethodBuilder mb, int collationType,
-    			String className, LocalField field)
+    			LocalField field)
     	{
-    		super.generateDataValue(eb, mb, collationType, className, field);
-    		generateCollationSensitiveDataValue(eb, mb, collationType, className);
+    		super.generateDataValue(eb, mb, collationType, field);
+    		generateCollationSensitiveDataValue(eb, mb, collationType);
     	}
 
     	/** @see TypeCompiler#generateNull(ExpressionClassBuilder, MethodBuilder, int, String)*/
     	public void generateNull(
     			ExpressionClassBuilder eb,
-				MethodBuilder mb, int collationType, 
-    			String className)
+				MethodBuilder mb, int collationType)
     	{
-    		super.generateNull(eb, mb, collationType, className);
-    		generateCollationSensitiveDataValue(eb, mb, collationType, className);
+    		super.generateNull(eb, mb, collationType);
+    		generateCollationSensitiveDataValue(eb, mb, collationType);
     	}
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharTypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharTypeCompiler.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharTypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharTypeCompiler.java Thu May 17 15:10:43 2007
@@ -196,20 +196,19 @@
     	public void generateDataValue(
     			ExpressionClassBuilder eb,
 				MethodBuilder mb, int collationType,
-    			String className, LocalField field)
+    			LocalField field)
     	{
-    		super.generateDataValue(eb, mb, collationType, className, field);
-    		generateCollationSensitiveDataValue(eb, mb, collationType, className);
+    		super.generateDataValue(eb, mb, collationType, field);
+    		generateCollationSensitiveDataValue(eb, mb, collationType);
     	}
 
     	/** @see TypeCompiler#generateNull(ExpressionClassBuilder, MethodBuilder, int, String)*/
     	public void generateNull(
     			ExpressionClassBuilder eb,
-				MethodBuilder mb, int collationType, 
-    			String className)
+				MethodBuilder mb, int collationType)
     	{
-    		super.generateNull(eb, mb, collationType, className);
-    		generateCollationSensitiveDataValue(eb, mb, collationType, className);
+    		super.generateNull(eb, mb, collationType);
+    		generateCollationSensitiveDataValue(eb, mb, collationType);
     	}
 
         protected String dataValueMethodName()

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ExpressionClassBuilder.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ExpressionClassBuilder.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ExpressionClassBuilder.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ExpressionClassBuilder.java Thu May 17 15:10:43 2007
@@ -870,7 +870,7 @@
 	void generateNull(MethodBuilder mb, TypeCompiler tc, int collationType) {
 		pushDataValueFactory(mb);
 		mb.pushNull(tc.interfaceName());
-		tc.generateNull(this, mb, collationType, getBaseClassName());
+		tc.generateNull(this, mb, collationType);
 	}
 
 	/**
@@ -883,7 +883,7 @@
 		pushDataValueFactory(mb);
 		mb.swap(); // need the dvf as the instance
 		mb.cast(tc.interfaceName());
-		tc.generateNull(this, mb, collationType, getBaseClassName());
+		tc.generateNull(this, mb, collationType);
 	}
 
 	/**
@@ -896,7 +896,7 @@
 			int collationType, LocalField field) {
 		pushDataValueFactory(mb);
 		mb.swap(); // need the dvf as the instance
-		tc.generateDataValue(this, mb, collationType, getBaseClassName(), field);
+		tc.generateDataValue(this, mb, collationType, field);
 	}
 
 	

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NumericTypeCompiler.java Thu May 17 15:10:43 2007
@@ -533,7 +533,7 @@
 	/** @see TypeCompiler#generateDataValue(ExpressionClassBuilder, MethodBuilder, int, String, LocalField) */
 	public void generateDataValue(ExpressionClassBuilder eb,
 			MethodBuilder mb, int collationType,
-			String className, LocalField field)
+			LocalField field)
 	{
 		if (!JVMInfo.J2ME && getTypeId().isDecimalTypeId())
 		{
@@ -544,7 +544,7 @@
 			mb.upCast("java.lang.Number");
 		}
 
-		super.generateDataValue(eb, mb, collationType, className, field);
+		super.generateDataValue(eb, mb, collationType, field);
 	}
 
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UserDefinedTypeCompiler.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UserDefinedTypeCompiler.java?view=diff&rev=539142&r1=539141&r2=539142
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UserDefinedTypeCompiler.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UserDefinedTypeCompiler.java Thu May 17 15:10:43 2007
@@ -120,12 +120,12 @@
 
 	/** @see TypeCompiler#generateDataValue(ExpressionClassBuilder, MethodBuilder, int, String, LocalField) */
 	public void generateDataValue(ExpressionClassBuilder eb, MethodBuilder mb, int collationType,
-			String className, LocalField field)
+			LocalField field)
 	{
 		// cast the value to an object for method resolution
 		mb.upCast("java.lang.Object");
 
-		super.generateDataValue(eb, mb, collationType, className, field);
+		super.generateDataValue(eb, mb, collationType, field);
 	}