public static ArrowFieldWriter createArrowFieldWriter()

in fluss-common/src/main/java/com/alibaba/fluss/utils/ArrowUtils.java [282:329]


    public static ArrowFieldWriter<InternalRow> createArrowFieldWriter(
            ValueVector vector, DataType dataType) {
        if (vector instanceof TinyIntVector) {
            return ArrowTinyIntWriter.forField((TinyIntVector) vector);
        } else if (vector instanceof SmallIntVector) {
            return ArrowSmallIntWriter.forField((SmallIntVector) vector);
        } else if (vector instanceof IntVector) {
            return ArrowIntWriter.forField((IntVector) vector);
        } else if (vector instanceof BigIntVector) {
            return ArrowBigIntWriter.forField((BigIntVector) vector);
        } else if (vector instanceof BitVector) {
            return ArrowBooleanWriter.forField((BitVector) vector);
        } else if (vector instanceof Float4Vector) {
            return ArrowFloatWriter.forField((Float4Vector) vector);
        } else if (vector instanceof Float8Vector) {
            return ArrowDoubleWriter.forField((Float8Vector) vector);
        } else if (vector instanceof VarCharVector) {
            return ArrowVarCharWriter.forField((VarCharVector) vector);
        } else if (vector instanceof FixedSizeBinaryVector) {
            return ArrowBinaryWriter.forField((FixedSizeBinaryVector) vector);
        } else if (vector instanceof VarBinaryVector) {
            return ArrowVarBinaryWriter.forField((VarBinaryVector) vector);
        } else if (vector instanceof DecimalVector) {
            DecimalVector decimalVector = (DecimalVector) vector;
            return ArrowDecimalWriter.forField(
                    decimalVector, getPrecision(decimalVector), decimalVector.getScale());
        } else if (vector instanceof DateDayVector) {
            return ArrowDateWriter.forField((DateDayVector) vector);
        } else if (vector instanceof TimeSecVector
                || vector instanceof TimeMilliVector
                || vector instanceof TimeMicroVector
                || vector instanceof TimeNanoVector) {
            return ArrowTimeWriter.forField(vector);
        } else if (vector instanceof TimeStampVector
                && ((ArrowType.Timestamp) vector.getField().getType()).getTimezone() == null) {
            int precision;
            if (dataType instanceof LocalZonedTimestampType) {
                precision = ((LocalZonedTimestampType) dataType).getPrecision();
                return ArrowTimestampLtzWriter.forField(vector, precision);
            } else {
                precision = ((TimestampType) dataType).getPrecision();
                return ArrowTimestampNtzWriter.forField(vector, precision);
            }
        } else {
            throw new UnsupportedOperationException(
                    String.format("Unsupported type %s.", dataType));
        }
    }