public void collectStates(Object[] states) { for (int i = 0; i < descLength; i++) { states[i] = aggs[i].getState(); } } }
@Override public Object getValue(TblColRef col) { return aggrValues[col.getColumnDesc().getZeroBasedIndex()].getState(); }
void load(byte[] key, MeasureAggregator[] value) { int offset = 0; for (int i = 0; i < dimensions.trueBitCount(); i++) { int c = dimensions.trueBitAt(i); final int columnLength = info.codeSystem.maxCodeLength(c); record.cols[c].reset(key, offset, columnLength); offset += columnLength; } for (int i = 0; i < value.length; i++) { tmpValues[i] = value[i].getState(); } byte[] bytes = measureCodec.encode(tmpValues).array(); int[] sizes = measureCodec.getMeasureSizes(); offset = 0; for (int i = 0; i < value.length; i++) { int col = metrics.trueBitAt(i); record.cols[col].reset(bytes, offset, sizes[i]); offset += sizes[i]; } } }
@Override public E next() { if (!hasNext()) { throw new NoSuchElementException(); } // WATCH OUT! record returned by "input" scanner could be changed later, // so we must make a shallow copy of it. first.shallowCopyFrom(input.next()); // shortcut to avoid extra deserialize/serialize cost if (!shouldMergeNext(first)) { return finalizeResult(first); } // merge records with the same key MeasureAggregator[] aggrs = codeSystem.newMetricsAggregators(metrics, metricFuncs); aggregate(aggrs, first); aggregate(aggrs, input.next()); // no need to copy record because it's not referred to later while (shouldMergeNext(first)) { aggregate(aggrs, input.next()); } Object[] aggStates = new Object[aggrs.length]; for (int i = 0; i < aggStates.length; i++) { aggStates[i] = aggrs[i].getState(); } return finalizeResult(first, aggStates); }
public void collectStates(Object[] states) { for (int i = 0; i < descLength; i++) { states[i] = aggs[i].getState(); } } }
public void collectStates(Object[] states) { for (int i = 0; i < descLength; i++) { states[i] = aggs[i].getState(); } }
@Override public Object getValue(TblColRef col) { return aggrValues[col.getColumnDesc().getZeroBasedIndex()].getState(); }
void load(byte[] key, MeasureAggregator[] value) { int offset = 0; for (int i = 0; i < dimensions.trueBitCount(); i++) { int c = dimensions.trueBitAt(i); final int columnLength = info.codeSystem.maxCodeLength(c); record.cols[c].reset(key, offset, columnLength); offset += columnLength; } for (int i = 0; i < value.length; i++) { tmpValues[i] = value[i].getState(); } byte[] bytes = measureCodec.encode(tmpValues).array(); int[] sizes = measureCodec.getMeasureSizes(); offset = 0; for (int i = 0; i < value.length; i++) { int col = metrics.trueBitAt(i); record.cols[col].reset(bytes, offset, sizes[i]); offset += sizes[i]; } } }
@Override public E next() { if (!hasNext()) { throw new NoSuchElementException(); } // WATCH OUT! record returned by "input" scanner could be changed later, // so we must make a shallow copy of it. first.shallowCopyFrom(input.next()); // shortcut to avoid extra deserialize/serialize cost if (!shouldMergeNext(first)) { return finalizeResult(first); } // merge records with the same key MeasureAggregator[] aggrs = codeSystem.newMetricsAggregators(metrics, metricFuncs); aggregate(aggrs, first); aggregate(aggrs, input.next()); // no need to copy record because it's not referred to later while (shouldMergeNext(first)) { aggregate(aggrs, input.next()); } Object[] aggStates = new Object[aggrs.length]; for (int i = 0; i < aggStates.length; i++) { aggStates[i] = aggrs[i].getState(); } return finalizeResult(first, aggStates); }