public static Slice encodeScaledValue(BigDecimal value, int scale) { checkArgument(scale >= 0); return encodeScaledValue(value.setScale(scale, UNNECESSARY)); }
public static void writeBigDecimal(DecimalType decimalType, BlockBuilder blockBuilder, BigDecimal value) { decimalType.writeSlice(blockBuilder, encodeScaledValue(value)); }
private static Slice longDecimal(String value) { return encodeScaledValue(new BigDecimal(value)); } }
private static Slice longDecimal(String value) { return encodeScaledValue(new BigDecimal(value)); } }
public static Slice longDecimal(String value) { return encodeScaledValue(new BigDecimal(value)); }
private static Slice longDecimal(String value) { return encodeScaledValue(new BigDecimal(value)); }
public static Slice longDecimal(String value) { return encodeScaledValue(new BigDecimal(value)); }
private static Slice longDecimal(String value) { return encodeScaledValue(new BigDecimal(value)); }
public static ReadMapping decimalReadMapping(DecimalType decimalType) { // JDBC driver can return BigDecimal with lower scale than column's scale when there are trailing zeroes int scale = decimalType.getScale(); if (decimalType.isShort()) { return longReadMapping(decimalType, (resultSet, columnIndex) -> encodeShortScaledValue(resultSet.getBigDecimal(columnIndex), scale)); } return sliceReadMapping(decimalType, (resultSet, columnIndex) -> encodeScaledValue(resultSet.getBigDecimal(columnIndex), scale)); }
@Override protected void writeDecimalToBlock(BigDecimal decimal, BlockBuilder blockBuilder) { LONG_DECIMAL_TYPE.writeSlice(blockBuilder, encodeScaledValue(decimal)); }
@Override protected void writeDecimalToBlock(BigDecimal decimal, BlockBuilder blockBuilder) { longDecimalType.writeSlice(blockBuilder, encodeScaledValue(decimal)); }
public static ReadMapping decimalReadMapping(DecimalType decimalType) { // JDBC driver can return BigDecimal with lower scale than column's scale when there are trailing zeroes int scale = decimalType.getScale(); if (decimalType.isShort()) { return longReadMapping(decimalType, (resultSet, columnIndex) -> encodeShortScaledValue(resultSet.getBigDecimal(columnIndex), scale)); } return sliceReadMapping(decimalType, (resultSet, columnIndex) -> encodeScaledValue(resultSet.getBigDecimal(columnIndex), scale)); }
@Override protected Object getGreaterValue(Object value) { Slice slice = (Slice) value; BigDecimal decimal = toBigDecimal(slice, 10); BigDecimal greaterDecimal = decimal.add(BigDecimal.ONE); return encodeScaledValue(greaterDecimal); }
@Override protected void writeDecimalToBlock(BigDecimal decimal, BlockBuilder blockBuilder) { LONG_DECIMAL_TYPE.writeSlice(blockBuilder, encodeScaledValue(decimal)); }
@Override protected void writeDecimalToBlock(BigDecimal decimal, BlockBuilder blockBuilder) { longDecimalType.writeSlice(blockBuilder, encodeScaledValue(decimal)); }
@Override protected Object getGreaterValue(Object value) { Slice slice = (Slice) value; BigDecimal decimal = toBigDecimal(slice, 10); BigDecimal greaterDecimal = decimal.add(BigDecimal.ONE); return encodeScaledValue(greaterDecimal); }
@Test public void testEncodeScaledValue() { assertEquals(encodeScaledValue(new BigDecimal("2.00"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("2.13"), 2), sliceFromBytes(213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("172.60"), 2), sliceFromBytes(108, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("2"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("172.6"), 2), sliceFromBytes(108, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); int minus = 0x80; assertEquals(encodeScaledValue(new BigDecimal("-2.00"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); assertEquals(encodeScaledValue(new BigDecimal("-2.13"), 2), sliceFromBytes(213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); assertEquals(encodeScaledValue(new BigDecimal("-2"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); assertEquals(encodeScaledValue(new BigDecimal("-172.60"), 2), sliceFromBytes(108, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); }
@Test public void testEncodeScaledValue() { assertEquals(encodeScaledValue(new BigDecimal("2.00"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("2.13"), 2), sliceFromBytes(213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("172.60"), 2), sliceFromBytes(108, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("2"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); assertEquals(encodeScaledValue(new BigDecimal("172.6"), 2), sliceFromBytes(108, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); int minus = 0x80; assertEquals(encodeScaledValue(new BigDecimal("-2.00"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); assertEquals(encodeScaledValue(new BigDecimal("-2.13"), 2), sliceFromBytes(213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); assertEquals(encodeScaledValue(new BigDecimal("-2"), 2), sliceFromBytes(200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); assertEquals(encodeScaledValue(new BigDecimal("-172.60"), 2), sliceFromBytes(108, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minus)); }
private Block decimalAsBlock(String value) { Slice slice = encodeScaledValue(new BigDecimal(value)); BlockBuilder blockBuilder = new VariableWidthBlockBuilder(null, 1, slice.length()); TYPE.writeSlice(blockBuilder, slice); return blockBuilder.build(); } }
private Block decimalAsBlock(String value) { Slice slice = encodeScaledValue(new BigDecimal(value)); BlockBuilder blockBuilder = new VariableWidthBlockBuilder(null, 1, slice.length()); TYPE.writeSlice(blockBuilder, slice); return blockBuilder.build(); } }