if (Decimals.isLongDecimal(type)) { return Decimals.toString((Slice) value, ((DecimalType) type).getScale());
@VisibleForTesting static double convertPartitionValueToDouble(Type type, Object value) { if (type.equals(BIGINT) || type.equals(INTEGER) || type.equals(SMALLINT) || type.equals(TINYINT)) { return (Long) value; } if (type.equals(DOUBLE)) { return (Double) value; } if (type.equals(REAL)) { return intBitsToFloat(((Long) value).intValue()); } if (type instanceof DecimalType) { DecimalType decimalType = (DecimalType) type; if (isShortDecimal(decimalType)) { return parseDouble(Decimals.toString((Long) value, decimalType.getScale())); } if (isLongDecimal(decimalType)) { return parseDouble(Decimals.toString((Slice) value, decimalType.getScale())); } throw new IllegalArgumentException("Unexpected decimal type: " + decimalType); } if (type.equals(DATE)) { return (Long) value; } throw new IllegalArgumentException("Unexpected type: " + type); }
private static double toDouble(Object value, Type type) { if (value instanceof String && type.equals(DATE)) { return LocalDate.parse((CharSequence) value).toEpochDay(); } if (type.equals(BIGINT) || type.equals(INTEGER) || type.equals(DATE)) { return ((Number) value).doubleValue(); } if (type instanceof DecimalType) { DecimalType decimalType = (DecimalType) type; if (isShortDecimal(decimalType)) { return parseDouble(Decimals.toString(((Number) value).longValue(), decimalType.getScale())); } if (isLongDecimal(decimalType)) { return parseDouble(Decimals.toString((Slice) value, decimalType.getScale())); } throw new IllegalArgumentException("Unexpected decimal type: " + decimalType); } if (type.equals(DOUBLE)) { return ((Number) value).doubleValue(); } throw new IllegalArgumentException("unsupported column type " + type); } }
prefilledValue = shortDecimalPartitionKey(columnValue, (DecimalType) type, name); else if (isLongDecimal(type)) { prefilledValue = longDecimalPartitionKey(columnValue, (DecimalType) type, name);
slice = constantSlice.slice(0, Math.min(((VarcharType) type).getLength(), constantSlice.length())); else if (isLongDecimal(type)) { slice = encodeScaledValue(ZERO);
blocks[i] = BlockAssertions.createShortDecimalSequenceBlock(initialValue, initialValue + length, (DecimalType) type); else if (isLongDecimal(type)) { blocks[i] = BlockAssertions.createLongDecimalSequenceBlock(initialValue, initialValue + length, (DecimalType) type);
longs[columnIndex] = shortDecimalPartitionKey(columnValue, (DecimalType) type, name); else if (isLongDecimal(type)) { slices[columnIndex] = longDecimalPartitionKey(columnValue, (DecimalType) type, name);
type.writeLong(blockBuilder, ((SqlDecimal) value).toBigDecimal().unscaledValue().longValue()); else if (Decimals.isLongDecimal(type)) { type.writeSlice(blockBuilder, Decimals.encodeUnscaledValue(((SqlDecimal) value).toBigDecimal().unscaledValue()));
type.writeLong(blockBuilder, ((SqlDecimal) value).toBigDecimal().unscaledValue().longValue()); else if (Decimals.isLongDecimal(type)) { type.writeSlice(blockBuilder, Decimals.encodeUnscaledValue(((SqlDecimal) value).toBigDecimal().unscaledValue()));
return createDomain(type, hasNullValue, columnStatistics.getDecimalStatistics(), value -> rescale(value, (DecimalType) type).unscaledValue().longValue()); else if (isLongDecimal(type) && columnStatistics.getDecimalStatistics() != null) { return createDomain(type, hasNullValue, columnStatistics.getDecimalStatistics(), value -> encodeUnscaledValue(rescale(value, (DecimalType) type).unscaledValue()));
private static double toDouble(Object value, Type type) { if (value instanceof String && type.equals(DATE)) { return LocalDate.parse((CharSequence) value).toEpochDay(); } if (type.equals(BIGINT) || type.equals(INTEGER) || type.equals(DATE)) { return ((Number) value).doubleValue(); } if (type instanceof DecimalType) { DecimalType decimalType = (DecimalType) type; if (isShortDecimal(decimalType)) { return parseDouble(Decimals.toString(((Number) value).longValue(), decimalType.getScale())); } if (isLongDecimal(decimalType)) { return parseDouble(Decimals.toString((Slice) value, decimalType.getScale())); } throw new IllegalArgumentException("Unexpected decimal type: " + decimalType); } if (type.equals(DOUBLE)) { return ((Number) value).doubleValue(); } throw new IllegalArgumentException("unsupported column type " + type); } }
type.writeLong(blockBuilder, ((SqlDecimal) value).toBigDecimal().unscaledValue().longValue()); else if (Decimals.isLongDecimal(type)) { type.writeSlice(blockBuilder, Decimals.encodeUnscaledValue(((SqlDecimal) value).toBigDecimal().unscaledValue()));
return createDomain(type, hasNullValue, columnStatistics.getDecimalStatistics(), value -> rescale(value, (DecimalType) type).unscaledValue().longValue()); else if (isLongDecimal(type) && columnStatistics.getDecimalStatistics() != null) { return createDomain(type, hasNullValue, columnStatistics.getDecimalStatistics(), value -> encodeUnscaledValue(rescale(value, (DecimalType) type).unscaledValue()));
type.writeLong(blockBuilder, ((SqlDecimal) value).toBigDecimal().unscaledValue().longValue()); else if (Decimals.isLongDecimal(type)) { type.writeSlice(blockBuilder, Decimals.encodeUnscaledValue(((SqlDecimal) value).toBigDecimal().unscaledValue()));