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;
}
}