in gobblin-iceberg/src/main/java/org/apache/gobblin/iceberg/Utils/TypeInfoToSchemaParser.java [161:219]
private Schema parseSchemaFromPrimitive(PrimitiveTypeInfo primitiveTypeInfo) {
Schema schema;
switch (primitiveTypeInfo.getPrimitiveCategory()) {
case LONG:
schema = Schema.create(Type.LONG);
break;
case DATE:
schema = Schema.create(Type.INT);
schema.addProp("logicalType", "date");
break;
case TIMESTAMP:
schema = Schema.create(Type.LONG);
schema.addProp("logicalType", "timestamp-millis");
break;
case BINARY:
schema = Schema.create(Type.BYTES);
break;
case BOOLEAN:
schema = Schema.create(Type.BOOLEAN);
break;
case DOUBLE:
schema = Schema.create(Type.DOUBLE);
break;
case DECIMAL:
DecimalTypeInfo dti = (DecimalTypeInfo) primitiveTypeInfo;
JsonNodeFactory factory = JsonNodeFactory.instance;
schema = Schema.create(Type.BYTES);
schema.addProp("logicalType", "decimal");
schema.addProp("precision", factory.numberNode(dti.getPrecision()));
schema.addProp("scale", factory.numberNode(dti.getScale()));
break;
case FLOAT:
schema = Schema.create(Type.FLOAT);
break;
case BYTE:
schema = Schema.create(Type.INT);
schema.addProp("logicalType", "byte");
break;
case SHORT:
schema = Schema.create(Type.INT);
schema.addProp("logicalType", "short");
break;
case INT:
schema = Schema.create(Type.INT);
break;
case CHAR:
case STRING:
case VARCHAR:
schema = Schema.create(Type.STRING);
break;
case VOID:
schema = Schema.create(Type.NULL);
break;
default:
throw new UnsupportedOperationException(primitiveTypeInfo + " is not supported.");
}
return schema;
}