in java/bench/core/src/java/org/apache/orc/bench/core/convert/avro/AvroSchemaUtils.java [36:117]
public static Schema createAvroSchema(TypeDescription typeInfo) {
Schema schema;
switch (typeInfo.getCategory()) {
case STRING:
schema = Schema.create(Schema.Type.STRING);
break;
case CHAR:
schema = getSchemaFor("{" +
"\"type\":\"string\"," +
"\"logicalType\":\"char\"," +
"\"maxLength\":" + typeInfo.getMaxLength() + "}");
break;
case VARCHAR:
schema = getSchemaFor("{" +
"\"type\":\"string\"," +
"\"logicalType\":\"varchar\"," +
"\"maxLength\":" + typeInfo.getMaxLength() + "}");
break;
case BINARY:
schema = Schema.create(Schema.Type.BYTES);
break;
case BYTE:
schema = Schema.create(Schema.Type.INT);
break;
case SHORT:
schema = Schema.create(Schema.Type.INT);
break;
case INT:
schema = Schema.create(Schema.Type.INT);
break;
case LONG:
schema = Schema.create(Schema.Type.LONG);
break;
case FLOAT:
schema = Schema.create(Schema.Type.FLOAT);
break;
case DOUBLE:
schema = Schema.create(Schema.Type.DOUBLE);
break;
case BOOLEAN:
schema = Schema.create(Schema.Type.BOOLEAN);
break;
case DECIMAL:
String precision = String.valueOf(typeInfo.getPrecision());
String scale = String.valueOf(typeInfo.getScale());
int bytes = PRECISION_TO_BYTE_COUNT[typeInfo.getPrecision() - 1];
schema = getSchemaFor("{" +
"\"type\":\"fixed\"," +
"\"name\":\"" + typeInfo.getFullFieldName() + "\"," +
"\"size\":" + bytes + "," +
"\"logicalType\":\"decimal\"," +
"\"precision\":" + precision + "," +
"\"scale\":" + scale + "}");
break;
case DATE:
schema = getSchemaFor("{" +
"\"type\":\"int\"," +
"\"logicalType\":\"date\"}");
break;
case TIMESTAMP:
schema = getSchemaFor("{" +
"\"type\":\"long\"," +
"\"logicalType\":\"timestamp-millis\"}");
break;
case LIST:
schema = createAvroArray(typeInfo);
break;
case MAP:
schema = createAvroMap(typeInfo);
break;
case STRUCT:
schema = createAvroRecord(typeInfo);
break;
case UNION:
schema = createAvroUnion(typeInfo);
break;
default:
throw new UnsupportedOperationException(typeInfo + " is not supported.");
}
return schema;
}