public StandardSQLTypeName convertPostgresqlToBigQueryColumnType()

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


  public StandardSQLTypeName convertPostgresqlToBigQueryColumnType(PostgresqlColumn column) {
    String dataType = column.getDataType().toUpperCase();

    switch (dataType) {
      case "UUID":
      case "CHAR":
      case "CHARACTER":
      case "VARCHAR":
      case "TEXT":
      case "TINYTEXT":
      case "MEDIUMTEXT":
      case "LONGTEXT":
        return StandardSQLTypeName.STRING;
      case "BOOLEAN":
        return StandardSQLTypeName.BOOL;
      case "TINYINT":
      case "SMALLINT":
      case "MEDIUMINT":
      case "INT":
      case "INTEGER":
      case "BIGINT":
        return StandardSQLTypeName.INT64;
      case "DECIMAL":
      case "NUMERIC":
        return StandardSQLTypeName.NUMERIC;
      case "DOUBLE PRECISION":
      case "FLOAT":
      case "REAL":
        return StandardSQLTypeName.FLOAT64;
      case "DATE":
        return StandardSQLTypeName.DATE;
      case "BYTEA":
        return StandardSQLTypeName.BYTES;
      case "TIME":
        return StandardSQLTypeName.TIME;
      case "TIMESTAMP WITH TIME ZONE":
      case "TIMESTAMP":
        return StandardSQLTypeName.TIMESTAMP;
      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 PostgreSQL Type Unknown, Default to String: \"{}\"", dataType);
      return StandardSQLTypeName.STRING;
    }
  }