private Aggregator newAggregator(final PDataType type, SortOrder sortOrder, ImmutableBytesWritable ptr) { if (type == PDecimal.INSTANCE) { return new DecimalSumAggregator(sortOrder, ptr); } else if (PDataType.equalsAny(type, PUnsignedDouble.INSTANCE, PUnsignedFloat.INSTANCE, PDouble.INSTANCE, PFloat.INSTANCE)) { return new DoubleSumAggregator(sortOrder, ptr) { @Override protected PDataType getInputDataType() { return type; } }; } else { return new NumberSumAggregator(sortOrder, ptr) { @Override protected PDataType getInputDataType() { return type; } }; } }
private void initBuffer() { sumBuffer = new byte[getBufferLength()]; }
@Override public void aggregate(Tuple tuple, ImmutableBytesWritable ptr) { BigDecimal value = (BigDecimal)getDataType().toObject(ptr, getInputDataType(), sortOrder); sum = sum.add(value); if (sumBuffer == null) { sumBuffer = new byte[getDataType().getByteSize()]; } }
private int getBufferLength() { return getDataType().getByteSize(); }
public DecimalSumAggregator(SortOrder sortOrder, ImmutableBytesWritable ptr) { super(sortOrder); if (ptr != null) { initBuffer(); sum = (BigDecimal) PDecimal.INSTANCE.toObject(ptr); } }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (sumBuffer == null) { return false; } int len = getDataType().toBytes(sum, sumBuffer, 0); ptr.set(sumBuffer, 0, len); return true; }
public DecimalSumAggregator(SortOrder sortOrder, ImmutableBytesWritable ptr) { super(sortOrder); if (ptr != null) { initBuffer(); sum = (BigDecimal) PDecimal.INSTANCE.toObject(ptr); } }
@Override public void aggregate(Tuple tuple, ImmutableBytesWritable ptr) { BigDecimal value = (BigDecimal)getDataType().toObject(ptr, getInputDataType(), sortOrder); sum = sum.add(value); if (sumBuffer == null) { sumBuffer = new byte[getDataType().getByteSize()]; } }
@Override public int getSize() { return super.getSize() + SizedUtil.BIG_DECIMAL_SIZE + SizedUtil.ARRAY_SIZE + getDataType().getByteSize(); } }
public DecimalSumAggregator(SortOrder sortOrder, ImmutableBytesWritable ptr) { super(sortOrder); if (ptr != null) { initBuffer(); sum = (BigDecimal) PDecimal.INSTANCE.toObject(ptr); } }
private void initBuffer() { sumBuffer = new byte[getBufferLength()]; }
private Aggregator newAggregator(final PDataType type, SortOrder sortOrder, ImmutableBytesWritable ptr) { if (type == PDecimal.INSTANCE) { return new DecimalSumAggregator(sortOrder, ptr); } else if (PDataType.equalsAny(type, PUnsignedDouble.INSTANCE, PUnsignedFloat.INSTANCE, PDouble.INSTANCE, PFloat.INSTANCE)) { return new DoubleSumAggregator(sortOrder, ptr) { @Override protected PDataType getInputDataType() { return type; } }; } else { return new NumberSumAggregator(sortOrder, ptr) { @Override protected PDataType getInputDataType() { return type; } }; } }
@Override public void aggregate(Tuple tuple, ImmutableBytesWritable ptr) { BigDecimal value = (BigDecimal)getDataType().toObject(ptr, getInputDataType(), sortOrder); sum = sum.add(value); if (sumBuffer == null) { sumBuffer = new byte[getDataType().getByteSize()]; } }
private int getBufferLength() { return getDataType().getByteSize(); }
private void initBuffer() { sumBuffer = new byte[getBufferLength()]; }
private Aggregator newAggregator(final PDataType type, SortOrder sortOrder, ImmutableBytesWritable ptr) { if (type == PDecimal.INSTANCE) { return new DecimalSumAggregator(sortOrder, ptr); } else if (PDataType.equalsAny(type, PUnsignedDouble.INSTANCE, PUnsignedFloat.INSTANCE, PDouble.INSTANCE, PFloat.INSTANCE)) { return new DoubleSumAggregator(sortOrder, ptr) { @Override protected PDataType getInputDataType() { return type; } }; } else { return new NumberSumAggregator(sortOrder, ptr) { @Override protected PDataType getInputDataType() { return type; } }; } }
private int getBufferLength() { return getDataType().getByteSize(); }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (sumBuffer == null) { return false; } int len = getDataType().toBytes(sum, sumBuffer, 0); ptr.set(sumBuffer, 0, len); return true; }
@Override public int getSize() { return super.getSize() + SizedUtil.BIG_DECIMAL_SIZE + SizedUtil.ARRAY_SIZE + getDataType().getByteSize(); } }
@Override public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) { if (sumBuffer == null) { return false; } int len = getDataType().toBytes(sum, sumBuffer, 0); ptr.set(sumBuffer, 0, len); return true; }