Update legacy codes on computing the field slot length in aggregators are updated. And, the incorrect initialization of the sum aggregator is fixed. Fixes issue 51.

git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_dev_next@833 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java
index 2ddffde..f1e54e2 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/CountAggregatorFactory.java
@@ -69,7 +69,7 @@
                     throws HyracksDataException {
                 count = IntegerSerializerDeserializer.getInt(
                         accessor.getBuffer().array(),
-                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldSlotsLength()
                                 + accessor.getFieldStartOffset(tIndex, fIndex));
 
             }
@@ -89,7 +89,7 @@
                     throws HyracksDataException {
                 count += IntegerSerializerDeserializer.getInt(
                         accessor.getBuffer().array(),
-                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldSlotsLength()
                                 + accessor.getFieldStartOffset(tIndex, fIndex));
             }
         };
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java
index 8fd1f13..515cc21 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/FloatSumAggregatorFactory.java
@@ -24,9 +24,9 @@
 /**
  * SUM aggregator on float type data.
  * 
- * @author jarodwen
  */
-public class FloatSumAggregatorFactory implements IFieldValueResultingAggregatorFactory {
+public class FloatSumAggregatorFactory implements
+        IFieldValueResultingAggregatorFactory {
 
     /**
 	 * 
@@ -52,7 +52,8 @@
             private float sum;
 
             @Override
-            public void output(DataOutput resultAcceptor) throws HyracksDataException {
+            public void output(DataOutput resultAcceptor)
+                    throws HyracksDataException {
                 try {
                     resultAcceptor.writeFloat(sum);
                 } catch (IOException ex) {
@@ -61,17 +62,20 @@
             }
 
             @Override
-            public void init(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void init(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 sum = 0;
             }
 
             @Override
-            public void accumulate(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void accumulate(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 int tupleOffset = accessor.getTupleStartOffset(tIndex);
-                int fieldCount = accessor.getFieldCount();
                 int fieldStart = accessor.getFieldStartOffset(tIndex, sumField);
-                sum += FloatSerializerDeserializer.getFloat(accessor.getBuffer().array(), tupleOffset + 2 * fieldCount
-                        + fieldStart);
+                sum += FloatSerializerDeserializer.getFloat(accessor
+                        .getBuffer().array(),
+                        tupleOffset + accessor.getFieldSlotsLength()
+                                + fieldStart);
             }
         };
     }
@@ -90,7 +94,8 @@
             private float sum;
 
             @Override
-            public void output(DataOutput resultAcceptor) throws HyracksDataException {
+            public void output(DataOutput resultAcceptor)
+                    throws HyracksDataException {
                 try {
                     resultAcceptor.writeFloat(sum);
                 } catch (IOException ex) {
@@ -99,35 +104,40 @@
             }
 
             @Override
-            public void initFromPartial(IFrameTupleAccessor accessor, int tIndex, int fIndex)
-                    throws HyracksDataException {
+            public void initFromPartial(IFrameTupleAccessor accessor,
+                    int tIndex, int fIndex) throws HyracksDataException {
                 sum = FloatSerializerDeserializer.getFloat(
                         accessor.getBuffer().array(),
-                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+                        accessor.getTupleStartOffset(tIndex)
+                                + accessor.getFieldSlotsLength()
                                 + accessor.getFieldStartOffset(tIndex, fIndex));
             }
 
             @Override
-            public void init(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void init(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 sum = 0;
             }
 
             @Override
-            public void accumulatePartialResult(IFrameTupleAccessor accessor, int tIndex, int fIndex)
-                    throws HyracksDataException {
+            public void accumulatePartialResult(IFrameTupleAccessor accessor,
+                    int tIndex, int fIndex) throws HyracksDataException {
                 sum += FloatSerializerDeserializer.getFloat(
                         accessor.getBuffer().array(),
-                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+                        accessor.getTupleStartOffset(tIndex)
+                                + accessor.getFieldSlotsLength()
                                 + accessor.getFieldStartOffset(tIndex, fIndex));
             }
 
             @Override
-            public void accumulate(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void accumulate(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 int tupleOffset = accessor.getTupleStartOffset(tIndex);
-                int fieldCount = accessor.getFieldCount();
                 int fieldStart = accessor.getFieldStartOffset(tIndex, sumField);
-                sum += FloatSerializerDeserializer.getFloat(accessor.getBuffer().array(), tupleOffset + 2 * fieldCount
-                        + fieldStart);
+                sum += FloatSerializerDeserializer.getFloat(accessor
+                        .getBuffer().array(),
+                        tupleOffset + accessor.getFieldSlotsLength()
+                                + fieldStart);
             }
         };
     }
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java
index cc999d5..0db3511 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/MinMaxAggregatorFactory.java
@@ -24,7 +24,8 @@
 /**
  * Min/Max aggregator factory
  */
-public class MinMaxAggregatorFactory implements IFieldValueResultingAggregatorFactory {
+public class MinMaxAggregatorFactory implements
+        IFieldValueResultingAggregatorFactory {
 
     /**
 	 * 
@@ -53,7 +54,8 @@
             private float minmax;
 
             @Override
-            public void output(DataOutput resultAcceptor) throws HyracksDataException {
+            public void output(DataOutput resultAcceptor)
+                    throws HyracksDataException {
                 try {
                     resultAcceptor.writeFloat(minmax);
                 } catch (IOException ex) {
@@ -62,17 +64,20 @@
             }
 
             @Override
-            public void init(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void init(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 minmax = 0;
             }
 
             @Override
-            public void accumulate(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void accumulate(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 int tupleOffset = accessor.getTupleStartOffset(tIndex);
-                int fieldCount = accessor.getFieldCount();
                 int fieldStart = accessor.getFieldStartOffset(tIndex, field);
-                float nval = FloatSerializerDeserializer.getFloat(accessor.getBuffer().array(), tupleOffset + 2
-                        * fieldCount + fieldStart);
+                float nval = FloatSerializerDeserializer.getFloat(accessor
+                        .getBuffer().array(),
+                        tupleOffset + accessor.getFieldSlotsLength()
+                                + fieldStart);
                 if ((type ? (nval > minmax) : (nval < minmax))) {
                     minmax = nval;
                 }
@@ -87,7 +92,8 @@
             private float minmax;
 
             @Override
-            public void output(DataOutput resultAcceptor) throws HyracksDataException {
+            public void output(DataOutput resultAcceptor)
+                    throws HyracksDataException {
                 try {
                     resultAcceptor.writeFloat(minmax);
                 } catch (IOException ex) {
@@ -96,37 +102,42 @@
             }
 
             @Override
-            public void initFromPartial(IFrameTupleAccessor accessor, int tIndex, int fIndex)
-                    throws HyracksDataException {
+            public void initFromPartial(IFrameTupleAccessor accessor,
+                    int tIndex, int fIndex) throws HyracksDataException {
                 minmax = FloatSerializerDeserializer.getFloat(
                         accessor.getBuffer().array(),
-                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+                        accessor.getTupleStartOffset(tIndex)
+                                + accessor.getFieldSlotsLength()
                                 + accessor.getFieldStartOffset(tIndex, fIndex));
 
             }
 
             @Override
-            public void init(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void init(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 minmax = 0;
             }
 
             @Override
-            public void accumulatePartialResult(IFrameTupleAccessor accessor, int tIndex, int fIndex)
-                    throws HyracksDataException {
+            public void accumulatePartialResult(IFrameTupleAccessor accessor,
+                    int tIndex, int fIndex) throws HyracksDataException {
                 minmax = FloatSerializerDeserializer.getFloat(
                         accessor.getBuffer().array(),
-                        accessor.getTupleStartOffset(tIndex) + accessor.getFieldCount() * 4
+                        accessor.getTupleStartOffset(tIndex)
+                                + accessor.getFieldSlotsLength()
                                 + accessor.getFieldStartOffset(tIndex, fIndex));
 
             }
 
             @Override
-            public void accumulate(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+            public void accumulate(IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
                 int tupleOffset = accessor.getTupleStartOffset(tIndex);
-                int fieldCount = accessor.getFieldCount();
                 int fieldStart = accessor.getFieldStartOffset(tIndex, field);
-                float nval = FloatSerializerDeserializer.getFloat(accessor.getBuffer().array(), tupleOffset + 2
-                        * fieldCount + fieldStart);
+                float nval = FloatSerializerDeserializer.getFloat(accessor
+                        .getBuffer().array(),
+                        tupleOffset + accessor.getFieldSlotsLength()
+                                + fieldStart);
                 if ((type ? (nval > minmax) : (nval < minmax))) {
                     minmax = nval;
                 }
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java
index c6bcc81..54739d3 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/aggregators/SumAggregatorFactory.java
@@ -61,7 +61,7 @@
 
             @Override
             public void init(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
-                sum++;
+                sum = 0;
             }
 
             @Override