in java/clickhouse-connector/src/main/java/com/epam/deltix/timebase/connector/clickhouse/util/ClickhouseUtil.java [48:93]
public static BigDecimal getDecimalMaxValue(SqlDataType dataType) {
final SqlDataType strippedType = SelectQueryHelper.stripNullable(dataType);
final int precision, scale;
switch (strippedType.getType()) {
case DECIMAL:
DecimalDataType decimalDataType = (DecimalDataType) strippedType;
precision = decimalDataType.getP();
scale = decimalDataType.getS();
break;
case DECIMAL32:
precision = ClickHouseDataType.Decimal32.getMaxPrecision();
scale = SelectQueryHelper.calculateDecimalScaleByType(strippedType);
break;
case DECIMAL64:
precision = ClickHouseDataType.Decimal64.getMaxPrecision();
scale = SelectQueryHelper.calculateDecimalScaleByType(strippedType);
break;
case DECIMAL128:
precision = ClickHouseDataType.Decimal128.getMaxPrecision();
scale = SelectQueryHelper.calculateDecimalScaleByType(strippedType);
break;
case DATE_TIME64:
precision = ClickHouseDataType.DateTime64.getMaxPrecision();
scale = ClickHouseDataType.DateTime64.getMaxScale();
break;
default:
throw new UnsupportedOperationException();
}
StringBuilder decimalValueAsStr = new StringBuilder();
int digitsExcludeFraction = precision - scale;
for (int i = 0; i < digitsExcludeFraction; i++) {
decimalValueAsStr.append('9');
}
for (int i = 0; i < scale; i++) {
if (i == 0)
decimalValueAsStr.append('.');
decimalValueAsStr.append('9');
}
return new BigDecimal(decimalValueAsStr.toString());
}