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 rh...@apache.org on 2012/10/16 21:42:54 UTC

svn commit: r1398952 - in /db/derby/code/trunk/java/engine/org/apache/derby: catalog/types/AggregateAliasInfo.java impl/sql/compile/CreateAliasNode.java

Author: rhillegas
Date: Tue Oct 16 19:42:54 2012
New Revision: 1398952

URL: http://svn.apache.org/viewvc?rev=1398952&view=rev
Log:
DERBY-672: Set the collation of the input and return types of user-defined aggregates.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/AggregateAliasInfo.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/AggregateAliasInfo.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/AggregateAliasInfo.java?rev=1398952&r1=1398951&r2=1398952&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/AggregateAliasInfo.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/types/AggregateAliasInfo.java Tue Oct 16 19:42:54 2012
@@ -27,6 +27,7 @@ import java.io.ObjectOutput;
 
 import org.apache.derby.iapi.services.io.Formatable;
 import org.apache.derby.iapi.services.io.StoredFormatIds;
+import org.apache.derby.iapi.types.DataTypeDescriptor;
 import org.apache.derby.catalog.AliasInfo;
 import org.apache.derby.catalog.TypeDescriptor;
 
@@ -94,6 +95,21 @@ public class AggregateAliasInfo implemen
 
     ///////////////////////////////////////////////////////////////////////////////////
     //
+    // BIND TIME LOGIC
+    //
+    ///////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Set the collation type for string input and return types.
+     */
+    public void setCollationTypeForAllStringTypes( int collationType )
+    {
+        _forType = DataTypeDescriptor.getCatalogType( _forType, collationType );
+        _returnType = DataTypeDescriptor.getCatalogType( _returnType, collationType );
+    }
+    
+    ///////////////////////////////////////////////////////////////////////////////////
+    //
     // Formatable BEHAVIOR
     //
     ///////////////////////////////////////////////////////////////////////////////////

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java?rev=1398952&r1=1398951&r2=1398952&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java Tue Oct 16 19:42:54 2012
@@ -480,6 +480,11 @@ public class CreateAliasNode extends DDL
         {
             if ( NON_RESERVED_AGGREGATES[ i ].equals( unqualifiedName ) )  { throw illegalAggregate(); }
         }
+
+        // now bind the input and return types
+        AggregateAliasInfo  aai = (AggregateAliasInfo) aliasInfo;
+
+        aai.setCollationTypeForAllStringTypes( getSchemaDescriptor().getCollationType() );
     }
 
     /** Construct an exception flagging an illegal aggregate name */