public Object parseDefaultValue()

in eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/table/catalog/mysql/MysqlDefaultValueConvertorImpl.java [62:111]


    public Object parseDefaultValue(Column<?> column, String defaultValueExpression) {
        if (defaultValueExpression == null) {
            return null;
        }
        defaultValueExpression = defaultValueExpression.trim();

        if (NUMBER_DATA_TYPES.contains(column.getJdbcType()) && StringUtils.equalsAnyIgnoreCase(defaultValueExpression, Boolean.TRUE.toString(),
            Boolean.FALSE.toString())) {
            /*
             * These types are synonyms for DECIMAL: DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])]
             * [UNSIGNED] [ZEROFILL]
             */
            if (column.getJdbcType() == JDBCType.DECIMAL || column.getJdbcType() == JDBCType.NUMERIC) {
                return convert2Decimal(column, defaultValueExpression);
            }
            return StringUtils.equalsIgnoreCase(Boolean.TRUE.toString(), defaultValueExpression) ? 1 : 0;
        }

        if (BINARY_DATA_TYPES.contains(column.getJdbcType()) && column.getDefaultValueExpression() != null) {
            // https://dev.mysql.com/doc/refman/8.0/en/binary-varbinary.html
            String cleanedDefaultValueExpression = StringUtils.replace(column.getDefaultValueExpression(), "\\0", "");
            return ByteArrayUtils.bytesToHexString(cleanedDefaultValueExpression.getBytes(Constants.DEFAULT_CHARSET));
        }

        switch (column.getDataType().getSQLType()) {
            case DATE:
                return convert2LocalDate(column, defaultValueExpression);
            case TIMESTAMP:
                return convertToLocalDateTime(column, defaultValueExpression);
            case TIMESTAMP_WITH_TIMEZONE:
                return convertToTimestamp(column, defaultValueExpression);
            case TIME:
                return convertToLocalTime(column, defaultValueExpression);
            case BOOLEAN:
                return convert2Boolean(column, defaultValueExpression);
            case BIT:
                return convertToBits(column, defaultValueExpression);

            case NUMERIC:
            case DECIMAL:
                return convert2Decimal(column, defaultValueExpression);

            case FLOAT:
            case DOUBLE:
            case REAL:
                return Double.parseDouble(defaultValueExpression);
            default:
        }
        return defaultValueExpression;
    }