in java/mapreduce/src/java/org/apache/orc/mapred/OrcMapredRecordWriter.java [259:330]
public static void setColumn(TypeDescription schema,
ColumnVector vector,
int row,
Writable value) {
if (value == null) {
vector.noNulls = false;
vector.isNull[row] = true;
} else {
switch (schema.getCategory()) {
case BOOLEAN:
setLongValue(vector, row, ((BooleanWritable) value).get() ? 1 : 0);
break;
case BYTE:
setLongValue(vector, row, ((ByteWritable) value).get());
break;
case SHORT:
setLongValue(vector, row, ((ShortWritable) value).get());
break;
case INT:
setLongValue(vector, row, ((IntWritable) value).get());
break;
case LONG:
setLongValue(vector, row, ((LongWritable) value).get());
break;
case FLOAT:
setDoubleValue(vector, row, ((FloatWritable) value).get());
break;
case DOUBLE:
setDoubleValue(vector, row, ((DoubleWritable) value).get());
break;
case STRING:
setBinaryValue(vector, row, (Text) value);
break;
case CHAR:
setCharValue((BytesColumnVector) vector, row, (Text) value,
schema.getMaxLength());
break;
case VARCHAR:
setBinaryValue(vector, row, (Text) value, schema.getMaxLength());
break;
case BINARY:
setBinaryValue(vector, row, (BytesWritable) value);
break;
case DATE:
setLongValue(vector, row, ((DateWritable) value).getDays());
break;
case TIMESTAMP:
case TIMESTAMP_INSTANT:
((TimestampColumnVector) vector).set(row, (OrcTimestamp) value);
break;
case DECIMAL:
((DecimalColumnVector) vector).set(row, (HiveDecimalWritable) value);
break;
case STRUCT:
setStructValue(schema, (StructColumnVector) vector, row,
(OrcStruct) value);
break;
case UNION:
setUnionValue(schema, (UnionColumnVector) vector, row,
(OrcUnion) value);
break;
case LIST:
setListValue(schema, (ListColumnVector) vector, row, (OrcList) value);
break;
case MAP:
setMapValue(schema, (MapColumnVector) vector, row, (OrcMap) value);
break;
default:
throw new IllegalArgumentException("Unknown type " + schema);
}
}
}