@Override public void init(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex, AggregateState state) throws HyracksDataException { IAggregateEvaluator[] agg = (IAggregateEvaluator[]) state.state; // initialize aggregate functions for (int i = 0; i < agg.length; i++) { agg[i].init(); } ftr.reset(accessor, tIndex); for (int i = 0; i < agg.length; i++) { agg[i].step(ftr); } }
@Override public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException { scanCollection.init(tuple); aggFunc.init(); while (scanCollection.step(listItemOut)) { itemTuple.reset(listItemOut.getByteArray(), listItemOut.getStartOffset(), listItemOut.getLength()); aggFunc.step(itemTuple); } aggFunc.finish(result); } }
@Override public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor, int tIndex, AggregateState state) throws HyracksDataException { IAggregateEvaluator[] agg = (IAggregateEvaluator[]) state.state; for (int i = 0; i < agg.length; i++) { agg[i].finish(p); tupleBuilder.addField(p.getByteArray(), p.getStartOffset(), p.getLength()); } return true; }
private void processTuple(FrameTupleReference tupleRef) throws HyracksDataException { for (int f = 0; f < aggregs.length; f++) { aggregs[f].step(tupleRef); } } };
@Override public void open() throws HyracksDataException { if (first) { first = false; initAccessAppendRef(ctx); for (int i = 0; i < aggregFactories.length; i++) { aggregs[i] = aggregFactories[i].createAggregateEvaluator(ctx); } } for (int i = 0; i < aggregFactories.length; i++) { aggregs[i].init(); } super.open(); }
@Override public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor, int tIndex, AggregateState state) throws HyracksDataException { IAggregateEvaluator[] agg = (IAggregateEvaluator[]) state.state; for (int i = 0; i < agg.length; i++) { agg[i].finishPartial(p); tupleBuilder.addField(p.getByteArray(), p.getStartOffset(), p.getLength()); } return true; }
private void computeAggregate() throws HyracksDataException { tupleBuilder.reset(); for (int f = 0; f < aggregs.length; f++) { aggregs[f].finish(result); tupleBuilder.addField(result.getByteArray(), result.getStartOffset(), result.getLength()); } }
@Override public void aggregate(IFrameTupleAccessor accessor, int tIndex, IFrameTupleAccessor stateAccessor, int stateTupleIndex, AggregateState state) throws HyracksDataException { IAggregateEvaluator[] agg = (IAggregateEvaluator[]) state.state; ftr.reset(accessor, tIndex); for (int i = 0; i < agg.length; i++) { agg[i].step(ftr); } }