in paimon-common/src/main/java/org/apache/paimon/data/BinaryWriter.java [85:144]
static void write(
BinaryWriter writer, int pos, Object o, DataType type, Serializer<?> serializer) {
switch (type.getTypeRoot()) {
case BOOLEAN:
writer.writeBoolean(pos, (boolean) o);
break;
case TINYINT:
writer.writeByte(pos, (byte) o);
break;
case SMALLINT:
writer.writeShort(pos, (short) o);
break;
case INTEGER:
case DATE:
case TIME_WITHOUT_TIME_ZONE:
writer.writeInt(pos, (int) o);
break;
case BIGINT:
writer.writeLong(pos, (long) o);
break;
case TIMESTAMP_WITHOUT_TIME_ZONE:
TimestampType timestampType = (TimestampType) type;
writer.writeTimestamp(pos, (Timestamp) o, timestampType.getPrecision());
break;
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
LocalZonedTimestampType lzTs = (LocalZonedTimestampType) type;
writer.writeTimestamp(pos, (Timestamp) o, lzTs.getPrecision());
break;
case FLOAT:
writer.writeFloat(pos, (float) o);
break;
case DOUBLE:
writer.writeDouble(pos, (double) o);
break;
case CHAR:
case VARCHAR:
writer.writeString(pos, (BinaryString) o);
break;
case DECIMAL:
DecimalType decimalType = (DecimalType) type;
writer.writeDecimal(pos, (Decimal) o, decimalType.getPrecision());
break;
case ARRAY:
writer.writeArray(pos, (InternalArray) o, (InternalArraySerializer) serializer);
break;
case MAP:
case MULTISET:
writer.writeMap(pos, (InternalMap) o, (InternalMapSerializer) serializer);
break;
case ROW:
writer.writeRow(pos, (InternalRow) o, (InternalRowSerializer) serializer);
break;
case BINARY:
case VARBINARY:
writer.writeBinary(pos, (byte[]) o);
break;
default:
throw new UnsupportedOperationException("Not support type: " + type);
}
}