public static BigDecimal getDecimalMaxValue()

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());
    }