@Override public void resetEvaluator() { isNull = true; sum.set(HiveDecimal.ZERO);; } }
@Override public void setField(Block block, int position) { value.set(getHiveDecimal(decimalType, block, position)); rowInspector.setStructFieldData(row, field, value); } }
/** * Create a decimal writable with an initial value from another decimal writable. * <p> * If the supplied writable has a value, isSet() will return true. * */ @HiveDecimalWritableVersionV1 public HiveDecimalWritable(HiveDecimalWritable writable) { super(); set(writable); }
public static void abs(int i, HiveDecimal input, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(input); decWritable.mutateAbs(); }
public static void negate(int i, HiveDecimal input, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(input); decWritable.mutateNegate(); }
@Override protected HiveDecimalWritable evaluate(HiveDecimalWritable input) { decimalWritable.set(input); decimalWritable.mutateSetScale(0, HiveDecimal.ROUND_FLOOR); return decimalWritable; }
@Override public Object set(Object o, HiveDecimalWritable t) { HiveDecimalWritable writable = enforcePrecisionScale(t); if (writable == null) { return null; } ((HiveDecimalWritable) o).set(writable); return o; }
@Override protected void doTerminatePartial(AverageAggregationBuffer<HiveDecimal> aggregation) { if(partialResult[1] == null && aggregation.sum != null) { partialResult[1] = new HiveDecimalWritable(HiveDecimal.ZERO); } ((LongWritable) partialResult[0]).set(aggregation.count); if (aggregation.sum != null) { ((HiveDecimalWritable) partialResult[1]).set(aggregation.sum); } else { partialResult[1] = null; } }
public static void addChecked(int i, HiveDecimalWritable left, HiveDecimal right, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(left); decWritable.mutateAdd(right); decWritable.mutateEnforcePrecisionScale(outputColVector.precision, outputColVector.scale); if (!decWritable.isSet()) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } }
public static void subtractChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(left); decWritable.mutateSubtract(right); decWritable.mutateEnforcePrecisionScale(outputColVector.precision, outputColVector.scale); if (!decWritable.isSet()) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } }
public static void multiplyChecked(int i, HiveDecimalWritable left, HiveDecimal right, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(left); decWritable.mutateMultiply(right); decWritable.mutateEnforcePrecisionScale(outputColVector.precision, outputColVector.scale); if (!decWritable.isSet()) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } }
public static void moduloChecked(int i, HiveDecimal left, HiveDecimalWritable right, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(left); decWritable.mutateRemainder(right); decWritable.mutateEnforcePrecisionScale(outputColVector.precision, outputColVector.scale); if (!decWritable.isSet()) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } }
public static void round(int i, HiveDecimal input, int decimalPlaces, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(input); decWritable.mutateSetScale(decimalPlaces, HiveDecimal.ROUND_HALF_UP); decWritable.mutateEnforcePrecisionScale(outputColVector.precision, outputColVector.scale); if (!decWritable.isSet()) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } }
public static void bround(int i, HiveDecimalWritable input, int decimalPlaces, DecimalColumnVector outputColVector) { HiveDecimalWritable decWritable = outputColVector.vector[i]; decWritable.set(input); decWritable.mutateSetScale(decimalPlaces, HiveDecimal.ROUND_HALF_EVEN); decWritable.mutateEnforcePrecisionScale(outputColVector.precision, outputColVector.scale); if (!decWritable.isSet()) { outputColVector.noNulls = false; outputColVector.isNull[i] = true; } }
@Override protected Object doTerminate(AverageAggregationBuffer<HiveDecimal> aggregation) { if(aggregation.count == 0 || aggregation.sum == null) { return null; } else { HiveDecimalWritable result = new HiveDecimalWritable(HiveDecimal.ZERO); result.set(aggregation.sum.divide(HiveDecimal.create(aggregation.count))); result.mutateEnforcePrecisionScale(resultPrecision, resultScale); return result; } }
@Override public float readFloat() { hiveDecimalWritable.set(valuesReader.readBytes().getBytesUnsafe(), scale); return (float)(super.validatedDouble(hiveDecimalWritable.doubleValue(), serdeConstants.FLOAT_TYPE_NAME)); }
@Override public double readDouble() { hiveDecimalWritable.set(valuesReader.readBytes().getBytesUnsafe(), scale); return (super.validatedDouble(hiveDecimalWritable.doubleValue(), serdeConstants.DOUBLE_TYPE_NAME)); }
@Override public long readInteger(int id) { hiveDecimalWritable.set(dict.decodeToBinary(id).getBytesUnsafe(), scale); return (long)(super.validatedDouble(hiveDecimalWritable.doubleValue(), serdeConstants.INT_TYPE_NAME)); }
@Override protected HiveDecimalWritable evaluate(HiveDecimal left, HiveDecimal right) { if (right.compareTo(HiveDecimal.ZERO) == 0) { return null; } HiveDecimal dec = left.remainder(right).add(right).remainder(right); if (dec == null) { return null; } decimalWritable.set(dec); return decimalWritable; }
private VectorizedRowBatch getBatchDecimalLong() { VectorizedRowBatch b = new VectorizedRowBatch(2); DecimalColumnVector dv; short scale = 2; b.cols[0] = dv = new DecimalColumnVector(18, scale); b.cols[1] = new LongColumnVector(); b.size = 3; dv.vector[0].set(HiveDecimal.create("1.1")); dv.vector[1].set(HiveDecimal.create("-2.2")); dv.vector[2].set(HiveDecimal.create("9999999999999999.00")); return b; }