in asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBRowStore.java [548:595]
BigDecimal getBigDecimal(int columnIndex, boolean setScale, int scale) throws SQLException {
BigDecimal dec;
ADBDatatype valueType = getColumnType(columnIndex);
switch (valueType) {
case MISSING:
case NULL:
return null;
case BOOLEAN:
dec = getColumnRegisterAsBoolean(columnIndex, 0) ? BigDecimal.ONE : BigDecimal.ZERO;
break;
case TINYINT:
case SMALLINT:
case INTEGER:
case BIGINT:
case DATE:
case TIME:
case DATETIME:
case YEARMONTHDURATION:
case DAYTIMEDURATION:
dec = BigDecimal.valueOf(getColumnRegister(columnIndex, 0));
break;
case FLOAT:
try {
dec = new BigDecimal(getColumnRegisterAsFloat(columnIndex, 0));
} catch (NumberFormatException e) {
throw getErrorReporter().errorInvalidValueOfType(valueType);
}
break;
case DOUBLE:
try {
dec = new BigDecimal(getColumnRegisterAsDouble(columnIndex, 0));
} catch (NumberFormatException e) {
throw getErrorReporter().errorInvalidValueOfType(valueType);
}
break;
case STRING:
try {
dec = new BigDecimal(getStringFromObjectStore(columnIndex));
} catch (NumberFormatException e) {
throw getErrorReporter().errorInvalidValueOfType(valueType);
}
break;
default:
throw getErrorReporter().errorUnexpectedType(valueType);
}
return setScale ? dec.setScale(scale, RoundingMode.DOWN) : dec;
}