public Object convert()

in flink-cdc-connect/flink-cdc-source-connectors/flink-connector-mysql-cdc/src/main/java/io/debezium/connector/mysql/MySqlDefaultValueConverter.java [151:196]


    public Object convert(Column column, String value) {
        if (value == null) {
            return value;
        }

        // trim non varchar data types before converting
        if (TRIM_DATA_TYPES.contains(column.jdbcType())) {
            value = value.trim();
        }

        // strip character set introducer on default value expressions
        value = stripCharacterSetIntroducer(value);

        // boolean is also INT(1) or TINYINT(1)
        if (NUMBER_DATA_TYPES.contains(column.jdbcType())
                && ("true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value))) {
            if (Types.DECIMAL == column.jdbcType() || Types.NUMERIC == column.jdbcType()) {
                return convertToDecimal(column, value.equalsIgnoreCase("true") ? "1" : "0");
            }
            return value.equalsIgnoreCase("true") ? 1 : 0;
        }
        switch (column.jdbcType()) {
            case Types.DATE:
                return convertToLocalDate(column, value);
            case Types.TIMESTAMP:
                return convertToLocalDateTime(column, value);
            case Types.TIMESTAMP_WITH_TIMEZONE:
                return convertToTimestamp(column, value);
            case Types.TIME:
                return convertToDuration(column, value);
            case Types.BOOLEAN:
                return convertToBoolean(value);
            case Types.BIT:
                return convertToBits(column, value);

            case Types.NUMERIC:
            case Types.DECIMAL:
                return convertToDecimal(column, value);

            case Types.FLOAT:
            case Types.DOUBLE:
            case Types.REAL:
                return convertToDouble(value);
        }
        return value;
    }