public static ArrowFieldWriter createArrowFieldWriterForStruct()

in odps-sdk/odps-sdk-table-api/src/main/java/com/aliyun/odps/table/record/constructor/ArrowStructWriterImpl.java [116:159]


    public static ArrowFieldWriter<Struct> createArrowFieldWriterForStruct(
            ValueVector vector,
            TypeInfo typeInfo) {
        switch (typeInfo.getOdpsType()) {
            case BOOLEAN:
                return new ArrowBitWriterImpl.StructBitWriter((BitVector) vector);
            case TINYINT:
                return new ArrowTinyIntWriterImpl.StructTinyIntWriter((TinyIntVector) vector);
            case SMALLINT:
                return new ArrowSmallIntWriterImpl.StructSmallIntWriter((SmallIntVector) vector);
            case INT:
                return new ArrowIntWriterImpl.StructIntWriter((IntVector) vector);
            case BIGINT:
                return new ArrowBigIntWriterImpl.StructBigIntWriter((BigIntVector) vector);
            case FLOAT:
                return new ArrowFloat4WriterImpl.StructFloat4Writer((Float4Vector) vector);
            case DOUBLE:
                return new ArrowFloat8WriterImpl.StructFloat8Writer((Float8Vector) vector);
            case DECIMAL:
                return new ArrowDecimalWriterImpl.StructDecimalWriter((DecimalVector) vector, typeInfo);
            case STRING:
            case VARCHAR:
            case CHAR:
            case JSON:
                return new ArrowVarCharWriterImpl.StructVarCharWriter((VarCharVector) vector);
            case BINARY:
                return new ArrowVarBinaryWriterImpl.StructVarBinaryWriter((VarBinaryVector) vector);
            case DATE:
                return new ArrowDateDayWriterImpl.StructDateWriter((DateDayVector) vector);
            case DATETIME:
                return new ArrowDateTimeWriterImpl.StructDateTimeWriter((TimeStampVector) vector);
            case TIMESTAMP:
            case TIMESTAMP_NTZ:
                return new ArrowTimeStampWriterImpl.StructTimeStampWriter((TimeStampVector) vector, typeInfo);
            case ARRAY:
                return new ArrowArrayWriterImpl.StructArrayWriter((ListVector) vector, typeInfo);
            case MAP:
                return new ArrowMapWriterImpl.StructMapWriter((MapVector) vector, typeInfo);
            case STRUCT:
                return new ArrowStructWriterImpl.StructArrowStructWriter((StructVector) vector, typeInfo);
            default:
                throw new UnsupportedOperationException("Datatype not supported: " + typeInfo.getTypeName());
        }
    }