public StandardSQLTypeName convertMysqlToBigQueryColumnType()

in v2/datastream-common/src/main/java/com/google/cloud/teleport/v2/datastream/utils/DataStreamClient.java [480:535]


  public StandardSQLTypeName convertMysqlToBigQueryColumnType(MysqlColumn column) {
    String dataType = column.getDataType().toUpperCase();

    switch (dataType) {
      case "BLOB":
      case "VARCHAR":
      case "CHAR":
      case "TINYTEXT":
      case "TEXT":
      case "MEDIUMTEXT":
      case "LONGTEXT":
        return StandardSQLTypeName.STRING;
      case "TINYINT":
      case "SMALLINT":
      case "MEDIUMINT":
      case "INT":
      case "INTEGER":
      case "BIGINT":
        return StandardSQLTypeName.INT64;
      case "FLOAT":
      case "REAL":
      case "DOUBLE":
      case "DOUBLE PRECISION":
        return StandardSQLTypeName.FLOAT64;
      case "DECIMAL":
      case "NUMERIC":
        return StandardSQLTypeName.BIGNUMERIC;
      case "BINARY":
      case "VARBINARY":
        return StandardSQLTypeName.BYTES;
      case "DATETIME":
        return StandardSQLTypeName.TIMESTAMP;
      case "DATE":
        return StandardSQLTypeName.DATE;
        // (naveronen) - i'm setting this a STRING for now, but some customers might need a
        // different
        // solution. once we encounter such cases, we might need to adjust this
      case "SET":
      case "ENUM":
        return StandardSQLTypeName.STRING;
      case "BIT":
        return StandardSQLTypeName.INT64;
      default:
    }

    if (TIMESTAMP_PATTERN.matcher(dataType).matches()) {
      return StandardSQLTypeName.TIMESTAMP;
    } else if (TIMESTAMP_WITH_TIMEZONE_PATTERN.matcher(dataType).matches()) {
      return StandardSQLTypeName.TIMESTAMP; // TODO: what type do we want here?
    } else if (TIMESTAMP_WITH_LOCAL_TIMEZONE_PATTERN.matcher(dataType).matches()) {
      return StandardSQLTypeName.TIMESTAMP; // TODO: what type do we want here?
    } else {
      LOG.warn("Datastream MySQL Type Unknown, Default to String: \"{}\"", dataType);
      return StandardSQLTypeName.STRING;
    }
  }