in jdbc/src/main/java/software/amazon/timestream/jdbc/Conversions.java [131:202]
private static void populateDoubleConversions(
final Map<TimestreamDataType, Map<JdbcType, TimestreamConvertFunction<?>>> map) {
final Map<JdbcType, TimestreamConvertFunction<?>> doubleConversions = new EnumMap<>(
JdbcType.class);
addCommonNumericConversions(doubleConversions);
doubleConversions.put(JdbcType.BOOLEAN,
(data, callback) -> Double.parseDouble(data.getScalarValue()) != 0.0);
doubleConversions.put(JdbcType.TINYINT, (data, callback) -> {
final BigDecimal value = validateValueRange(
data.getScalarValue(),
BYTE_MIN,
BYTE_MAX,
JDBCType.TINYINT);
if (value.stripTrailingZeros().scale() > 0) {
callback.accept(new SQLWarning(Warning.lookup(
Warning.VALUE_TRUNCATED,
TimestreamDataType.DOUBLE,
JdbcType.TINYINT)));
}
return value.byteValue();
});
doubleConversions.put(JdbcType.SMALLINT, (data, callback) -> {
final BigDecimal value = validateValueRange(
data.getScalarValue(),
SHORT_MIN,
SHORT_MAX,
JDBCType.SMALLINT);
if (value.stripTrailingZeros().scale() > 0) {
callback.accept(new SQLWarning(Warning.lookup(
Warning.VALUE_TRUNCATED,
TimestreamDataType.DOUBLE,
JdbcType.SMALLINT)));
}
return value.shortValue();
});
doubleConversions.put(JdbcType.INTEGER, (data, callback) -> {
final BigDecimal value = validateValueRange(
data.getScalarValue(),
INT_MIN,
INT_MAX,
JDBCType.INTEGER);
if (value.stripTrailingZeros().scale() > 0) {
callback.accept(new SQLWarning(Warning.lookup(
Warning.VALUE_TRUNCATED,
TimestreamDataType.DOUBLE,
JdbcType.INTEGER)));
}
return value.intValue();
});
doubleConversions.put(JdbcType.BIGINT, (data, callback) -> {
final BigDecimal value = validateValueRange(
data.getScalarValue(),
LONG_MIN,
LONG_MAX,
JDBCType.BIGINT);
if (value.stripTrailingZeros().scale() > 0) {
callback.accept(new SQLWarning(Warning.lookup(
Warning.VALUE_TRUNCATED,
TimestreamDataType.DOUBLE,
JdbcType.BIGINT)));
}
return value.longValue();
});
map.put(TimestreamDataType.DOUBLE, doubleConversions);
}