in core/src/main/java/org/apache/calcite/avatica/AvaticaSite.java [432:449]
public static BigDecimal toBigDecimal(Object x) {
if (x instanceof BigDecimal) {
return (BigDecimal) x;
} else if (x instanceof BigInteger) {
return new BigDecimal((BigInteger) x);
} else if (x instanceof Number) {
if (x instanceof Double || x instanceof Float) {
return new BigDecimal(((Number) x).doubleValue());
} else {
return new BigDecimal(((Number) x).longValue());
}
} else if (x instanceof Boolean) {
return (Boolean) x ? BigDecimal.ONE : BigDecimal.ZERO;
} else if (x instanceof String) {
return new BigDecimal((String) x);
}
throw unsupportedCast(x.getClass(), BigDecimal.class);
}