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