[teiid-commits] teiid SVN: r1144 - in trunk/engine/src: main/java/com/metamatrix/query/processor/relational and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Fri Jul 17 07:08:07 EDT 2009


Author: shawkins
Date: 2009-07-17 07:08:06 -0400 (Fri, 17 Jul 2009)
New Revision: 1144

Modified:
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/AggregateFunction.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Avg.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/ConstantFunction.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Count.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Max.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Min.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/NullFilter.java
   trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Sum.java
   trunk/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java
   trunk/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java
   trunk/engine/src/test/java/com/metamatrix/query/processor/relational/TestDuplicateFilter.java
Log:
TEIID-726 fix for type mismatch buffermanager error with distinct aggregates

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/AggregateFunction.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/AggregateFunction.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/AggregateFunction.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -40,8 +40,9 @@
      * Called to initialize the function.  In the future this may expand
      * with additional information.
      * @param dataType Data type of element begin aggregated
+     * @param inputType
      */
-    public abstract void initialize(Class dataType);
+    public abstract void initialize(Class dataType, Class inputType);
 
     /**
      * Called to reset the state of the function.

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Avg.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Avg.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Avg.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -51,11 +51,10 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
-        if (dataType.equals(DataTypeManager.DefaultDataClasses.BIG_INTEGER)
-            || dataType.equals(DataTypeManager.DefaultDataClasses.BIG_DECIMAL)) {
+    public void initialize(Class dataType, Class inputType) {
+        if (dataType.equals(DataTypeManager.DefaultDataClasses.BIG_DECIMAL)) {
             this.accumulatorType = BIG_DECIMAL;
         } else {
             this.accumulatorType = DOUBLE;

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/ConstantFunction.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/ConstantFunction.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/ConstantFunction.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -40,9 +40,9 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
+    public void initialize(Class dataType, Class inputType) {
     }
     
     public void reset() {

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Count.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Count.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Count.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -37,9 +37,9 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
+    public void initialize(Class dataType, Class inputType) {
     }
     
     public void reset() {

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Max.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Max.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Max.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -42,9 +42,9 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
+    public void initialize(Class dataType, Class inputType) {
     }
 
     public void reset() {

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Min.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Min.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Min.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -42,9 +42,9 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
+    public void initialize(Class dataType, Class inputType) {
     }
 
     public void reset() {

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/NullFilter.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/NullFilter.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/NullFilter.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -44,10 +44,10 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
-        this.proxy.initialize(dataType);
+    public void initialize(Class dataType, Class inputType) {
+    	this.proxy.initialize(dataType, inputType);
     }
 
     public void reset() {

Modified: trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Sum.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Sum.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/function/aggregate/Sum.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -64,16 +64,12 @@
     /**
      * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(boolean, String)
      */
-    public void initialize(Class dataType) {
-        if(dataType.equals(DataTypeManager.DefaultDataClasses.INTEGER) ||
-           dataType.equals(DataTypeManager.DefaultDataClasses.LONG) ||
-           dataType.equals(DataTypeManager.DefaultDataClasses.BYTE) ||
-           dataType.equals(DataTypeManager.DefaultDataClasses.SHORT)) {
+    public void initialize(Class dataType, Class inputType) {
+        if(dataType.equals(DataTypeManager.DefaultDataClasses.LONG)) {
                     
             this.accumulatorType = LONG;    
             
-        } else if(dataType.equals(DataTypeManager.DefaultDataClasses.FLOAT) ||
-           dataType.equals(DataTypeManager.DefaultDataClasses.DOUBLE)) {
+        } else if(dataType.equals(DataTypeManager.DefaultDataClasses.DOUBLE)) {
         
             this.accumulatorType = DOUBLE;
 

Modified: trunk/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/processor/relational/DuplicateFilter.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -71,14 +71,13 @@
     }
 
     /**
-     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String)
+     * @see com.metamatrix.query.function.aggregate.AggregateFunction#initialize(String, Class)
      */
-    public void initialize(Class dataType) {
-        this.proxy.initialize(dataType);
-
+    public void initialize(Class dataType, Class inputType) {
+    	this.proxy.initialize(dataType, inputType);
         // Set up schema
         ElementSymbol element = new ElementSymbol("val"); //$NON-NLS-1$
-        element.setType(dataType);
+        element.setType(inputType);
         elements = new ArrayList();
         elements.add(element);
         elementTypes = TypeRetrievalUtil.getTypeNames(elements);

Modified: trunk/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/main/java/com/metamatrix/query/processor/relational/GroupingNode.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -191,13 +191,14 @@
         // Construct aggregate function state accumulators
         functions = new AggregateFunction[getElements().size()];
         for(int i=0; i<getElements().size(); i++) {
-            Object symbol = getElements().get(i);
+            SingleElementSymbol symbol = (SingleElementSymbol)getElements().get(i);
+            Class<?> outputType = symbol.getType();
+            Class<?> inputType = symbol.getType();
             if(symbol instanceof AggregateSymbol) {
                 AggregateSymbol aggSymbol = (AggregateSymbol) symbol;
 
                 if(aggSymbol.getExpression() == null) {
                     functions[i] = new Count();
-                    functions[i].initialize(null);
                 } else {
                     String function = aggSymbol.getAggregateFunction();
                     if(function.equals(ReservedWords.COUNT)) {
@@ -214,18 +215,15 @@
 
                     if(aggSymbol.isDistinct()) {
                         functions[i] = new DuplicateFilter(functions[i], getBufferManager(), getConnectionID(), getBatchSize());
-                        functions[i].initialize(aggSymbol.getExpression().getType());
                     }
-                    else {
-                       functions[i].initialize(aggSymbol.getType());                            
-                    }
+                    
                     functions[i] = new NullFilter(functions[i]);
-                    functions[i].initialize(aggSymbol.getType());
+                    outputType = aggSymbol.getType();
                 }
             } else {
                 functions[i] = new ConstantFunction();
-                functions[i].initialize(((SingleElementSymbol)symbol).getType() );
             }
+            functions[i].initialize(outputType, inputType);
         }
     }    
 

Modified: trunk/engine/src/test/java/com/metamatrix/query/processor/relational/TestDuplicateFilter.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/processor/relational/TestDuplicateFilter.java	2009-07-16 20:56:43 UTC (rev 1143)
+++ trunk/engine/src/test/java/com/metamatrix/query/processor/relational/TestDuplicateFilter.java	2009-07-17 11:08:06 UTC (rev 1144)
@@ -47,7 +47,7 @@
         BufferManager mgr = BufferManagerFactory.getStandaloneBufferManager();
         
         DuplicateFilter filter = new DuplicateFilter(new Count(), mgr, "test", mgr.getProcessorBatchSize()); //$NON-NLS-1$
-        filter.initialize(dataType);
+        filter.initialize(dataType, dataType);
         filter.reset();
         
         // Add inputs



More information about the teiid-commits mailing list