in v1/src/main/java/com/google/cloud/teleport/spanner/TextImportTransform.java [458:519]
public static Code parseSpannerDataType(String columnType, Dialect dialect) {
if (STRING_PATTERN.matcher(columnType).matches() && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.STRING;
} else if (columnType.equalsIgnoreCase("INT64") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.INT64;
} else if (columnType.equalsIgnoreCase("FLOAT32") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.FLOAT32;
} else if (columnType.equalsIgnoreCase("FLOAT64") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.FLOAT64;
} else if (columnType.equalsIgnoreCase("BOOL") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.BOOL;
} else if (columnType.equalsIgnoreCase("DATE") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.DATE;
} else if (columnType.equalsIgnoreCase("TIMESTAMP")
&& dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.TIMESTAMP;
} else if (columnType.equalsIgnoreCase("BYTES") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.BYTES;
} else if (columnType.equalsIgnoreCase("NUMERIC") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.NUMERIC;
} else if (columnType.equalsIgnoreCase("JSON") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.JSON;
} else if (columnType.startsWith("PROTO") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.PROTO;
} else if (columnType.startsWith("ENUM") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.ENUM;
} else if (columnType.equalsIgnoreCase("UUID") && dialect == Dialect.GOOGLE_STANDARD_SQL) {
return Code.UUID;
} else if (columnType.equalsIgnoreCase("bigint") && dialect == Dialect.POSTGRESQL) {
return Code.PG_INT8;
} else if (columnType.equalsIgnoreCase("real") && dialect == Dialect.POSTGRESQL) {
return Code.PG_FLOAT4;
} else if (columnType.equalsIgnoreCase("double precision") && dialect == Dialect.POSTGRESQL) {
return Code.PG_FLOAT8;
} else if (columnType.equalsIgnoreCase("boolean") && dialect == Dialect.POSTGRESQL) {
return Code.PG_BOOL;
} else if (columnType.equalsIgnoreCase("timestamp with time zone")
&& dialect == Dialect.POSTGRESQL) {
return Code.PG_TIMESTAMPTZ;
} else if (columnType.equalsIgnoreCase("bytea") && dialect == Dialect.POSTGRESQL) {
return Code.PG_BYTEA;
} else if (columnType.equalsIgnoreCase("numeric") && dialect == Dialect.POSTGRESQL) {
return Code.PG_NUMERIC;
} else if (columnType.equalsIgnoreCase("jsonb") && dialect == Dialect.POSTGRESQL) {
return Code.PG_JSONB;
} else if (columnType.toLowerCase().startsWith("character varying")
&& dialect == Dialect.POSTGRESQL) {
return Code.PG_VARCHAR;
} else if (columnType.equalsIgnoreCase("text") && dialect == Dialect.POSTGRESQL) {
return Code.PG_TEXT;
} else if (columnType.equalsIgnoreCase("date") && dialect == Dialect.POSTGRESQL) {
return Code.PG_DATE;
} else if (columnType.equalsIgnoreCase("spanner.commit_timestamp")
&& dialect == Dialect.POSTGRESQL) {
return Code.PG_SPANNER_COMMIT_TIMESTAMP;
} else if (columnType.equalsIgnoreCase("uuid") && dialect == Dialect.POSTGRESQL) {
return Code.PG_UUID;
} else {
throw new IllegalArgumentException(
"Unrecognized or unsupported column data type: " + columnType);
}
}