public static OceanBaseMysqlType getByName()

in seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oceanbase/OceanBaseMysqlType.java [355:551]


    public static OceanBaseMysqlType getByName(String fullMysqlTypeName) {

        String typeName = "";

        if (fullMysqlTypeName.indexOf("(") != -1) {
            typeName = fullMysqlTypeName.substring(0, fullMysqlTypeName.indexOf("(")).trim();
        } else {
            typeName = fullMysqlTypeName;
        }

        // the order of checks is important because some short names could match parts of longer
        // names
        if (StringUtils.indexOfIgnoreCase(typeName, "DECIMAL") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "DEC") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "NUMERIC") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "FIXED") != -1) {
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                    ? DECIMAL_UNSIGNED
                    : DECIMAL;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "TINYBLOB") != -1) {
            // IMPORTANT: "TINYBLOB" must be checked before "TINY"
            return TINYBLOB;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "TINYTEXT") != -1) {
            // IMPORTANT: "TINYTEXT" must be checked before "TINY"
            return TINYTEXT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "TINYINT") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "TINY") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "INT1") != -1) {
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? TINYINT_UNSIGNED
                    : TINYINT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "MEDIUMINT") != -1
                // IMPORTANT: "INT24" must be checked before "INT2"
                || StringUtils.indexOfIgnoreCase(typeName, "INT24") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "INT3") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "MIDDLEINT") != -1) {
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? MEDIUMINT_UNSIGNED
                    : MEDIUMINT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "SMALLINT") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "INT2") != -1) {
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? SMALLINT_UNSIGNED
                    : SMALLINT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "BIGINT") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "SERIAL") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "INT8") != -1) {
            // SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? BIGINT_UNSIGNED
                    : BIGINT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "POINT") != -1) {
            // also covers "MULTIPOINT"
            // IMPORTANT: "POINT" must be checked before "INT"
        } else if (StringUtils.indexOfIgnoreCase(typeName, "INT") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "INTEGER") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "INT4") != -1) {
            // IMPORTANT: "INT" must be checked after all "*INT*" types
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? INT_UNSIGNED
                    : INT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "DOUBLE") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "REAL") != -1
                /* || StringUtils.indexOfIgnoreCase(name, "DOUBLE PRECISION") != -1 is caught by "DOUBLE" check */
                // IMPORTANT: "FLOAT8" must be checked before "FLOAT"
                || StringUtils.indexOfIgnoreCase(typeName, "FLOAT8") != -1) {
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? DOUBLE_UNSIGNED
                    : DOUBLE;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "FLOAT") != -1 /*
         * || StringUtils.indexOfIgnoreCase(name, "FLOAT4") != -1 is caught by
         * "FLOAT" check
         */) {
            return StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "UNSIGNED") != -1
                            || StringUtils.indexOfIgnoreCase(fullMysqlTypeName, "ZEROFILL") != -1
                    ? FLOAT_UNSIGNED
                    : FLOAT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "NULL") != -1) {
            return NULL;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "TIMESTAMP") != -1) {
            // IMPORTANT: "TIMESTAMP" must be checked before "TIME"
            return TIMESTAMP;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "DATETIME") != -1) {
            // IMPORTANT: "DATETIME" must be checked before "DATE" and "TIME"
            return DATETIME;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "DATE") != -1) {
            return DATE;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "TIME") != -1) {
            return TIME;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "YEAR") != -1) {
            return YEAR;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "LONGBLOB") != -1) {
            // IMPORTANT: "LONGBLOB" must be checked before "LONG" and "BLOB"
            return LONGBLOB;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "LONGTEXT") != -1) {
            // IMPORTANT: "LONGTEXT" must be checked before "LONG" and "TEXT"
            return LONGTEXT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "MEDIUMBLOB") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "LONG VARBINARY") != -1) {
            // IMPORTANT: "MEDIUMBLOB" must be checked before "BLOB"
            // IMPORTANT: "LONG VARBINARY" must be checked before "LONG" and "VARBINARY"
            return MEDIUMBLOB;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "MEDIUMTEXT") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "LONG VARCHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "LONG") != -1) {
            // IMPORTANT: "MEDIUMTEXT" must be checked before "TEXT"
            // IMPORTANT: "LONG VARCHAR" must be checked before "VARCHAR"
            return MEDIUMTEXT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "VARCHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "NVARCHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "NATIONAL VARCHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "CHARACTER VARYING") != -1) {
            // IMPORTANT: "CHARACTER VARYING" must be checked before "CHARACTER" and "CHAR"
            return VARCHAR;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "VARBINARY") != -1) {
            return VARBINARY;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "BINARY") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "CHAR BYTE") != -1) {
            // IMPORTANT: "BINARY" must be checked after all "*BINARY" types
            // IMPORTANT: "CHAR BYTE" must be checked before "CHAR"
            return BINARY;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "LINESTRING") != -1) {
            // also covers "MULTILINESTRING"
            // IMPORTANT: "LINESTRING" must be checked before "STRING"
            return GEOMETRY;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "STRING") != -1
                // IMPORTANT: "CHAR" must be checked after all "*CHAR*" types
                || StringUtils.indexOfIgnoreCase(typeName, "CHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "NCHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "NATIONAL CHAR") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "CHARACTER") != -1) {
            return CHAR;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "BOOLEAN") != -1
                || StringUtils.indexOfIgnoreCase(typeName, "BOOL") != -1) {
            return BOOLEAN;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "BIT") != -1) {
            return BIT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "JSON") != -1) {
            return JSON;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "ENUM") != -1) {
            return ENUM;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "SET") != -1) {
            return SET;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "BLOB") != -1) {
            return BLOB;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "TEXT") != -1) {
            return TEXT;

        } else if (StringUtils.indexOfIgnoreCase(typeName, "GEOM")
                        != -1 // covers "GEOMETRY", "GEOMETRYCOLLECTION" and "GEOMCOLLECTION"
                || StringUtils.indexOfIgnoreCase(typeName, "POINT")
                        != -1 // also covers "MULTIPOINT"
                || StringUtils.indexOfIgnoreCase(typeName, "POLYGON")
                        != -1 // also covers "MULTIPOLYGON"
        ) {
            return GEOMETRY;
        }

        return UNKNOWN;
    }