in java/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java [727:791]
private void serializeColumn(
TSDataType dataType, Object column, DataOutputStream stream, ColumnCategory columnCategory)
throws IOException {
ReadWriteIOUtils.write(BytesUtils.boolToByte(column != null), stream);
if (column != null) {
switch (dataType) {
case INT32:
int[] intValues = (int[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(intValues[j], stream);
}
break;
case DATE:
LocalDate[] dateValues = (LocalDate[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(
dateValues[j] == null
? DateUtils.EMPTY_DATE_INT
: DateUtils.parseDateExpressionToInt(dateValues[j]),
stream);
}
break;
case INT64:
case TIMESTAMP:
long[] longValues = (long[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(longValues[j], stream);
}
break;
case FLOAT:
float[] floatValues = (float[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(floatValues[j], stream);
}
break;
case DOUBLE:
double[] doubleValues = (double[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(doubleValues[j], stream);
}
break;
case BOOLEAN:
boolean[] boolValues = (boolean[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(BytesUtils.boolToByte(boolValues[j]), stream);
}
break;
case TEXT:
case STRING:
case BLOB:
Binary[] binaryValues = (Binary[]) column;
for (int j = 0; j < rowSize; j++) {
ReadWriteIOUtils.write(BytesUtils.boolToByte(binaryValues[j] != null), stream);
if (binaryValues[j] != null) {
ReadWriteIOUtils.write(binaryValues[j], stream);
}
}
break;
default:
throw new UnSupportedDataTypeException(
String.format("Data type %s is not supported.", dataType));
}
}
}