in java/mapreduce/src/java/org/apache/orc/mapred/OrcStruct.java [170:205]
public static WritableComparable createValue(TypeDescription type) {
switch (type.getCategory()) {
case BOOLEAN: return new BooleanWritable();
case BYTE: return new ByteWritable();
case SHORT: return new ShortWritable();
case INT: return new IntWritable();
case LONG: return new LongWritable();
case FLOAT: return new FloatWritable();
case DOUBLE: return new DoubleWritable();
case BINARY: return new BytesWritable();
case CHAR:
case VARCHAR:
case STRING:
return new Text();
case DATE:
return new DateWritable();
case TIMESTAMP:
case TIMESTAMP_INSTANT:
return new OrcTimestamp();
case DECIMAL:
return new HiveDecimalWritable();
case STRUCT: {
OrcStruct result = new OrcStruct(type);
int c = 0;
for(TypeDescription child: type.getChildren()) {
result.setFieldValue(c++, createValue(child));
}
return result;
}
case UNION: return new OrcUnion(type);
case LIST: return new OrcList(type);
case MAP: return new OrcMap(type);
default:
throw new IllegalArgumentException("Unknown type " + type);
}
}