[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