in zetasql-toolkit-bigquery/src/main/java/com/google/zetasql/toolkit/catalog/bigquery/BigQueryAPIResourceProvider.java [246:275]
private Type convertBigQueryDataTypeToZetaSQLType(StandardSQLDataType bigqueryDataType) {
if (bigqueryDataType == null) {
return TypeFactory.createSimpleType(TypeKind.TYPE_UNKNOWN);
}
String typeKind = bigqueryDataType.getTypeKind();
if (typeKind.equals("ARRAY")) {
StandardSQLDataType arrayElementType = bigqueryDataType.getArrayElementType();
Type zetaSQLArrayType = this.convertBigQueryDataTypeToZetaSQLType(arrayElementType);
return TypeFactory.createArrayType(zetaSQLArrayType);
}
if (typeKind.equals("STRUCT")) {
StandardSQLStructType structType = bigqueryDataType.getStructType();
List<StructField> structFields =
structType.getFields().stream()
.map(
field ->
new StructField(
field.getName(),
this.convertBigQueryDataTypeToZetaSQLType(field.getDataType())))
.collect(Collectors.toList());
return TypeFactory.createStructType(structFields);
}
StandardSQLTypeName typeName = StandardSQLTypeName.valueOf(typeKind);
TypeKind zetaSQLTypeKind = this.convertBigqueryTypeNameToTypeKind(typeName);
return TypeFactory.createSimpleType(zetaSQLTypeKind);
}